diff options
Diffstat (limited to 'vim/bundle/syntastic/syntax_checkers/glsl/cgc.vim')
-rw-r--r-- | vim/bundle/syntastic/syntax_checkers/glsl/cgc.vim | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/vim/bundle/syntastic/syntax_checkers/glsl/cgc.vim b/vim/bundle/syntastic/syntax_checkers/glsl/cgc.vim new file mode 100644 index 0000000..602399d --- /dev/null +++ b/vim/bundle/syntastic/syntax_checkers/glsl/cgc.vim @@ -0,0 +1,81 @@ +"============================================================================ +"File: glsl.vim +"Description: Syntax checker for OpenGL Shading Language +"Maintainer: Joshua Rahm <joshuarahm@gmail.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('g:loaded_syntastic_glsl_cgc_checker') + finish +endif +let g:loaded_syntastic_glsl_cgc_checker = 1 + +let s:glsl_extensions = { + \ 'glslf': 'gpu_fp', + \ 'glslv': 'gpu_vp', + \ 'frag': 'gpu_fp', + \ 'vert': 'gpu_vp', + \ 'fp': 'gpu_fp', + \ 'vp': 'gpu_vp' + \ } + +let s:save_cpo = &cpo +set cpo&vim + +function! SyntaxCheckers_glsl_cgc_GetLocList() dict " {{{1 + let makeprg = self.makeprgBuild({ + \ 'args_before': '-oglsl -profile ' . s:GetProfile(), + \ 'args': (exists('g:syntastic_glsl_options') ? ' ' . g:syntastic_glsl_options : '') }) + + let errorformat = + \ '%E%f(%l) : error %m,' . + \ '%W%f(%l) : warning %m' + + return SyntasticMake({ + \ 'makeprg': makeprg, + \ 'errorformat': errorformat }) +endfunction " }}}1 + +" Utilities {{{1 + +function! s:GetProfile() " {{{2 + let save_view = winsaveview() + let old_foldenable = &foldenable + let old_lazyredraw = &lazyredraw + + let &lazyredraw = 1 + let &foldenable = 0 + call cursor(1, 1) + + let magic = '\m\C^// profile:\s*' + let line = search(magic, 'c') + + call winrestview(save_view) + let &foldenable = old_foldenable + let &lazyredraw = old_lazyredraw + + if line + let profile = matchstr(getline(line), magic . '\zs.*') + else + let extensions = exists('g:syntastic_glsl_extensions') ? g:syntastic_glsl_extensions : s:glsl_extensions + let profile = get(extensions, tolower(expand('%:e', 1)), 'gpu_vert') + endif + + return profile +endfunction " }}}2 + +" }}}1 + +call g:SyntasticRegistry.CreateAndRegisterChecker({ + \'filetype': 'glsl', + \'name': 'cgc'}) + +let &cpo = s:save_cpo +unlet s:save_cpo + +" vim: set sw=4 sts=4 et fdm=marker: |