summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorw0rp <devw0rp@gmail.com>2019-06-10 22:41:20 +0100
committerw0rp <devw0rp@gmail.com>2019-06-10 22:41:20 +0100
commitce91972c947dbd3f6fe9408b8ae89b824b4c4fa7 (patch)
tree4c8429582b3746c29c174dee499cdc133b37063c
parent168768b32667b244e0afdc8da851d91ab95d6e2f (diff)
downloadale-ce91972c947dbd3f6fe9408b8ae89b824b4c4fa7.zip
Fix #1727 - Replace previoulsy defined linters with matching names
-rw-r--r--autoload/ale/linter.vim6
-rw-r--r--test/test_linter_retrieval.vader8
2 files changed, 12 insertions, 2 deletions
diff --git a/autoload/ale/linter.vim b/autoload/ale/linter.vim
index 6a714d6a..78dcd3a2 100644
--- a/autoload/ale/linter.vim
+++ b/autoload/ale/linter.vim
@@ -358,12 +358,14 @@ function! ale#linter#Define(filetype, linter) abort
" This command will throw from the sandbox.
let &l:equalprg=&l:equalprg
+ let l:new_linter = ale#linter#PreProcess(a:filetype, a:linter)
+
if !has_key(s:linters, a:filetype)
let s:linters[a:filetype] = []
endif
- let l:new_linter = ale#linter#PreProcess(a:filetype, a:linter)
-
+ " Remove previously defined linters with the same name.
+ call filter(s:linters[a:filetype], 'v:val.name isnot# a:linter.name')
call add(s:linters[a:filetype], l:new_linter)
endfunction
diff --git a/test/test_linter_retrieval.vader b/test/test_linter_retrieval.vader
index 6f9b3db4..88885b71 100644
--- a/test/test_linter_retrieval.vader
+++ b/test/test_linter_retrieval.vader
@@ -158,6 +158,14 @@ Execute (Buffer-local overrides for aliases should be used):
AssertEqual [g:testlinter1, g:testlinter2], ale#linter#Get('testft1')
+Execute (Linters new linters with the same name should replace old ones):
+ let g:testlinter1.name = g:testlinter2.name
+
+ call ale#linter#Define('testft1', g:testlinter1)
+ call ale#linter#Define('testft1', g:testlinter2)
+
+ AssertEqual [g:testlinter2], ale#linter#GetAll(['testft1'])
+
Execute (Linters should be loaded from disk appropriately):
call ale#linter#Reset()
AssertEqual [{'name': 'testlinter', 'output_stream': 'stdout', 'executable': 'testlinter', 'command': 'testlinter', 'callback': 'testCB', 'read_buffer': 1, 'lint_file': 0, 'aliases': [], 'lsp': ''}], ale#linter#Get('testft')