Make markdown vale linter command configurable with options (#3594)

* Make vale command user-configurable

* Add test for vale options

* Typo in test

Co-authored-by: David Balatero <dbalatero@stripe.com>
This commit is contained in:
David Balatero 2021-02-17 20:10:49 -05:00 committed by GitHub
parent 88d052b5a9
commit 0b35c3a5b9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 49 additions and 2 deletions

View File

@ -1,9 +1,24 @@
" Author: chew-z https://github.com/chew-z
" Description: vale for Markdown files
call ale#Set('markdown_vale_executable', 'vale')
call ale#Set('markdown_vale_input_file', '%t')
call ale#Set('markdown_vale_options', '')
function! ale_linters#markdown#vale#GetCommand(buffer) abort
let l:executable = ale#Var(a:buffer, 'markdown_vale_executable')
let l:input_file = ale#Var(a:buffer, 'markdown_vale_input_file')
" Defaults to `vale --output=JSON %t`
return ale#Escape(l:executable)
\ . ' --output=JSON '
\ . ale#Var(a:buffer, 'markdown_vale_options')
\ . ' ' . l:input_file
endfunction
call ale#linter#Define('markdown', {
\ 'name': 'vale',
\ 'executable': 'vale',
\ 'command': 'vale --output=JSON %t',
\ 'executable': {b -> ale#Var(b, 'markdown_vale_executable')},
\ 'command': function('ale_linters#markdown#vale#GetCommand'),
\ 'callback': 'ale#handlers#vale#Handle',
\})

View File

@ -0,0 +1,32 @@
Before:
call ale#assert#SetUpLinterTest('markdown', 'vale')
call ale#test#SetFilename('dummy.md')
let g:ale_markdown_vale_executable = 'vale'
let g:ale_markdown_vale_input_file = '%t'
let g:ale_markdown_vale_options = ''
After:
call ale#assert#TearDownLinterTest()
Execute(Executable should default to vale):
AssertLinter 'vale', ale#Escape('vale')
\ . ' --output=JSON %t'
Execute(Should be able to set a custom executable):
let g:ale_markdown_vale_executable = 'bin/vale'
AssertLinter 'bin/vale' , ale#Escape('bin/vale')
\ . ' --output=JSON %t'
Execute(Should be able to set custom options):
let g:ale_markdown_vale_options = '--foo --bar'
AssertLinter 'vale', ale#Escape('vale')
\ . ' --output=JSON --foo --bar %t'
Execute(Should be able to set a custom input file):
let g:ale_markdown_vale_input_file = '%s'
AssertLinter 'vale', ale#Escape('vale')
\ . ' --output=JSON %s'