blob: 8658035f7235c46a8aa0c1f6056acfab46fb3496 [file] [log] [blame]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001"Description: Indent scheme for the tilde weblanguage
Bram Moolenaarce001a32022-04-27 15:25:03 +01002"Author: Tobias Rundstrรถm <tobi@tobi.nu> (Invalid email address)
Bram Moolenaar071d4272004-06-13 20:20:40 +00003"URL: http://tilde.tildesoftware.net
4"Last Change: May 8 09:15:09 CEST 2002
Bram Moolenaarce001a32022-04-27 15:25:03 +01005" 2022 April: b:undo_indent added by Doug Kearns
Bram Moolenaar071d4272004-06-13 20:20:40 +00006
7if exists ("b:did_indent")
8 finish
9endif
10
11let b:did_indent = 1
12
13setlocal autoindent
14setlocal indentexpr=GetTildeIndent(v:lnum)
15setlocal indentkeys=o,O,)
16
Bram Moolenaarce001a32022-04-27 15:25:03 +010017let b:undo_indent = "setl ai< inde< indk<"
18
Bram Moolenaar071d4272004-06-13 20:20:40 +000019if exists("*GetTildeIndent")
20 finish
21endif
22
23function GetTildeIndent(lnum)
24 let plnum = prevnonblank(v:lnum-1)
25
26 if plnum == 0
27 return 0
28 endif
29
30 if getline(v:lnum) =~ '^\s*\~\(endif\|else\|elseif\|end\)\>'
Bram Moolenaar3ec574f2017-06-13 18:12:01 +020031 return indent(v:lnum) - shiftwidth()
Bram Moolenaar071d4272004-06-13 20:20:40 +000032 endif
33
34 if getline(plnum) =~ '^\s*\~\(if\|foreach\|foreach_row\|xml_loop\|file_loop\|file_write\|file_append\|imap_loopsections\|imap_index\|imap_list\|ldap_search\|post_loopall\|post_loop\|file_loop\|sql_loop_num\|sql_dbmsselect\|search\|sql_loop\|post\|for\|function_define\|silent\|while\|setvalbig\|mail_create\|systempipe\|mail_send\|dual\|elseif\|else\)\>'
Bram Moolenaar3ec574f2017-06-13 18:12:01 +020035 return indent(plnum) + shiftwidth()
Bram Moolenaar071d4272004-06-13 20:20:40 +000036 else
37 return -1
38 endif
39endfunction