Add support for :winpos
[MacVim.git] / runtime / indent / tf.vim
blob61cebc3a67e42f80a21af11daba85f746a4f7b96
1 " Vim indent file
2 " Language:     tf (TinyFugue)
3 " Maintainer:   Christian J. Robinson <infynity@onewest.net>
4 " URL:          http://www.infynity.spodzone.com/vim/indent/tf.vim
5 " Last Change:  2002 May 29
7 " Only load this indent file when no other was loaded.
8 if exists("b:did_indent")
9   finish
10 endif
11 let b:did_indent = 1
13 setlocal indentexpr=GetTFIndent()
14 setlocal indentkeys-=0{,0} indentkeys-=0# indentkeys-=:
15 setlocal indentkeys+==/endif,=/then,=/else,=/done,0;
17 " Only define the function once:
18 if exists("*GetTFIndent")
19   finish
20 endif
22 function GetTFIndent()
23         " Find a non-blank line above the current line:
24         let lnum = prevnonblank(v:lnum - 1)
26         " No indent for the start of the file:
27         if lnum == 0
28                 return 0
29         endif
31         let ind = indent(lnum)
32         let line = getline(lnum)
34         " No indentation if the previous line didn't end with "\":
35         " (Could be annoying, but it lets you know if you made a mistake.)
36         if line !~ '\\$'
37                 return 0
38         endif
40         if line =~ '\(/def.*\\\|/for.*\(%;\s*\)\@\<!\\\)$'
41                 let ind = ind + &sw
42         elseif line =~ '\(/if\|/else\|/then\)'
43                 if line !~ '/endif'
44                         let ind = ind + &sw
45                 endif
46         elseif line =~ '/while'
47                 if line !~ '/done'
48                         let ind = ind + &sw
49                 endif
50         endif
52         let line = getline(v:lnum)
54         if line =~ '\(/else\|/endif\|/then\)'
55                 if line !~ '/if'
56                         let ind = ind - &sw
57                 endif
58         elseif line =~ '/done'
59                 if line !~ '/while'
60                         let ind = ind - &sw
61                 endif
62         endif
64         " Comments at the beginning of a line:
65         if line =~ '^\s*;'
66                 let ind = 0
67         endif
70         return ind
72 endfunction