mirror of https://github.com/dense-analysis/ale
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
This commit is contained in:
parent
00dcf52d6f
commit
9b8413a825
|
@ -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'
|
||||
\})
|
||||
|
|
|
@ -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'
|
||||
|
|
Loading…
Reference in New Issue