]> gitweb.factorcode.org Git - factor.git/blob - misc/vim/indent/factor.vim
Add vim indent
[factor.git] / misc / vim / indent / factor.vim
1 " Vim indent file
2 " Language:     Factor
3 " Maintainer:   Giftpflanze <gifti@tools.wmflabs.org>
4 " Last Change:  2022 August 23
5
6 if exists("b:did_indent")
7         finish
8 endif
9 let b:did_indent = 1
10
11 setlocal indentexpr=GetFactorIndent(v:lnum)
12
13 let b:undo_indent = 'setlocal indentexpr<'
14
15 if exists("*GetFactorIndent")
16         finish
17 endif
18
19 function! GetFactorIndent(lnum)
20         let cline = getline(a:lnum)
21         let pline = getline(a:lnum-1)
22         let pind = indent(a:lnum-1)
23         if pline =~ '^:'
24                 return pind + shiftwidth()
25         endif
26         if pline =~ ';$'
27                 return pind - shiftwidth()
28         endif
29         if pline =~ '[{[]$'
30                 return pind + shiftwidth()
31         endif
32         if cline =~ '^\s*[\]}]'
33                 return pind - shiftwidth()
34         endif
35         return pind
36 endfunction