diff --git a/autoload/ale/linter.vim b/autoload/ale/linter.vim index 7c1dc53e..dbf9f221 100644 --- a/autoload/ale/linter.vim +++ b/autoload/ale/linter.vim @@ -346,8 +346,9 @@ endfunction function! s:GetAliasedFiletype(original_filetype) abort let l:buffer_aliases = get(b:, 'ale_linter_aliases', {}) - " b:ale_linter_aliases can be set to a List. + " b:ale_linter_aliases can be set to a List or String. if type(l:buffer_aliases) is v:t_list + \|| type(l:buffer_aliases) is v:t_string return l:buffer_aliases endif diff --git a/doc/ale.txt b/doc/ale.txt index 7e37d2dc..66ce8ab1 100644 --- a/doc/ale.txt +++ b/doc/ale.txt @@ -1310,10 +1310,12 @@ g:ale_linter_aliases *g:ale_linter_aliases* ALE will first look for aliases for filetypes in the `b:ale_linter_aliases` variable, then `g:ale_linter_aliases`, and then a default Dictionary. - `b:ale_linter_aliases` can be set to a |List|, to tell ALE to load the - linters for specific filetypes for a given buffer. > + `b:ale_linter_aliases` can be set to a |List| or a |String|, to tell ALE to + load the linters for specific filetypes for a given buffer. > let b:ale_linter_aliases = ['html', 'javascript', 'css'] + " OR, Alias a filetype to only a single filetype with a String. + let b:ale_linter_aliases = 'javascript' < No linters will be loaded when the buffer's filetype is empty. diff --git a/test/test_linter_retrieval.vader b/test/test_linter_retrieval.vader index 6c402d54..a1c34622 100644 --- a/test/test_linter_retrieval.vader +++ b/test/test_linter_retrieval.vader @@ -130,6 +130,8 @@ Execute (The local alias option shouldn't completely replace the global one): " global Dictionary. let b:ale_linter_aliases = {'testft3': ['testft1']} + AssertEqual [g:testlinter1, g:testlinter2], ale#linter#Get('testft1') + Execute (Lists should be accepted for local aliases): call ale#linter#Define('testft1', g:testlinter1) call ale#linter#Define('testft2', g:testlinter2) @@ -139,6 +141,15 @@ Execute (Lists should be accepted for local aliases): AssertEqual [g:testlinter2], ale#linter#Get('anything.else') +Execute (Strings should be accepted for local aliases): + call ale#linter#Define('testft1', g:testlinter1) + call ale#linter#Define('testft2', g:testlinter2) + let g:ale_linter_aliases = {'testft1': ['testft1', 'testft2']} + " We should load the testft2 linters for this buffer, with no duplicates. + let b:ale_linter_aliases = 'testft2' + + AssertEqual [g:testlinter2], ale#linter#Get('anything.else') + Execute (Buffer-local overrides for aliases should be used): call ale#linter#Define('testft1', g:testlinter1) call ale#linter#Define('testft2', g:testlinter2)