Merge pull request #2136 from hsanson/368-chktex-latex-report-errors-from-wrong-file

Fix 368 - Lacheck reports errors from input{} files.
This commit is contained in:
w0rp 2018-12-16 13:17:52 +00:00 committed by w0rp
parent df76d8a51c
commit 6ef54842de
No known key found for this signature in database
GPG key ID: 0FC1ECAA8C81CD83
5 changed files with 59 additions and 4 deletions

View file

@ -8,20 +8,26 @@ function! ale_linters#tex#lacheck#Handle(buffer, lines) abort
"
" "book.tex", line 37: possible unwanted space at "{"
" "book.tex", line 38: missing `\ ' after "etc."
let l:pattern = '^".\+", line \(\d\+\): \(.\+\)$'
let l:pattern = '^"\(.\+\)", line \(\d\+\): \(.\+\)$'
let l:output = []
for l:match in ale#util#GetMatches(a:lines, l:pattern)
" lacheck follows `\input{}` commands. If the cwd is not the same as the
" file in the buffer then it will fail to find the inputed items. We do not
" want warnings from those items anyway
if !empty(matchstr(l:match[2], '^Could not open ".\+"$'))
if !empty(matchstr(l:match[3], '^Could not open ".\+"$'))
continue
endif
" lacheck follows `\input{}` commands. We are only interested in
" reporting errors for the current buffer only.
if empty(matchstr(fnamemodify(l:match[1], ':t'), fnamemodify(bufname(a:buffer), ':t')))
continue
endif
call add(l:output, {
\ 'lnum': l:match[1] + 0,
\ 'text': l:match[2],
\ 'lnum': l:match[2] + 0,
\ 'text': l:match[3],
\ 'type': 'W',
\})
endfor

View file

@ -0,0 +1,13 @@
Before:
call ale#assert#SetUpLinterTest('tex', 'lacheck')
After:
call ale#assert#TearDownLinterTest()
Execute(Executable should default to lacheck):
AssertLinter 'lacheck', ale#Escape('lacheck') . ' %t'
Execute(Should be able to set a custom executable):
let g:ale_tex_lacheck_executable = 'bin/foo'
AssertLinter 'bin/foo' , ale#Escape('bin/foo') . ' %t'

View file

@ -0,0 +1,36 @@
Before:
runtime ale_linters/tex/lacheck.vim
call ale#test#SetDirectory('/testplugin/test')
After:
call ale#linter#Reset()
call ale#test#RestoreDirectory()
Execute(The lacheck handler should parse lines correctly):
call ale#test#SetFilename('command_callback/tex_paths/sample1.tex')
AssertEqual
\ [
\ {
\ 'lnum': 1,
\ 'type': 'W',
\ 'text': 'perhaps you should insert a `~'' before "\ref"'
\ }
\ ],
\ ale_linters#tex#lacheck#Handle(bufnr(''), [
\ "** sample1:",
\ "\"sample1.tex\", line 1: perhaps you should insert a `~' before \"\\ref\""
\ ])
Execute(The lacheck handler should ignore errors from input files):
call ale#test#SetFilename('ale_test.tex')
AssertEqual
\ [
\ ],
\ ale_linters#tex#lacheck#Handle(255, [
\ "** ale_input:",
\ "\"ale_input.tex\", line 1: perhaps you should insert a `~' before \"\\ref\""
\ ])