comparison runtime/indent/objc.vim @ 7:3fc0f57ecb91 v7.0001

updated for version 7.0001
author vimboss
date Sun, 13 Jun 2004 20:20:40 +0000
parents
children 11b656e74444
comparison
equal deleted inserted replaced
6:c2daee826b8f 7:3fc0f57ecb91
1 " Vim indent file
2 " Language: Objective-C
3 " Maintainer: Kazunobu Kuriyama <kazunobu.kuriyama@nifty.com>
4 " Last Change: 2004 May 16
5 "
6
7
8 " Only load this indent file when no other was loaded.
9 if exists("b:did_indent")
10 finish
11 endif
12 let b:did_indent = 1
13 setlocal cindent
14
15 " Set the function to do the work.
16 setlocal indentexpr=GetObjCIndent()
17
18 " To make a colon (:) suggest an indentation other than a goto/swich label,
19 setlocal indentkeys-=:
20 setlocal indentkeys+=<:>
21
22 " Only define the function once.
23 if exists("*GetObjCIndent")
24 finish
25 endif
26
27 function s:GetWidth(line, regexp)
28 let end = matchend(a:line, a:regexp)
29 let width = 0
30 let i = 0
31 while i < end
32 if a:line[i] != "\t"
33 let width = width + 1
34 else
35 let width = width + &ts - (width % &ts)
36 endif
37 let i = i + 1
38 endwhile
39 return width
40 endfunction
41
42 function s:LeadingWhiteSpace(line)
43 let end = strlen(a:line)
44 let width = 0
45 let i = 0
46 while i < end
47 let char = a:line[i]
48 if char != " " && char != "\t"
49 break
50 endif
51 if char != "\t"
52 let width = width + 1
53 else
54 let width = width + &ts - (width % &ts)
55 endif
56 let i = i + 1
57 endwhile
58 return width
59 endfunction
60
61
62 function GetObjCIndent()
63 let theIndent = cindent(v:lnum)
64
65 let prev_line = getline(v:lnum - 1)
66 let cur_line = getline(v:lnum)
67
68 if prev_line !~# ":" || cur_line !~# ":"
69 return theIndent
70 endif
71
72 if prev_line !~# ";"
73 let prev_colon_pos = s:GetWidth(prev_line, ":")
74 let delta = s:GetWidth(cur_line, ":") - s:LeadingWhiteSpace(cur_line)
75 let theIndent = prev_colon_pos - delta
76 endif
77
78 return theIndent
79 endfunction