"============================================================================ "File: glsl.vim "Description: Syntax checker for OpenGL Shading Language "Maintainer: Joshua Rahm "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: