summaryrefslogtreecommitdiff
path: root/autoload
diff options
context:
space:
mode:
authorw0rp <devw0rp@gmail.com>2017-04-11 21:05:41 +0100
committerw0rp <devw0rp@gmail.com>2017-04-11 21:05:41 +0100
commit65fe914fb88fa99d0bb1059a08bc40de5f8ac243 (patch)
tree3ebc4bb09a9cfd92e3b769bfda2e1f9994fe68d2 /autoload
parentb06b832447253404180ce6a97927755e4ae68c22 (diff)
downloadale-65fe914fb88fa99d0bb1059a08bc40de5f8ac243.zip
#392 Handle clang header errors too
Diffstat (limited to 'autoload')
-rw-r--r--autoload/ale/handlers/gcc.vim18
1 files changed, 14 insertions, 4 deletions
diff --git a/autoload/ale/handlers/gcc.vim b/autoload/ale/handlers/gcc.vim
index 9084d0d4..0755e951 100644
--- a/autoload/ale/handlers/gcc.vim
+++ b/autoload/ale/handlers/gcc.vim
@@ -14,8 +14,12 @@ function! s:AddIncludedErrors(output, include_lnum, include_lines) abort
endif
endfunction
+function! s:IsHeaderFile(filename) abort
+ return a:filename =~? '\v\.(h|hpp)$'
+endfunction
+
function! ale#handlers#gcc#HandleGCCFormat(buffer, lines) abort
- let l:include_pattern = '\v^(In file included | *)from [^:]*:(\d+)'
+ let l:include_pattern = '\v^(In file included | *)from ([^:]*):(\d+)'
let l:include_lnum = 0
let l:include_lines = []
let l:included_filename = ''
@@ -41,9 +45,15 @@ function! ale#handlers#gcc#HandleGCCFormat(buffer, lines) abort
" need to collect it.
call add(l:include_lines, l:line)
else
- " Get the line number out of the parsed include line,
- " and reset the other variables.
- let l:include_lnum = str2nr(l:include_match[2])
+ " GCC and clang return the lists of files in different orders,
+ " so we'll only grab the line number from lines which aren't
+ " header files.
+ if !s:IsHeaderFile(l:include_match[2])
+ " Get the line number out of the parsed include line,
+ " and reset the other variables.
+ let l:include_lnum = str2nr(l:include_match[3])
+ endif
+
let l:include_lines = []
let l:included_filename = ''
endif