xref: /vim-8.2.3635/runtime/ftplugin/csh.vim (revision 2286304c)
1071d4279SBram Moolenaar" Vim filetype plugin file
2071d4279SBram Moolenaar" Language:		csh
3*2286304cSBram Moolenaar" Maintainer:		Doug Kearns <[email protected]>
4*2286304cSBram Moolenaar" Previous Maintainer:	Dan Sharp <dwsharp at users dot sourceforge dot net>
5*2286304cSBram Moolenaar" Contributor:		Johannes Zellner <[email protected]>
6*2286304cSBram Moolenaar" Last Change:		2021 Oct 15
7071d4279SBram Moolenaar
8071d4279SBram Moolenaarif exists("b:did_ftplugin") | finish | endif
9071d4279SBram Moolenaarlet b:did_ftplugin = 1
10071d4279SBram Moolenaar
11071d4279SBram Moolenaarlet s:save_cpo = &cpo
12071d4279SBram Moolenaarset cpo-=C
13071d4279SBram Moolenaar
14*2286304cSBram Moolenaarsetlocal comments=:#
15071d4279SBram Moolenaarsetlocal commentstring=#%s
16071d4279SBram Moolenaarsetlocal formatoptions-=t
17071d4279SBram Moolenaarsetlocal formatoptions+=crql
18071d4279SBram Moolenaar
19*2286304cSBram Moolenaarlet b:undo_ftplugin = "setlocal com< cms< fo<"
20*2286304cSBram Moolenaar
21071d4279SBram Moolenaar" Csh:  thanks to Johannes Zellner
22071d4279SBram Moolenaar" - Both foreach and end must appear alone on separate lines.
23071d4279SBram Moolenaar" - The words else and endif must appear at the beginning of input lines;
24071d4279SBram Moolenaar"   the if must appear alone on its input line or after an else.
25071d4279SBram Moolenaar" - Each case label and the default label must appear at the start of a
26071d4279SBram Moolenaar"   line.
27071d4279SBram Moolenaar" - while and end must appear alone on their input lines.
28*2286304cSBram Moolenaarif exists("loaded_matchit") && !exists("b:match_words")
29*2286304cSBram Moolenaar  let s:line_start = '\%(^\s*\)\@<='
30071d4279SBram Moolenaar  let b:match_words =
31*2286304cSBram Moolenaar	\ s:line_start .. 'if\s*(.*)\s*then\>:' ..
32*2286304cSBram Moolenaar	\   s:line_start .. 'else\s\+if\s*(.*)\s*then\>:' .. s:line_start .. 'else\>:' ..
33*2286304cSBram Moolenaar	\   s:line_start .. 'endif\>,' ..
34*2286304cSBram Moolenaar	\ s:line_start .. '\%(\<foreach\s\+\h\w*\|while\)\s*(:' ..
35*2286304cSBram Moolenaar	\   '\<break\>:\<continue\>:' ..
36*2286304cSBram Moolenaar	\   s:line_start .. 'end\>,' ..
37*2286304cSBram Moolenaar	\ s:line_start .. 'switch\s*(:' ..
38*2286304cSBram Moolenaar	\   s:line_start .. 'case\s\+:' .. s:line_start .. 'default\>:\<breaksw\>:' ..
39*2286304cSBram Moolenaar	\   s:line_start .. 'endsw\>'
40*2286304cSBram Moolenaar  unlet s:line_start
41*2286304cSBram Moolenaar  let b:undo_ftplugin ..= " | unlet b:match_words"
42071d4279SBram Moolenaarendif
43071d4279SBram Moolenaar
44*2286304cSBram Moolenaarif (has("gui_win32") || has("gui_gtk")) && !exists("b:browsefilter")
45*2286304cSBram Moolenaar  let  b:browsefilter="csh Scripts (*.csh)\t*.csh\n" ..
46071d4279SBram Moolenaar	\	      "All Files (*.*)\t*.*\n"
47*2286304cSBram Moolenaar  let b:undo_ftplugin ..= " | unlet b:browsefilter"
48071d4279SBram Moolenaarendif
49071d4279SBram Moolenaar
50071d4279SBram Moolenaarlet &cpo = s:save_cpo
5184f7235bSBram Moolenaarunlet s:save_cpo
52