aboutsummaryrefslogtreecommitdiff
path: root/plugin
diff options
context:
space:
mode:
Diffstat (limited to 'plugin')
-rw-r--r--plugin/prettier.vim127
1 files changed, 94 insertions, 33 deletions
diff --git a/plugin/prettier.vim b/plugin/prettier.vim
index 84b2485..4ffa9cb 100644
--- a/plugin/prettier.vim
+++ b/plugin/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: 1.0.0-alpha
" Usage: Use :help vim-prettier-usage, or visit https://github.com/prettier/vim-prettier
"
"==========================================================================================================
@@ -17,11 +17,21 @@ endif
let g:loaded_prettier = 1
" => Plugin config
-" autoformating enabled by default upon saving
-let g:prettier#autoformat = get(g:, 'prettier#autoformat', 1)
+" autoformating disabled by default upon saving
+let g:prettier#autoformat = get(g:, 'prettier#autoformat', 0)
-" experimental async flag will be disabled by default until is stable
-let g:prettier#nvim_unstable_async = get(g:,'prettier#nvim_unstable_async', 0)
+" whether to turn autoformatting on if a prettier config file is found
+let g:prettier#autoformat_config_present = get(g:, 'prettier#autoformat_config_present', 0)
+
+" prettier config files to search current directory and parent directories for
+let g:prettier#autoformat_config_files = get(g:, 'prettier#autoformat_config_files', [
+ \'.prettierrc',
+ \'.prettierrc.yml',
+ \'.prettierrc.yaml',
+ \'.prettierrc.js',
+ \'.prettierrc.config.js',
+ \'.prettierrc.json'
+ \'.prettierrc.toml'])
" path to prettier cli
let g:prettier#exec_cmd_path = get(g:, 'prettier#exec_cmd_path', 0)
@@ -32,57 +42,85 @@ let g:prettier#exec_cmd_async = get(g:, 'prettier#exec_cmd_async', 0)
" when having formatting errors will open the quickfix by default
let g:prettier#quickfix_enabled = get(g:, 'prettier#quickfix_enabled', 1)
+" Don't leave the quicklist focused on error.
+let g:prettier#quickfix_auto_focus = get(g:, 'prettier#quickfix_auto_focus', 1)
+
+" Send to prettier entire buffer and use --range-start and --range-end as delimter
+let g:prettier#partial_format = get(g:, 'prettier#partial_format', 0)
+
+" default|fb
+" Use prettier defaults
+let g:prettier#preset#config = get(g:,'prettier#preset#config', 'default')
+
" => 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: a number or 'auto' (use
+" softtabstop)
+" default: 'auto'
+let g:prettier#config#tab_width = get(g:,'prettier#config#tab_width', 'auto')
+
+" 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')
-" number of spaces per indentation level
-let g:prettier#config#tab_width = get(g:,'prettier#config#tab_width', 2)
+" 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', '')
-" use tabs over spaces
-let g:prettier#config#use_tabs = get(g:,'prettier#config#use_tabs', 'false')
+" cli-override|file-override|prefer-file
+" default: 'file-override'
+let g:prettier#config#config_precedence = get(g:, 'prettier#config#config_precedence', 'file-override')
+
+" always|never|preserve
+" default: 'preserve'
+let g:prettier#config#prose_wrap = get(g:, 'prettier#config#prose_wrap', 'preserve')
+
+" css|strict|ignore
+" default: 'css'
+let g:prettier#config#html_whitespace_sensitivity = get(g:, 'prettier#config#html_whitespace_sensitivity', 'css')
" print semicolons
+" default: 'true'
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')
+" Use single quotes instead of double quotes.
+" default: 'false'
+let g:prettier#config#single_quote = get(g:,'prettier#config#single_quote', 'false')
" print spaces between brackets
-let g:prettier#config#bracket_spacing = get(g:,'prettier#config#bracket_spacing', 'false')
+" default: 'true'
+let g:prettier#config#bracket_spacing = get(g:,'prettier#config#bracket_spacing', 'true')
" 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')
+" default: 'false'
+let g:prettier#config#jsx_bracket_same_line = get(g:,'prettier#config#jsx_bracket_same_line', 'false')
" avoid wrapping a single arrow function param in parens
+" avoid|always
+" default: 'avoid'
let g:prettier#config#arrow_parens = get(g:,'prettier#config#arrow_parens', 'avoid')
+" Print trailing commas wherever possible when multi-line.
" none|es5|all
-let g:prettier#config#trailing_comma = get(g:,'prettier#config#trailing_comma', 'all')
+" default: 'none'
+let g:prettier#config#trailing_comma = get(g:,'prettier#config#trailing_comma', 'none')
-" flow|babylon|typescript|postcss|json|graphql
-let g:prettier#config#parser = get(g:,'prettier#config#parser', 'flow')
-
-" cli-override|file-override|prefer-file
-let g:prettier#config#config_precedence = get(g:, 'prettier#config#config_precedence', 'prefer-file')
-
-" always|never|preserve
-let g:prettier#config#prose_wrap = get(g:, 'prettier#config#prose_wrap', 'preserve')
-
-" css|strict|ignore
-let g:prettier#config#html_whitespace_sensitivity = get(g:, 'prettier#config#html_whitespace_sensitivity', 'css')
-
-" Don't leave the quicklist focused on error.
-let g:prettier#quickfix_auto_focus = get(g:, 'prettier#quickfix_auto_focus', 1)
+" restrict itself to only format files that contain a special comment @prettier or @format
+let g:prettier#config#require_pragma= get(g:, 'prettier#config#require_pragma', 'false')
" synchronous by default
-command! -nargs=? -range=% Prettier call prettier#Prettier(g:prettier#exec_cmd_async, <line1>, <line2>)
+command! -nargs=? -range=% Prettier call prettier#Prettier(g:prettier#exec_cmd_async, <line1>, <line2>, g:prettier#partial_format)
" prettier async
-command! -nargs=? -range=% PrettierAsync call prettier#Prettier(1, <line1>, <line2>)
+command! -nargs=? -range=% PrettierAsync call prettier#Prettier(1, <line1>, <line2>, g:prettier#partial_format)
" prints vim-prettier version
-command! -nargs=? -range=% PrettierVersion echom '0.2.7'
+command! -nargs=? -range=% PrettierVersion echom '1.0.0-alpha'
" call prettier cli
command! -nargs=? -range=% PrettierCli call prettier#PrettierCli(<q-args>)
@@ -93,13 +131,36 @@ command! -nargs=? -range=% PrettierCliVersion call prettier#PrettierCli('--versi
" prints prettier resolved cli path
command! -nargs=? -range=% PrettierCliPath call prettier#PrettierCliPath()
+" sends selected text to prettier cli for formatting
+command! -nargs=? -range=% PrettierFragment call prettier#Prettier(g:prettier#exec_cmd_async, <line1>, <line2>, 0)
+
+" sends entire buffer to prettier cli but format just selection
+command! -nargs=? -range=% PrettierPartial call prettier#Prettier(g:prettier#exec_cmd_async, <line1>, <line2>, 1)
+
" map command
if !hasmapto('<Plug>(Prettier)') && maparg('<Leader>p', 'n') ==# ''
nmap <unique> <Leader>p <Plug>(Prettier)
endif
nnoremap <silent> <Plug>(Prettier) :Prettier<CR>
nnoremap <silent> <Plug>(PrettierAsync) :PrettierAsync<CR>
+nnoremap <silent> <Plug>(PrettierFragment) :PrettierFragment<CR>
+nnoremap <silent> <Plug>(PrettierPartial) :PrettierPartial<CR>
nnoremap <silent> <Plug>(PrettierVersion) :PrettierVersion<CR>
nnoremap <silent> <Plug>(PrettierCli) :PrettierCli<CR>
nnoremap <silent> <Plug>(PrettierCliVersion) :PrettierCliVersion<CR>
nnoremap <silent> <Plug>(PrettierCliPath) :PrettierCliPath<CR>
+
+augroup Prettier
+ autocmd!
+ if g:prettier#autoformat_config_present
+ if prettier#IsConfigPresent(g:prettier#autoformat_config_files)
+ let g:prettier#autoformat = 1
+ else
+ let g:prettier#autoformat = 0
+ endif
+ endif
+
+ if g:prettier#autoformat
+ autocmd BufWritePre *.js,*.jsx,*.mjs,*.ts,*.tsx,*.css,*.less,*.scss,*.json,*.graphql,*.md,*.vue,*.yaml,*.html noautocmd | call prettier#Autoformat()
+ endif
+augroup end