Before: Save g:ale_erlang_syntaxerl_executable Save g:ale_erlang_syntaxerl_use_basename unlet! g:ale_erlang_syntaxerl_executable unlet! b:ale_erlang_syntaxerl_executable unlet! b:ale_erlang_syntaxerl_use_basename runtime ale_linters/erlang/syntaxerl.vim After: Restore call ale#linter#Reset() Execute (The SyntaxErl executable should be correct): AssertEqual 'syntaxerl', ale_linters#erlang#syntaxerl#GetExecutable(bufnr('')) let g:ale_erlang_syntaxerl_executable = '/some/other/syntaxerl' AssertEqual '/some/other/syntaxerl', ale_linters#erlang#syntaxerl#GetExecutable(bufnr('')) let b:ale_erlang_syntaxerl_executable = '/yet/another/syntaxerl' AssertEqual '/yet/another/syntaxerl', ale_linters#erlang#syntaxerl#GetExecutable(bufnr('')) Execute (The default SyntaxErl command should be correct): AssertEqual 'syntaxerl %t', ale_linters#erlang#syntaxerl#GetCommand(bufnr('')) Execute (The executable name should be used in the command): let g:ale_erlang_syntaxerl_executable = '/some/other/syntaxerl' AssertEqual '/some/other/syntaxerl %t', ale_linters#erlang#syntaxerl#GetCommand(bufnr('')) let b:ale_erlang_syntaxerl_executable = '/yet/another/syntaxerl' AssertEqual '/yet/another/syntaxerl %t', ale_linters#erlang#syntaxerl#GetCommand(bufnr('')) Execute (The basename option should be set when the option is on): let b:ale_erlang_syntaxerl_use_basename = 1 AssertEqual 'syntaxerl -b %s %t', ale_linters#erlang#syntaxerl#GetCommand(bufnr(''))