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
:LangTool
populates 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> LangTool
Command-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:spelllang
To avoid that the file is saved before LanguageTool checks it for mistakes,
let g:langtool_save = 0
To 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
.)