Skip to content

Commit

Permalink
Fix chktex highlighting wrong column when using tabs instead of spaces (
Browse files Browse the repository at this point in the history
#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
  • Loading branch information
Jorengarenar committed Feb 26, 2024
1 parent 00dcf52 commit 9b8413a
Show file tree
Hide file tree
Showing 2 changed files with 41 additions and 5 deletions.
19 changes: 16 additions & 3 deletions ale_linters/tex/chktex.vim
Original file line number Diff line number Diff line change
Expand Up @@ -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')
Expand Down Expand Up @@ -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'
\})
27 changes: 25 additions & 2 deletions test/linter/test_tex_chktex.vader
Original file line number Diff line number Diff line change
@@ -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'
Expand Down

0 comments on commit 9b8413a

Please sign in to comment.