Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Fetching contributors…

Cannot retrieve contributors at this time

69 lines (59 sloc) 2.916 kb
"============================================================================
"File: vala.vim
"Description: Syntax checking plugin for syntastic.vim
"Maintainer: Konstantin Stepanov (me@kstep.me)
"Notes: Add special comment line into your vala file starting with
" "// modules: " and containing space delimited list of vala
" modules, used by the file, so this script can build correct
" --pkg arguments.
" Alternatively you can set g:syntastic_vala_modules array
" in your .vimrc or .lvimrc with localvimrc plugin
" (http://www.vim.org/scripts/script.php?script_id=441).
" Valac compiler is not the fastest thing in the world, so you
" may want to disable this plugin with
" let g:syntastic_vala_check_disabled = 1 command in your .vimrc or
" command line. Unlet this variable to set it to 0 to reenable
" this checker.
"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_vala_syntax_checker')
finish
endif
let loaded_vala_syntax_checker = 1
if !executable('valac')
finish
endif
if exists('g:syntastic_vala_check_disabled') && g:syntastic_vala_check_disabled
finish
endif
function! SyntaxCheckers_vala_GetHighlightRegex(pos)
let strlength = strlen(matchstr(a:pos['text'], '\^\+$'))
return '\%>'.(a:pos.col-1).'c.*\%<'.(a:pos.col+strlength+1).'c'
endfunction
function! s:GetValaModules()
if exists('g:syntastic_vala_modules')
if type(g:syntastic_vala_modules) == type('')
return split(g:syntastic_vala_modules, '\s\+')
elseif type(g:syntastic_vala_modules) == type([])
return g:syntastic_vala_modules
else
echoerr 'g:syntastic_vala_modules must be either list or string: fallback to in file modules string'
endif
endif
let modules_line = search('^// modules: ', 'n')
let modules_str = getline(modules_line)
return split(strpart(modules_str, 12), '\s\+')
endfunction
function! SyntaxCheckers_vala_GetLocList()
let vala_pkg_args = join(map(s:GetValaModules(), '"--pkg ".v:val'), ' ')
let makeprg = 'valac -C ' . vala_pkg_args . ' ' .shellescape(expand('%'))
let errorformat = '%A%f:%l.%c-%\d%\+.%\d%\+: %t%[a-z]%\+: %m,%C%m,%Z%m'
return SyntasticMake({ 'makeprg': makeprg,
\ 'errorformat': errorformat,
\ 'defaults': {'force_highlight_callback': 1} })
endfunction
Jump to Line
Something went wrong with that request. Please try again.