From fd173f1c9118791c2d466fbd3ae62cb42004fb5d Mon Sep 17 00:00:00 2001 From: kongo2002 Date: Mon, 29 Oct 2012 22:22:28 +0100 Subject: [PATCH] move haskell syntax checkers into separate subdir --- syntax_checkers/haskell.vim | 59 ++++++++------------------- syntax_checkers/haskell/ghc-mod.vim | 33 +++++++++++++++ syntax_checkers/haskell/hdevtools.vim | 30 ++++++++++++++ 3 files changed, 79 insertions(+), 43 deletions(-) create mode 100644 syntax_checkers/haskell/ghc-mod.vim create mode 100644 syntax_checkers/haskell/hdevtools.vim diff --git a/syntax_checkers/haskell.vim b/syntax_checkers/haskell.vim index a3f267c1..1108627a 100644 --- a/syntax_checkers/haskell.vim +++ b/syntax_checkers/haskell.vim @@ -9,50 +9,23 @@ " See http://sam.zoy.org/wtfpl/COPYING for more details. " "============================================================================ -if exists("loaded_haskell_syntax_checker") +if exists('g:loaded_haskell_syntax_checker') finish endif -let loaded_haskell_syntax_checker = 1 - -if executable("hdevtools") - let s:checker = 'hdevtools' -elseif executable("ghc-mod") - let s:checker = 'ghc-mod' -else - finish -endif - -if !exists('g:syntastic_haskell_checker_args') - let g:syntastic_haskell_checker_args = '--hlintOpt="--language=XmlSyntax"' -endif - -function! SyntaxCheckers_haskell_GetLocList() - if s:checker == 'ghc-mod' - let ghcmod = 'ghc-mod ' . g:syntastic_haskell_checker_args - let makeprg = - \ "{ ". - \ ghcmod . " check ". shellescape(expand('%')) . "; " . - \ ghcmod . " lint " . shellescape(expand('%')) . ";" . - \ " }" - let errorformat = '%-G\\s%#,%f:%l:%c:%trror: %m,%f:%l:%c:%tarning: %m,'. - \ '%f:%l:%c: %trror: %m,%f:%l:%c: %tarning: %m,%f:%l:%c:%m,'. - \ '%E%f:%l:%c:,%Z%m,' - elseif s:checker == 'hdevtools' - let makeprg = 'hdevtools check ' . get(g:, 'hdevtools_options', '') . ' ' . shellescape(expand('%')) - - let errorformat= '\%-Z\ %#,'. - \ '%W%f:%l:%c:\ Warning:\ %m,'. - \ '%E%f:%l:%c:\ %m,'. - \ '%E%>%f:%l:%c:,'. - \ '%+C\ \ %#%m,'. - \ '%W%>%f:%l:%c:,'. - \ '%+C\ \ %#%tarning:\ %m,' +let g:loaded_haskell_syntax_checker = 1 +if !exists('g:syntastic_haskell_checker') + if executable('hdevtools') + runtime! syntax_checkers/haskell/hdevtools.vim + elseif executable('ghc-mod') + runtime! syntax_checkers/haskell/ghc-mod.vim endif - - return SyntasticMake({ 'makeprg': makeprg, 'errorformat': errorformat }) -endfunction - -function! SyntaxCheckers_lhaskell_GetLocList() - return SyntaxCheckers_haskell_GetLocList() -endfunction +elseif g:syntastic_haskell_checker == 'hdevtools' + if executable('hdevtools') + runtime! syntax_checkers/haskell/hdevtools.vim + endif +elseif g:syntastic_haskell_checker == 'ghc-mod' + if executable('ghc-mod') + runtime! syntax_checkers/haskell/ghc-mod.vim + endif +endif diff --git a/syntax_checkers/haskell/ghc-mod.vim b/syntax_checkers/haskell/ghc-mod.vim new file mode 100644 index 00000000..b7270332 --- /dev/null +++ b/syntax_checkers/haskell/ghc-mod.vim @@ -0,0 +1,33 @@ +"============================================================================ +"File: ghc-mod.vim +"Description: Syntax checking plugin for syntastic.vim +"Maintainer: Anthony Carapetis +"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:syntastic_haskell_checker_args') + let g:syntastic_haskell_checker_args = '--hlintOpt="--language=XmlSyntax"' +endif + +function! SyntaxCheckers_haskell_GetLocList() + let ghcmod = 'ghc-mod ' . g:syntastic_haskell_checker_args + let makeprg = + \ "{ ". + \ ghcmod . " check ". shellescape(expand('%')) . "; " . + \ ghcmod . " lint " . shellescape(expand('%')) . ";" . + \ " }" + let errorformat = '%-G\\s%#,%f:%l:%c:%trror: %m,%f:%l:%c:%tarning: %m,'. + \ '%f:%l:%c: %trror: %m,%f:%l:%c: %tarning: %m,%f:%l:%c:%m,'. + \ '%E%f:%l:%c:,%Z%m,' + + return SyntasticMake({ 'makeprg': makeprg, 'errorformat': errorformat }) +endfunction + +function! SyntaxCheckers_lhaskell_GetLocList() + return SyntaxCheckers_haskell_GetLocList() +endfunction diff --git a/syntax_checkers/haskell/hdevtools.vim b/syntax_checkers/haskell/hdevtools.vim new file mode 100644 index 00000000..31fb95cd --- /dev/null +++ b/syntax_checkers/haskell/hdevtools.vim @@ -0,0 +1,30 @@ +"============================================================================ +"File: hdevtools.vim +"Description: Syntax checking plugin for syntastic.vim +"Maintainer: Anthony Carapetis +"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. +" +"============================================================================ + +function! SyntaxCheckers_haskell_GetLocList() + let makeprg = 'hdevtools check ' . get(g:, 'hdevtools_options', '') . + \ ' ' . shellescape(expand('%')) + + let errorformat= '\%-Z\ %#,'. + \ '%W%f:%l:%c:\ Warning:\ %m,'. + \ '%E%f:%l:%c:\ %m,'. + \ '%E%>%f:%l:%c:,'. + \ '%+C\ \ %#%m,'. + \ '%W%>%f:%l:%c:,'. + \ '%+C\ \ %#%tarning:\ %m,' + + return SyntasticMake({ 'makeprg': makeprg, 'errorformat': errorformat }) +endfunction + +function! SyntaxCheckers_lhaskell_GetLocList() + return SyntaxCheckers_haskell_GetLocList() +endfunction