1
0
mirror of https://github.com/SpaceVim/SpaceVim.git synced 2025-01-23 13:40:05 +08:00

feat(sql): support sqlformat & fix encoding

This commit is contained in:
Eric Wong 2024-03-12 11:13:53 +08:00
parent dcfc4b0404
commit e5387c15c8
3 changed files with 30 additions and 1 deletions

View File

@ -20,10 +20,16 @@
"
" 1. `enabled_formater`: set the default formatter for sql, default is ['sqlfmtorg']
" https://github.com/sql-formatter-org/sql-formatter
" you can also use `sqlformat` which is from https://github.com/andialbrecht/sqlparse
" 2. `sql_formatter_command`: Set the command of sql-formatter.
" 3. `sql_dialect`: set the SQL dialect, default is basic sql.
" 4. `sql_formatter_config`: set the path of config path. default is empty
" string.
" 5. `sqlformat_cmd`: set the command for sqlformat.
" 6. `sqlformat_output_encode`: set the output encoding of sqlformat, default
" is `utf-8`. If you are using window, maybe need to change this option to
" `cp936`.
"
"
if exists('s:enabled_formater')
@ -34,6 +40,8 @@ let s:enabled_formater = ['sqlfmtorg']
let s:sql_formatter_command = 'sql-formatter'
let s:sql_dialect = 'sql'
let s:sql_formatter_config = ''
let s:sqlformat_cmd = 'sqlformat'
let s:sqlformat_output_encode = 'utf-8'
function! SpaceVim#layers#lang#sql#plugins() abort
let plugins = []
@ -46,6 +54,8 @@ function! SpaceVim#layers#lang#sql#set_variable(opt) abort
let s:sql_formatter_command = get(a:opt, 'sql_formatter_command', s:sql_formatter_command)
let s:sql_dialect = get(a:opt, 'sql_dialect', s:sql_dialect)
let s:sql_formatter_config = get(a:opt, 'sql_formatter_config', s:sql_formatter_config)
let s:sqlformat_cmd = get(a:opt, 'sqlformat_cmd', s:sqlformat_cmd)
let s:sqlformat_output_encode = get(a:opt, 'sqlformat_output_encode', s:sqlformat_output_encode)
endfunction
function! SpaceVim#layers#lang#sql#config() abort
@ -60,6 +70,12 @@ function! SpaceVim#layers#lang#sql#config() abort
\ 'args': ['-l', s:sql_dialect,] + argv,
\ 'stdin': 1,
\ }
let g:neoformat_sql_sqlformat = {
\ 'exe': s:sqlformat_cmd,
\ 'args': ['--reindent', '-'],
\ 'output_encode': s:sqlformat_output_encode,
\ 'stdin': 1,
\ }
endfunction
function! SpaceVim#layers#lang#sql#health() abort

View File

@ -130,6 +130,10 @@ function! s:neoformat(bang, user_input, start_line, end_line) abort
call s:deletelines(len(new_buffer), line('$'))
if cmd.output_encode != 'utf-8'
let new_buffer = map(new_buffer, 'iconv(v:val, "cp936", "utf-8")')
endif
call setline(1, new_buffer)
call add(formatters_changed, cmd.name)
@ -239,6 +243,7 @@ endfunction
function! s:generate_cmd(definition, filetype) abort
let executable = get(a:definition, 'exe', '')
let output_encode = get(a:definition, 'output_encode', 'utf-8')
if executable == ''
call neoformat#utils#log('no exe field in definition')
return {}
@ -309,6 +314,7 @@ function! s:generate_cmd(definition, filetype) abort
return {
\ 'exe': fullcmd,
\ 'stdin': using_stdin,
\ 'output_encode' : output_encode,
\ 'stderr_log': stderr_log,
\ 'name': a:definition.exe,
\ 'replace': get(a:definition, 'replace', 0),

View File

@ -5186,11 +5186,18 @@ add following snippet to your |SpaceVim-options| file.
OPTIONS
1. `enabled_formater`: set the default formatter for sql, default is
['sqlfmtorg'] https://github.com/sql-formatter-org/sql-formatter
['sqlfmtorg'] https://github.com/sql-formatter-org/sql-formatter you can
also use `sqlformat` which is from
https://github.com/andialbrecht/sqlparse
2. `sql_formatter_command`: Set the command of sql-formatter.
3. `sql_dialect`: set the SQL dialect, default is basic sql.
4. `sql_formatter_config`: set the path of config path. default is empty
string.
5. `sqlformat_cmd`: set the command for sqlformat.
6. `sqlformat_output_encode`: set the output encoding of sqlformat, default
is `utf-8`. If you are using window, maybe need to change this option to
`cp936`.
==============================================================================