From b146550aaea06f83991212202a2ad1c197792967 Mon Sep 17 00:00:00 2001 From: Konfekt Date: Thu, 27 Mar 2025 09:39:06 +0100 Subject: [PATCH 1/2] runtime:javascript: document optional formatter --- runtime/doc/filetype.txt | 7 +++++++ runtime/doc/tags | 1 + runtime/ftplugin/javascript.vim | 15 +++++++++++++++ 3 files changed, 23 insertions(+) diff --git a/runtime/doc/filetype.txt b/runtime/doc/filetype.txt index 20bf395972..6c5988a070 100644 --- a/runtime/doc/filetype.txt +++ b/runtime/doc/filetype.txt @@ -752,6 +752,13 @@ To enable the recognition of Markdown comments each time after removing re-source "javaformat.vim" for Vim versions greater than `8.2.1397`: > runtime autoload/javaformat.vim < +JAVASCRIPT *ft-javascript-plugin* + +To enable prettier formatting of JavaScript files, set the following variable +in your vimrc: > + + let g:javascript_formatter = 'prettier' + JSON-FORMAT *ft-json-plugin* JSON filetype can be extended to use 'formatexpr' and "json.FormatExpr()" diff --git a/runtime/doc/tags b/runtime/doc/tags index 5ff06d3f5f..d46f98b8c4 100644 --- a/runtime/doc/tags +++ b/runtime/doc/tags @@ -7396,6 +7396,7 @@ ft-idris2-plugin filetype.txt /*ft-idris2-plugin* ft-inform-syntax syntax.txt /*ft-inform-syntax* ft-java-plugin filetype.txt /*ft-java-plugin* ft-java-syntax syntax.txt /*ft-java-syntax* +ft-javascript-plugin filetype.txt /*ft-javascript-plugin* ft-javascript-omni insert.txt /*ft-javascript-omni* ft-jq-syntax syntax.txt /*ft-jq-syntax* ft-json-plugin filetype.txt /*ft-json-plugin* diff --git a/runtime/ftplugin/javascript.vim b/runtime/ftplugin/javascript.vim index 455b794cf0..f893fcc926 100644 --- a/runtime/ftplugin/javascript.vim +++ b/runtime/ftplugin/javascript.vim @@ -70,8 +70,23 @@ let &l:define = \ .. '\|^\s*\(export\s\+\|export\s\+default\s\+\)*\(var\|let\|const\|function\|class\)' \ .. '\|\' +if !empty(get(g:,'javascript_formatprg', '')) +augroup formatprgsJavaScript + autocmd! * + autocmd ShellFilterPost if v:shell_error | execute 'echom "shell filter returned error " . v:shell_error . ", undoing changes"' | undo | endif + if g:javascript_formatprg ==# 'prettier' + autocmd BufWinEnter ++once let &l:formatprg = + \ executable('prettier') ? 'prettier' : 'npx prettier' . + \ ' --stdin-filepath=%:S --parser=javascript ' . + \ (&textwidth > 0 ? '--print-width=' . &textwidth : '') . + \ ' --tab-width=' . &l:shiftwidth . (&expandtab ? '' : '--use-tabs') . ' --' + endif +augroup END +endif + let b:undo_ftplugin = \ "setl fo< ofu< com< cms< sua< su< def< pa<" + \ .. !empty(g:javascript_formatprg) ? " fp<" : "" \ .. "| unlet! b:browsefilter b:match_ignorecase b:match_words" let &cpo = s:cpo_save From 51327677ac79241919d0ca367cfadc7a6df25e93 Mon Sep 17 00:00:00 2001 From: Konfekt Date: Thu, 27 Mar 2025 10:12:40 +0100 Subject: [PATCH 2/2] fix alphabetical order of doc tags --- runtime/doc/tags | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/runtime/doc/tags b/runtime/doc/tags index d46f98b8c4..7033125399 100644 --- a/runtime/doc/tags +++ b/runtime/doc/tags @@ -7396,8 +7396,8 @@ ft-idris2-plugin filetype.txt /*ft-idris2-plugin* ft-inform-syntax syntax.txt /*ft-inform-syntax* ft-java-plugin filetype.txt /*ft-java-plugin* ft-java-syntax syntax.txt /*ft-java-syntax* -ft-javascript-plugin filetype.txt /*ft-javascript-plugin* ft-javascript-omni insert.txt /*ft-javascript-omni* +ft-javascript-plugin filetype.txt /*ft-javascript-plugin* ft-jq-syntax syntax.txt /*ft-jq-syntax* ft-json-plugin filetype.txt /*ft-json-plugin* ft-json-syntax syntax.txt /*ft-json-syntax*