Mercurial > vim
comparison runtime/indent/idlang.vim @ 7:3fc0f57ecb91 v7.0001
updated for version 7.0001
author | vimboss |
---|---|
date | Sun, 13 Jun 2004 20:20:40 +0000 |
parents | |
children | dd6c2497c997 |
comparison
equal
deleted
inserted
replaced
6:c2daee826b8f | 7:3fc0f57ecb91 |
---|---|
1 " IDL (Interactive Data Language) indent file. | |
2 " Language: IDL (ft=idlang) | |
3 " Last change: 2002 Sep 23 | |
4 " Maintainer: Aleksandar Jelenak <ajelenak AT yahoo.com> | |
5 | |
6 " Only load this indent file when no other was loaded. | |
7 if exists("b:did_indent") | |
8 finish | |
9 endif | |
10 let b:did_indent = 1 | |
11 | |
12 setlocal indentkeys=o,O,0=endif,0=ENDIF,0=endelse,0=ENDELSE,0=endwhile, | |
13 \0=ENDWHILE,0=endfor,0=ENDFOR,0=endrep,0=ENDREP | |
14 | |
15 setlocal indentexpr=GetIdlangIndent(v:lnum) | |
16 | |
17 " Only define the function once. | |
18 if exists("*GetIdlangIndent") | |
19 finish | |
20 endif | |
21 | |
22 function GetIdlangIndent(lnum) | |
23 " First non-empty line above the current line. | |
24 let pnum = prevnonblank(v:lnum-1) | |
25 " v:lnum is the first non-empty line -- zero indent. | |
26 if pnum == 0 | |
27 return 0 | |
28 endif | |
29 " Second non-empty line above the current line. | |
30 let pnum2 = prevnonblank(pnum-1) | |
31 | |
32 " Current indent. | |
33 let curind = indent(pnum) | |
34 | |
35 " Indenting of continued lines. | |
36 if getline(pnum) =~ '\$\s*\(;.*\)\=$' | |
37 if getline(pnum2) !~ '\$\s*\(;.*\)\=$' | |
38 let curind = curind+&sw | |
39 endif | |
40 else | |
41 if getline(pnum2) =~ '\$\s*\(;.*\)\=$' | |
42 let curind = curind-&sw | |
43 endif | |
44 endif | |
45 | |
46 " Indenting blocks of statements. | |
47 if getline(v:lnum) =~? '^\s*\(endif\|endelse\|endwhile\|endfor\|endrep\)\>' | |
48 if getline(pnum) =~? 'begin\>' | |
49 elseif indent(v:lnum) > curind-&sw | |
50 let curind = curind-&sw | |
51 else | |
52 return -1 | |
53 endif | |
54 elseif getline(pnum) =~? 'begin\>' | |
55 if indent(v:lnum) < curind+&sw | |
56 let curind = curind+&sw | |
57 else | |
58 return -1 | |
59 endif | |
60 endif | |
61 return curind | |
62 endfunction | |
63 |