diff options
author | w0rp <devw0rp@gmail.com> | 2017-07-17 00:17:59 +0100 |
---|---|---|
committer | w0rp <devw0rp@gmail.com> | 2017-07-17 00:17:59 +0100 |
commit | 23ea62d40a0661755672a8ab0707507c58019bf0 (patch) | |
tree | 282483c682d40aaa750e2eb3fb7ba7d8decb2f88 | |
parent | 3352a6c9df427204bcbffba78fdf65906d3966d0 (diff) | |
download | ale-23ea62d40a0661755672a8ab0707507c58019bf0.zip |
#711 - Make the cpplint executable configurable
-rw-r--r-- | ale_linters/cpp/cpplint.vim | 17 | ||||
-rw-r--r-- | doc/ale-cpp.txt | 8 | ||||
-rw-r--r-- | test/command_callback/test_cpplint_command_callbacks.vader | 42 |
3 files changed, 62 insertions, 5 deletions
diff --git a/ale_linters/cpp/cpplint.vim b/ale_linters/cpp/cpplint.vim index 205c7468..346ac815 100644 --- a/ale_linters/cpp/cpplint.vim +++ b/ale_linters/cpp/cpplint.vim @@ -1,18 +1,25 @@ " Author: Dawid Kurek https://github.com/dawikur " Description: cpplint for cpp files -if !exists('g:ale_cpp_cpplint_options') - let g:ale_cpp_cpplint_options = '' -endif +call ale#Set('cpp_cpplint_executable', 'cpplint') +call ale#Set('cpp_cpplint_options', '') + +function! ale_linters#cpp#cpplint#GetExecutable(buffer) abort + return ale#Var(a:buffer, 'cpp_cpplint_executable') +endfunction function! ale_linters#cpp#cpplint#GetCommand(buffer) abort - return 'cpplint ' . ale#Var(a:buffer, 'cpp_cpplint_options') . ' %s' + let l:options = ale#Var(a:buffer, 'cpp_cpplint_options') + + return ale#Escape(ale_linters#cpp#cpplint#GetExecutable(a:buffer)) + \ . (!empty(l:options) ? ' ' . l:options : '') + \ . ' %s' endfunction call ale#linter#Define('cpp', { \ 'name': 'cpplint', \ 'output_stream': 'stderr', -\ 'executable': 'cpplint', +\ 'executable_callback': 'ale_linters#cpp#cpplint#GetExecutable', \ 'command_callback': 'ale_linters#cpp#cpplint#GetCommand', \ 'callback': 'ale#handlers#cpplint#HandleCppLintFormat', \ 'lint_file': 1, diff --git a/doc/ale-cpp.txt b/doc/ale-cpp.txt index ed852b48..854e9b4e 100644 --- a/doc/ale-cpp.txt +++ b/doc/ale-cpp.txt @@ -154,6 +154,14 @@ g:ale_cpp_cppcheck_options *g:ale_cpp_cppcheck_options* =============================================================================== cpplint *ale-cpp-cpplint* +g:ale_cpp_cpplint_executable *g:ale_cpp_cpplint_executable* + *b:ale_cpp_cpplint_executable* + Type: |String| + Default: `'cpplint'` + + This variable can be changed to use a different executable for cpplint. + + g:ale_cpp_cpplint_options *g:ale_cpp_cpplint_options* *b:ale_cpp_cpplint_options* Type: |String| diff --git a/test/command_callback/test_cpplint_command_callbacks.vader b/test/command_callback/test_cpplint_command_callbacks.vader new file mode 100644 index 00000000..34746a1b --- /dev/null +++ b/test/command_callback/test_cpplint_command_callbacks.vader @@ -0,0 +1,42 @@ +Before: + Save g:ale_cpp_cpplint_executable + Save g:ale_cpp_cpplint_options + + unlet! g:ale_cpp_cpplint_executable + unlet! b:ale_cpp_cpplint_executable + unlet! g:ale_cpp_cpplint_options + unlet! b:ale_cpp_cpplint_options + + runtime ale_linters/cpp/cpplint.vim + +After: + Restore + unlet! b:command_tail + unlet! b:ale_cpp_cpplint_executable + unlet! b:ale_cpp_cpplint_options + call ale#linter#Reset() + +Execute(The executable should be configurable): + AssertEqual 'cpplint', ale_linters#cpp#cpplint#GetExecutable(bufnr('')) + + let b:ale_cpp_cpplint_executable = 'foobar' + + AssertEqual 'foobar', ale_linters#cpp#cpplint#GetExecutable(bufnr('')) + +Execute(The executable should be used in the command): + AssertEqual + \ ale#Escape('cpplint') . ' %s', + \ ale_linters#cpp#cpplint#GetCommand(bufnr('')) + + let b:ale_cpp_cpplint_executable = 'foobar' + + AssertEqual + \ ale#Escape('foobar') . ' %s', + \ ale_linters#cpp#cpplint#GetCommand(bufnr('')) + \ +Execute(The options should be configurable): + let b:ale_cpp_cpplint_options = '--something' + + AssertEqual + \ ale#Escape('cpplint') . ' --something %s', + \ ale_linters#cpp#cpplint#GetCommand(bufnr('')) |