xref: /vim-8.2.3635/runtime/syntax/csh.vim (revision 1d9215b9)
1071d4279SBram Moolenaar" Vim syntax file
2071d4279SBram Moolenaar" Language:	C-shell (csh)
3*1d9215b9SBram Moolenaar" Maintainer:	Charles E. Campbell <[email protected]>
4f37506f6SBram Moolenaar" Last Change:	Aug 31, 2016
5*1d9215b9SBram Moolenaar" Version:	14
6e2719096SBram Moolenaar" URL:	http://www.drchip.org/astronaut/vim/index.html#SYNTAX_CSH
7071d4279SBram Moolenaar
889bcfda6SBram Moolenaar" quit when a syntax file was already loaded
989bcfda6SBram Moolenaarif exists("b:current_syntax")
10071d4279SBram Moolenaar  finish
11071d4279SBram Moolenaarendif
12071d4279SBram Moolenaar
13071d4279SBram Moolenaar" clusters:
14071d4279SBram Moolenaarsyn cluster cshQuoteList	contains=cshDblQuote,cshSnglQuote,cshBckQuote
15071d4279SBram Moolenaarsyn cluster cshVarList	contains=cshExtVar,cshSelector,cshQtyWord,cshArgv,cshSubst
16071d4279SBram Moolenaar
17071d4279SBram Moolenaar" Variables which affect the csh itself
18071d4279SBram Moolenaarsyn match cshSetVariables	contained "argv\|histchars\|ignoreeof\|noglob\|prompt\|status"
19071d4279SBram Moolenaarsyn match cshSetVariables	contained "cdpath\|history\|mail\|nonomatch\|savehist\|time"
20071d4279SBram Moolenaarsyn match cshSetVariables	contained "cwd\|home\|noclobber\|path\|shell\|verbose"
21071d4279SBram Moolenaarsyn match cshSetVariables	contained "echo"
22071d4279SBram Moolenaar
23071d4279SBram Moolenaarsyn case ignore
24071d4279SBram Moolenaarsyn keyword cshTodo	contained todo
25071d4279SBram Moolenaarsyn case match
26071d4279SBram Moolenaar
27071d4279SBram Moolenaar" Variable Name Expansion Modifiers
28071d4279SBram Moolenaarsyn match cshModifier	contained ":\(h\|t\|r\|q\|x\|gh\|gt\|gr\)"
29071d4279SBram Moolenaar
30071d4279SBram Moolenaar" Strings and Comments
31071d4279SBram Moolenaarsyn match   cshNoEndlineDQ	contained "[^\"]\(\\\\\)*$"
32071d4279SBram Moolenaarsyn match   cshNoEndlineSQ	contained "[^\']\(\\\\\)*$"
33071d4279SBram Moolenaarsyn match   cshNoEndlineBQ	contained "[^\`]\(\\\\\)*$"
34071d4279SBram Moolenaar
359964e468SBram Moolenaarsyn region  cshDblQuote	start=+[^\\]"+lc=1 skip=+\\\\\|\\"+ end=+"+	contains=cshSpecial,cshShellVariables,cshExtVar,cshSelector,cshQtyWord,cshArgv,cshSubst,cshNoEndlineDQ,cshBckQuote,@Spell
369964e468SBram Moolenaarsyn region  cshSnglQuote	start=+[^\\]'+lc=1 skip=+\\\\\|\\'+ end=+'+	contains=cshNoEndlineSQ,@Spell
379964e468SBram Moolenaarsyn region  cshBckQuote	start=+[^\\]`+lc=1 skip=+\\\\\|\\`+ end=+`+	contains=cshNoEndlineBQ,@Spell
389964e468SBram Moolenaarsyn region  cshDblQuote	start=+^"+ skip=+\\\\\|\\"+ end=+"+		contains=cshSpecial,cshExtVar,cshSelector,cshQtyWord,cshArgv,cshSubst,cshNoEndlineDQ,@Spell
399964e468SBram Moolenaarsyn region  cshSnglQuote	start=+^'+ skip=+\\\\\|\\'+ end=+'+		contains=cshNoEndlineSQ,@Spell
409964e468SBram Moolenaarsyn region  cshBckQuote	start=+^`+ skip=+\\\\\|\\`+ end=+`+		contains=cshNoEndlineBQ,@Spell
41071d4279SBram Moolenaarsyn cluster cshCommentGroup	contains=cshTodo,@Spell
42071d4279SBram Moolenaarsyn match   cshComment	"#.*$" contains=@cshCommentGroup
43071d4279SBram Moolenaar
44071d4279SBram Moolenaar" A bunch of useful csh keywords
45071d4279SBram Moolenaarsyn keyword cshStatement	alias	end	history	onintr	setenv	unalias
46071d4279SBram Moolenaarsyn keyword cshStatement	cd	eval	kill	popd	shift	unhash
47071d4279SBram Moolenaarsyn keyword cshStatement	chdir	exec	login	pushd	source
48071d4279SBram Moolenaarsyn keyword cshStatement	continue	exit	logout	rehash	time	unsetenv
49071d4279SBram Moolenaarsyn keyword cshStatement	dirs	glob	nice	repeat	umask	wait
50071d4279SBram Moolenaarsyn keyword cshStatement	echo	goto	nohup
51071d4279SBram Moolenaar
52071d4279SBram Moolenaarsyn keyword cshConditional	break	case	else	endsw	switch
53071d4279SBram Moolenaarsyn keyword cshConditional	breaksw	default	endif
54071d4279SBram Moolenaarsyn keyword cshRepeat	foreach
55071d4279SBram Moolenaar
56071d4279SBram Moolenaar" Special environment variables
57071d4279SBram Moolenaarsyn keyword cshShellVariables	HOME	LOGNAME	PATH	TERM	USER
58071d4279SBram Moolenaar
59071d4279SBram Moolenaar" Modifiable Variables without {}
60071d4279SBram Moolenaarsyn match cshExtVar	"\$[a-zA-Z_][a-zA-Z0-9_]*\(:h\|:t\|:r\|:q\|:x\|:gh\|:gt\|:gr\)\="		contains=cshModifier
61071d4279SBram Moolenaarsyn match cshSelector	"\$[a-zA-Z_][a-zA-Z0-9_]*\[[a-zA-Z_]\+\]\(:h\|:t\|:r\|:q\|:x\|:gh\|:gt\|:gr\)\="	contains=cshModifier
62071d4279SBram Moolenaarsyn match cshQtyWord	"\$#[a-zA-Z_][a-zA-Z0-9_]*\(:h\|:t\|:r\|:q\|:x\|:gh\|:gt\|:gr\)\="		contains=cshModifier
63071d4279SBram Moolenaarsyn match cshArgv		"\$\d\+\(:h\|:t\|:r\|:q\|:x\|:gh\|:gt\|:gr\)\="			contains=cshModifier
64071d4279SBram Moolenaarsyn match cshArgv		"\$\*\(:h\|:t\|:r\|:q\|:x\|:gh\|:gt\|:gr\)\="			contains=cshModifier
65071d4279SBram Moolenaar
66071d4279SBram Moolenaar" Modifiable Variables with {}
67071d4279SBram Moolenaarsyn match cshExtVar	"\${[a-zA-Z_][a-zA-Z0-9_]*\(:h\|:t\|:r\|:q\|:x\|:gh\|:gt\|:gr\)\=}"		contains=cshModifier
68071d4279SBram Moolenaarsyn match cshSelector	"\${[a-zA-Z_][a-zA-Z0-9_]*\[[a-zA-Z_]\+\]\(:h\|:t\|:r\|:q\|:x\|:gh\|:gt\|:gr\)\=}"	contains=cshModifier
69071d4279SBram Moolenaarsyn match cshQtyWord	"\${#[a-zA-Z_][a-zA-Z0-9_]*\(:h\|:t\|:r\|:q\|:x\|:gh\|:gt\|:gr\)\=}"		contains=cshModifier
70071d4279SBram Moolenaarsyn match cshArgv		"\${\d\+\(:h\|:t\|:r\|:q\|:x\|:gh\|:gt\|:gr\)\=}"			contains=cshModifier
71071d4279SBram Moolenaar
72071d4279SBram Moolenaar" UnModifiable Substitutions
73071d4279SBram Moolenaarsyn match cshSubstError	"\$?[a-zA-Z_][a-zA-Z0-9_]*:\(h\|t\|r\|q\|x\|gh\|gt\|gr\)"
74071d4279SBram Moolenaarsyn match cshSubstError	"\${?[a-zA-Z_][a-zA-Z0-9_]*:\(h\|t\|r\|q\|x\|gh\|gt\|gr\)}"
75071d4279SBram Moolenaarsyn match cshSubstError	"\$?[0$<]:\(h\|t\|r\|q\|x\|gh\|gt\|gr\)"
76071d4279SBram Moolenaarsyn match cshSubst	"\$?[a-zA-Z_][a-zA-Z0-9_]*"
77071d4279SBram Moolenaarsyn match cshSubst	"\${?[a-zA-Z_][a-zA-Z0-9_]*}"
78071d4279SBram Moolenaarsyn match cshSubst	"\$?[0$<]"
79071d4279SBram Moolenaar
80071d4279SBram Moolenaar" I/O redirection
81071d4279SBram Moolenaarsyn match cshRedir	">>&!\|>&!\|>>&\|>>!\|>&\|>!\|>>\|<<\|>\|<"
82071d4279SBram Moolenaar
83071d4279SBram Moolenaar" Handle set expressions
84071d4279SBram Moolenaarsyn region  cshSetExpr	matchgroup=cshSetStmt start="\<set\>\|\<unset\>" end="$\|;" contains=cshComment,cshSetStmt,cshSetVariables,@cshQuoteList
85071d4279SBram Moolenaar
86071d4279SBram Moolenaar" Operators and Expression-Using constructs
87071d4279SBram Moolenaar"syn match   cshOperator	contained "&&\|!\~\|!=\|<<\|<=\|==\|=\~\|>=\|>>\|\*\|\^\|\~\|||\|!\|\|%\|&\|+\|-\|/\|<\|>\||"
88071d4279SBram Moolenaarsyn match   cshOperator	contained "&&\|!\~\|!=\|<<\|<=\|==\|=\~\|>=\|>>\|\*\|\^\|\~\|||\|!\|%\|&\|+\|-\|/\|<\|>\||"
89071d4279SBram Moolenaarsyn match   cshOperator	contained "[(){}]"
90071d4279SBram Moolenaarsyn region  cshTest	matchgroup=cshStatement start="\<if\>\|\<while\>" skip="\\$" matchgroup=cshStatement end="\<then\>\|$" contains=cshComment,cshOperator,@cshQuoteList,@cshVarLIst
91071d4279SBram Moolenaar
92071d4279SBram Moolenaar" Highlight special characters (those which have a backslash) differently
93071d4279SBram Moolenaarsyn match cshSpecial	contained "\\\d\d\d\|\\[abcfnrtv\\]"
94071d4279SBram Moolenaarsyn match cshNumber	"-\=\<\d\+\>"
95071d4279SBram Moolenaar
96071d4279SBram Moolenaar" All other identifiers
97071d4279SBram Moolenaar"syn match cshIdentifier	"\<[a-zA-Z._][a-zA-Z0-9._]*\>"
98071d4279SBram Moolenaar
99071d4279SBram Moolenaar" Shell Input Redirection (Here Documents)
100071d4279SBram Moolenaarsyn region cshHereDoc matchgroup=cshRedir start="<<-\=\s*\**\z(\h\w*\)\**" matchgroup=cshRedir end="^\z1$"
101071d4279SBram Moolenaar
102071d4279SBram Moolenaar" Define the default highlighting.
103f37506f6SBram Moolenaarif !exists("skip_csh_syntax_inits")
104071d4279SBram Moolenaar
105f37506f6SBram Moolenaar  hi def link cshArgv		cshVariables
106f37506f6SBram Moolenaar  hi def link cshBckQuote	cshCommand
107f37506f6SBram Moolenaar  hi def link cshDblQuote	cshString
108f37506f6SBram Moolenaar  hi def link cshExtVar	cshVariables
109f37506f6SBram Moolenaar  hi def link cshHereDoc	cshString
110f37506f6SBram Moolenaar  hi def link cshNoEndlineBQ	cshNoEndline
111f37506f6SBram Moolenaar  hi def link cshNoEndlineDQ	cshNoEndline
112f37506f6SBram Moolenaar  hi def link cshNoEndlineSQ	cshNoEndline
113f37506f6SBram Moolenaar  hi def link cshQtyWord	cshVariables
114f37506f6SBram Moolenaar  hi def link cshRedir		cshOperator
115f37506f6SBram Moolenaar  hi def link cshSelector	cshVariables
116f37506f6SBram Moolenaar  hi def link cshSetStmt	cshStatement
117f37506f6SBram Moolenaar  hi def link cshSetVariables	cshVariables
118f37506f6SBram Moolenaar  hi def link cshSnglQuote	cshString
119f37506f6SBram Moolenaar  hi def link cshSubst		cshVariables
120071d4279SBram Moolenaar
121f37506f6SBram Moolenaar  hi def link cshCommand	Statement
122f37506f6SBram Moolenaar  hi def link cshComment	Comment
123f37506f6SBram Moolenaar  hi def link cshConditional	Conditional
124f37506f6SBram Moolenaar  hi def link cshIdentifier	Error
125f37506f6SBram Moolenaar  hi def link cshModifier	Special
126f37506f6SBram Moolenaar  hi def link cshNoEndline	Error
127f37506f6SBram Moolenaar  hi def link cshNumber	Number
128f37506f6SBram Moolenaar  hi def link cshOperator	Operator
129f37506f6SBram Moolenaar  hi def link cshRedir		Statement
130f37506f6SBram Moolenaar  hi def link cshRepeat	Repeat
131f37506f6SBram Moolenaar  hi def link cshShellVariables	Special
132f37506f6SBram Moolenaar  hi def link cshSpecial	Special
133f37506f6SBram Moolenaar  hi def link cshStatement	Statement
134f37506f6SBram Moolenaar  hi def link cshString	String
135f37506f6SBram Moolenaar  hi def link cshSubstError	Error
136f37506f6SBram Moolenaar  hi def link cshTodo		Todo
137f37506f6SBram Moolenaar  hi def link cshVariables	Type
138071d4279SBram Moolenaar
139f37506f6SBram Moolenaarendif
140071d4279SBram Moolenaar
141071d4279SBram Moolenaarlet b:current_syntax = "csh"
142071d4279SBram Moolenaar
143071d4279SBram Moolenaar" vim: ts=18
144