Permalink
Browse files

Merge remote-tracking branch 'daniel-walker/checkpatch-checker'

  • Loading branch information...
kongo2002 committed Sep 23, 2012
2 parents bde48f6 + eef0180 commit d4ef5f72845ed19e8f0a67b9cceadacf82865070
Showing with 210 additions and 140 deletions.
  1. +16 −140 syntax_checkers/c.vim
  2. +35 −0 syntax_checkers/c/checkpatch.vim
  3. +159 −0 syntax_checkers/c/gcc.vim
View
@@ -1,159 +1,35 @@
"============================================================================
"File: c.vim
"Description: Syntax checking plugin for syntastic.vim
-"Maintainer: Gregor Uhlenheuer <kongo2002 at gmail dot com>
+"Maintainer: Martin Grenfell <martin.grenfell at gmail dot com>
"License: This program is free software. It comes without any warranty,
" to the extent permitted by applicable law. You can redistribute
" it and/or modify it under the terms of the Do What The Fuck You
" Want To Public License, Version 2, as published by Sam Hocevar.
" See http://sam.zoy.org/wtfpl/COPYING for more details.
"
"============================================================================
-
-" In order to also check header files add this to your .vimrc:
-" (this usually creates a .gch file in your source directory)
-"
-" let g:syntastic_c_check_header = 1
-"
-" To disable the search of included header files after special
-" libraries like gtk and glib add this line to your .vimrc:
-"
-" let g:syntastic_c_no_include_search = 1
-"
-" To enable header files being re-checked on every file write add the
-" following line to your .vimrc. Otherwise the header files are checked only
-" one time on initially loading the file.
-" In order to force syntastic to refresh the header includes simply
-" unlet b:syntastic_c_includes. Then the header files are being re-checked on
-" the next file write.
-"
-" let g:syntastic_c_auto_refresh_includes = 1
-"
-" Alternatively you can set the buffer local variable b:syntastic_c_cflags.
-" If this variable is set for the current buffer no search for additional
-" libraries is done. I.e. set the variable like this:
-"
-" let b:syntastic_c_cflags = ' -I/usr/include/libsoup-2.4'
-"
-" In order to add some custom include directories that should be added to the
-" gcc command line you can add those to the global variable
-" g:syntastic_c_include_dirs. This list can be used like this:
-"
-" let g:syntastic_c_include_dirs = [ 'includes', 'headers' ]
-"
-" Moreover it is possible to add additional compiler options to the syntax
-" checking execution via the variable 'g:syntastic_c_compiler_options':
-"
-" let g:syntastic_c_compiler_options = ' -ansi'
-"
-" Additionally the setting 'g:syntastic_c_config_file' allows you to define a
-" file that contains additional compiler arguments like include directories or
-" CFLAGS. The file is expected to contain one option per line. If none is
-" given the filename defaults to '.syntastic_c_config':
-"
-" let g:syntastic_c_config_file = '.config'
-"
-" Using the global variable 'g:syntastic_c_remove_include_errors' you can
-" specify whether errors of files included via the g:syntastic_c_include_dirs'
-" setting are removed from the result set:
-"
-" let g:syntastic_c_remove_include_errors = 1
-"
-" Use the variable 'g:syntastic_c_errorformat' to override the default error
-" format:
-"
-" let g:syntastic_c_errorformat = '%f:%l:%c: %trror: %m'
-
-if exists('loaded_c_syntax_checker')
+if exists("loaded_c_syntax_checker")
finish
endif
let loaded_c_syntax_checker = 1
-if !executable('gcc')
- finish
+if !exists('g:syntastic_c_checker')
+ let g:syntastic_c_checker = "gcc"
endif
-let s:save_cpo = &cpo
-set cpo&vim
-
-if !exists('g:syntastic_c_compiler_options')
- let g:syntastic_c_compiler_options = '-std=gnu99'
-endif
-
-if !exists('g:syntastic_c_config_file')
- let g:syntastic_c_config_file = '.syntastic_c_config'
-endif
-
-function! SyntaxCheckers_c_GetLocList()
- let makeprg = 'gcc -fsyntax-only '
- let errorformat = '%-G%f:%s:,%-G%f:%l: %#error: %#(Each undeclared '.
- \ 'identifier is reported only%.%#,%-G%f:%l: %#error: %#for '.
- \ 'each function it appears%.%#,%-GIn file included%.%#,'.
- \ '%-G %#from %f:%l\,,%f:%l:%c: %trror: %m,%f:%l:%c: '.
- \ '%tarning: %m,%f:%l:%c: %m,%f:%l: %trror: %m,'.
- \ '%f:%l: %tarning: %m,%f:%l: %m'
-
- if exists('g:syntastic_c_errorformat')
- let errorformat = g:syntastic_c_errorformat
- endif
-
- " add optional user-defined compiler options
- let makeprg .= g:syntastic_c_compiler_options
-
- let makeprg .= ' '.shellescape(expand('%')).
- \ ' '.syntastic#c#GetIncludeDirs('c')
-
- " determine whether to parse header files as well
- if expand('%') =~? '.h$'
- if exists('g:syntastic_c_check_header')
- let makeprg = 'gcc -c '.shellescape(expand('%')) .
- \ ' ' . g:syntastic_c_compiler_options .
- \ ' ' . syntastic#c#GetIncludeDirs('c')
- else
- return []
- endif
+if g:syntastic_c_checker == "gcc"
+ if executable("gcc")
+ runtime! syntax_checkers/c/gcc.vim
endif
-
- " check if the user manually set some cflags
- if !exists('b:syntastic_c_cflags')
- " check whether to search for include files at all
- if !exists('g:syntastic_c_no_include_search') ||
- \ g:syntastic_c_no_include_search != 1
- " refresh the include file search if desired
- if exists('g:syntastic_c_auto_refresh_includes') &&
- \ g:syntastic_c_auto_refresh_includes != 0
- let makeprg .= syntastic#c#SearchHeaders()
- else
- " search for header includes if not cached already
- if !exists('b:syntastic_c_includes')
- let b:syntastic_c_includes = syntastic#c#SearchHeaders()
- endif
- let makeprg .= b:syntastic_c_includes
- endif
- endif
- else
- " use the user-defined cflags
- let makeprg .= b:syntastic_c_cflags
+elseif g:syntastic_c_checker == "checkpatch"
+ if executable("checkpatch.pl") || executable("./scripts/checkpatch.pl")
+ runtime! syntax_checkers/c/checkpatch.vim
endif
-
- " add optional config file parameters
- let makeprg .= ' '.syntastic#c#ReadConfig(g:syntastic_c_config_file)
-
- " process makeprg
- let errors = SyntasticMake({ 'makeprg': makeprg,
- \ 'errorformat': errorformat })
-
- " filter the processed errors if desired
- if exists('g:syntastic_c_remove_include_errors') &&
- \ g:syntastic_c_remove_include_errors != 0
- return filter(errors,
- \ 'has_key(v:val, "bufnr") && v:val["bufnr"]=='.bufnr(''))
- else
- return errors
+elseif g:syntastic_c_checker == "checkpatch-kernel-only"
+ if executable("./scripts/checkpatch.pl")
+ runtime! syntax_checkers/c/checkpatch.vim
+ elseif executable("gcc")
+ runtime! syntax_checkers/c/gcc.vim
endif
-endfunction
-
-let &cpo = s:save_cpo
-unlet s:save_cpo
-
-" vim: set et sts=4 sw=4:
+endif
@@ -0,0 +1,35 @@
+"============================================================================
+"File: checkpatch.vim
+"Description: Syntax checking plugin for syntastic.vim using checkpatch.pl
+"Maintainer: Daniel Walker <dwalker at fifo99 dot com>
+"License: This program is free software. It comes without any warranty,
+" to the extent permitted by applicable law. You can redistribute
+" it and/or modify it under the terms of the Do What The Fuck You
+" Want To Public License, Version 2, as published by Sam Hocevar.
+" See http://sam.zoy.org/wtfpl/COPYING for more details.
+"============================================================================
+if exists("loaded_checkpatch_syntax_checker")
+ finish
+endif
+let loaded_checkpatch_syntax_checker = 1
+
+" Bail if the user doesn't have `checkpatch.pl` or ./scripts/checkpatch.pl installed.
+if executable("checkpatch.pl")
+ let g:syntastic_c_checker_checkpatch_location = 'checkpatch.pl'
+elseif executable("./scripts/checkpatch.pl")
+ let g:syntastic_c_checker_checkpatch_location = './scripts/checkpatch.pl'
+else
+ finish
+endif
+
+function! SyntaxCheckers_c_GetLocList()
+ let makeprg = g:syntastic_c_checker_checkpatch_location
+ let makeprg .= " --no-summary --no-tree --terse --file ".shellescape(expand('%'))
+
+ let errorformat = '%f:%l: %tARNING: %m,%f:%l: %tRROR: %m'
+
+ let loclist = SyntasticMake({ 'makeprg': makeprg,
+ \ 'errorformat': errorformat,
+ \ 'defaults': {'bufnr': bufnr("")} })
+ return loclist
+endfunction
View
@@ -0,0 +1,159 @@
+"============================================================================
+"File: c.vim
+"Description: Syntax checking plugin for syntastic.vim
+"Maintainer: Gregor Uhlenheuer <kongo2002 at gmail dot com>
+"License: This program is free software. It comes without any warranty,
+" to the extent permitted by applicable law. You can redistribute
+" it and/or modify it under the terms of the Do What The Fuck You
+" Want To Public License, Version 2, as published by Sam Hocevar.
+" See http://sam.zoy.org/wtfpl/COPYING for more details.
+"
+"============================================================================
+
+" In order to also check header files add this to your .vimrc:
+" (this usually creates a .gch file in your source directory)
+"
+" let g:syntastic_c_check_header = 1
+"
+" To disable the search of included header files after special
+" libraries like gtk and glib add this line to your .vimrc:
+"
+" let g:syntastic_c_no_include_search = 1
+"
+" To enable header files being re-checked on every file write add the
+" following line to your .vimrc. Otherwise the header files are checked only
+" one time on initially loading the file.
+" In order to force syntastic to refresh the header includes simply
+" unlet b:syntastic_c_includes. Then the header files are being re-checked on
+" the next file write.
+"
+" let g:syntastic_c_auto_refresh_includes = 1
+"
+" Alternatively you can set the buffer local variable b:syntastic_c_cflags.
+" If this variable is set for the current buffer no search for additional
+" libraries is done. I.e. set the variable like this:
+"
+" let b:syntastic_c_cflags = ' -I/usr/include/libsoup-2.4'
+"
+" In order to add some custom include directories that should be added to the
+" gcc command line you can add those to the global variable
+" g:syntastic_c_include_dirs. This list can be used like this:
+"
+" let g:syntastic_c_include_dirs = [ 'includes', 'headers' ]
+"
+" Moreover it is possible to add additional compiler options to the syntax
+" checking execution via the variable 'g:syntastic_c_compiler_options':
+"
+" let g:syntastic_c_compiler_options = ' -ansi'
+"
+" Additionally the setting 'g:syntastic_c_config_file' allows you to define a
+" file that contains additional compiler arguments like include directories or
+" CFLAGS. The file is expected to contain one option per line. If none is
+" given the filename defaults to '.syntastic_c_config':
+"
+" let g:syntastic_c_config_file = '.config'
+"
+" Using the global variable 'g:syntastic_c_remove_include_errors' you can
+" specify whether errors of files included via the g:syntastic_c_include_dirs'
+" setting are removed from the result set:
+"
+" let g:syntastic_c_remove_include_errors = 1
+"
+" Use the variable 'g:syntastic_c_errorformat' to override the default error
+" format:
+"
+" let g:syntastic_c_errorformat = '%f:%l:%c: %trror: %m'
+
+if exists('loaded_gcc_syntax_checker')
+ finish
+endif
+let loaded_gcc_syntax_checker = 1
+
+if !executable('gcc')
+ finish
+endif
+
+let s:save_cpo = &cpo
+set cpo&vim
+
+if !exists('g:syntastic_c_compiler_options')
+ let g:syntastic_c_compiler_options = '-std=gnu99'
+endif
+
+if !exists('g:syntastic_c_config_file')
+ let g:syntastic_c_config_file = '.syntastic_c_config'
+endif
+
+function! SyntaxCheckers_c_GetLocList()
+ let makeprg = 'gcc -fsyntax-only '
+ let errorformat = '%-G%f:%s:,%-G%f:%l: %#error: %#(Each undeclared '.
+ \ 'identifier is reported only%.%#,%-G%f:%l: %#error: %#for '.
+ \ 'each function it appears%.%#,%-GIn file included%.%#,'.
+ \ '%-G %#from %f:%l\,,%f:%l:%c: %trror: %m,%f:%l:%c: '.
+ \ '%tarning: %m,%f:%l:%c: %m,%f:%l: %trror: %m,'.
+ \ '%f:%l: %tarning: %m,%f:%l: %m'
+
+ if exists('g:syntastic_c_errorformat')
+ let errorformat = g:syntastic_c_errorformat
+ endif
+
+ " add optional user-defined compiler options
+ let makeprg .= g:syntastic_c_compiler_options
+
+ let makeprg .= ' '.shellescape(expand('%')).
+ \ ' '.syntastic#c#GetIncludeDirs('c')
+
+ " determine whether to parse header files as well
+ if expand('%') =~? '.h$'
+ if exists('g:syntastic_c_check_header')
+ let makeprg = 'gcc -c '.shellescape(expand('%')) .
+ \ ' ' . g:syntastic_c_compiler_options .
+ \ ' ' . syntastic#c#GetIncludeDirs('c')
+ else
+ return []
+ endif
+ endif
+
+ " check if the user manually set some cflags
+ if !exists('b:syntastic_c_cflags')
+ " check whether to search for include files at all
+ if !exists('g:syntastic_c_no_include_search') ||
+ \ g:syntastic_c_no_include_search != 1
+ " refresh the include file search if desired
+ if exists('g:syntastic_c_auto_refresh_includes') &&
+ \ g:syntastic_c_auto_refresh_includes != 0
+ let makeprg .= syntastic#c#SearchHeaders()
+ else
+ " search for header includes if not cached already
+ if !exists('b:syntastic_c_includes')
+ let b:syntastic_c_includes = syntastic#c#SearchHeaders()
+ endif
+ let makeprg .= b:syntastic_c_includes
+ endif
+ endif
+ else
+ " use the user-defined cflags
+ let makeprg .= b:syntastic_c_cflags
+ endif
+
+ " add optional config file parameters
+ let makeprg .= ' '.syntastic#c#ReadConfig(g:syntastic_c_config_file)
+
+ " process makeprg
+ let errors = SyntasticMake({ 'makeprg': makeprg,
+ \ 'errorformat': errorformat })
+
+ " filter the processed errors if desired
+ if exists('g:syntastic_c_remove_include_errors') &&
+ \ g:syntastic_c_remove_include_errors != 0
+ return filter(errors,
+ \ 'has_key(v:val, "bufnr") && v:val["bufnr"]=='.bufnr(''))
+ else
+ return errors
+ endif
+endfunction
+
+let &cpo = s:save_cpo
+unlet s:save_cpo
+
+" vim: set et sts=4 sw=4:

0 comments on commit d4ef5f7

Please sign in to comment.