summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ale_linters/markdown/vale.vim19
-rw-r--r--test/command_callback/test_markdown_vale_command_callback.vader32
2 files changed, 49 insertions, 2 deletions
diff --git a/ale_linters/markdown/vale.vim b/ale_linters/markdown/vale.vim
index 838c4db2..06a64416 100644
--- a/ale_linters/markdown/vale.vim
+++ b/ale_linters/markdown/vale.vim
@@ -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',
\})
diff --git a/test/command_callback/test_markdown_vale_command_callback.vader b/test/command_callback/test_markdown_vale_command_callback.vader
new file mode 100644
index 00000000..5300805b
--- /dev/null
+++ b/test/command_callback/test_markdown_vale_command_callback.vader
@@ -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'