aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Höltje <docwhat@gerf.org>2018-04-13 00:22:37 -0400
committerChristian Höltje <docwhat@gerf.org>2018-04-13 00:37:28 -0400
commit3e76ead2077ec866761bf243dd8750f4dc69f945 (patch)
tree135960ab599d5c15cdd7d972ca686e9add1b7ec7
parent65ee6b7a8063b0b00cfeb5e702cc5cc1122edd4f (diff)
downloadvim-prettier-3e76ead2077ec866761bf243dd8750f4dc69f945.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.
-rw-r--r--README.md55
-rw-r--r--autoload/prettier.vim91
-rw-r--r--doc/prettier.txt45
-rw-r--r--plugin/prettier.vim45
4 files changed, 122 insertions, 114 deletions
diff --git a/README.md b/README.md
index c7c9997..a2917ae 100644
--- a/README.md
+++ b/README.md
@@ -168,50 +168,31 @@ autocmd BufWritePre,TextChanged,InsertLeave *.js,*.jsx,*.mjs,*.ts,*.tsx,*.css,*.
However they can be configured by:
```vim
-" max line length that prettier will wrap on
-" Prettier default: 80
-let g:prettier#config#print_width = 80
+" Max line length that prettier will wrap on: a number or 'auto' (use
+" textwidth).
+" default: 'auto'
+let g:prettier#config#print_width = 'auto'
-" number of spaces per indentation level
-" Prettier default: 2
-let g:prettier#config#tab_width = 2
+" number of spaces per indentation level: a number or 'auto' (use
+" softtabstop)
+" default: 'auto'
+let g:prettier#config#tab_width = 'auto'
-" use tabs over spaces
-" Prettier default: false
-let g:prettier#config#use_tabs = 'false'
+" use tabs instead of spaces: true, false, or auto (use the expandtab setting).
+" default: 'auto'
+let g:prettier#config#use_tabs = 'auto'
-" print semicolons
-" Prettier default: true
-let g:prettier#config#semi = 'true'
-
-" single quotes over double quotes
-" Prettier default: false
-let g:prettier#config#single_quote = 'true'
-
-" print spaces between brackets
-" Prettier default: true
-let g:prettier#config#bracket_spacing = 'false'
-
-" put > on the last line instead of new line
-" Prettier default: false
-let g:prettier#config#jsx_bracket_same_line = 'true'
-
-" avoid|always
-" Prettier default: avoid
-let g:prettier#config#arrow_parens = 'always'
-
-" none|es5|all
-" Prettier default: none
-let g:prettier#config#trailing_comma = 'all'
-
-" flow|babylon|typescript|css|less|scss|json|graphql|markdown
-" Prettier default: babylon
-let g:prettier#config#parser = 'flow'
+" flow|babylon|typescript|css|less|scss|json|graphql|markdown or empty string
+" (let prettier choose).
+" default: ''
+let g:prettier#config#parser = ''
" cli-override|file-override|prefer-file
-let g:prettier#config#config_precedence = 'prefer-file'
+" default: 'cli-override'
+let g:prettier#config#config_precedence = 'cli-override'
" always|never|preserve
+" default: 'preserve'
let g:prettier#config#prose_wrap = 'preserve'
```
diff --git a/autoload/prettier.vim b/autoload/prettier.vim
index 4b5a4e9..7cf9cca 100644
--- a/autoload/prettier.vim
+++ b/autoload/prettier.vim
@@ -287,36 +287,81 @@ function! s:Apply_Prettier_Format(lines, startSelection, endSelection) abort
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) .
- \ ' --stdin-filepath ' .
+ \ ' --stdin-filepath=' .
\ simplify(expand('%:p')) .
\ ' --no-editorconfig '.
\ ' --loglevel error '.
diff --git a/doc/prettier.txt b/doc/prettier.txt
index 99b8d70..85280de 100644
--- a/doc/prettier.txt
+++ b/doc/prettier.txt
@@ -138,40 +138,31 @@ Overwrite default prettier configuration
**Note:** vim-prettier default settings differ from prettier intentionally.
However they can be configured by:
>
- " max line length that prettier will wrap on
- let g:prettier#config#print_width = 80
+ " Max line length that prettier will wrap on: a number or 'auto' (use
+ " textwidth).
+ " default: 'auto'
+ let g:prettier#config#print_width = 'auto'
- " number of spaces per indentation level
- let g:prettier#config#tab_width = 2
+ " number of spaces per indentation level: a number or 'auto' (use
+ " softtabstop)
+ " default: 'auto'
+ let g:prettier#config#tab_width = 'auto'
- " use tabs over spaces
- let g:prettier#config#use_tabs = 'false'
+ " use tabs instead of spaces: true, false, or auto (use the expandtab setting).
+ " default: 'auto'
+ let g:prettier#config#use_tabs = 'auto'
- " print semicolons
- let g:prettier#config#semi = 'true'
-
- " single quotes over double quotes
- let g:prettier#config#single_quote = 'true'
-
- " print spaces between brackets
- let g:prettier#config#bracket_spacing = 'false'
-
- " put > on the last line instead of new line
- let g:prettier#config#jsx_bracket_same_line = 'true'
-
- " avoid|always
- let g:prettier#config#arrow_parens = 'always'
-
- " none|es5|all
- let g:prettier#config#trailing_comma = 'all'
-
- " flow|babylon|typescript|css|less|scss|json|graphql|markdown
- let g:prettier#config#parser = 'flow'
+ " flow|babylon|typescript|css|less|scss|json|graphql|markdown or empty string
+ " (let prettier choose).
+ " default: ''
+ let g:prettier#config#parser = ''
" cli-override|file-override|prefer-file
- let g:prettier#config#config_precedence = 'prefer-file'
+ " default: 'cli-override'
+ let g:prettier#config#config_precedence = 'cli-override'
" always|never|preserve
+ " default: 'preserve'
let g:prettier#config#prose_wrap = 'preserve'
<
==============================================================================
diff --git a/plugin/prettier.vim b/plugin/prettier.vim
index da008fe..08144aa 100644
--- a/plugin/prettier.vim
+++ b/plugin/prettier.vim
@@ -33,40 +33,31 @@ let g:prettier#exec_cmd_async = get(g:, 'prettier#exec_cmd_async', 0)
let g:prettier#quickfix_enabled = get(g:, 'prettier#quickfix_enabled', 1)
" => Prettier CLI config
-" max line lengh that prettier will wrap on
-let g:prettier#config#print_width = get(g:, 'prettier#config#print_width', 80)
+" Max line length that prettier will wrap on: a number or 'auto' (use
+" textwidth).
+" default: 'auto'
+let g:prettier#config#print_width = get(g:, 'prettier#config#print_width', 'auto')
-" number of spaces per indentation level
-let g:prettier#config#tab_width = get(g:,'prettier#config#tab_width', 2)
+" number of spaces per indentation level: a number or 'auto' (use
+" softtabstop)
+" default: 'auto'
+let g:prettier#config#tab_width = get(g:,'prettier#config#tab_width', 'auto')
-" use tabs over spaces
-let g:prettier#config#use_tabs = get(g:,'prettier#config#use_tabs', 'false')
+" use tabs instead of spaces: true, false, or auto (use the expandtab setting).
+" default: 'auto'
+let g:prettier#config#use_tabs = get(g:,'prettier#config#use_tabs', 'auto')
-" print semicolons
-let g:prettier#config#semi = get(g:,'prettier#config#semi', 'true')
-
-" single quotes over double quotes
-let g:prettier#config#single_quote = get(g:,'prettier#config#single_quote', 'true')
-
-" print spaces between brackets
-let g:prettier#config#bracket_spacing = get(g:,'prettier#config#bracket_spacing', 'false')
-
-" put > on the last line instead of new line
-let g:prettier#config#jsx_bracket_same_line = get(g:,'prettier#config#jsx_bracket_same_line', 'true')
-
-" avoid wrapping a single arrow function param in parens
-let g:prettier#config#arrow_parens = get(g:,'prettier#config#arrow_parens', 'avoid')
-
-" none|es5|all
-let g:prettier#config#trailing_comma = get(g:,'prettier#config#trailing_comma', 'all')
-
-" flow|babylon|typescript|postcss|json|graphql
-let g:prettier#config#parser = get(g:,'prettier#config#parser', 'flow')
+" flow|babylon|typescript|css|less|scss|json|graphql|markdown or empty string
+" (let prettier choose).
+" default: ''
+let g:prettier#config#parser = get(g:,'prettier#config#parser', '')
" cli-override|file-override|prefer-file
-let g:prettier#config#config_precedence = get(g:, 'prettier#config#config_precedence', 'prefer-file')
+" default: 'cli-override'
+let g:prettier#config#config_precedence = get(g:, 'prettier#config#config_precedence', 'cli-override')
" always|never|preserve
+" default: 'preserve'
let g:prettier#config#prose_wrap = get(g:, 'prettier#config#prose_wrap', 'preserve')
" Don't leave the quicklist focused on error.