From 0de043adbc144510635702dadedc946e3c69f64e Mon Sep 17 00:00:00 2001 From: Adam Stankiewicz Date: Sat, 10 Oct 2015 16:56:22 +0200 Subject: Update --- indent/haskell.vim | 180 ----------------------------------------------------- 1 file changed, 180 deletions(-) delete mode 100644 indent/haskell.vim (limited to 'indent/haskell.vim') diff --git a/indent/haskell.vim b/indent/haskell.vim deleted file mode 100644 index 8af1aedd..00000000 --- a/indent/haskell.vim +++ /dev/null @@ -1,180 +0,0 @@ -if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'haskell') == -1 - -" indentation for haskell -" -" Based on idris indentation -" -" author: raichoo (raichoo@googlemail.com) -" -" Modify g:haskell_indent_if and g:haskell_indent_case to -" change indentation for `if'(default 3) and `case'(default 5). -" Example (in .vimrc): -" > let g:haskell_indent_if = 2 - -if exists('b:did_indent') - finish -endif - -let b:did_indent = 1 - -if !exists('g:haskell_indent_if') - " if bool - " >>>then ... - " >>>else ... - let g:haskell_indent_if = 3 -endif - -if !exists('g:haskell_indent_case') - " case xs of - " >>[] -> ... - " >>(y:ys) -> ... - let g:haskell_indent_case = 2 -endif - -if !exists('g:haskell_indent_let') - " let x = 0 in - " >>>>x - let g:haskell_indent_let = 4 -endif - -if !exists('g:haskell_indent_where') - " where f :: Int -> Int - " >>>>>>f x = x - let g:haskell_indent_where = 6 -endif - -if !exists('g:haskell_indent_do') - " do x <- a - " >>>y <- b - let g:haskell_indent_do = 3 -endif - -if !exists('g:haskell_indent_in') - " let x = 1 - " >in x - let g:haskell_indent_in = 1 -endif - -setlocal indentexpr=GetHaskellIndent() -setlocal indentkeys=!^F,o,O,0\|,0=where,0=in,0=let,0=deriving,0=->,0=\=>,,0} - -function! GetHaskellIndent() - let l:prevline = getline(v:lnum - 1) - - if l:prevline =~ '^\s*--' - return match(l:prevline, '\S') - endif - - if l:prevline =~ '^\s*$' - return 0 - endif - - let l:line = getline(v:lnum) - - if l:line =~ '\C^\s*\' - let l:s = match(l:prevline, '\S') - return l:s + &shiftwidth - endif - - if l:line =~ '\C^\s*\' - let l:s = match(l:prevline, '\C\<\(newtype\|data\)\>') - if l:s >= 0 - return l:s + &shiftwidth - endif - endif - - if l:line =~ '\C^\s*\' - let l:s = match(l:prevline, '\C\') - if l:s != 0 - return l:s - endif - endif - - if l:line =~ '\C^\s*\' - let l:s = match(l:prevline, '\C\') - if l:s >= 0 - return l:s + g:haskell_indent_in - elseif match(l:prevline, '=') > 0 - let l:s = match(l:prevline, '\S') - return l:s - (4 - g:haskell_indent_in) - endif - endif - - if l:line =~ '^\s*|' - if match(l:prevline, '^\s*data') < 0 - if match(l:prevline, '^\s*|\s') >= 0 - return match(l:prevline, '|') - else - return &shiftwidth - endif - endif - endif - - if l:line =~ '^\s*[=-]>' - let l:s = match(l:prevline, ' :: ') - if l:s >= 0 - return l:s + 1 - endif - endif - - if l:prevline =~ '\s\+[!#$%&*+./<>?@\\^|~-]\+\s*$' - let l:s = match(l:prevline, '\S') - if l:s > 0 - return l:s + &shiftwidth - endif - endif - - if l:prevline =~ '[{([][^})\]]\+$' - return match(l:prevline, '[{([]') - endif - - if l:prevline =~ '\C\\s\+[^=]\+=\s*$' - return match(l:prevline, '\C\') + g:haskell_indent_let + &shiftwidth - endif - - if l:prevline =~ '\C\\s\+.\+\(\\)\?\s*$' - return match(l:prevline, '\C\') + g:haskell_indent_let - endif - - if l:prevline !~ '\C\' - let l:s = match(l:prevline, '\C\.*\&.*\zs\') - if l:s > 0 - return l:s - endif - - let l:s = match(l:prevline, '\C\') - if l:s > 0 - return l:s + g:haskell_indent_if - endif - endif - - if l:prevline =~ '\C\(\\|\\|=\|[{([]\)\s*$' - return match(l:prevline, '\S') + &shiftwidth - endif - - if l:prevline =~ '\C\\s\+\S\+.*$' - return match(l:prevline, '\C\') + g:haskell_indent_where - endif - - if l:prevline =~ '\C\\s\+\S\+.*$' - return match(l:prevline, '\C\') + g:haskell_indent_do - endif - - if l:prevline =~ '\C^\s*\\s\+[^=]\+\s\+=\s\+\S\+.*$' - if l:line =~ '^\s*|' - return match(l:prevline, '=') - endif - endif - - if l:prevline =~ '\C\\s\+.\+\\s*$' - return match(l:prevline, '\C\') + g:haskell_indent_case - endif - - if l:prevline =~ '\C^\s*\<\data\>\s\+\S\+\s*$' - return match(l:prevline, '\C\') + &shiftwidth - endif - - return match(l:prevline, '\S') -endfunction - -endif -- cgit v1.2.3