Before: runtime ale_linters/xml/xmllint.vim After: let g:ale_xml_xmllint_options = '' let g:ale_xml_xmllint_executable = 'xmllint' call ale#linter#Reset() Execute(The xml xmllint command callback should return the correct default string): AssertEqual ale#Escape('xmllint') . ' --noout -', \ join(split(ale_linters#xml#xmllint#GetCommand(1))) Execute(The xml xmllint command callback should let you set options): let g:ale_xml_xmllint_options = '--xinclude --postvalid' AssertEqual ale#Escape('xmllint') . ' --xinclude --postvalid --noout -', \ join(split(ale_linters#xml#xmllint#GetCommand(1))) Execute(The xmllint executable should be configurable): let g:ale_xml_xmllint_executable = '~/.local/bin/xmllint' AssertEqual '~/.local/bin/xmllint', ale_linters#xml#xmllint#GetExecutable(1) AssertEqual ale#Escape('~/.local/bin/xmllint') . ' --noout -', \ join(split(ale_linters#xml#xmllint#GetCommand(1)))