Make it possible to inject flags of protoc invocation.
Typically proto files depend on and make use of proto definitions in other files. When invoking protoc user can supply paths to inspect for dependencies. This patch makes it possible to configure flags passed to protoc. This makes it e.g., possible to change include paths of the linter's protoc invocation.
This commit is contained in:
parent
eecbacb742
commit
b5a5cdf920
@ -1,12 +1,20 @@
|
|||||||
" Author: Jeff Willette <jrwillette88@gmail.com>
|
" Author: Jeff Willette <jrwillette88@gmail.com>
|
||||||
" Description: run the protoc-gen-lint plugin for the protoc binary
|
" 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
|
function! ale_linters#proto#protoc_gen_lint#GetCommand(buffer) abort
|
||||||
let l:dirname = expand('#' . a:buffer . ':p:h')
|
let l:dirname = expand('#' . a:buffer . ':p:h')
|
||||||
|
|
||||||
return 'protoc'
|
let l:options = ['-I ' . ale#Escape(l:dirname)]
|
||||||
\ . ' -I ' . ale#Escape(l:dirname)
|
|
||||||
\ . ' --lint_out=. ' . '%s'
|
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
|
endfunction
|
||||||
|
|
||||||
call ale#linter#Define('proto', {
|
call ale#linter#Define('proto', {
|
||||||
|
@ -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
|
The linter is a plugin for the `protoc` binary. As long as the binary resides
|
||||||
in the system path, `protoc` will find it.
|
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:
|
vim:tw=78:ts=2:sts=2:sw=2:ft=help:norl:
|
||||||
|
@ -4,9 +4,18 @@ Before:
|
|||||||
After:
|
After:
|
||||||
Restore
|
Restore
|
||||||
|
|
||||||
|
unlet! b:ale_proto_protoc_gen_lint_options
|
||||||
|
|
||||||
call ale#linter#Reset()
|
call ale#linter#Reset()
|
||||||
|
|
||||||
Execute(The default command should be correct):
|
Execute(The default command should be correct):
|
||||||
AssertEqual
|
AssertEqual
|
||||||
\ 'protoc' . ' -I ' . ale#Escape(getcwd()) . ' --lint_out=. ' . '%s',
|
\ 'protoc' . ' -I ' . ale#Escape(getcwd()) . ' --lint_out=. ' . '%s',
|
||||||
\ ale_linters#proto#protoc_gen_lint#GetCommand(bufnr(''))
|
\ 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(''))
|
||||||
|
Loading…
Reference in New Issue
Block a user