diff options
| author | Christian Höltje <docwhat@gerf.org> | 2018-04-13 00:22:37 -0400 |
|---|---|---|
| committer | mitermayer <mitermayer.reis@gmail.com> | 2019-08-25 21:11:49 -0700 |
| commit | fc25ce1a3c1ca0b8128c5c745c87932aba9fc32a (patch) | |
| tree | 3915db249dc46a9f9d7fd6aa0307dd68b12c7eaf /autoload | |
| parent | 2de626a6013ee87cc06a3fa1cdf9191c4d36bea9 (diff) | |
| download | vim-prettier-fc25ce1a3c1ca0b8128c5c745c87932aba9fc32a.tar.xz | |
Start using prettier default arguments
This is one approach for handling default prettier arguments.
It is a little verbose, but I think ejecting the flags that don't have
to be set by the editor (in favor of .prettierrc files) is a win.
Diffstat (limited to 'autoload')
| -rw-r--r-- | autoload/prettier.vim | 130 |
1 files changed, 83 insertions, 47 deletions
diff --git a/autoload/prettier.vim b/autoload/prettier.vim index 52e9ea8..7cf9cca 100644 --- a/autoload/prettier.vim +++ b/autoload/prettier.vim @@ -5,7 +5,7 @@ " Name Of File: prettier.vim " Description: A vim plugin wrapper for prettier, pre-configured with custom default prettier settings. " Maintainer: Mitermayer Reis <mitermayer.reis at gmail.com> -" Version: 0.2.7 +" Version: 0.2.6 " Usage: Use :help vim-prettier-usage, or visit https://github.com/prettier/vim-prettier " "========================================================================================================== @@ -168,14 +168,14 @@ function! s:Prettier_Exec_Async(cmd, startSelection, endSelection) abort if s:prettier_job_running != 1 let s:prettier_job_running = 1 - let l:job = job_start([&shell, &shellcmdflag, l:async_cmd], { - \ 'out_io': 'buffer', + call job_start([&shell, &shellcmdflag, l:async_cmd], { + \ 'in_io': 'buffer', + \ 'in_top': a:startSelection, + \ 'in_bot': a:endSelection, + \ 'in_name': l:bufferName, \ 'err_cb': {channel, msg -> s:Prettier_Job_Error(msg)}, \ 'close_cb': {channel -> s:Prettier_Job_Close(channel, a:startSelection, a:endSelection, l:bufferName)}}) - let l:stdin = job_getchannel(l:job) - call ch_sendraw(l:stdin, join(getbufline(bufnr(l:bufferName), a:startSelection,a:endSelection), "\n")) - call ch_close_in(l:stdin) - endif + endif endfunction function! s:Prettier_Job_Close(channel, startSelection, endSelection, bufferName) abort @@ -183,14 +183,13 @@ function! s:Prettier_Job_Close(channel, startSelection, endSelection, bufferName let l:currentBufferName = bufname('%') let l:isInsideAnotherBuffer = a:bufferName != l:currentBufferName ? 1 : 0 - let l:buff = ch_getbufnr(a:channel, 'out') - let l:out = getbufline(l:buff, 2, '$') - execute 'bd!' . l:buff + while ch_status(a:channel) ==# 'buffered' + call add(l:out, ch_read(a:channel)) + endwhile " nothing to update if (s:Has_Content_Changed(l:out, a:startSelection, a:endSelection) == 0) let s:prettier_job_running = 0 - redraw! return endif @@ -279,55 +278,92 @@ function! s:Apply_Prettier_Format(lines, startSelection, endSelection) abort endif " delete all lines on the current buffer - silent! execute '%delete _' + silent! execute len(l:newBuffer) . ',' . line('$') . 'delete _' " replace all lines from the current buffer with output from prettier - let l:idx = 0 - for l:line in l:newBuffer - silent! call append(l:idx, l:line) - let l:idx += 1 - endfor - - " delete trailing newline introduced by the above append procedure - silent! execute '$delete _' - + call setline(1, l:newBuffer) + " Restore view call winrestview(l:winview) endfunction +" Returns either '--use-tabs' or an empty string. +function! s:Flag_use_tabs(config) abort + let l:value = get(a:config, 'useTabs', g:prettier#config#use_tabs) + if (l:value ==# 'auto') + let l:value = &expandtab ? 'false' : 'true' + endif + + if ( l:value ==# 'true' ) + return '--use-tabs' + else + return '' + endif +endfunction + +" Backwards compatable version of shiftwidth() +function! s:sw() abort + if exists('*shiftwidth') + return shiftwidth() + else + return &shiftwidth + endif +endfunction + +" Returns '--tab-width=NN' +function! s:Flag_tab_width(config) abort + let l:value = get(a:config, 'tabWidth', g:prettier#config#tab_width) + + if (l:value ==# 'auto') + let l:value = s:sw() + endif + + return '--tab-width=' . l:value +endfunction + +" Returns '--print-width=NN' or '' +function! s:Flag_print_width(config) abort + let l:value = get(a:config, 'printWidth', g:prettier#config#print_width) + + if (l:value ==# 'auto') + let l:value = &textwidth + endif + + if (l:value > 0) + return '--print-width=' . l:value + else + return '' + endif +endfunction + +" Returns '--parser=PARSER' or '' +function! s:Flag_parser(config) abort + let l:value = get(a:config, 'parser', g:prettier#config#parser) + + if (l:value !=# '') + return '--parser=' . l:value + else + return '' + endif +endfunction + " By default we will default to our internal " configuration settings for prettier function! s:Get_Prettier_Exec_Args(config) abort " Allow params to be passed as json format " convert bellow usage of globals to a get function o the params defaulting to global - let l:cmd = ' --print-width ' . - \ get(a:config, 'printWidth', g:prettier#config#print_width) . - \ ' --tab-width ' . - \ get(a:config, 'tabWidth', g:prettier#config#tab_width) . - \ ' --use-tabs ' . - \ get(a:config, 'useTabs', g:prettier#config#use_tabs) . - \ ' --semi ' . - \ get(a:config, 'semi', g:prettier#config#semi) . - \ ' --single-quote ' . - \ get(a:config, 'singleQuote', g:prettier#config#single_quote) . - \ ' --bracket-spacing ' . - \ get(a:config, 'bracketSpacing', g:prettier#config#bracket_spacing) . - \ ' --jsx-bracket-same-line ' . - \ get(a:config, 'jsxBracketSameLine', g:prettier#config#jsx_bracket_same_line) . - \ ' --arrow-parens ' . - \ get(a:config, 'arrowParens', g:prettier#config#arrow_parens) . - \ ' --trailing-comma ' . - \ get(a:config, 'trailingComma', g:prettier#config#trailing_comma) . - \ ' --parser ' . - \ get(a:config, 'parser', g:prettier#config#parser) . - \ ' --config-precedence ' . + " TODO: Use a list, filter() and join() to get a nicer list of args. + let l:cmd = s:Flag_use_tabs(a:config) . ' ' . + \ s:Flag_tab_width(a:config) . ' ' . + \ s:Flag_print_width(a:config) . ' ' . + \ s:Flag_parser(a:config) . ' ' . + \ ' --config-precedence=' . \ get(a:config, 'configPrecedence', g:prettier#config#config_precedence) . - \ ' --prose-wrap ' . + \ ' --prose-wrap=' . \ get(a:config, 'proseWrap', g:prettier#config#prose_wrap) . - \ ' --html-whitespace-sensitivity ' . - \ get(a:config, 'htmlWhitespaceSensitivity', g:prettier#config#html_whitespace_sensitivity) . - \ ' --stdin-filepath "' . - \ simplify(expand('%:p')) . '"' . + \ ' --stdin-filepath=' . + \ simplify(expand('%:p')) . + \ ' --no-editorconfig '. \ ' --loglevel error '. \ ' --stdin ' return l:cmd |
