#277 #318 Support all same-directory includes for gcc and clang

This commit is contained in:
w0rp 2017-03-11 16:47:32 +00:00
parent c2ceb9e085
commit d58a18b8ed
4 changed files with 26 additions and 10 deletions

View File

@ -9,12 +9,18 @@ if !exists('g:ale_c_clang_options')
let g:ale_c_clang_options = '-std=c11 -Wall' let g:ale_c_clang_options = '-std=c11 -Wall'
endif endif
function! ale_linters#c#clang#GetCommand(buffer) abort
" -iquote with the directory the file is in makes #include work for
" headers in the same directory.
return 'clang -S -x c -fsyntax-only '
\ . '-iquote ' . fnameescape(fnamemodify(bufname(a:buffer), ':p:h'))
\ . ' ' . g:ale_c_clang_options . ' -'
endfunction
call ale#linter#Define('c', { call ale#linter#Define('c', {
\ 'name': 'clang', \ 'name': 'clang',
\ 'output_stream': 'stderr', \ 'output_stream': 'stderr',
\ 'executable': 'clang', \ 'executable': 'clang',
\ 'command': 'clang -S -x c -fsyntax-only ' \ 'command_callback': 'ale_linters#c#clang#GetCommand',
\ . g:ale_c_clang_options
\ . ' -',
\ 'callback': 'ale#handlers#HandleGCCFormat', \ 'callback': 'ale#handlers#HandleGCCFormat',
\}) \})

View File

@ -10,9 +10,11 @@ if !exists('g:ale_c_gcc_options')
endif endif
function! ale_linters#c#gcc#GetCommand(buffer) abort function! ale_linters#c#gcc#GetCommand(buffer) abort
" -iquote with the directory the file is in makes #include work for
" headers in the same directory.
return 'gcc -S -x c -fsyntax-only ' return 'gcc -S -x c -fsyntax-only '
\ . g:ale_c_gcc_options . ' -' \ . '-iquote ' . fnameescape(fnamemodify(bufname(a:buffer), ':p:h'))
\ . ' ' . g:ale_c_gcc_options . ' -'
endfunction endfunction
call ale#linter#Define('c', { call ale#linter#Define('c', {

View File

@ -6,12 +6,18 @@ if !exists('g:ale_cpp_clang_options')
let g:ale_cpp_clang_options = '-std=c++14 -Wall' let g:ale_cpp_clang_options = '-std=c++14 -Wall'
endif endif
function! ale_linters#cpp#clang#GetCommand(buffer) abort
" -iquote with the directory the file is in makes #include work for
" headers in the same directory.
return 'clang++ -S -x c++ -fsyntax-only '
\ . '-iquote ' . fnameescape(fnamemodify(bufname(a:buffer), ':p:h'))
\ . ' ' . g:ale_cpp_clang_options . ' -'
endfunction
call ale#linter#Define('cpp', { call ale#linter#Define('cpp', {
\ 'name': 'clang', \ 'name': 'clang',
\ 'output_stream': 'stderr', \ 'output_stream': 'stderr',
\ 'executable': 'clang++', \ 'executable': 'clang++',
\ 'command': 'clang++ -S -x c++ -fsyntax-only ' \ 'command_callback': 'ale_linters#cpp#clang#GetCommand',
\ . g:ale_cpp_clang_options
\ . ' -',
\ 'callback': 'ale#handlers#HandleGCCFormat', \ 'callback': 'ale#handlers#HandleGCCFormat',
\}) \})

View File

@ -16,9 +16,11 @@ if !exists('g:ale_cpp_gcc_options')
endif endif
function! ale_linters#cpp#gcc#GetCommand(buffer) abort function! ale_linters#cpp#gcc#GetCommand(buffer) abort
" -iquote with the directory the file is in makes #include work for
" headers in the same directory.
return 'gcc -S -x c++ -fsyntax-only ' return 'gcc -S -x c++ -fsyntax-only '
\ . g:ale_cpp_gcc_options . ' -' \ . '-iquote ' . fnameescape(fnamemodify(bufname(a:buffer), ':p:h'))
\ . ' ' . g:ale_cpp_gcc_options . ' -'
endfunction endfunction
call ale#linter#Define('cpp', { call ale#linter#Define('cpp', {