summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ale_linters/proto/protoc_gen_lint.vim14
-rw-r--r--doc/ale-proto.txt9
-rw-r--r--test/command_callback/test_proto_command_callback.vader11
3 files changed, 29 insertions, 5 deletions
diff --git a/ale_linters/proto/protoc_gen_lint.vim b/ale_linters/proto/protoc_gen_lint.vim
index 9d5ceacc..c8b5c331 100644
--- a/ale_linters/proto/protoc_gen_lint.vim
+++ b/ale_linters/proto/protoc_gen_lint.vim
@@ -1,12 +1,20 @@
" Author: Jeff Willette <jrwillette88@gmail.com>
" Description: run the protoc-gen-lint plugin for the protoc binary
+call ale#Set('proto_protoc_gen_lint_options', '')
+
function! ale_linters#proto#protoc_gen_lint#GetCommand(buffer) abort
let l:dirname = expand('#' . a:buffer . ':p:h')
- return 'protoc'
- \ . ' -I ' . ale#Escape(l:dirname)
- \ . ' --lint_out=. ' . '%s'
+ let l:options = ['-I ' . ale#Escape(l:dirname)]
+
+ if !empty(ale#Var(a:buffer, 'proto_protoc_gen_lint_options'))
+ let l:options += [ale#Var(a:buffer, 'proto_protoc_gen_lint_options')]
+ endif
+
+ let l:options += ['--lint_out=. ' . '%s']
+
+ return 'protoc' . ' ' . join(l:options)
endfunction
call ale#linter#Define('proto', {
diff --git a/doc/ale-proto.txt b/doc/ale-proto.txt
index 6a256380..734e23d5 100644
--- a/doc/ale-proto.txt
+++ b/doc/ale-proto.txt
@@ -20,5 +20,14 @@ protoc-gen-lint *ale-proto-protoc-gen-lint*
The linter is a plugin for the `protoc` binary. As long as the binary resides
in the system path, `protoc` will find it.
+g:ale_proto_protoc_gen_lint_options *g:ale_proto_protoc_gen_lint_options*
+
+ Type: |String|
+ Default: `''`
+
+ This variable can be changed to modify flags given to protoc. Note that the
+ directory of the linted file is always passed as an include path with '-I'
+ before any user-supplied options.
+
===============================================================================
vim:tw=78:ts=2:sts=2:sw=2:ft=help:norl:
diff --git a/test/command_callback/test_proto_command_callback.vader b/test/command_callback/test_proto_command_callback.vader
index 2fd7775e..76050c61 100644
--- a/test/command_callback/test_proto_command_callback.vader
+++ b/test/command_callback/test_proto_command_callback.vader
@@ -1,14 +1,21 @@
Before:
- call ale#test#SetDirectory('/testplugin/test/command_callback')
call ale#test#SetFilename('test.proto')
After:
Restore
- call ale#test#RestoreDirectory()
+ unlet! b:ale_proto_protoc_gen_lint_options
+
call ale#linter#Reset()
Execute(The default command should be correct):
AssertEqual
\ 'protoc' . ' -I ' . ale#Escape(getcwd()) . ' --lint_out=. ' . '%s',
\ ale_linters#proto#protoc_gen_lint#GetCommand(bufnr(''))
+
+Execute(The callback should include any additional options):
+ let b:ale_proto_protoc_gen_lint_options = '--some-option'
+
+ AssertEqual
+ \ 'protoc' . ' -I ' . ale#Escape(getcwd()) . ' --some-option --lint_out=. ' . '%s',
+ \ ale_linters#proto#protoc_gen_lint#GetCommand(bufnr(''))