Sync from the branch.
[MacVim.git] / runtime / indent / tcsh.vim
blobcd18f06189c500c5d0b2de61dd99f09cc9275d3a
1 " Vim indent file
2 " Language:             C-shell (tcsh)
3 " Maintainer:           Gautam Iyer <gautam@math.uchicago.edu>
4 " Last Modified:        Sat 16 Jun 2007 04:27:45 PM PDT
6 " Only load this indent file when no other was loaded.
7 if exists("b:did_indent")
8     finish
9 endif
11 let b:did_indent = 1
13 setlocal indentexpr=TcshGetIndent()
14 setlocal indentkeys+=e,0=end,0=endsw indentkeys-=0{,0},0),:,0#
16 " Only define the function once.
17 if exists("*TcshGetIndent")
18     finish
19 endif
21 set cpoptions-=C
23 function TcshGetIndent()
24     " Find a non-blank line above the current line.
25     let lnum = prevnonblank(v:lnum - 1)
27     " Hit the start of the file, use zero indent.
28     if lnum == 0
29         return 0
30     endif
32     " Add indent if previous line begins with while or foreach
33     " OR line ends with case <str>:, default:, else, then or \
34     let ind = indent(lnum)
35     let line = getline(lnum)
36     if line =~ '\v^\s*%(while|foreach)>|^\s*%(case\s.*:|default:|else)\s*$|%(<then|\\)$'
37         let ind = ind + &sw
38     endif
40     if line =~ '\v^\s*breaksw>'
41         let ind = ind - &sw
42     endif
44     " Subtract indent if current line has on end, endif, case commands
45     let line = getline(v:lnum)
46     if line =~ '\v^\s*%(else|end|endif)\s*$'
47         let ind = ind - &sw
48     endif
50     return ind
51 endfunction