source: vim_script_tf/trunk/indent/tf.vim@ 13

Last change on this file since 13 was 13, checked in by ertl-ishikawa, 11 years ago

ELIFに関するルールを追加

File size: 4.7 KB
Line 
1"
2" TOPPERS Software
3" Toyohashi Open Platform for Embedded Real-Time Systems
4"
5" Copyright (C) 2011 by TAKUYA
6" Embedded and Real-Time Systems Laboratory
7" Graduate School of Information Science, Nagoya Univ., JAPAN
8"
9" 上記著作権者
10は,以下の (1)〜(4) の条件を満たす場合に限り,本ソフトウェ
11" ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改変・
12" 再é…
13å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
14" (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作権
15" 表示,この利用条件および下記の無保証規定が,そのままの形でソース
16" コード中に含まれていること.
17" (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使用
18" できる形で再é…
19å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é…
20å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€…
21マ
22" ニュアルなど)に,上記の著作権表示,この利用条件および下記の無保
23" 証規定を掲載すること.
24" (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使用
25" できない形で再é…
26å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこと.
27" (a) 再é…
28å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€…
29マニュアルなど)に,上記の著作
30" 権表示,この利用条件および下記の無保証規定を掲載すること.
31" (b) 再é…
32å¸ƒã®å½¢æ…
33‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに報
34" 告すること.
35" (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損害
36" からも,上記著作権者
37およびTOPPERSプロジェクトをå…
38è²¬ã™ã‚‹ã“と.また,
39" 本ソフトウェアのユーザまたはエンドユーザからのいかなる理由に基づ
40" く請求からも,上記著作権者
41およびTOPPERSプロジェクトをå…
42è²¬ã™ã‚‹ã“と.
43"
44" 本ソフトウェアは,無保証で提供されているものである.上記著作権者
45およ
46" びTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的に対す
47" る適合性も含めて,いかなる保証も行わない.また,本ソフトウェアの利用
48" により直接的または間接的に生じたいかなる損害に関しても,その責任を負
49" わない.
50"
51"
52" Vim indent file
53" Language: tf (Template File for TOPPERS)
54" Maintainer: TAKUYA
55" Last Change: 2011 June 28
56
57" Only load this indent file when no other was loaded.
58if exists("b:did_indent")
59 finish
60endif
61let b:did_indent = 1
62
63setlocal indentexpr=GetTFIndent()
64setlocal indentkeys-=0{,0} indentkeys-=0# indentkeys-=:
65setlocal indentkeys+==\$ELSE\$,=\$ELIF\$,=\$END\$,0;
66
67" Only define the function once:
68if exists("*GetTFIndent")
69 finish
70endif
71
72" if the line is Comment line then return 1,
73" otherwise, return 0.
74function IsTFCommentLine(line)
75 if getline(a:line) =~ '^\$[ \t]'
76 return 1
77 else
78 return 0
79 endif
80
81endfunction
82
83" calculate indent
84function GetTFIndent()
85 if IsTFCommentLine(v:lnum)
86 return 0
87 endif
88
89 " Find a non-blank line above the current line:
90 let lnum = prevnonblank(v:lnum - 1)
91
92 while IsTFCommentLine(lnum) == 1
93 if lnum == 0
94 return 0
95 endif
96 let lnum = prevnonblank(lnum - 1)
97 endwhile
98
99 " No indent for the start of the file:
100 if lnum == 0
101 return 0
102 endif
103
104 let ind = indent(lnum)
105 let line = getline(lnum)
106
107 " No indentation if the previous line didn't end with "\":
108 " (Could be annoying, but it lets you know if you made a mistake.)
109 if line =~# '\$\(FOREACH\|JOINEACH\|IF\|ELIF\|FUNCTION\)[ ]'
110 if line !~# '\$END\$'
111 let ind = ind + &sw
112 endif
113 elseif line =~# '\$\(ERROR\|WORNING\)[ \$]'
114 if line !~# '\$END\$'
115 let ind = ind + &sw
116 endif
117 elseif line =~# '\$ELSE\$'
118 if line !~# '\$END\$'
119 let ind = ind + &sw
120 endif
121 endif
122
123 let line = getline(v:lnum)
124
125 if line =~# '\$\(ELSE\|END\)\$'
126 let ind = ind - &sw
127
128 if line =~# '\$\(FOREACH\|JOINEACH\|IF\|FUNCTION\)[ ]'
129 let ind = ind + &sw
130 elseif line =~# '\$\(ERROR\|WORNING\)[ \$]'
131 let ind = ind + &sw
132 endif
133 elseif line =~# '\$ELIF[ ]'
134 let ind = ind - &sw
135
136 if line =~# '\$\(FOREACH\|JOINEACH\|IF\|FUNCTION\)[ ]'
137 let ind = ind + &sw
138 elseif line =~# '\$\(ERROR\|WORNING\)[ \$]'
139 let ind = ind + &sw
140 endif
141 endif
142
143 return ind
144
145endfunction
Note: See TracBrowser for help on using the repository browser.