diff options
author | Jorengarenar <jorengarenar@outlook.com> | 2024-02-27 00:54:14 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-02-27 08:54:14 +0900 |
commit | 9b8413a825b6d454ebb5be2285e3fa01a2ea63c1 (patch) | |
tree | 6f17012bc916cc17312441025ec84f00545afa1d | |
parent | 00dcf52d6f315721e3cddf19c815b353dcde9220 (diff) | |
download | ale-9b8413a825b6d454ebb5be2285e3fa01a2ea63c1.zip |
Fix chktex highlighting wrong column when using tabs instead of spaces (#4727)
* Fix '-s' to be '-S' when setting 'TabSize=1' for chktex
Fixes #4712
Closes #4725
* Check if chktex's -S option is available
* Check chktex version instead of trying -S option
-rw-r--r-- | ale_linters/tex/chktex.vim | 19 | ||||
-rw-r--r-- | test/linter/test_tex_chktex.vader | 27 |
2 files changed, 41 insertions, 5 deletions
diff --git a/ale_linters/tex/chktex.vim b/ale_linters/tex/chktex.vim index b4eacb82..9e7be587 100644 --- a/ale_linters/tex/chktex.vim +++ b/ale_linters/tex/chktex.vim @@ -4,12 +4,20 @@ call ale#Set('tex_chktex_executable', 'chktex') call ale#Set('tex_chktex_options', '-I') -function! ale_linters#tex#chktex#GetCommand(buffer) abort +function! ale_linters#tex#chktex#GetExecutable(buffer) abort + return ale#Var(a:buffer, 'tex_chktex_executable') +endfunction + +function! ale_linters#tex#chktex#GetCommand(buffer, version) abort let l:options = '' " Avoid bug when used without -p (last warning has gibberish for a filename) let l:options .= ' -v0 -p stdin -q' + " Avoid bug of reporting wrong column when using tabs (issue #723) + if ale#semver#GTE(a:version, [1, 7, 7]) + let l:options .= ' -S TabSize=1' + endif " Check for optional .chktexrc let l:chktex_config = ale#path#FindNearestFile(a:buffer, '.chktexrc') @@ -45,7 +53,12 @@ endfunction call ale#linter#Define('tex', { \ 'name': 'chktex', -\ 'executable': {b -> ale#Var(b, 'tex_chktex_executable')}, -\ 'command': function('ale_linters#tex#chktex#GetCommand'), +\ 'executable': function('ale_linters#tex#chktex#GetExecutable'), +\ 'command': {buffer -> ale#semver#RunWithVersionCheck( +\ buffer, +\ ale_linters#tex#chktex#GetExecutable(buffer), +\ '%e --version', +\ function('ale_linters#tex#chktex#GetCommand'), +\ )}, \ 'callback': 'ale_linters#tex#chktex#Handle' \}) diff --git a/test/linter/test_tex_chktex.vader b/test/linter/test_tex_chktex.vader index d787ca87..038bd10c 100644 --- a/test/linter/test_tex_chktex.vader +++ b/test/linter/test_tex_chktex.vader @@ -1,14 +1,37 @@ Before: call ale#assert#SetUpLinterTest('tex', 'chktex') + GivenCommandOutput ['ChkTeX v1.7.6 - Copyright 1995-96 Jens T. Berger Thielemann'] + After: call ale#assert#TearDownLinterTest() Execute(The default command should be correct): - AssertLinter 'chktex', + AssertLinter 'chktex', [ + \ ale#Escape('chktex') . ' --version', \ ale#Escape('chktex') \ . ' -v0 -p stdin -q' - \ . ' -I' + \ . ' -I', + \] + + " The version check should be cached. + GivenCommandOutput [] + AssertLinter 'chktex', [ + \ ale#Escape('chktex') + \ . ' -v0 -p stdin -q' + \ . ' -I', + \] + + " Try newer version + call ale#semver#ResetVersionCache() + GivenCommandOutput ['ChkTeX v1.7.8 - Copyright 1995-96 Jens T. Berger Thielemann'] + AssertLinter 'chktex', [ + \ ale#Escape('chktex') . ' --version', + \ ale#Escape('chktex') + \ . ' -v0 -p stdin -q' + \ . ' -S TabSize=1' + \ . ' -I', + \] Execute(The executable should be configurable): let g:ale_tex_chktex_executable = 'bin/foo' |