diff options
Diffstat (limited to 'indent/cabal.vim')
-rw-r--r-- | indent/cabal.vim | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/indent/cabal.vim b/indent/cabal.vim new file mode 100644 index 00000000..b2089a5e --- /dev/null +++ b/indent/cabal.vim @@ -0,0 +1,35 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'haskell') == -1 + +" indentation for cabal +" +" author: raichoo (raichoo@googlemail.com) +" +if exists('b:did_indent') + finish +endif + +let b:did_indent = 1 + +if !exists('g:cabal_indent_section') + "executable name + ">>main-is: Main.hs + ">>hs-source-dirs: src + let g:cabal_indent_section = 2 +elseif exists('g:cabal_indent_section') && g:cabal_indent_section > 4 + let g:cabal_indent_section = 4 +endif + +setlocal indentexpr=GetCabalIndent() +setlocal indentkeys=!^F,o,O,<CR> + +function! GetCabalIndent() + let l:prevline = getline(v:lnum - 1) + + if l:prevline =~ '\C^\(executable\|library\|flag\|source-repository\|test-suite\|benchmark\)' + return g:cabal_indent_section + else + return match(l:prevline, '\S') + endif +endfunction + +endif |