Skip to content

Commit ce91972

Browse files
committed
Fix #1727 - Replace previoulsy defined linters with matching names
1 parent 168768b commit ce91972

File tree

2 files changed

+12
-2
lines changed

2 files changed

+12
-2
lines changed

autoload/ale/linter.vim

+4-2
Original file line numberDiff line numberDiff line change
@@ -358,12 +358,14 @@ function! ale#linter#Define(filetype, linter) abort
358358
" This command will throw from the sandbox.
359359
let &l:equalprg=&l:equalprg
360360

361+
let l:new_linter = ale#linter#PreProcess(a:filetype, a:linter)
362+
361363
if !has_key(s:linters, a:filetype)
362364
let s:linters[a:filetype] = []
363365
endif
364366

365-
let l:new_linter = ale#linter#PreProcess(a:filetype, a:linter)
366-
367+
" Remove previously defined linters with the same name.
368+
call filter(s:linters[a:filetype], 'v:val.name isnot# a:linter.name')
367369
call add(s:linters[a:filetype], l:new_linter)
368370
endfunction
369371

test/test_linter_retrieval.vader

+8
Original file line numberDiff line numberDiff line change
@@ -158,6 +158,14 @@ Execute (Buffer-local overrides for aliases should be used):
158158

159159
AssertEqual [g:testlinter1, g:testlinter2], ale#linter#Get('testft1')
160160

161+
Execute (Linters new linters with the same name should replace old ones):
162+
let g:testlinter1.name = g:testlinter2.name
163+
164+
call ale#linter#Define('testft1', g:testlinter1)
165+
call ale#linter#Define('testft1', g:testlinter2)
166+
167+
AssertEqual [g:testlinter2], ale#linter#GetAll(['testft1'])
168+
161169
Execute (Linters should be loaded from disk appropriately):
162170
call ale#linter#Reset()
163171
AssertEqual [{'name': 'testlinter', 'output_stream': 'stdout', 'executable': 'testlinter', 'command': 'testlinter', 'callback': 'testCB', 'read_buffer': 1, 'lint_file': 0, 'aliases': [], 'lsp': ''}], ale#linter#Get('testft')

0 commit comments

Comments
 (0)