This Vim plug-in collects all grammar mistakes (of the currently open file) found by LanguageTool into the quickfix (or local) list from which they can be jumped to.
If you already have LanguageTool installed and start it in the command line by an executable, say /usr/bin/langtool, then add to your vimrc the line
let g:langtool_cmd = '/usr/bin/langtool'Otherwise, download and unpack LanguageTool, say into the folder ~/LanguageTool, and add to your vimrc the line
let g:langtool_jar = '~/LanguageTool/languagetool-commandline.jar'where the right-hand side, ~/LanguageTool/languagetool-commandline.jar, is the path of the file languagetool-commandline.jar.
The command
:LangToolpopulates the location-list with all grammar mistakes found by LanguageTool.
The location-list window that lists all compiler messages can then be opened by :lwindow;
their locations can be jumped to by :ln respectively :lp (or use vim-unimpaired's mappings ]l and [l.)
LanguageTool runs in the background by Vim's job feature, provided an :(L)Make command exists, such as
-
that of tasks.vim, or
-
that of vim-dispatch, or
-
that defined by
command! -bang -nargs=* -complete=file Make AsyncRun<bang> -auto=make -program=make -strip <args>
with AsyncRun.vim installed (see also Hints below).
The (quickfix) window that lists all compiler messages can then be opened by :cwindow;
their locations can be jumped to by :cn respectively :cp (or use vim-unimpaired's mappings ]q and [q.).
To automatically open the location-list window after LangTool, add
autocmd QuickFixCmdPost lmake lwindow to your vimrc, respectively autocmd QuickFixCmdPost make cwindow if the :Make command exists.
To automatically run LangTool after saving the modifications to a text, mail or markdown file, add to your vimrc:
autocmd FileType text,mail,markdown autocmd BufWrite <buffer=abuf> LangToolCommand-line parameters can be passed to LanguageTool by the global variable g:langtool_parameters and the buffer-local variable b:langtool_parameters.
By default
let g:langtool_parameters = ''and
let b:langtool_parameters = '--autoDetect'For example, the mother tongue can be set and (categories of) rules enabled and disabled by adding to your vimrc
let s:enablecategories = 'CREATIVE_WRITING,WIKIPEDIA' .
let s:enable = 'PASSIVE_VOICE,TIRED_INTENSIFIERS'
let s:disable = 'REPEATED_WORDS,REPEATED_WORDS_3X'
let g:langtool_parameters = ' --mothertongue de' .
\ ' --enablecategories ' . s:enablecategories .
\ ' --enable ' . s:enable .
\ ' --disable ' . s:disable:LangTool sets the language that LanguageTool will use to that used by Vim to spellcheck by
let b:langtool_parameters = '--language ' . &l:spelllangTo avoid that the file is saved before LanguageTool checks it for mistakes,
let g:langtool_save = 0To avoid empty lines in the quickfix list, add let g:asyncrun_trim = 1 to your vimrc.
Other options, such as g:asyncrun_save might be of interest.
This Vim plug-in is simpler than vim-LanguageTool and vim-grammarous.
In particular, it lets Vim parse the LanguageTool output to stdout via an appropriate value of &errorformat;
see :help errorformat.
(Whereas both cited plug-ins implement their proper parser for the deprecated XML output format of LanguageTool.)