summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ale_linters/cpp/cquery.vim1
-rw-r--r--ale_linters/dart/language_server.vim1
-rw-r--r--ale_linters/glsl/glslls.vim1
-rw-r--r--ale_linters/php/langserver.vim1
-rw-r--r--ale_linters/python/pyls.vim1
-rw-r--r--ale_linters/python/pyre.vim1
-rw-r--r--ale_linters/rust/rls.vim1
-rw-r--r--ale_linters/sh/language_server.vim1
-rw-r--r--autoload/ale/linter.vim23
-rw-r--r--doc/ale.txt14
-rw-r--r--test/test_linter_defintion_processing.vader132
11 files changed, 92 insertions, 85 deletions
diff --git a/ale_linters/cpp/cquery.vim b/ale_linters/cpp/cquery.vim
index 2fd77d46..7997c843 100644
--- a/ale_linters/cpp/cquery.vim
+++ b/ale_linters/cpp/cquery.vim
@@ -30,5 +30,4 @@ call ale#linter#Define('cpp', {
\ 'command_callback': 'ale_linters#cpp#cquery#GetCommand',
\ 'project_root_callback': 'ale_linters#cpp#cquery#GetProjectRoot',
\ 'initialization_options_callback': 'ale_linters#cpp#cquery#GetInitializationOptions',
-\ 'language': 'cpp',
\})
diff --git a/ale_linters/dart/language_server.vim b/ale_linters/dart/language_server.vim
index bed77c52..2265e37a 100644
--- a/ale_linters/dart/language_server.vim
+++ b/ale_linters/dart/language_server.vim
@@ -20,6 +20,5 @@ call ale#linter#Define('dart', {
\ 'lsp': 'stdio',
\ 'executable_callback': 'ale_linters#dart#language_server#GetExecutable',
\ 'command_callback': 'ale_linters#dart#language_server#GetExecutable',
-\ 'language': 'dart',
\ 'project_root_callback': 'ale_linters#dart#language_server#GetProjectRoot',
\})
diff --git a/ale_linters/glsl/glslls.vim b/ale_linters/glsl/glslls.vim
index c19f28c2..77e30f9c 100644
--- a/ale_linters/glsl/glslls.vim
+++ b/ale_linters/glsl/glslls.vim
@@ -29,6 +29,5 @@ call ale#linter#Define('glsl', {
\ 'lsp': 'stdio',
\ 'executable_callback': 'ale_linters#glsl#glslls#GetExecutable',
\ 'command_callback': 'ale_linters#glsl#glslls#GetCommand',
-\ 'language': 'glsl',
\ 'project_root_callback': 'ale_linters#glsl#glslls#GetProjectRoot',
\})
diff --git a/ale_linters/php/langserver.vim b/ale_linters/php/langserver.vim
index 0f3ead66..38b42df9 100644
--- a/ale_linters/php/langserver.vim
+++ b/ale_linters/php/langserver.vim
@@ -25,6 +25,5 @@ call ale#linter#Define('php', {
\ 'lsp': 'stdio',
\ 'executable_callback': 'ale_linters#php#langserver#GetExecutable',
\ 'command_callback': 'ale_linters#php#langserver#GetCommand',
-\ 'language': 'php',
\ 'project_root_callback': 'ale_linters#php#langserver#GetProjectRoot',
\})
diff --git a/ale_linters/python/pyls.vim b/ale_linters/python/pyls.vim
index 010cb31f..ae71f022 100644
--- a/ale_linters/python/pyls.vim
+++ b/ale_linters/python/pyls.vim
@@ -23,7 +23,6 @@ call ale#linter#Define('python', {
\ 'lsp': 'stdio',
\ 'executable_callback': 'ale_linters#python#pyls#GetExecutable',
\ 'command_callback': 'ale_linters#python#pyls#GetCommand',
-\ 'language': 'python',
\ 'project_root_callback': 'ale#python#FindProjectRoot',
\ 'completion_filter': 'ale#completion#python#CompletionItemFilter',
\})
diff --git a/ale_linters/python/pyre.vim b/ale_linters/python/pyre.vim
index 13f77d68..5efef409 100644
--- a/ale_linters/python/pyre.vim
+++ b/ale_linters/python/pyre.vim
@@ -23,7 +23,6 @@ call ale#linter#Define('python', {
\ 'lsp': 'stdio',
\ 'executable_callback': 'ale_linters#python#pyre#GetExecutable',
\ 'command_callback': 'ale_linters#python#pyre#GetCommand',
-\ 'language': 'python',
\ 'project_root_callback': 'ale#python#FindProjectRoot',
\ 'completion_filter': 'ale#completion#python#CompletionItemFilter',
\})
diff --git a/ale_linters/rust/rls.vim b/ale_linters/rust/rls.vim
index d5160b14..cd13291d 100644
--- a/ale_linters/rust/rls.vim
+++ b/ale_linters/rust/rls.vim
@@ -30,6 +30,5 @@ call ale#linter#Define('rust', {
\ 'lsp': 'stdio',
\ 'executable_callback': 'ale_linters#rust#rls#GetExecutable',
\ 'command_callback': 'ale_linters#rust#rls#GetCommand',
-\ 'language': 'rust',
\ 'project_root_callback': 'ale_linters#rust#rls#GetProjectRoot',
\})
diff --git a/ale_linters/sh/language_server.vim b/ale_linters/sh/language_server.vim
index 2f66e27b..385d1119 100644
--- a/ale_linters/sh/language_server.vim
+++ b/ale_linters/sh/language_server.vim
@@ -28,6 +28,5 @@ call ale#linter#Define('sh', {
\ 'lsp': 'stdio',
\ 'executable_callback': 'ale_linters#sh#language_server#GetExecutable',
\ 'command_callback': 'ale_linters#sh#language_server#GetCommand',
-\ 'language': 'sh',
\ 'project_root_callback': 'ale_linters#sh#language_server#GetProjectRoot',
\})
diff --git a/autoload/ale/linter.vim b/autoload/ale/linter.vim
index 299f5dad..b0237bcb 100644
--- a/autoload/ale/linter.vim
+++ b/autoload/ale/linter.vim
@@ -59,7 +59,7 @@ function! s:LanguageGetter(buffer) dict abort
return l:self.language
endfunction
-function! ale#linter#PreProcess(linter) abort
+function! ale#linter#PreProcess(filetype, linter) abort
if type(a:linter) != type({})
throw 'The linter object must be a Dictionary'
endif
@@ -193,13 +193,20 @@ function! ale#linter#PreProcess(linter) abort
endif
if l:needs_lsp_details
- if has_key(a:linter, 'language')
- if has_key(a:linter, 'language_callback')
+ if has_key(a:linter, 'language_callback')
+ if has_key(a:linter, 'language')
throw 'Only one of `language` or `language_callback` '
\ . 'should be set'
endif
- let l:obj.language = get(a:linter, 'language')
+ let l:obj.language_callback = get(a:linter, 'language_callback')
+
+ if !s:IsCallback(l:obj.language_callback)
+ throw '`language_callback` must be a callback for LSP linters'
+ endif
+ else
+ " Default to using the filetype as the language.
+ let l:obj.language = get(a:linter, 'language', a:filetype)
if type(l:obj.language) != type('')
throw '`language` must be a string'
@@ -207,12 +214,6 @@ function! ale#linter#PreProcess(linter) abort
" Make 'language_callback' return the 'language' value.
let l:obj.language_callback = function('s:LanguageGetter')
- else
- let l:obj.language_callback = get(a:linter, 'language_callback')
-
- if !s:IsCallback(l:obj.language_callback)
- throw '`language_callback` must be a callback for LSP linters'
- endif
endif
let l:obj.project_root_callback = get(a:linter, 'project_root_callback')
@@ -286,7 +287,7 @@ function! ale#linter#Define(filetype, linter) abort
let s:linters[a:filetype] = []
endif
- let l:new_linter = ale#linter#PreProcess(a:linter)
+ let l:new_linter = ale#linter#PreProcess(a:filetype, a:linter)
call add(s:linters[a:filetype], l:new_linter)
endfunction
diff --git a/doc/ale.txt b/doc/ale.txt
index 232d7630..9283765f 100644
--- a/doc/ale.txt
+++ b/doc/ale.txt
@@ -2383,9 +2383,12 @@ ale#linter#Define(filetype, linter) *ale#linter#Define()*
with a callback returning an address to connect to.
ALE will not start a server automatically.
- When this argument is not empty, only one of either
- `language` or `language_callback` must be defined,
- and `project_root_callback` must be defined.
+ When this argument is not empty
+ `project_root_callback` must be defined.
+
+ `language` or `language_callback` can be defined to
+ describe the language for a file. The filetype will
+ be used as the language by default.
LSP linters handle diagnostics automatically, so
the `callback` argument must not be defined.
@@ -2418,8 +2421,9 @@ ale#linter#Define(filetype, linter) *ale#linter#Define()*
being checked. This string will be sent to the LSP to
tell it what type of language is being checked.
- This argument must only be set if the `lsp` argument
- is also set to a non-empty string.
+ If this or `language_callback` isn't set, the
+ language will default to the value of the filetype
+ given to |ale#linter#Define|.
`language_callback` A |String| or |Funcref| for a callback function
accepting a buffer number. A |String| should be
diff --git a/test/test_linter_defintion_processing.vader b/test/test_linter_defintion_processing.vader
index 48a4a394..f0ec023a 100644
--- a/test/test_linter_defintion_processing.vader
+++ b/test/test_linter_defintion_processing.vader
@@ -5,11 +5,11 @@ After:
unlet g:linter
Execute (PreProcess should throw when the linter object is not a Dictionary):
- AssertThrows call ale#linter#PreProcess('')
+ AssertThrows call ale#linter#PreProcess('testft', '')
AssertEqual 'The linter object must be a Dictionary', g:vader_exception
Execute (PreProcess should throw when there is no name):
- AssertThrows call ale#linter#PreProcess({
+ AssertThrows call ale#linter#PreProcess('testft', {
\ 'callback': 'SomeFunction',
\ 'executable': 'echo',
\ 'command': 'echo',
@@ -17,7 +17,7 @@ Execute (PreProcess should throw when there is no name):
AssertEqual '`name` must be defined to name the linter', g:vader_exception
Execute (PreProcess should throw when there is no callback):
- AssertThrows call ale#linter#PreProcess({
+ AssertThrows call ale#linter#PreProcess('testft', {
\ 'name': 'foo',
\ 'executable': 'echo',
\ 'command': 'echo',
@@ -25,7 +25,7 @@ Execute (PreProcess should throw when there is no callback):
AssertEqual '`callback` must be defined with a callback to accept output', g:vader_exception
Execute (PreProcess should throw when then callback is not a function):
- AssertThrows call ale#linter#PreProcess({
+ AssertThrows call ale#linter#PreProcess('testft', {
\ 'name': 'foo',
\ 'callback': 1,
\ 'executable': 'echo',
@@ -34,7 +34,7 @@ Execute (PreProcess should throw when then callback is not a function):
AssertEqual '`callback` must be defined with a callback to accept output', g:vader_exception
Execute (PreProcess should throw when there is no executable or executable_callback):
- AssertThrows call ale#linter#PreProcess({
+ AssertThrows call ale#linter#PreProcess('testft', {
\ 'name': 'foo',
\ 'callback': 'SomeFunction',
\ 'command': 'echo',
@@ -42,7 +42,7 @@ Execute (PreProcess should throw when there is no executable or executable_callb
AssertEqual 'Either `executable` or `executable_callback` must be defined', g:vader_exception
Execute (PreProcess should throw when executable is not a string):
- AssertThrows call ale#linter#PreProcess({
+ AssertThrows call ale#linter#PreProcess('testft', {
\ 'name': 'foo',
\ 'callback': 'SomeFunction',
\ 'executable': 123,
@@ -51,7 +51,7 @@ Execute (PreProcess should throw when executable is not a string):
AssertEqual '`executable` must be a string if defined', g:vader_exception
Execute (PreProcess should throw when executable_callback is not a callback):
- AssertThrows call ale#linter#PreProcess({
+ AssertThrows call ale#linter#PreProcess('testft', {
\ 'name': 'foo',
\ 'callback': 'SomeFunction',
\ 'executable_callback': 123,
@@ -60,7 +60,7 @@ Execute (PreProcess should throw when executable_callback is not a callback):
AssertEqual '`executable_callback` must be a callback if defined', g:vader_exception
Execute (PreProcess should throw when there is no command):
- AssertThrows call ale#linter#PreProcess({
+ AssertThrows call ale#linter#PreProcess('testft', {
\ 'name': 'foo',
\ 'callback': 'SomeFunction',
\ 'executable': 'echo',
@@ -68,7 +68,7 @@ Execute (PreProcess should throw when there is no command):
AssertEqual 'Either `command`, `executable_callback`, `command_chain` must be defined', g:vader_exception
Execute (PreProcess should throw when command is not a string):
- AssertThrows call ale#linter#PreProcess({
+ AssertThrows call ale#linter#PreProcess('testft', {
\ 'name': 'foo',
\ 'callback': 'SomeFunction',
\ 'executable': 'echo',
@@ -77,7 +77,7 @@ Execute (PreProcess should throw when command is not a string):
AssertEqual '`command` must be a string if defined', g:vader_exception
Execute (PreProcess should throw when command_callback is not a callback):
- AssertThrows call ale#linter#PreProcess({
+ AssertThrows call ale#linter#PreProcess('testft', {
\ 'name': 'foo',
\ 'callback': 'SomeFunction',
\ 'executable': 'echo',
@@ -86,7 +86,7 @@ Execute (PreProcess should throw when command_callback is not a callback):
AssertEqual '`command_callback` must be a callback if defined', g:vader_exception
Execute (PreProcess should when the output stream isn't a valid string):
- AssertThrows call ale#linter#PreProcess({
+ AssertThrows call ale#linter#PreProcess('testft', {
\ 'name': 'foo',
\ 'callback': 'SomeFunction',
\ 'executable': 'echo',
@@ -96,7 +96,7 @@ Execute (PreProcess should when the output stream isn't a valid string):
AssertEqual "`output_stream` must be 'stdout', 'stderr', or 'both'", g:vader_exception
Execute (PreProcess should not throw when everything is correct):
- call ale#linter#PreProcess({
+ call ale#linter#PreProcess('testft', {
\ 'name': 'foo',
\ 'callback': 'SomeFunction',
\ 'executable': 'echo',
@@ -104,7 +104,7 @@ Execute (PreProcess should not throw when everything is correct):
\})
Execute (PreProcess should accept an stdout output_stream):
- call ale#linter#PreProcess({
+ call ale#linter#PreProcess('testft', {
\ 'name': 'foo',
\ 'callback': 'SomeFunction',
\ 'executable': 'echo',
@@ -113,7 +113,7 @@ Execute (PreProcess should accept an stdout output_stream):
\})
Execute (PreProcess should accept an stderr output_stream):
- call ale#linter#PreProcess({
+ call ale#linter#PreProcess('testft', {
\ 'name': 'foo',
\ 'callback': 'SomeFunction',
\ 'executable': 'echo',
@@ -122,7 +122,7 @@ Execute (PreProcess should accept an stderr output_stream):
\})
Execute (PreProcess should accept a 'both' output_stream):
- call ale#linter#PreProcess({
+ call ale#linter#PreProcess('testft', {
\ 'name': 'foo',
\ 'callback': 'SomeFunction',
\ 'executable': 'echo',
@@ -137,7 +137,7 @@ Execute(PreProcess should complain if the command_chain is not a List):
\ 'executable': 'x',
\ 'command_chain': 'x',
\}
- AssertThrows call ale#linter#PreProcess(g:linter)
+ AssertThrows call ale#linter#PreProcess('testft', g:linter)
AssertEqual '`command_chain` must be a List', g:vader_exception
Execute(PreProcess should complain if the command_chain is empty):
@@ -147,7 +147,7 @@ Execute(PreProcess should complain if the command_chain is empty):
\ 'executable': 'x',
\ 'command_chain': [],
\}
- AssertThrows call ale#linter#PreProcess(g:linter)
+ AssertThrows call ale#linter#PreProcess('testft', g:linter)
AssertEqual '`command_chain` must contain at least one item', g:vader_exception
Execute(PreProcess should complain if the command_chain has no callback):
@@ -157,7 +157,7 @@ Execute(PreProcess should complain if the command_chain has no callback):
\ 'executable': 'x',
\ 'command_chain': [{}],
\}
- AssertThrows call ale#linter#PreProcess(g:linter)
+ AssertThrows call ale#linter#PreProcess('testft', g:linter)
AssertEqual 'The `command_chain` item 0 must define a `callback` function', g:vader_exception
Execute(PreProcess should complain if the command_chain callback is not a function):
@@ -167,7 +167,7 @@ Execute(PreProcess should complain if the command_chain callback is not a functi
\ 'executable': 'x',
\ 'command_chain': [{'callback': 2}],
\}
- AssertThrows call ale#linter#PreProcess(g:linter)
+ AssertThrows call ale#linter#PreProcess('testft', g:linter)
AssertEqual 'The `command_chain` item 0 must define a `callback` function', g:vader_exception
Execute(PreProcess should accept a chain with one callback):
@@ -177,7 +177,7 @@ Execute(PreProcess should accept a chain with one callback):
\ 'executable': 'x',
\ 'command_chain': [{'callback': 'foo'}],
\}
- call ale#linter#PreProcess(g:linter)
+ call ale#linter#PreProcess('testft', g:linter)
Execute(PreProcess should complain about invalid output_stream values in the chain):
let g:linter = {
@@ -186,7 +186,7 @@ Execute(PreProcess should complain about invalid output_stream values in the cha
\ 'executable': 'x',
\ 'command_chain': [{'callback': 'foo', 'output_stream': ''}],
\}
- AssertThrows call ale#linter#PreProcess(g:linter)
+ AssertThrows call ale#linter#PreProcess('testft', g:linter)
AssertEqual "The `command_chain` item 0 `output_stream` flag must be 'stdout', 'stderr', or 'both'", g:vader_exception
Execute(PreProcess should complain about valid output_stream values in the chain):
@@ -196,11 +196,11 @@ Execute(PreProcess should complain about valid output_stream values in the chain
\ 'executable': 'x',
\ 'command_chain': [{'callback': 'foo', 'output_stream': 'stdout'}],
\}
- call ale#linter#PreProcess(g:linter)
+ call ale#linter#PreProcess('testft', g:linter)
let g:linter.command_chain[0].output_stream = 'stderr'
- call ale#linter#PreProcess(g:linter)
+ call ale#linter#PreProcess('testft', g:linter)
let g:linter.command_chain[0].output_stream = 'both'
- call ale#linter#PreProcess(g:linter)
+ call ale#linter#PreProcess('testft', g:linter)
Execute(PreProcess should complain about invalid chain items at higher indices):
let g:linter = {
@@ -209,7 +209,7 @@ Execute(PreProcess should complain about invalid chain items at higher indices):
\ 'executable': 'x',
\ 'command_chain': [{'callback': 'foo'}, {'callback': 123}],
\}
- AssertThrows call ale#linter#PreProcess(g:linter)
+ AssertThrows call ale#linter#PreProcess('testft', g:linter)
AssertEqual 'The `command_chain` item 1 must define a `callback` function', g:vader_exception
Execute(PreProcess should complain when conflicting command options are used):
@@ -220,19 +220,19 @@ Execute(PreProcess should complain when conflicting command options are used):
\ 'command': 'foo',
\ 'command_chain': [{'callback': 'foo'}],
\}
- AssertThrows call ale#linter#PreProcess(g:linter)
+ AssertThrows call ale#linter#PreProcess('testft', g:linter)
AssertEqual 'Only one of `command`, `command_callback`, or `command_chain` should be set', g:vader_exception
unlet g:linter.command
let g:linter.command_callback = 'foo'
- AssertThrows call ale#linter#PreProcess(g:linter)
+ AssertThrows call ale#linter#PreProcess('testft', g:linter)
AssertEqual 'Only one of `command`, `command_callback`, or `command_chain` should be set', g:vader_exception
let g:linter.command = 'foo'
unlet g:linter.command_chain
- AssertThrows call ale#linter#PreProcess(g:linter)
+ AssertThrows call ale#linter#PreProcess('testft', g:linter)
AssertEqual 'Only one of `command`, `command_callback`, or `command_chain` should be set', g:vader_exception
Execute(PreProcess should process the read_buffer option correctly):
@@ -244,35 +244,35 @@ Execute(PreProcess should process the read_buffer option correctly):
\ 'read_buffer': '0',
\}
- AssertThrows call ale#linter#PreProcess(g:linter)
+ AssertThrows call ale#linter#PreProcess('testft', g:linter)
AssertEqual '`read_buffer` must be `0` or `1`', g:vader_exception
let g:linter.read_buffer = 0
- call ale#linter#PreProcess(g:linter)
+ call ale#linter#PreProcess('testft', g:linter)
let g:linter.read_buffer = 1
- call ale#linter#PreProcess(g:linter)
+ call ale#linter#PreProcess('testft', g:linter)
unlet g:linter.read_buffer
let g:linter.command_chain[0].read_buffer = '0'
- AssertThrows call ale#linter#PreProcess(g:linter)
+ AssertThrows call ale#linter#PreProcess('testft', g:linter)
AssertEqual 'The `command_chain` item 0 value for `read_buffer` must be `0` or `1`', g:vader_exception
let g:linter.command_chain[0].read_buffer = 0
- call ale#linter#PreProcess(g:linter)
+ call ale#linter#PreProcess('testft', g:linter)
let g:linter.command_chain[1].read_buffer = '0'
- AssertThrows call ale#linter#PreProcess(g:linter)
+ AssertThrows call ale#linter#PreProcess('testft', g:linter)
AssertEqual 'The `command_chain` item 1 value for `read_buffer` must be `0` or `1`', g:vader_exception
let g:linter.command_chain[1].read_buffer = 1
- call ale#linter#PreProcess(g:linter)
+ call ale#linter#PreProcess('testft', g:linter)
Execute(PreProcess should set a default value for read_buffer):
let g:linter = {
@@ -282,7 +282,7 @@ Execute(PreProcess should set a default value for read_buffer):
\ 'command': 'x',
\}
- AssertEqual 1, ale#linter#PreProcess(g:linter).read_buffer
+ AssertEqual 1, ale#linter#PreProcess('testft', g:linter).read_buffer
Execute(PreProcess should process the lint_file option correctly):
let g:linter = {
@@ -293,25 +293,25 @@ Execute(PreProcess should process the lint_file option correctly):
\ 'lint_file': 'x',
\}
- AssertThrows call ale#linter#PreProcess(g:linter)
+ AssertThrows call ale#linter#PreProcess('testft', g:linter)
AssertEqual '`lint_file` must be `0` or `1`', g:vader_exception
let g:linter.lint_file = 0
- AssertEqual 0, ale#linter#PreProcess(g:linter).lint_file
+ AssertEqual 0, ale#linter#PreProcess('testft', g:linter).lint_file
" The default for read_buffer should be 1 when lint_file is 0
- AssertEqual 1, ale#linter#PreProcess(g:linter).read_buffer
+ AssertEqual 1, ale#linter#PreProcess('testft', g:linter).read_buffer
let g:linter.lint_file = 1
- AssertEqual 1, ale#linter#PreProcess(g:linter).lint_file
+ AssertEqual 1, ale#linter#PreProcess('testft', g:linter).lint_file
" The default for read_buffer should change to 0 when lint_file is 1.
- AssertEqual 0, ale#linter#PreProcess(g:linter).read_buffer
+ AssertEqual 0, ale#linter#PreProcess('testft', g:linter).read_buffer
let g:linter.read_buffer = 1
" We shouldn't be able to set both options to 1 at the same time.
- AssertThrows call ale#linter#PreProcess(g:linter)
+ AssertThrows call ale#linter#PreProcess('testft', g:linter)
AssertEqual 'Only one of `lint_file` or `read_buffer` can be `1`', g:vader_exception
Execute(PreProcess should set a default value for lint_file):
@@ -322,7 +322,7 @@ Execute(PreProcess should set a default value for lint_file):
\ 'command': 'x',
\}
- AssertEqual 0, ale#linter#PreProcess(g:linter).lint_file
+ AssertEqual 0, ale#linter#PreProcess('testft', g:linter).lint_file
Execute(PreProcess should set a default value for aliases):
let g:linter = {
@@ -332,7 +332,7 @@ Execute(PreProcess should set a default value for aliases):
\ 'command': 'x',
\}
- AssertEqual [], ale#linter#PreProcess(g:linter).aliases
+ AssertEqual [], ale#linter#PreProcess('testft', g:linter).aliases
Execute(PreProcess should complain about invalid `aliases` values):
let g:linter = {
@@ -343,12 +343,12 @@ Execute(PreProcess should complain about invalid `aliases` values):
\ 'aliases': 'foo',
\}
- AssertThrows call ale#linter#PreProcess(g:linter)
+ AssertThrows call ale#linter#PreProcess('testft', g:linter)
AssertEqual '`aliases` must be a List of String values', g:vader_exception
let g:linter.aliases = [1]
- AssertThrows call ale#linter#PreProcess(g:linter)
+ AssertThrows call ale#linter#PreProcess('testft', g:linter)
AssertEqual '`aliases` must be a List of String values', g:vader_exception
Execute(PreProcess should accept `aliases` lists):
@@ -360,11 +360,11 @@ Execute(PreProcess should accept `aliases` lists):
\ 'aliases': [],
\}
- AssertEqual [], ale#linter#PreProcess(g:linter).aliases
+ AssertEqual [], ale#linter#PreProcess('testft', g:linter).aliases
let g:linter.aliases = ['foo', 'bar']
- AssertEqual ['foo', 'bar'], ale#linter#PreProcess(g:linter).aliases
+ AssertEqual ['foo', 'bar'], ale#linter#PreProcess('testft', g:linter).aliases
Execute(PreProcess should accept tsserver LSP configuration):
let g:linter = {
@@ -376,17 +376,17 @@ Execute(PreProcess should accept tsserver LSP configuration):
\ 'project_root_callback': 'x',
\}
- AssertEqual 'tsserver', ale#linter#PreProcess(g:linter).lsp
+ AssertEqual 'tsserver', ale#linter#PreProcess('testft', g:linter).lsp
call remove(g:linter, 'executable')
let g:linter.executable_callback = 'X'
- call ale#linter#PreProcess(g:linter)
+ call ale#linter#PreProcess('testft', g:linter)
call remove(g:linter, 'command')
let g:linter.command_callback = 'X'
- call ale#linter#PreProcess(g:linter)
+ call ale#linter#PreProcess('testft', g:linter)
Execute(PreProcess should accept stdio LSP configuration):
let g:linter = {
@@ -398,17 +398,17 @@ Execute(PreProcess should accept stdio LSP configuration):
\ 'project_root_callback': 'x',
\}
- AssertEqual 'stdio', ale#linter#PreProcess(g:linter).lsp
+ AssertEqual 'stdio', ale#linter#PreProcess('testft', g:linter).lsp
call remove(g:linter, 'executable')
let g:linter.executable_callback = 'X'
- call ale#linter#PreProcess(g:linter)
+ call ale#linter#PreProcess('testft', g:linter)
call remove(g:linter, 'command')
let g:linter.command_callback = 'X'
- call ale#linter#PreProcess(g:linter)
+ call ale#linter#PreProcess('testft', g:linter)
Execute(PreProcess should accept LSP server configurations):
let g:linter = {
@@ -419,7 +419,7 @@ Execute(PreProcess should accept LSP server configurations):
\ 'project_root_callback': 'x',
\}
- AssertEqual 'socket', ale#linter#PreProcess(g:linter).lsp
+ AssertEqual 'socket', ale#linter#PreProcess('testft', g:linter).lsp
Execute(PreProcess should accept let you specify the language as just a string):
let g:linter = {
@@ -430,7 +430,7 @@ Execute(PreProcess should accept let you specify the language as just a string):
\ 'project_root_callback': 'x',
\}
- AssertEqual 'foobar', ale#linter#PreProcess(g:linter).language_callback(0)
+ AssertEqual 'foobar', ale#linter#PreProcess('testft', g:linter).language_callback(0)
Execute(PreProcess should complain about using language and language_callback together):
let g:linter = {
@@ -442,16 +442,26 @@ Execute(PreProcess should complain about using language and language_callback to
\ 'project_root_callback': 'x',
\}
- AssertThrows call ale#linter#PreProcess(g:linter)
+ AssertThrows call ale#linter#PreProcess('testft', g:linter)
AssertEqual 'Only one of `language` or `language_callback` should be set', g:vader_exception
+Execute(PreProcess should use the filetype as the language string by default):
+ let g:linter = {
+ \ 'name': 'x',
+ \ 'lsp': 'socket',
+ \ 'address_callback': 'X',
+ \ 'project_root_callback': 'x',
+ \}
+
+ AssertEqual 'testft', ale#linter#PreProcess('testft', g:linter).language_callback(0)
+
Execute(PreProcess should require an address_callback for LSP socket configurations):
let g:linter = {
\ 'name': 'x',
\ 'lsp': 'socket',
\}
- AssertThrows call ale#linter#PreProcess(g:linter)
+ AssertThrows call ale#linter#PreProcess('testft', g:linter)
AssertEqual '`address_callback` must be defined for getting the LSP address', g:vader_exception
Execute(PreProcess should complain about address_callback for non-LSP linters):
@@ -463,7 +473,7 @@ Execute(PreProcess should complain about address_callback for non-LSP linters):
\ 'address_callback': 'X',
\}
- AssertThrows call ale#linter#PreProcess(g:linter)
+ AssertThrows call ale#linter#PreProcess('testft', g:linter)
AssertEqual '`address_callback` cannot be used when lsp != ''socket''', g:vader_exception
Execute(PreProcess should complain about using initialization_options and initialization_options_callback together):
@@ -477,11 +487,11 @@ Execute(PreProcess should complain about using initialization_options and initia
\ 'initialization_options_callback': 'x',
\}
- AssertThrows call ale#linter#PreProcess(g:linter)
+ AssertThrows call ale#linter#PreProcess('testft', g:linter)
AssertEqual 'Only one of `initialization_options` or `initialization_options_callback` should be set', g:vader_exception
Execute (PreProcess should throw when initialization_options_callback is not a callback):
- AssertThrows call ale#linter#PreProcess({
+ AssertThrows call ale#linter#PreProcess('testft', {
\ 'name': 'foo',
\ 'lsp': 'socket',
\ 'address_callback': 'X',