aboutsummaryrefslogtreecommitdiff
path: root/vim/bundle/vim-snipmate/indent/snippets.vim
blob: 0d28f329a27454d9bec9d76b478799eea95d0561 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
" Simple indent support for SnipMate snippets files

if exists('b:did_indent')
    finish
endif
let b:did_indent = 1

setlocal nosmartindent
setlocal indentkeys=!^F,o,O,=snippet,=version,=extends
setlocal indentexpr=GetSnippetIndent()

if exists("*GetSnippetIndent")
    finish
endif

function! GetSnippetIndent()
    let line = getline(v:lnum)
    let prev_lnum = v:lnum - 1
    let prev_line = prev_lnum != 0 ? getline(prev_lnum) : ""

    if line =~# '\v^(snippet|extends|version) '
        return 0
    elseif indent(v:lnum) > 0
        return indent(v:lnum)
    elseif prev_line =~# '^snippet '
        return &sw
    elseif indent(prev_lnum) > 0
        return indent(prev_lnum)
    endif

    return 0
endfunction