Mercurial > vim
annotate runtime/syntax/sh.vim @ 7687:61354fabf8a2 v7.4.1142
commit https://github.com/vim/vim/commit/b8060fe862f684b591f9ac679eac5b2594d6c5a0
Author: Bram Moolenaar <Bram@vim.org>
Date: Tue Jan 19 22:29:28 2016 +0100
patch 7.4.1142
Problem: Cannot define keyword characters for a syntax file.
Solution: Add the ":syn iskeyword" command. (Christian Brabandt)
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Tue, 19 Jan 2016 22:30:07 +0100 |
parents | 502ca0a62fd8 |
children | f5da459c5698 |
rev | line source |
---|---|
7 | 1 " Vim syntax file |
2 " Language: shell (sh) Korn shell (ksh) bash (sh) | |
3920 | 3 " Maintainer: Charles E. Campbell <NdrOchipS@PcampbellAfamily.Mbiz> |
7 | 4 " Previous Maintainer: Lennart Schultz <Lennart.Schultz@ecmwf.int> |
7557
502ca0a62fd8
commit https://github.com/vim/vim/commit/acb4f221c715a333f4c49a2235a8006c6ac6e4d5
Christian Brabandt <cb@256bit.org>
parents:
7245
diff
changeset
|
5 " Last Change: Dec 11, 2015 |
502ca0a62fd8
commit https://github.com/vim/vim/commit/acb4f221c715a333f4c49a2235a8006c6ac6e4d5
Christian Brabandt <cb@256bit.org>
parents:
7245
diff
changeset
|
6 " Version: 143 |
6479 | 7 " URL: http://www.drchip.org/astronaut/vim/index.html#SYNTAX_SH |
8 " For options and settings, please use: :help ft-sh-syntax | |
7228
873eae260c97
commit https://github.com/vim/vim/commit/b4ff518d95aa57c2f8c0568c915035bef849581b
Christian Brabandt <cb@256bit.org>
parents:
7176
diff
changeset
|
9 " This file includes many ideas from Eric Brunet (eric.brunet@ens.fr) |
7 | 10 |
22 | 11 " For version 5.x: Clear all syntax items {{{1 |
7 | 12 " For version 6.x: Quit when a syntax file was already loaded |
13 if version < 600 | |
14 syntax clear | |
15 elseif exists("b:current_syntax") | |
16 finish | |
17 endif | |
18 | |
3099
887d6d91882e
Updated a few runtime files.
Bram Moolenaar <bram@vim.org>
parents:
2751
diff
changeset
|
19 " trying to answer the question: which shell is /bin/sh, really? |
3920 | 20 " If the user has not specified any of g:is_kornshell, g:is_bash, g:is_posix, g:is_sh, then guess. |
3099
887d6d91882e
Updated a few runtime files.
Bram Moolenaar <bram@vim.org>
parents:
2751
diff
changeset
|
21 if !exists("g:is_kornshell") && !exists("g:is_bash") && !exists("g:is_posix") && !exists("g:is_sh") |
5138
0d4e0cde36e1
A few updated runtime files.
Bram Moolenaar <bram@vim.org>
parents:
4229
diff
changeset
|
22 let s:shell = "" |
3099
887d6d91882e
Updated a few runtime files.
Bram Moolenaar <bram@vim.org>
parents:
2751
diff
changeset
|
23 if executable("/bin/sh") |
5138
0d4e0cde36e1
A few updated runtime files.
Bram Moolenaar <bram@vim.org>
parents:
4229
diff
changeset
|
24 let s:shell = resolve("/bin/sh") |
3099
887d6d91882e
Updated a few runtime files.
Bram Moolenaar <bram@vim.org>
parents:
2751
diff
changeset
|
25 elseif executable("/usr/bin/sh") |
5138
0d4e0cde36e1
A few updated runtime files.
Bram Moolenaar <bram@vim.org>
parents:
4229
diff
changeset
|
26 let s:shell = resolve("/usr/bin/sh") |
3099
887d6d91882e
Updated a few runtime files.
Bram Moolenaar <bram@vim.org>
parents:
2751
diff
changeset
|
27 endif |
5138
0d4e0cde36e1
A few updated runtime files.
Bram Moolenaar <bram@vim.org>
parents:
4229
diff
changeset
|
28 if s:shell =~ 'bash$' |
0d4e0cde36e1
A few updated runtime files.
Bram Moolenaar <bram@vim.org>
parents:
4229
diff
changeset
|
29 let g:is_bash= 1 |
0d4e0cde36e1
A few updated runtime files.
Bram Moolenaar <bram@vim.org>
parents:
4229
diff
changeset
|
30 elseif s:shell =~ 'ksh$' |
0d4e0cde36e1
A few updated runtime files.
Bram Moolenaar <bram@vim.org>
parents:
4229
diff
changeset
|
31 let g:is_kornshell = 1 |
0d4e0cde36e1
A few updated runtime files.
Bram Moolenaar <bram@vim.org>
parents:
4229
diff
changeset
|
32 elseif s:shell =~ 'dash$' |
0d4e0cde36e1
A few updated runtime files.
Bram Moolenaar <bram@vim.org>
parents:
4229
diff
changeset
|
33 let g:is_posix = 1 |
0d4e0cde36e1
A few updated runtime files.
Bram Moolenaar <bram@vim.org>
parents:
4229
diff
changeset
|
34 endif |
0d4e0cde36e1
A few updated runtime files.
Bram Moolenaar <bram@vim.org>
parents:
4229
diff
changeset
|
35 unlet s:shell |
3099
887d6d91882e
Updated a few runtime files.
Bram Moolenaar <bram@vim.org>
parents:
2751
diff
changeset
|
36 endif |
887d6d91882e
Updated a few runtime files.
Bram Moolenaar <bram@vim.org>
parents:
2751
diff
changeset
|
37 |
22 | 38 " handling /bin/sh with is_kornshell/is_sh {{{1 |
7 | 39 " b:is_sh is set when "#! /bin/sh" is found; |
40 " However, it often is just a masquerade by bash (typically Linux) | |
41 " or kornshell (typically workstations with Posix "sh"). | |
3099
887d6d91882e
Updated a few runtime files.
Bram Moolenaar <bram@vim.org>
parents:
2751
diff
changeset
|
42 " So, when the user sets "g:is_bash", "g:is_kornshell", |
887d6d91882e
Updated a few runtime files.
Bram Moolenaar <bram@vim.org>
parents:
2751
diff
changeset
|
43 " or "g:is_posix", a b:is_sh is converted into b:is_bash/b:is_kornshell, |
7 | 44 " respectively. |
45 if !exists("b:is_kornshell") && !exists("b:is_bash") | |
828 | 46 if exists("g:is_posix") && !exists("g:is_kornshell") |
47 let g:is_kornshell= g:is_posix | |
48 endif | |
49 if exists("g:is_kornshell") | |
7 | 50 let b:is_kornshell= 1 |
51 if exists("b:is_sh") | |
52 unlet b:is_sh | |
53 endif | |
828 | 54 elseif exists("g:is_bash") |
7 | 55 let b:is_bash= 1 |
56 if exists("b:is_sh") | |
57 unlet b:is_sh | |
58 endif | |
59 else | |
60 let b:is_sh= 1 | |
61 endif | |
62 endif | |
63 | |
199 | 64 " set up default g:sh_fold_enabled {{{1 |
7228
873eae260c97
commit https://github.com/vim/vim/commit/b4ff518d95aa57c2f8c0568c915035bef849581b
Christian Brabandt <cb@256bit.org>
parents:
7176
diff
changeset
|
65 " ================================ |
7 | 66 if !exists("g:sh_fold_enabled") |
67 let g:sh_fold_enabled= 0 | |
36 | 68 elseif g:sh_fold_enabled != 0 && !has("folding") |
69 let g:sh_fold_enabled= 0 | |
199 | 70 echomsg "Ignoring g:sh_fold_enabled=".g:sh_fold_enabled."; need to re-compile vim for +fold support" |
71 endif | |
1668 | 72 if !exists("s:sh_fold_functions") |
3920 | 73 let s:sh_fold_functions= and(g:sh_fold_enabled,1) |
1668 | 74 endif |
75 if !exists("s:sh_fold_heredoc") | |
3920 | 76 let s:sh_fold_heredoc = and(g:sh_fold_enabled,2) |
1668 | 77 endif |
78 if !exists("s:sh_fold_ifdofor") | |
3920 | 79 let s:sh_fold_ifdofor = and(g:sh_fold_enabled,4) |
1668 | 80 endif |
199 | 81 if g:sh_fold_enabled && &fdm == "manual" |
3920 | 82 " Given that the user provided g:sh_fold_enabled |
83 " AND g:sh_fold_enabled is manual (usual default) | |
84 " implies a desire for syntax-based folding | |
85 setl fdm=syntax | |
7 | 86 endif |
87 | |
7228
873eae260c97
commit https://github.com/vim/vim/commit/b4ff518d95aa57c2f8c0568c915035bef849581b
Christian Brabandt <cb@256bit.org>
parents:
7176
diff
changeset
|
88 " Set up folding commands for shell {{{1 |
873eae260c97
commit https://github.com/vim/vim/commit/b4ff518d95aa57c2f8c0568c915035bef849581b
Christian Brabandt <cb@256bit.org>
parents:
7176
diff
changeset
|
89 " ================================= |
873eae260c97
commit https://github.com/vim/vim/commit/b4ff518d95aa57c2f8c0568c915035bef849581b
Christian Brabandt <cb@256bit.org>
parents:
7176
diff
changeset
|
90 if s:sh_fold_functions |
873eae260c97
commit https://github.com/vim/vim/commit/b4ff518d95aa57c2f8c0568c915035bef849581b
Christian Brabandt <cb@256bit.org>
parents:
7176
diff
changeset
|
91 com! -nargs=* ShFoldFunctions <args> fold |
873eae260c97
commit https://github.com/vim/vim/commit/b4ff518d95aa57c2f8c0568c915035bef849581b
Christian Brabandt <cb@256bit.org>
parents:
7176
diff
changeset
|
92 else |
873eae260c97
commit https://github.com/vim/vim/commit/b4ff518d95aa57c2f8c0568c915035bef849581b
Christian Brabandt <cb@256bit.org>
parents:
7176
diff
changeset
|
93 com! -nargs=* ShFoldFunctions <args> |
873eae260c97
commit https://github.com/vim/vim/commit/b4ff518d95aa57c2f8c0568c915035bef849581b
Christian Brabandt <cb@256bit.org>
parents:
7176
diff
changeset
|
94 endif |
873eae260c97
commit https://github.com/vim/vim/commit/b4ff518d95aa57c2f8c0568c915035bef849581b
Christian Brabandt <cb@256bit.org>
parents:
7176
diff
changeset
|
95 if s:sh_fold_heredoc |
873eae260c97
commit https://github.com/vim/vim/commit/b4ff518d95aa57c2f8c0568c915035bef849581b
Christian Brabandt <cb@256bit.org>
parents:
7176
diff
changeset
|
96 com! -nargs=* ShFoldHereDoc <args> fold |
873eae260c97
commit https://github.com/vim/vim/commit/b4ff518d95aa57c2f8c0568c915035bef849581b
Christian Brabandt <cb@256bit.org>
parents:
7176
diff
changeset
|
97 else |
873eae260c97
commit https://github.com/vim/vim/commit/b4ff518d95aa57c2f8c0568c915035bef849581b
Christian Brabandt <cb@256bit.org>
parents:
7176
diff
changeset
|
98 com! -nargs=* ShFoldHereDoc <args> |
873eae260c97
commit https://github.com/vim/vim/commit/b4ff518d95aa57c2f8c0568c915035bef849581b
Christian Brabandt <cb@256bit.org>
parents:
7176
diff
changeset
|
99 endif |
873eae260c97
commit https://github.com/vim/vim/commit/b4ff518d95aa57c2f8c0568c915035bef849581b
Christian Brabandt <cb@256bit.org>
parents:
7176
diff
changeset
|
100 if s:sh_fold_ifdofor |
873eae260c97
commit https://github.com/vim/vim/commit/b4ff518d95aa57c2f8c0568c915035bef849581b
Christian Brabandt <cb@256bit.org>
parents:
7176
diff
changeset
|
101 com! -nargs=* ShFoldIfDoFor <args> fold |
873eae260c97
commit https://github.com/vim/vim/commit/b4ff518d95aa57c2f8c0568c915035bef849581b
Christian Brabandt <cb@256bit.org>
parents:
7176
diff
changeset
|
102 else |
873eae260c97
commit https://github.com/vim/vim/commit/b4ff518d95aa57c2f8c0568c915035bef849581b
Christian Brabandt <cb@256bit.org>
parents:
7176
diff
changeset
|
103 com! -nargs=* ShFoldIfDoFor <args> |
873eae260c97
commit https://github.com/vim/vim/commit/b4ff518d95aa57c2f8c0568c915035bef849581b
Christian Brabandt <cb@256bit.org>
parents:
7176
diff
changeset
|
104 endif |
873eae260c97
commit https://github.com/vim/vim/commit/b4ff518d95aa57c2f8c0568c915035bef849581b
Christian Brabandt <cb@256bit.org>
parents:
7176
diff
changeset
|
105 |
199 | 106 " sh syntax is case sensitive {{{1 |
7 | 107 syn case match |
108 | |
22 | 109 " Clusters: contains=@... clusters {{{1 |
7 | 110 "================================== |
2034 | 111 syn cluster shErrorList contains=shDoError,shIfError,shInError,shCaseError,shEsacError,shCurlyError,shParenError,shTestError,shOK |
1668 | 112 if exists("b:is_kornshell") |
113 syn cluster ErrorList add=shDTestError | |
114 endif | |
6744 | 115 syn cluster shArithParenList contains=shArithmetic,shCaseEsac,shComment,shDeref,shDo,shDerefSimple,shEcho,shEscape,shNumber,shOperator,shPosnParm,shExSingleQuote,shExDoubleQuote,shRedir,shSingleQuote,shDoubleQuote,shStatement,shVariable,shAlias,shTest,shCtrlSeq,shSpecial,shParen,bashSpecialVariables,bashStatement,shIf,shFor |
1668 | 116 syn cluster shArithList contains=@shArithParenList,shParenError |
2034 | 117 syn cluster shCaseEsacList contains=shCaseStart,shCase,shCaseBar,shCaseIn,shComment,shDeref,shDerefSimple,shCaseCommandSub,shCaseExSingleQuote,shCaseSingleQuote,shCaseDoubleQuote,shCtrlSeq,@shErrorList,shStringSpecial,shCaseRange |
3099
887d6d91882e
Updated a few runtime files.
Bram Moolenaar <bram@vim.org>
parents:
2751
diff
changeset
|
118 syn cluster shCaseList contains=@shCommandSubList,shCaseEsac,shColon,shCommandSub,shComment,shDo,shEcho,shExpr,shFor,shHereDoc,shIf,shRedir,shSetList,shSource,shStatement,shVariable,shCtrlSeq |
7245
8896150aba23
commit https://github.com/vim/vim/commit/e392eb41f8dfc01bd13634e534ac6b4d505326f4
Christian Brabandt <cb@256bit.org>
parents:
7228
diff
changeset
|
119 syn cluster shCommandSubList contains=shAlias,shArithmetic,shComment,shCmdParenRegion,shCtrlSeq,shDeref,shDerefSimple,shDoubleQuote,shEcho,shEscape,shExDoubleQuote,shExpr,shExSingleQuote,shNumber,shOperator,shOption,shPosnParm,shSingleQuote,shSpecial,shStatement,shSubSh,shTest,shVariable |
464 | 120 syn cluster shCurlyList contains=shNumber,shComma,shDeref,shDerefSimple,shDerefSpecial |
3920 | 121 syn cluster shDblQuoteList contains=shCommandSub,shDeref,shDerefSimple,shEscape,shPosnParm,shCtrlSeq,shSpecial |
7557
502ca0a62fd8
commit https://github.com/vim/vim/commit/acb4f221c715a333f4c49a2235a8006c6ac6e4d5
Christian Brabandt <cb@256bit.org>
parents:
7245
diff
changeset
|
122 syn cluster shDerefList contains=shDeref,shDerefSimple,shDerefVar,shDerefSpecial,shDerefWordError,shDerefPSR,shDerefPPS |
7 | 123 syn cluster shDerefVarList contains=shDerefOp,shDerefVarArray,shDerefOpError |
3920 | 124 syn cluster shEchoList contains=shArithmetic,shCommandSub,shDeref,shDerefSimple,shEscape,shExpr,shExSingleQuote,shExDoubleQuote,shSingleQuote,shDoubleQuote,shCtrlSeq,shEchoQuote |
2497 | 125 syn cluster shExprList1 contains=shCharClass,shNumber,shOperator,shExSingleQuote,shExDoubleQuote,shSingleQuote,shDoubleQuote,shExpr,shDblBrace,shDeref,shDerefSimple,shCtrlSeq |
119 | 126 syn cluster shExprList2 contains=@shExprList1,@shCaseList,shTest |
3099
887d6d91882e
Updated a few runtime files.
Bram Moolenaar <bram@vim.org>
parents:
2751
diff
changeset
|
127 syn cluster shFunctionList contains=@shCommandSubList,shCaseEsac,shColon,shCommandSub,shComment,shDo,shEcho,shExpr,shFor,shHereDoc,shIf,shOption,shRedir,shSetList,shSource,shStatement,shVariable,shOperator,shCtrlSeq |
1201 | 128 if exists("b:is_kornshell") || exists("b:is_bash") |
1668 | 129 syn cluster shFunctionList add=shRepeat |
1201 | 130 syn cluster shFunctionList add=shDblBrace,shDblParen |
131 endif | |
7 | 132 syn cluster shHereBeginList contains=@shCommandSubList |
133 syn cluster shHereList contains=shBeginHere,shHerePayload | |
134 syn cluster shHereListDQ contains=shBeginHere,@shDblQuoteList,shHerePayload | |
5138
0d4e0cde36e1
A few updated runtime files.
Bram Moolenaar <bram@vim.org>
parents:
4229
diff
changeset
|
135 syn cluster shIdList contains=shCommandSub,shWrapLineOperator,shSetOption,shDeref,shDerefSimple,shRedir,shExSingleQuote,shExDoubleQuote,shSingleQuote,shDoubleQuote,shExpr,shCtrlSeq,shStringSpecial,shAtExpr |
3281 | 136 syn cluster shIfList contains=@shLoopList,shDblBrace,shDblParen,shFunctionKey,shFunctionOne,shFunctionTwo |
7228
873eae260c97
commit https://github.com/vim/vim/commit/b4ff518d95aa57c2f8c0568c915035bef849581b
Christian Brabandt <cb@256bit.org>
parents:
7176
diff
changeset
|
137 syn cluster shLoopList contains=@shCaseList,@shErrorList,shCaseEsac,shConditional,shDblBrace,shExpr,shFor,shForPP,shIf,shOption,shSet,shTest,shTestOpr,shTouch |
3099
887d6d91882e
Updated a few runtime files.
Bram Moolenaar <bram@vim.org>
parents:
2751
diff
changeset
|
138 syn cluster shSubShList contains=@shCommandSubList,shCaseEsac,shColon,shCommandSub,shComment,shDo,shEcho,shExpr,shFor,shIf,shRedir,shSetList,shSource,shStatement,shVariable,shCtrlSeq,shOperator |
7176
30042ddff503
commit https://github.com/vim/vim/commit/60cce2fb736c8ff6fdb9603f502d3c15f1f7a25d
Christian Brabandt <cb@256bit.org>
parents:
6840
diff
changeset
|
139 syn cluster shTestList contains=shCharClass,shCommandSub,shCtrlSeq,shDeref,shDerefSimple,shDoubleQuote,shExDoubleQuote,shExpr,shExSingleQuote,shNumber,shOperator,shSingleQuote,shTest,shTestOpr |
7228
873eae260c97
commit https://github.com/vim/vim/commit/b4ff518d95aa57c2f8c0568c915035bef849581b
Christian Brabandt <cb@256bit.org>
parents:
7176
diff
changeset
|
140 |
22 | 141 " Echo: {{{1 |
7 | 142 " ==== |
143 " This one is needed INSIDE a CommandSub, so that `echo bla` be correct | |
5138
0d4e0cde36e1
A few updated runtime files.
Bram Moolenaar <bram@vim.org>
parents:
4229
diff
changeset
|
144 syn region shEcho matchgroup=shStatement start="\<echo\>" skip="\\$" matchgroup=shEchoDelim end="$" matchgroup=NONE end="[<>;&|()`]"me=e-1 end="\d[<>]"me=e-2 end="\s#"me=e-2 contains=@shEchoList skipwhite nextgroup=shQuickComment |
0d4e0cde36e1
A few updated runtime files.
Bram Moolenaar <bram@vim.org>
parents:
4229
diff
changeset
|
145 syn region shEcho matchgroup=shStatement start="\<print\>" skip="\\$" matchgroup=shEchoDelim end="$" matchgroup=NONE end="[<>;&|()`]"me=e-1 end="\d[<>]"me=e-2 end="\s#"me=e-2 contains=@shEchoList skipwhite nextgroup=shQuickComment |
2034 | 146 syn match shEchoQuote contained '\%(\\\\\)*\\["`'()]' |
7 | 147 |
1668 | 148 " This must be after the strings, so that ... \" will be correct |
2497 | 149 syn region shEmbeddedEcho contained matchgroup=shStatement start="\<print\>" skip="\\$" matchgroup=shEchoDelim end="$" matchgroup=NONE end="[<>;&|`)]"me=e-1 end="\d[<>]"me=e-2 end="\s#"me=e-2 contains=shNumber,shExSingleQuote,shSingleQuote,shDeref,shDerefSimple,shSpecialVar,shOperator,shExDoubleQuote,shDoubleQuote,shCharClass,shCtrlSeq |
7 | 150 |
22 | 151 " Alias: {{{1 |
7 | 152 " ===== |
153 if exists("b:is_kornshell") || exists("b:is_bash") | |
154 syn match shStatement "\<alias\>" | |
3099
887d6d91882e
Updated a few runtime files.
Bram Moolenaar <bram@vim.org>
parents:
2751
diff
changeset
|
155 syn region shAlias matchgroup=shStatement start="\<alias\>\s\+\(\h[-._[:alnum:]]\+\)\@=" skip="\\$" end="\>\|`" |
887d6d91882e
Updated a few runtime files.
Bram Moolenaar <bram@vim.org>
parents:
2751
diff
changeset
|
156 syn region shAlias matchgroup=shStatement start="\<alias\>\s\+\(\h[-._[:alnum:]]\+=\)\@=" skip="\\$" end="=" |
7228
873eae260c97
commit https://github.com/vim/vim/commit/b4ff518d95aa57c2f8c0568c915035bef849581b
Christian Brabandt <cb@256bit.org>
parents:
7176
diff
changeset
|
157 |
873eae260c97
commit https://github.com/vim/vim/commit/b4ff518d95aa57c2f8c0568c915035bef849581b
Christian Brabandt <cb@256bit.org>
parents:
7176
diff
changeset
|
158 " Touch: {{{1 |
873eae260c97
commit https://github.com/vim/vim/commit/b4ff518d95aa57c2f8c0568c915035bef849581b
Christian Brabandt <cb@256bit.org>
parents:
7176
diff
changeset
|
159 " ===== |
873eae260c97
commit https://github.com/vim/vim/commit/b4ff518d95aa57c2f8c0568c915035bef849581b
Christian Brabandt <cb@256bit.org>
parents:
7176
diff
changeset
|
160 syn match shTouch '\<touch\>[^;#]*' skipwhite nextgroup=shTouchList contains=shTouchCmd |
873eae260c97
commit https://github.com/vim/vim/commit/b4ff518d95aa57c2f8c0568c915035bef849581b
Christian Brabandt <cb@256bit.org>
parents:
7176
diff
changeset
|
161 syn match shTouchCmd '\<touch\>' contained |
7 | 162 endif |
163 | |
22 | 164 " Error Codes: {{{1 |
165 " ============ | |
3281 | 166 if !exists("g:sh_no_error") |
6479 | 167 syn match shDoError "\<done\>" |
168 syn match shIfError "\<fi\>" | |
169 syn match shInError "\<in\>" | |
170 syn match shCaseError ";;" | |
171 syn match shEsacError "\<esac\>" | |
172 syn match shCurlyError "}" | |
173 syn match shParenError ")" | |
174 syn match shOK '\.\(done\|fi\|in\|esac\)' | |
3281 | 175 if exists("b:is_kornshell") |
6479 | 176 syn match shDTestError "]]" |
3281 | 177 endif |
6479 | 178 syn match shTestError "]" |
7 | 179 endif |
180 | |
1668 | 181 " Options: {{{1 |
22 | 182 " ==================== |
3920 | 183 syn match shOption "\s\zs[-+][-_a-zA-Z0-9#]\+" |
5138
0d4e0cde36e1
A few updated runtime files.
Bram Moolenaar <bram@vim.org>
parents:
4229
diff
changeset
|
184 syn match shOption "\s\zs--[^ \t$`'"|);]\+" |
7 | 185 |
1201 | 186 " File Redirection Highlighted As Operators: {{{1 |
187 "=========================================== | |
188 syn match shRedir "\d\=>\(&[-0-9]\)\=" | |
189 syn match shRedir "\d\=>>-\=" | |
190 syn match shRedir "\d\=<\(&[-0-9]\)\=" | |
191 syn match shRedir "\d<<-\=" | |
192 | |
22 | 193 " Operators: {{{1 |
194 " ========== | |
1201 | 195 syn match shOperator "<<\|>>" contained |
1668 | 196 syn match shOperator "[!&;|]" contained |
197 syn match shOperator "\[[[^:]\|\]]" contained | |
6840 | 198 syn match shOperator "[-=/*+%]\==" skipwhite nextgroup=shPattern |
2497 | 199 syn match shPattern "\<\S\+\())\)\@=" contained contains=shExSingleQuote,shSingleQuote,shExDoubleQuote,shDoubleQuote,shDeref |
7 | 200 |
22 | 201 " Subshells: {{{1 |
202 " ========== | |
3099
887d6d91882e
Updated a few runtime files.
Bram Moolenaar <bram@vim.org>
parents:
2751
diff
changeset
|
203 syn region shExpr transparent matchgroup=shExprRegion start="{" end="}" contains=@shExprList2 nextgroup=shMoreSpecial |
887d6d91882e
Updated a few runtime files.
Bram Moolenaar <bram@vim.org>
parents:
2751
diff
changeset
|
204 syn region shSubSh transparent matchgroup=shSubShRegion start="[^(]\zs(" end=")" contains=@shSubShList nextgroup=shMoreSpecial |
7 | 205 |
22 | 206 " Tests: {{{1 |
207 "======= | |
2152 | 208 syn region shExpr matchgroup=shRange start="\[" skip=+\\\\\|\\$\|\[+ end="\]" contains=@shTestList,shSpecial |
2034 | 209 syn region shTest transparent matchgroup=shStatement start="\<test\s" skip=+\\\\\|\\$+ matchgroup=NONE end="[;&|]"me=e-1 end="$" contains=@shExprList1 |
7228
873eae260c97
commit https://github.com/vim/vim/commit/b4ff518d95aa57c2f8c0568c915035bef849581b
Christian Brabandt <cb@256bit.org>
parents:
7176
diff
changeset
|
210 syn region shNoQuote start='\S' skip='\%(\\\\\)*\\.' end='\ze\s' contained |
6840 | 211 syn match shTestOpr contained '[^-+/%]\zs=' skipwhite nextgroup=shTestDoubleQuote,shTestSingleQuote,shTestPattern |
7228
873eae260c97
commit https://github.com/vim/vim/commit/b4ff518d95aa57c2f8c0568c915035bef849581b
Christian Brabandt <cb@256bit.org>
parents:
7176
diff
changeset
|
212 syn match shTestOpr contained "<=\|>=\|!=\|==\|=\~\|-.\>\|-\(nt\|ot\|ef\|eq\|ne\|lt\|le\|gt\|ge\)\>\|[!<>]" |
1121 | 213 syn match shTestPattern contained '\w\+' |
6744 | 214 syn region shTestDoubleQuote contained start='\%(\%(\\\\\)*\\\)\@<!"' skip=+\\\\\|\\"+ end='"' |
1121 | 215 syn match shTestSingleQuote contained '\\.' |
216 syn match shTestSingleQuote contained "'[^']*'" | |
7 | 217 if exists("b:is_kornshell") || exists("b:is_bash") |
7228
873eae260c97
commit https://github.com/vim/vim/commit/b4ff518d95aa57c2f8c0568c915035bef849581b
Christian Brabandt <cb@256bit.org>
parents:
7176
diff
changeset
|
218 syn region shDblBrace matchgroup=Delimiter start="\[\[" skip=+\%(\\\\\)*\\$+ end="\]\]" contains=@shTestList,shNoQuote,shComment |
873eae260c97
commit https://github.com/vim/vim/commit/b4ff518d95aa57c2f8c0568c915035bef849581b
Christian Brabandt <cb@256bit.org>
parents:
7176
diff
changeset
|
219 syn region shDblParen matchgroup=Delimiter start="((" skip=+\%(\\\\\)*\\$+ end="))" contains=@shTestList,shComment |
7 | 220 endif |
221 | |
22 | 222 " Character Class In Range: {{{1 |
223 " ========================= | |
7 | 224 syn match shCharClass contained "\[:\(backspace\|escape\|return\|xdigit\|alnum\|alpha\|blank\|cntrl\|digit\|graph\|lower\|print\|punct\|space\|upper\|tab\):\]" |
225 | |
22 | 226 " Loops: do, if, while, until {{{1 |
227 " ====== | |
7228
873eae260c97
commit https://github.com/vim/vim/commit/b4ff518d95aa57c2f8c0568c915035bef849581b
Christian Brabandt <cb@256bit.org>
parents:
7176
diff
changeset
|
228 ShFoldIfDoFor syn region shDo transparent matchgroup=shConditional start="\<do\>" matchgroup=shConditional end="\<done\>" contains=@shLoopList |
873eae260c97
commit https://github.com/vim/vim/commit/b4ff518d95aa57c2f8c0568c915035bef849581b
Christian Brabandt <cb@256bit.org>
parents:
7176
diff
changeset
|
229 ShFoldIfDoFor syn region shIf transparent matchgroup=shConditional start="\<if\_s" matchgroup=shConditional skip=+-fi\>+ end="\<;\_s*then\>" end="\<fi\>" contains=@shIfList |
873eae260c97
commit https://github.com/vim/vim/commit/b4ff518d95aa57c2f8c0568c915035bef849581b
Christian Brabandt <cb@256bit.org>
parents:
7176
diff
changeset
|
230 ShFoldIfDoFor syn region shFor matchgroup=shLoop start="\<for\ze\_s\s*\%(((\)\@!" end="\<in\>" end="\<do\>"me=e-2 contains=@shLoopList,shDblParen skipwhite nextgroup=shCurlyIn |
873eae260c97
commit https://github.com/vim/vim/commit/b4ff518d95aa57c2f8c0568c915035bef849581b
Christian Brabandt <cb@256bit.org>
parents:
7176
diff
changeset
|
231 ShFoldIfDoFor syn region shForPP matchgroup=shLoop start='\<for\>\_s*((' end='))' contains=shTestOpr |
873eae260c97
commit https://github.com/vim/vim/commit/b4ff518d95aa57c2f8c0568c915035bef849581b
Christian Brabandt <cb@256bit.org>
parents:
7176
diff
changeset
|
232 |
7 | 233 if exists("b:is_kornshell") || exists("b:is_bash") |
1668 | 234 syn cluster shCaseList add=shRepeat |
235 syn cluster shFunctionList add=shRepeat | |
236 syn region shRepeat matchgroup=shLoop start="\<while\_s" end="\<in\_s" end="\<do\>"me=e-2 contains=@shLoopList,shDblParen,shDblBrace | |
237 syn region shRepeat matchgroup=shLoop start="\<until\_s" end="\<in\_s" end="\<do\>"me=e-2 contains=@shLoopList,shDblParen,shDblBrace | |
238 syn region shCaseEsac matchgroup=shConditional start="\<select\s" matchgroup=shConditional end="\<in\>" end="\<do\>" contains=@shLoopList | |
7 | 239 else |
1668 | 240 syn region shRepeat matchgroup=shLoop start="\<while\_s" end="\<do\>"me=e-2 contains=@shLoopList |
241 syn region shRepeat matchgroup=shLoop start="\<until\_s" end="\<do\>"me=e-2 contains=@shLoopList | |
7 | 242 endif |
464 | 243 syn region shCurlyIn contained matchgroup=Delimiter start="{" end="}" contains=@shCurlyList |
244 syn match shComma contained "," | |
7 | 245 |
22 | 246 " Case: case...esac {{{1 |
7 | 247 " ==== |
1668 | 248 syn match shCaseBar contained skipwhite "\(^\|[^\\]\)\(\\\\\)*\zs|" nextgroup=shCase,shCaseStart,shCaseBar,shComment,shCaseExSingleQuote,shCaseSingleQuote,shCaseDoubleQuote |
7 | 249 syn match shCaseStart contained skipwhite skipnl "(" nextgroup=shCase,shCaseBar |
7228
873eae260c97
commit https://github.com/vim/vim/commit/b4ff518d95aa57c2f8c0568c915035bef849581b
Christian Brabandt <cb@256bit.org>
parents:
7176
diff
changeset
|
250 ShFoldIfDoFor syn region shCase contained skipwhite skipnl matchgroup=shSnglCase start="\%(\\.\|[^#$()'" \t]\)\{-}\zs)" end=";;" end="esac"me=s-1 contains=@shCaseList nextgroup=shCaseStart,shCase,shComment |
873eae260c97
commit https://github.com/vim/vim/commit/b4ff518d95aa57c2f8c0568c915035bef849581b
Christian Brabandt <cb@256bit.org>
parents:
7176
diff
changeset
|
251 ShFoldIfDoFor syn region shCaseEsac matchgroup=shConditional start="\<case\>" end="\<esac\>" contains=@shCaseEsacList |
873eae260c97
commit https://github.com/vim/vim/commit/b4ff518d95aa57c2f8c0568c915035bef849581b
Christian Brabandt <cb@256bit.org>
parents:
7176
diff
changeset
|
252 |
167 | 253 syn keyword shCaseIn contained skipwhite skipnl in nextgroup=shCase,shCaseStart,shCaseBar,shComment,shCaseExSingleQuote,shCaseSingleQuote,shCaseDoubleQuote |
254 if exists("b:is_bash") | |
2473
d55e70cabe2c
Syntax file updates. (Charles Campbell)
Bram Moolenaar <bram@vim.org>
parents:
2357
diff
changeset
|
255 syn region shCaseExSingleQuote matchgroup=shQuote start=+\$'+ skip=+\\\\\|\\.+ end=+'+ contains=shStringSpecial,shSpecial skipwhite skipnl nextgroup=shCaseBar contained |
3281 | 256 elseif !exists("g:sh_no_error") |
167 | 257 syn region shCaseExSingleQuote matchgroup=Error start=+\$'+ skip=+\\\\\|\\.+ end=+'+ contains=shStringSpecial skipwhite skipnl nextgroup=shCaseBar contained |
258 endif | |
2473
d55e70cabe2c
Syntax file updates. (Charles Campbell)
Bram Moolenaar <bram@vim.org>
parents:
2357
diff
changeset
|
259 syn region shCaseSingleQuote matchgroup=shQuote start=+'+ end=+'+ contains=shStringSpecial skipwhite skipnl nextgroup=shCaseBar contained |
d55e70cabe2c
Syntax file updates. (Charles Campbell)
Bram Moolenaar <bram@vim.org>
parents:
2357
diff
changeset
|
260 syn region shCaseDoubleQuote matchgroup=shQuote start=+"+ skip=+\\\\\|\\.+ end=+"+ contains=@shDblQuoteList,shStringSpecial skipwhite skipnl nextgroup=shCaseBar contained |
7 | 261 syn region shCaseCommandSub start=+`+ skip=+\\\\\|\\.+ end=+`+ contains=@shCommandSubList skipwhite skipnl nextgroup=shCaseBar contained |
3920 | 262 if exists("b:is_bash") |
263 syn region shCaseRange matchgroup=Delimiter start=+\[+ skip=+\\\\+ end=+\]+ contained contains=shCharClass | |
264 syn match shCharClass '\[:\%(alnum\|alpha\|ascii\|blank\|cntrl\|digit\|graph\|lower\|print\|punct\|space\|upper\|word\|or\|xdigit\):\]' contained | |
265 else | |
266 syn region shCaseRange matchgroup=Delimiter start=+\[+ skip=+\\\\+ end=+\]+ contained | |
267 endif | |
22 | 268 " Misc: {{{1 |
269 "====== | |
7 | 270 syn match shWrapLineOperator "\\$" |
3920 | 271 syn region shCommandSub start="`" skip="\\\\\|\\." end="`" contains=@shCommandSubList |
5138
0d4e0cde36e1
A few updated runtime files.
Bram Moolenaar <bram@vim.org>
parents:
4229
diff
changeset
|
272 syn match shEscape contained '\%(^\)\@!\%(\\\\\)*\\.' |
7 | 273 |
22 | 274 " $() and $(()): {{{1 |
7 | 275 " $(..) is not supported by sh (Bourne shell). However, apparently |
276 " some systems (HP?) have as their /bin/sh a (link to) Korn shell | |
277 " (ie. Posix compliant shell). /bin/ksh should work for those | |
278 " systems too, however, so the following syntax will flag $(..) as | |
279 " an Error under /bin/sh. By consensus of vimdev'ers! | |
280 if exists("b:is_kornshell") || exists("b:is_bash") | |
281 syn region shCommandSub matchgroup=shCmdSubRegion start="\$(" skip='\\\\\|\\.' end=")" contains=@shCommandSubList | |
1668 | 282 syn region shArithmetic matchgroup=shArithRegion start="\$((" skip='\\\\\|\\.' end="))" contains=@shArithList |
3445 | 283 syn region shArithmetic matchgroup=shArithRegion start="\$\[" skip='\\\\\|\\.' end="\]" contains=@shArithList |
7 | 284 syn match shSkipInitWS contained "^\s\+" |
3281 | 285 elseif !exists("g:sh_no_error") |
167 | 286 syn region shCommandSub matchgroup=Error start="\$(" end=")" contains=@shCommandSubList |
7 | 287 endif |
6479 | 288 syn region shCmdParenRegion matchgroup=shCmdSubRegion start="(\ze[^(]" skip='\\\\\|\\.' end=")" contains=@shCommandSubList |
7 | 289 |
290 if exists("b:is_bash") | |
291 syn cluster shCommandSubList add=bashSpecialVariables,bashStatement | |
292 syn cluster shCaseList add=bashAdminStatement,bashStatement | |
3099
887d6d91882e
Updated a few runtime files.
Bram Moolenaar <bram@vim.org>
parents:
2751
diff
changeset
|
293 syn keyword bashSpecialVariables contained auto_resume BASH BASH_ALIASES BASH_ALIASES BASH_ARGC BASH_ARGC BASH_ARGV BASH_ARGV BASH_CMDS BASH_CMDS BASH_COMMAND BASH_COMMAND BASH_ENV BASH_EXECUTION_STRING BASH_EXECUTION_STRING BASH_LINENO BASH_LINENO BASHOPTS BASHOPTS BASHPID BASHPID BASH_REMATCH BASH_REMATCH BASH_SOURCE BASH_SOURCE BASH_SUBSHELL BASH_SUBSHELL BASH_VERSINFO BASH_VERSION BASH_XTRACEFD BASH_XTRACEFD CDPATH COLUMNS COLUMNS COMP_CWORD COMP_CWORD COMP_KEY COMP_KEY COMP_LINE COMP_LINE COMP_POINT COMP_POINT COMPREPLY COMPREPLY COMP_TYPE COMP_TYPE COMP_WORDBREAKS COMP_WORDBREAKS COMP_WORDS COMP_WORDS COPROC COPROC DIRSTACK EMACS EMACS ENV ENV EUID FCEDIT FIGNORE FUNCNAME FUNCNAME FUNCNEST FUNCNEST GLOBIGNORE GROUPS histchars HISTCMD HISTCONTROL HISTFILE HISTFILESIZE HISTIGNORE HISTSIZE HISTTIMEFORMAT HISTTIMEFORMAT HOME HOSTFILE HOSTNAME HOSTTYPE IFS IGNOREEOF INPUTRC LANG LC_ALL LC_COLLATE LC_CTYPE LC_CTYPE LC_MESSAGES LC_NUMERIC LC_NUMERIC LINENO LINES LINES MACHTYPE MAIL MAILCHECK MAILPATH MAPFILE MAPFILE OLDPWD OPTARG OPTERR OPTIND OSTYPE PATH PIPESTATUS POSIXLY_CORRECT POSIXLY_CORRECT PPID PROMPT_COMMAND PS1 PS2 PS3 PS4 PWD RANDOM READLINE_LINE READLINE_LINE READLINE_POINT READLINE_POINT REPLY SECONDS SHELL SHELL SHELLOPTS SHLVL TIMEFORMAT TIMEOUT TMPDIR TMPDIR UID |
7228
873eae260c97
commit https://github.com/vim/vim/commit/b4ff518d95aa57c2f8c0568c915035bef849581b
Christian Brabandt <cb@256bit.org>
parents:
7176
diff
changeset
|
294 syn keyword bashStatement chmod clear complete du egrep expr fgrep find gnufind gnugrep grep less ls mkdir mv rm rmdir rpm sed sleep sort strip tail |
7 | 295 syn keyword bashAdminStatement daemon killall killproc nice reload restart start status stop |
3920 | 296 syn keyword bashStatement command compgen |
7 | 297 endif |
298 | |
299 if exists("b:is_kornshell") | |
300 syn cluster shCommandSubList add=kshSpecialVariables,kshStatement | |
301 syn cluster shCaseList add=kshStatement | |
302 syn keyword kshSpecialVariables contained CDPATH COLUMNS EDITOR ENV ERRNO FCEDIT FPATH HISTFILE HISTSIZE HOME IFS LINENO LINES MAIL MAILCHECK MAILPATH OLDPWD OPTARG OPTIND PATH PPID PS1 PS2 PS3 PS4 PWD RANDOM REPLY SECONDS SHELL TMOUT VISUAL | |
7228
873eae260c97
commit https://github.com/vim/vim/commit/b4ff518d95aa57c2f8c0568c915035bef849581b
Christian Brabandt <cb@256bit.org>
parents:
7176
diff
changeset
|
303 syn keyword kshStatement cat chmod clear cp du egrep expr fgrep find grep killall less ls mkdir mv nice printenv rm rmdir sed sort strip stty tail tput |
3920 | 304 syn keyword kshStatement command setgroups setsenv |
7 | 305 endif |
306 | |
307 syn match shSource "^\.\s" | |
308 syn match shSource "\s\.\s" | |
2034 | 309 "syn region shColon start="^\s*:" end="$" end="\s#"me=e-2 contains=@shColonList |
3281 | 310 "syn region shColon start="^\s*\zs:" end="$" end="\s#"me=e-2 |
311 syn match shColon '^\s*\zs:' | |
7 | 312 |
22 | 313 " String And Character Constants: {{{1 |
314 "================================ | |
1121 | 315 syn match shNumber "-\=\<\d\+\>#\=" |
316 syn match shCtrlSeq "\\\d\d\d\|\\[abcfnrtv0]" contained | |
167 | 317 if exists("b:is_bash") |
2034 | 318 syn match shSpecial "\\\o\o\o\|\\x\x\x\|\\c[^"]\|\\[abefnrtv]" contained |
167 | 319 endif |
320 if exists("b:is_bash") | |
2473
d55e70cabe2c
Syntax file updates. (Charles Campbell)
Bram Moolenaar <bram@vim.org>
parents:
2357
diff
changeset
|
321 syn region shExSingleQuote matchgroup=shQuote start=+\$'+ skip=+\\\\\|\\.+ end=+'+ contains=shStringSpecial,shSpecial |
2497 | 322 syn region shExDoubleQuote matchgroup=shQuote start=+\$"+ skip=+\\\\\|\\.\|\\"+ end=+"+ contains=@shDblQuoteList,shStringSpecial,shSpecial |
3281 | 323 elseif !exists("g:sh_no_error") |
1121 | 324 syn region shExSingleQuote matchGroup=Error start=+\$'+ skip=+\\\\\|\\.+ end=+'+ contains=shStringSpecial |
2497 | 325 syn region shExDoubleQuote matchGroup=Error start=+\$"+ skip=+\\\\\|\\.+ end=+"+ contains=shStringSpecial |
167 | 326 endif |
2473
d55e70cabe2c
Syntax file updates. (Charles Campbell)
Bram Moolenaar <bram@vim.org>
parents:
2357
diff
changeset
|
327 syn region shSingleQuote matchgroup=shQuote start=+'+ end=+'+ contains=@Spell |
3099
887d6d91882e
Updated a few runtime files.
Bram Moolenaar <bram@vim.org>
parents:
2751
diff
changeset
|
328 syn region shDoubleQuote matchgroup=shQuote start=+\%(\%(\\\\\)*\\\)\@<!"+ skip=+\\"+ end=+"+ contains=@shDblQuoteList,shStringSpecial,@Spell |
6840 | 329 syn match shStringSpecial "[^[:print:] \t]" contained |
1201 | 330 syn match shStringSpecial "\%(\\\\\)*\\[\\"'`$()#]" |
7176
30042ddff503
commit https://github.com/vim/vim/commit/60cce2fb736c8ff6fdb9603f502d3c15f1f7a25d
Christian Brabandt <cb@256bit.org>
parents:
6840
diff
changeset
|
331 syn match shSpecial "[^\\]\zs\%(\\\\\)*\\[\\"'`$()#]" |
30042ddff503
commit https://github.com/vim/vim/commit/60cce2fb736c8ff6fdb9603f502d3c15f1f7a25d
Christian Brabandt <cb@256bit.org>
parents:
6840
diff
changeset
|
332 syn match shSpecial "^\%(\\\\\)*\\[\\"'`$()#]" |
6840 | 333 syn match shMoreSpecial "\%(\\\\\)*\\[\\"'`$()#]" nextgroup=shMoreSpecial contained |
7 | 334 |
22 | 335 " Comments: {{{1 |
336 "========== | |
2034 | 337 syn cluster shCommentGroup contains=shTodo,@Spell |
338 syn keyword shTodo contained COMBAK FIXME TODO XXX | |
339 syn match shComment "^\s*\zs#.*$" contains=@shCommentGroup | |
340 syn match shComment "\s\zs#.*$" contains=@shCommentGroup | |
3920 | 341 syn match shComment contained "#.*$" contains=@shCommentGroup |
2034 | 342 syn match shQuickComment contained "#.*$" |
7 | 343 |
22 | 344 " Here Documents: {{{1 |
345 " ========================================= | |
7 | 346 if version < 600 |
6840 | 347 syn region shHereDoc matchgroup=shHereDoc01 start="<<\s*\**END[a-zA-Z_0-9]*\**" matchgroup=shHereDoc01 end="^END[a-zA-Z_0-9]*$" contains=@shDblQuoteList |
348 syn region shHereDoc matchgroup=shHereDoc02 start="<<-\s*\**END[a-zA-Z_0-9]*\**" matchgroup=shHereDoc02 end="^\s*END[a-zA-Z_0-9]*$" contains=@shDblQuoteList | |
349 syn region shHereDoc matchgroup=shHereDoc03 start="<<\s*\**EOF\**" matchgroup=shHereDoc03 end="^EOF$" contains=@shDblQuoteList | |
350 syn region shHereDoc matchgroup=shHereDoc04 start="<<-\s*\**EOF\**" matchgroup=shHereDoc04 end="^\s*EOF$" contains=@shDblQuoteList | |
351 syn region shHereDoc matchgroup=shHereDoc05 start="<<\s*\**\.\**" matchgroup=shHereDoc05 end="^\.$" contains=@shDblQuoteList | |
352 syn region shHereDoc matchgroup=shHereDoc06 start="<<-\s*\**\.\**" matchgroup=shHereDoc06 end="^\s*\.$" contains=@shDblQuoteList | |
7 | 353 |
354 else | |
7228
873eae260c97
commit https://github.com/vim/vim/commit/b4ff518d95aa57c2f8c0568c915035bef849581b
Christian Brabandt <cb@256bit.org>
parents:
7176
diff
changeset
|
355 ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc07 start="<<\s*\\\=\z([^ \t|]\+\)" matchgroup=shHereDoc07 end="^\z1\s*$" contains=@shDblQuoteList |
873eae260c97
commit https://github.com/vim/vim/commit/b4ff518d95aa57c2f8c0568c915035bef849581b
Christian Brabandt <cb@256bit.org>
parents:
7176
diff
changeset
|
356 ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc08 start="<<\s*\"\z([^ \t|]\+\)\"" matchgroup=shHereDoc08 end="^\z1\s*$" |
873eae260c97
commit https://github.com/vim/vim/commit/b4ff518d95aa57c2f8c0568c915035bef849581b
Christian Brabandt <cb@256bit.org>
parents:
7176
diff
changeset
|
357 ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc09 start="<<-\s*\z([^ \t|]\+\)" matchgroup=shHereDoc09 end="^\s*\z1\s*$" contains=@shDblQuoteList |
873eae260c97
commit https://github.com/vim/vim/commit/b4ff518d95aa57c2f8c0568c915035bef849581b
Christian Brabandt <cb@256bit.org>
parents:
7176
diff
changeset
|
358 ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc10 start="<<-\s*'\z([^ \t|]\+\)'" matchgroup=shHereDoc10 end="^\s*\z1\s*$" |
873eae260c97
commit https://github.com/vim/vim/commit/b4ff518d95aa57c2f8c0568c915035bef849581b
Christian Brabandt <cb@256bit.org>
parents:
7176
diff
changeset
|
359 ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc11 start="<<\s*'\z([^ \t|]\+\)'" matchgroup=shHereDoc11 end="^\z1\s*$" |
873eae260c97
commit https://github.com/vim/vim/commit/b4ff518d95aa57c2f8c0568c915035bef849581b
Christian Brabandt <cb@256bit.org>
parents:
7176
diff
changeset
|
360 ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc12 start="<<-\s*\"\z([^ \t|]\+\)\"" matchgroup=shHereDoc12 end="^\s*\z1\s*$" |
873eae260c97
commit https://github.com/vim/vim/commit/b4ff518d95aa57c2f8c0568c915035bef849581b
Christian Brabandt <cb@256bit.org>
parents:
7176
diff
changeset
|
361 ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc13 start="<<\s*\\\_$\_s*\z([^ \t|]\+\)" matchgroup=shHereDoc13 end="^\z1\s*$" contains=@shDblQuoteList |
873eae260c97
commit https://github.com/vim/vim/commit/b4ff518d95aa57c2f8c0568c915035bef849581b
Christian Brabandt <cb@256bit.org>
parents:
7176
diff
changeset
|
362 ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc14 start="<<\s*\\\_$\_s*'\z([^ \t|]\+\)'" matchgroup=shHereDoc14 end="^\z1\s*$" |
873eae260c97
commit https://github.com/vim/vim/commit/b4ff518d95aa57c2f8c0568c915035bef849581b
Christian Brabandt <cb@256bit.org>
parents:
7176
diff
changeset
|
363 ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc15 start="<<\s*\\\_$\_s*\"\z([^ \t|]\+\)\"" matchgroup=shHereDoc15 end="^\z1\s*$" |
873eae260c97
commit https://github.com/vim/vim/commit/b4ff518d95aa57c2f8c0568c915035bef849581b
Christian Brabandt <cb@256bit.org>
parents:
7176
diff
changeset
|
364 ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc16 start="<<-\s*\\\_$\_s*\z([^ \t|]\+\)" matchgroup=shHereDoc16 end="^\s*\z1\s*$" |
873eae260c97
commit https://github.com/vim/vim/commit/b4ff518d95aa57c2f8c0568c915035bef849581b
Christian Brabandt <cb@256bit.org>
parents:
7176
diff
changeset
|
365 ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc17 start="<<-\s*\\\_$\_s*\\\z([^ \t|]\+\)" matchgroup=shHereDoc17 end="^\s*\z1\s*$" |
873eae260c97
commit https://github.com/vim/vim/commit/b4ff518d95aa57c2f8c0568c915035bef849581b
Christian Brabandt <cb@256bit.org>
parents:
7176
diff
changeset
|
366 ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc18 start="<<-\s*\\\_$\_s*'\z([^ \t|]\+\)'" matchgroup=shHereDoc18 end="^\s*\z1\s*$" |
873eae260c97
commit https://github.com/vim/vim/commit/b4ff518d95aa57c2f8c0568c915035bef849581b
Christian Brabandt <cb@256bit.org>
parents:
7176
diff
changeset
|
367 ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc19 start="<<-\s*\\\_$\_s*\"\z([^ \t|]\+\)\"" matchgroup=shHereDoc19 end="^\s*\z1\s*$" |
873eae260c97
commit https://github.com/vim/vim/commit/b4ff518d95aa57c2f8c0568c915035bef849581b
Christian Brabandt <cb@256bit.org>
parents:
7176
diff
changeset
|
368 ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc20 start="<<\\\z([^ \t|]\+\)" matchgroup=shHereDoc20 end="^\z1\s*$" |
873eae260c97
commit https://github.com/vim/vim/commit/b4ff518d95aa57c2f8c0568c915035bef849581b
Christian Brabandt <cb@256bit.org>
parents:
7176
diff
changeset
|
369 ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc21 start="<<-\s*\\\z([^ \t|]\+\)" matchgroup=shHereDoc21 end="^\s*\z1\s*$" |
7 | 370 endif |
371 | |
22 | 372 " Here Strings: {{{1 |
373 " ============= | |
3099
887d6d91882e
Updated a few runtime files.
Bram Moolenaar <bram@vim.org>
parents:
2751
diff
changeset
|
374 " available for: bash; ksh (really should be ksh93 only) but not if its a posix |
887d6d91882e
Updated a few runtime files.
Bram Moolenaar <bram@vim.org>
parents:
2751
diff
changeset
|
375 if exists("b:is_bash") || (exists("b:is_kornshell") && !exists("g:is_posix")) |
3920 | 376 syn match shRedir "<<<" skipwhite nextgroup=shCmdParenRegion |
22 | 377 endif |
378 | |
379 " Identifiers: {{{1 | |
380 "============= | |
1668 | 381 syn match shSetOption "\s\zs[-+][a-zA-Z0-9]\+\>" contained |
6840 | 382 syn match shVariable "\<\([bwglsav]:\)\=[a-zA-Z0-9.!@_%+,]*\ze=" nextgroup=shVarAssign |
383 syn match shVarAssign "=" contained nextgroup=shCmdParenRegion,shPattern,shDeref,shDerefSimple,shDoubleQuote,shExDoubleQuote,shSingleQuote,shExSingleQuote | |
5138
0d4e0cde36e1
A few updated runtime files.
Bram Moolenaar <bram@vim.org>
parents:
4229
diff
changeset
|
384 syn region shAtExpr contained start="@(" end=")" contains=@shIdList |
7 | 385 if exists("b:is_bash") |
5138
0d4e0cde36e1
A few updated runtime files.
Bram Moolenaar <bram@vim.org>
parents:
4229
diff
changeset
|
386 syn region shSetList oneline matchgroup=shSet start="\<\(declare\|typeset\|local\|export\|unset\)\>\ze[^/]" end="$" matchgroup=shSetListDelim end="\ze[}|);&]" matchgroup=NONE end="\ze\s\+#\|=" contains=@shIdList |
0d4e0cde36e1
A few updated runtime files.
Bram Moolenaar <bram@vim.org>
parents:
4229
diff
changeset
|
387 syn region shSetList oneline matchgroup=shSet start="\<set\>\ze[^/]" end="\ze[;|)]\|$" matchgroup=shSetListDelim end="\ze[}|);&]" matchgroup=NONE end="\ze\s\+=" contains=@shIdList |
7 | 388 elseif exists("b:is_kornshell") |
5138
0d4e0cde36e1
A few updated runtime files.
Bram Moolenaar <bram@vim.org>
parents:
4229
diff
changeset
|
389 syn region shSetList oneline matchgroup=shSet start="\<\(typeset\|export\|unset\)\>\ze[^/]" end="$" matchgroup=shSetListDelim end="\ze[}|);&]" matchgroup=NONE end="\ze\s\+[#=]" contains=@shIdList |
0d4e0cde36e1
A few updated runtime files.
Bram Moolenaar <bram@vim.org>
parents:
4229
diff
changeset
|
390 syn region shSetList oneline matchgroup=shSet start="\<set\>\ze[^/]" end="$" matchgroup=shSetListDelim end="\ze[}|);&]" matchgroup=NONE end="\ze\s\+[#=]" contains=@shIdList |
7 | 391 else |
5138
0d4e0cde36e1
A few updated runtime files.
Bram Moolenaar <bram@vim.org>
parents:
4229
diff
changeset
|
392 syn region shSetList oneline matchgroup=shSet start="\<\(set\|export\|unset\)\>\ze[^/]" end="$" matchgroup=shSetListDelim end="\ze[}|);&]" matchgroup=NONE end="\ze\s\+[#=]" contains=@shIdList |
7 | 393 endif |
394 | |
22 | 395 " Functions: {{{1 |
1668 | 396 if !exists("g:is_posix") |
397 syn keyword shFunctionKey function skipwhite skipnl nextgroup=shFunctionTwo | |
398 endif | |
399 | |
400 if exists("b:is_bash") | |
7228
873eae260c97
commit https://github.com/vim/vim/commit/b4ff518d95aa57c2f8c0568c915035bef849581b
Christian Brabandt <cb@256bit.org>
parents:
7176
diff
changeset
|
401 ShFoldFunctions syn region shFunctionOne matchgroup=shFunction start="^\s*\h[-a-zA-Z_0-9]*\s*()\_s*{" end="}" contains=@shFunctionList skipwhite skipnl nextgroup=shFunctionStart,shQuickComment |
873eae260c97
commit https://github.com/vim/vim/commit/b4ff518d95aa57c2f8c0568c915035bef849581b
Christian Brabandt <cb@256bit.org>
parents:
7176
diff
changeset
|
402 ShFoldFunctions syn region shFunctionTwo matchgroup=shFunction start="\<[^d][^o]\&\h[-a-zA-Z_0-9]*\s*\%(()\)\=\_s*{" end="}" contains=shFunctionKey,@shFunctionList contained skipwhite skipnl nextgroup=shFunctionStart,shQuickComment |
873eae260c97
commit https://github.com/vim/vim/commit/b4ff518d95aa57c2f8c0568c915035bef849581b
Christian Brabandt <cb@256bit.org>
parents:
7176
diff
changeset
|
403 ShFoldFunctions syn region shFunctionThree matchgroup=shFunction start="^\s*\h[-a-zA-Z_0-9]*\s*()\_s*(" end=")" contains=@shFunctionList skipwhite skipnl nextgroup=shFunctionStart,shQuickComment |
873eae260c97
commit https://github.com/vim/vim/commit/b4ff518d95aa57c2f8c0568c915035bef849581b
Christian Brabandt <cb@256bit.org>
parents:
7176
diff
changeset
|
404 ShFoldFunctions syn region shFunctionFour matchgroup=shFunction start="\<[^d][^o]\&\h[-a-zA-Z_0-9]*\s*\%(()\)\=\_s*)" end=")" contains=shFunctionKey,@shFunctionList contained skipwhite skipnl nextgroup=shFunctionStart,shQuickComment |
7 | 405 else |
7228
873eae260c97
commit https://github.com/vim/vim/commit/b4ff518d95aa57c2f8c0568c915035bef849581b
Christian Brabandt <cb@256bit.org>
parents:
7176
diff
changeset
|
406 ShFoldFunctions syn region shFunctionOne matchgroup=shFunction start="^\s*\h\w*\s*()\_s*{" end="}" contains=@shFunctionList skipwhite skipnl nextgroup=shFunctionStart,shQuickComment |
873eae260c97
commit https://github.com/vim/vim/commit/b4ff518d95aa57c2f8c0568c915035bef849581b
Christian Brabandt <cb@256bit.org>
parents:
7176
diff
changeset
|
407 ShFoldFunctions syn region shFunctionTwo matchgroup=shFunction start="\<[^d][^o]\&\h\w*\s*\%(()\)\=\_s*{" end="}" contains=shFunctionKey,@shFunctionList contained skipwhite skipnl nextgroup=shFunctionStart,shQuickComment |
873eae260c97
commit https://github.com/vim/vim/commit/b4ff518d95aa57c2f8c0568c915035bef849581b
Christian Brabandt <cb@256bit.org>
parents:
7176
diff
changeset
|
408 ShFoldFunctions syn region shFunctionThree matchgroup=shFunction start="^\s*\h\w*\s*()\_s*(" end=")" contains=@shFunctionList skipwhite skipnl nextgroup=shFunctionStart,shQuickComment |
873eae260c97
commit https://github.com/vim/vim/commit/b4ff518d95aa57c2f8c0568c915035bef849581b
Christian Brabandt <cb@256bit.org>
parents:
7176
diff
changeset
|
409 ShFoldFunctions syn region shFunctionFour matchgroup=shFunction start="\<[^d][^o]\&\h\w*\s*\%(()\)\=\_s*(" end=")" contains=shFunctionKey,@shFunctionList contained skipwhite skipnl nextgroup=shFunctionStart,shQuickComment |
7 | 410 endif |
411 | |
22 | 412 " Parameter Dereferencing: {{{1 |
413 " ======================== | |
3281 | 414 if !exists("g:sh_no_error") |
415 syn match shDerefWordError "[^}$[]" contained | |
416 endif | |
7245
8896150aba23
commit https://github.com/vim/vim/commit/e392eb41f8dfc01bd13634e534ac6b4d505326f4
Christian Brabandt <cb@256bit.org>
parents:
7228
diff
changeset
|
417 syn match shDerefSimple "\$\%(\k\+\|\d\)" |
7228
873eae260c97
commit https://github.com/vim/vim/commit/b4ff518d95aa57c2f8c0568c915035bef849581b
Christian Brabandt <cb@256bit.org>
parents:
7176
diff
changeset
|
418 syn region shDeref matchgroup=PreProc start="\${" end="}" contains=@shDerefList,shDerefVarArray |
7 | 419 syn match shDerefSimple "\$[-#*@!?]" |
420 syn match shDerefSimple "\$\$" | |
421 if exists("b:is_bash") || exists("b:is_kornshell") | |
422 syn region shDeref matchgroup=PreProc start="\${##\=" end="}" contains=@shDerefList | |
1668 | 423 syn region shDeref matchgroup=PreProc start="\${\$\$" end="}" contains=@shDerefList |
7 | 424 endif |
425 | |
7228
873eae260c97
commit https://github.com/vim/vim/commit/b4ff518d95aa57c2f8c0568c915035bef849581b
Christian Brabandt <cb@256bit.org>
parents:
7176
diff
changeset
|
426 " ksh: ${!var[*]} array index list syntax: {{{1 |
873eae260c97
commit https://github.com/vim/vim/commit/b4ff518d95aa57c2f8c0568c915035bef849581b
Christian Brabandt <cb@256bit.org>
parents:
7176
diff
changeset
|
427 " ======================================== |
873eae260c97
commit https://github.com/vim/vim/commit/b4ff518d95aa57c2f8c0568c915035bef849581b
Christian Brabandt <cb@256bit.org>
parents:
7176
diff
changeset
|
428 if exists("b:is_kornshell") |
873eae260c97
commit https://github.com/vim/vim/commit/b4ff518d95aa57c2f8c0568c915035bef849581b
Christian Brabandt <cb@256bit.org>
parents:
7176
diff
changeset
|
429 syn region shDeref matchgroup=PreProc start="\${!" end="}" contains=@shDerefVarArray |
873eae260c97
commit https://github.com/vim/vim/commit/b4ff518d95aa57c2f8c0568c915035bef849581b
Christian Brabandt <cb@256bit.org>
parents:
7176
diff
changeset
|
430 endif |
873eae260c97
commit https://github.com/vim/vim/commit/b4ff518d95aa57c2f8c0568c915035bef849581b
Christian Brabandt <cb@256bit.org>
parents:
7176
diff
changeset
|
431 |
22 | 432 " bash: ${!prefix*} and ${#parameter}: {{{1 |
433 " ==================================== | |
7 | 434 if exists("b:is_bash") |
435 syn region shDeref matchgroup=PreProc start="\${!" end="\*\=}" contains=@shDerefList,shDerefOp | |
3920 | 436 syn match shDerefVar contained "{\@<=!\k\+" nextgroup=@shDerefVarList |
7 | 437 endif |
7228
873eae260c97
commit https://github.com/vim/vim/commit/b4ff518d95aa57c2f8c0568c915035bef849581b
Christian Brabandt <cb@256bit.org>
parents:
7176
diff
changeset
|
438 if exists("b:is_kornshell") |
873eae260c97
commit https://github.com/vim/vim/commit/b4ff518d95aa57c2f8c0568c915035bef849581b
Christian Brabandt <cb@256bit.org>
parents:
7176
diff
changeset
|
439 syn match shDerefVar contained "{\@<=!\k[[:alnum:]_.]*" nextgroup=@shDerefVarList |
873eae260c97
commit https://github.com/vim/vim/commit/b4ff518d95aa57c2f8c0568c915035bef849581b
Christian Brabandt <cb@256bit.org>
parents:
7176
diff
changeset
|
440 endif |
7 | 441 |
442 syn match shDerefSpecial contained "{\@<=[-*@?0]" nextgroup=shDerefOp,shDerefOpError | |
443 syn match shDerefSpecial contained "\({[#!]\)\@<=[[:alnum:]*@_]\+" nextgroup=@shDerefVarList,shDerefOp | |
3920 | 444 syn match shDerefVar contained "{\@<=\k\+" nextgroup=@shDerefVarList |
7228
873eae260c97
commit https://github.com/vim/vim/commit/b4ff518d95aa57c2f8c0568c915035bef849581b
Christian Brabandt <cb@256bit.org>
parents:
7176
diff
changeset
|
445 if exists("b:is_kornshell") |
873eae260c97
commit https://github.com/vim/vim/commit/b4ff518d95aa57c2f8c0568c915035bef849581b
Christian Brabandt <cb@256bit.org>
parents:
7176
diff
changeset
|
446 syn match shDerefVar contained "{\@<=\k[[:alnum:]_.]*" nextgroup=@shDerefVarList |
873eae260c97
commit https://github.com/vim/vim/commit/b4ff518d95aa57c2f8c0568c915035bef849581b
Christian Brabandt <cb@256bit.org>
parents:
7176
diff
changeset
|
447 endif |
7 | 448 |
22 | 449 " sh ksh bash : ${var[... ]...} array reference: {{{1 |
6479 | 450 syn region shDerefVarArray contained matchgroup=shDeref start="\[" end="]" contains=@shCommandSubList nextgroup=shDerefOp,shDerefOpError |
7 | 451 |
22 | 452 " Special ${parameter OPERATOR word} handling: {{{1 |
6479 | 453 " sh ksh bash : ${parameter:-word} word is default value |
454 " sh ksh bash : ${parameter:=word} assign word as default value | |
455 " sh ksh bash : ${parameter:?word} display word if parameter is null | |
456 " sh ksh bash : ${parameter:+word} use word if parameter is not null, otherwise nothing | |
457 " ksh bash : ${parameter#pattern} remove small left pattern | |
458 " ksh bash : ${parameter##pattern} remove large left pattern | |
459 " ksh bash : ${parameter%pattern} remove small right pattern | |
460 " ksh bash : ${parameter%%pattern} remove large right pattern | |
461 " bash : ${parameter^pattern} Case modification | |
462 " bash : ${parameter^^pattern} Case modification | |
463 " bash : ${parameter,pattern} Case modification | |
464 " bash : ${parameter,,pattern} Case modification | |
7 | 465 syn cluster shDerefPatternList contains=shDerefPattern,shDerefString |
3281 | 466 if !exists("g:sh_no_error") |
467 syn match shDerefOpError contained ":[[:punct:]]" | |
468 endif | |
7 | 469 syn match shDerefOp contained ":\=[-=?]" nextgroup=@shDerefPatternList |
470 syn match shDerefOp contained ":\=+" nextgroup=@shDerefPatternList | |
471 if exists("b:is_bash") || exists("b:is_kornshell") | |
472 syn match shDerefOp contained "#\{1,2}" nextgroup=@shDerefPatternList | |
473 syn match shDerefOp contained "%\{1,2}" nextgroup=@shDerefPatternList | |
482 | 474 syn match shDerefPattern contained "[^{}]\+" contains=shDeref,shDerefSimple,shDerefPattern,shDerefString,shCommandSub,shDerefEscape nextgroup=shDerefPattern |
7 | 475 syn region shDerefPattern contained start="{" end="}" contains=shDeref,shDerefSimple,shDerefString,shCommandSub nextgroup=shDerefPattern |
482 | 476 syn match shDerefEscape contained '\%(\\\\\)*\\.' |
7 | 477 endif |
3099
887d6d91882e
Updated a few runtime files.
Bram Moolenaar <bram@vim.org>
parents:
2751
diff
changeset
|
478 if exists("b:is_bash") |
887d6d91882e
Updated a few runtime files.
Bram Moolenaar <bram@vim.org>
parents:
2751
diff
changeset
|
479 syn match shDerefOp contained "[,^]\{1,2}" nextgroup=@shDerefPatternList |
887d6d91882e
Updated a few runtime files.
Bram Moolenaar <bram@vim.org>
parents:
2751
diff
changeset
|
480 endif |
2473
d55e70cabe2c
Syntax file updates. (Charles Campbell)
Bram Moolenaar <bram@vim.org>
parents:
2357
diff
changeset
|
481 syn region shDerefString contained matchgroup=shDerefDelim start=+\%(\\\)\@<!'+ end=+'+ contains=shStringSpecial |
d55e70cabe2c
Syntax file updates. (Charles Campbell)
Bram Moolenaar <bram@vim.org>
parents:
2357
diff
changeset
|
482 syn region shDerefString contained matchgroup=shDerefDelim start=+\%(\\\)\@<!"+ skip=+\\"+ end=+"+ contains=@shDblQuoteList,shStringSpecial |
1668 | 483 syn match shDerefString contained "\\["']" nextgroup=shDerefPattern |
7 | 484 |
485 if exists("b:is_bash") | |
482 | 486 " bash : ${parameter:offset} |
487 " bash : ${parameter:offset:length} | |
7 | 488 syn region shDerefOp contained start=":[$[:alnum:]_]"me=e-1 end=":"me=e-1 end="}"me=e-1 contains=@shCommandSubList nextgroup=shDerefPOL |
482 | 489 syn match shDerefPOL contained ":[^}]\+" contains=@shCommandSubList |
490 | |
491 " bash : ${parameter//pattern/string} | |
492 " bash : ${parameter//pattern} | |
493 syn match shDerefPPS contained '/\{1,2}' nextgroup=shDerefPPSleft | |
3920 | 494 syn region shDerefPPSleft contained start='.' skip=@\%(\\\\\)*\\/@ matchgroup=shDerefOp end='/' end='\ze}' nextgroup=shDerefPPSright contains=@shCommandSubList |
495 syn region shDerefPPSright contained start='.' skip=@\%(\\\\\)\+@ end='\ze}' contains=@shCommandSubList | |
7557
502ca0a62fd8
commit https://github.com/vim/vim/commit/acb4f221c715a333f4c49a2235a8006c6ac6e4d5
Christian Brabandt <cb@256bit.org>
parents:
7245
diff
changeset
|
496 |
502ca0a62fd8
commit https://github.com/vim/vim/commit/acb4f221c715a333f4c49a2235a8006c6ac6e4d5
Christian Brabandt <cb@256bit.org>
parents:
7245
diff
changeset
|
497 " bash : ${parameter/#substring/replacement} |
502ca0a62fd8
commit https://github.com/vim/vim/commit/acb4f221c715a333f4c49a2235a8006c6ac6e4d5
Christian Brabandt <cb@256bit.org>
parents:
7245
diff
changeset
|
498 syn match shDerefPSR contained '/#' nextgroup=shDerefPSRleft |
502ca0a62fd8
commit https://github.com/vim/vim/commit/acb4f221c715a333f4c49a2235a8006c6ac6e4d5
Christian Brabandt <cb@256bit.org>
parents:
7245
diff
changeset
|
499 syn region shDerefPSRleft contained start='.' skip=@\%(\\\\\)*\\/@ matchgroup=shDerefOp end='/' end='\ze}' nextgroup=shDerefPSRright |
502ca0a62fd8
commit https://github.com/vim/vim/commit/acb4f221c715a333f4c49a2235a8006c6ac6e4d5
Christian Brabandt <cb@256bit.org>
parents:
7245
diff
changeset
|
500 syn region shDerefPSRright contained start='.' skip=@\%(\\\\\)\+@ end='\ze}' |
7 | 501 endif |
502 | |
1668 | 503 " Arithmetic Parenthesized Expressions: {{{1 |
5138
0d4e0cde36e1
A few updated runtime files.
Bram Moolenaar <bram@vim.org>
parents:
4229
diff
changeset
|
504 "syn region shParen matchgroup=shArithRegion start='[^$]\zs(\%(\ze[^(]\|$\)' end=')' contains=@shArithParenList |
0d4e0cde36e1
A few updated runtime files.
Bram Moolenaar <bram@vim.org>
parents:
4229
diff
changeset
|
505 syn region shParen matchgroup=shArithRegion start='\$\@!(\%(\ze[^(]\|$\)' end=')' contains=@shArithParenList |
1668 | 506 |
22 | 507 " Useful sh Keywords: {{{1 |
508 " =================== | |
7 | 509 syn keyword shStatement break cd chdir continue eval exec exit kill newgrp pwd read readonly return shift test trap ulimit umask wait |
510 syn keyword shConditional contained elif else then | |
3281 | 511 if !exists("g:sh_no_error") |
512 syn keyword shCondError elif else then | |
513 endif | |
7 | 514 |
22 | 515 " Useful ksh Keywords: {{{1 |
516 " ==================== | |
7 | 517 if exists("b:is_kornshell") || exists("b:is_bash") |
2473
d55e70cabe2c
Syntax file updates. (Charles Campbell)
Bram Moolenaar <bram@vim.org>
parents:
2357
diff
changeset
|
518 syn keyword shStatement autoload bg false fc fg functions getopts hash history integer jobs let nohup printf r stop suspend times true type unalias whence |
1668 | 519 if exists("g:is_posix") |
520 syn keyword shStatement command | |
521 else | |
522 syn keyword shStatement time | |
523 endif | |
7 | 524 |
22 | 525 " Useful bash Keywords: {{{1 |
526 " ===================== | |
7 | 527 if exists("b:is_bash") |
528 syn keyword shStatement bind builtin dirs disown enable help local logout popd pushd shopt source | |
529 else | |
530 syn keyword shStatement login newgrp | |
531 endif | |
532 endif | |
533 | |
22 | 534 " Synchronization: {{{1 |
535 " ================ | |
7 | 536 if !exists("sh_minlines") |
537 let sh_minlines = 200 | |
538 endif | |
539 if !exists("sh_maxlines") | |
540 let sh_maxlines = 2 * sh_minlines | |
541 endif | |
542 exec "syn sync minlines=" . sh_minlines . " maxlines=" . sh_maxlines | |
543 syn sync match shCaseEsacSync grouphere shCaseEsac "\<case\>" | |
544 syn sync match shCaseEsacSync groupthere shCaseEsac "\<esac\>" | |
545 syn sync match shDoSync grouphere shDo "\<do\>" | |
546 syn sync match shDoSync groupthere shDo "\<done\>" | |
547 syn sync match shForSync grouphere shFor "\<for\>" | |
548 syn sync match shForSync groupthere shFor "\<in\>" | |
549 syn sync match shIfSync grouphere shIf "\<if\>" | |
550 syn sync match shIfSync groupthere shIf "\<fi\>" | |
551 syn sync match shUntilSync grouphere shRepeat "\<until\>" | |
552 syn sync match shWhileSync grouphere shRepeat "\<while\>" | |
553 | |
22 | 554 " Default Highlighting: {{{1 |
555 " ===================== | |
7 | 556 hi def link shArithRegion shShellVariables |
5138
0d4e0cde36e1
A few updated runtime files.
Bram Moolenaar <bram@vim.org>
parents:
4229
diff
changeset
|
557 hi def link shAtExpr shSetList |
167 | 558 hi def link shBeginHere shRedir |
7 | 559 hi def link shCaseBar shConditional |
560 hi def link shCaseCommandSub shCommandSub | |
561 hi def link shCaseDoubleQuote shDoubleQuote | |
167 | 562 hi def link shCaseIn shConditional |
2473
d55e70cabe2c
Syntax file updates. (Charles Campbell)
Bram Moolenaar <bram@vim.org>
parents:
2357
diff
changeset
|
563 hi def link shQuote shOperator |
7 | 564 hi def link shCaseSingleQuote shSingleQuote |
565 hi def link shCaseStart shConditional | |
566 hi def link shCmdSubRegion shShellVariables | |
2034 | 567 hi def link shColon shComment |
167 | 568 hi def link shDerefOp shOperator |
569 hi def link shDerefPOL shDerefOp | |
482 | 570 hi def link shDerefPPS shDerefOp |
7557
502ca0a62fd8
commit https://github.com/vim/vim/commit/acb4f221c715a333f4c49a2235a8006c6ac6e4d5
Christian Brabandt <cb@256bit.org>
parents:
7245
diff
changeset
|
571 hi def link shDerefPSR shDerefOp |
7 | 572 hi def link shDeref shShellVariables |
2473
d55e70cabe2c
Syntax file updates. (Charles Campbell)
Bram Moolenaar <bram@vim.org>
parents:
2357
diff
changeset
|
573 hi def link shDerefDelim shOperator |
7 | 574 hi def link shDerefSimple shDeref |
575 hi def link shDerefSpecial shDeref | |
576 hi def link shDerefString shDoubleQuote | |
167 | 577 hi def link shDerefVar shDeref |
7 | 578 hi def link shDoubleQuote shString |
579 hi def link shEcho shString | |
2473
d55e70cabe2c
Syntax file updates. (Charles Campbell)
Bram Moolenaar <bram@vim.org>
parents:
2357
diff
changeset
|
580 hi def link shEchoDelim shOperator |
1668 | 581 hi def link shEchoQuote shString |
6744 | 582 hi def link shForPP shLoop |
7 | 583 hi def link shEmbeddedEcho shString |
1668 | 584 hi def link shEscape shCommandSub |
2497 | 585 hi def link shExDoubleQuote shDoubleQuote |
167 | 586 hi def link shExSingleQuote shSingleQuote |
1668 | 587 hi def link shFunction Function |
7 | 588 hi def link shHereDoc shString |
167 | 589 hi def link shHerePayload shHereDoc |
7 | 590 hi def link shLoop shStatement |
2034 | 591 hi def link shMoreSpecial shSpecial |
7228
873eae260c97
commit https://github.com/vim/vim/commit/b4ff518d95aa57c2f8c0568c915035bef849581b
Christian Brabandt <cb@256bit.org>
parents:
7176
diff
changeset
|
592 hi def link shNoQuote shDoubleQuote |
7 | 593 hi def link shOption shCommandSub |
594 hi def link shPattern shString | |
1668 | 595 hi def link shParen shArithmetic |
7 | 596 hi def link shPosnParm shShellVariables |
1668 | 597 hi def link shQuickComment shComment |
7 | 598 hi def link shRange shOperator |
599 hi def link shRedir shOperator | |
2473
d55e70cabe2c
Syntax file updates. (Charles Campbell)
Bram Moolenaar <bram@vim.org>
parents:
2357
diff
changeset
|
600 hi def link shSetListDelim shOperator |
1668 | 601 hi def link shSetOption shOption |
7 | 602 hi def link shSingleQuote shString |
603 hi def link shSource shOperator | |
604 hi def link shStringSpecial shSpecial | |
605 hi def link shSubShRegion shOperator | |
606 hi def link shTestOpr shConditional | |
1121 | 607 hi def link shTestPattern shString |
608 hi def link shTestDoubleQuote shString | |
609 hi def link shTestSingleQuote shString | |
7228
873eae260c97
commit https://github.com/vim/vim/commit/b4ff518d95aa57c2f8c0568c915035bef849581b
Christian Brabandt <cb@256bit.org>
parents:
7176
diff
changeset
|
610 hi def link shTouchCmd shStatement |
7 | 611 hi def link shVariable shSetList |
612 hi def link shWrapLineOperator shOperator | |
613 | |
614 if exists("b:is_bash") | |
615 hi def link bashAdminStatement shStatement | |
616 hi def link bashSpecialVariables shShellVariables | |
617 hi def link bashStatement shStatement | |
199 | 618 hi def link shFunctionParen Delimiter |
619 hi def link shFunctionDelim Delimiter | |
3920 | 620 hi def link shCharClass shSpecial |
7 | 621 endif |
622 if exists("b:is_kornshell") | |
623 hi def link kshSpecialVariables shShellVariables | |
624 hi def link kshStatement shStatement | |
199 | 625 hi def link shFunctionParen Delimiter |
7 | 626 endif |
627 | |
3281 | 628 if !exists("g:sh_no_error") |
629 hi def link shCaseError Error | |
630 hi def link shCondError Error | |
631 hi def link shCurlyError Error | |
632 hi def link shDerefError Error | |
633 hi def link shDerefOpError Error | |
634 hi def link shDerefWordError Error | |
635 hi def link shDoError Error | |
636 hi def link shEsacError Error | |
637 hi def link shIfError Error | |
638 hi def link shInError Error | |
639 hi def link shParenError Error | |
640 hi def link shTestError Error | |
641 if exists("b:is_kornshell") | |
642 hi def link shDTestError Error | |
643 endif | |
7 | 644 endif |
645 | |
646 hi def link shArithmetic Special | |
647 hi def link shCharClass Identifier | |
648 hi def link shSnglCase Statement | |
649 hi def link shCommandSub Special | |
650 hi def link shComment Comment | |
651 hi def link shConditional Conditional | |
1121 | 652 hi def link shCtrlSeq Special |
7 | 653 hi def link shExprRegion Delimiter |
199 | 654 hi def link shFunctionKey Function |
7 | 655 hi def link shFunctionName Function |
656 hi def link shNumber Number | |
657 hi def link shOperator Operator | |
658 hi def link shRepeat Repeat | |
659 hi def link shSet Statement | |
660 hi def link shSetList Identifier | |
661 hi def link shShellVariables PreProc | |
662 hi def link shSpecial Special | |
663 hi def link shStatement Statement | |
664 hi def link shString String | |
665 hi def link shTodo Todo | |
666 hi def link shAlias Identifier | |
6840 | 667 hi def link shHereDoc01 shRedir |
668 hi def link shHereDoc02 shRedir | |
669 hi def link shHereDoc03 shRedir | |
670 hi def link shHereDoc04 shRedir | |
671 hi def link shHereDoc05 shRedir | |
672 hi def link shHereDoc06 shRedir | |
673 hi def link shHereDoc07 shRedir | |
674 hi def link shHereDoc08 shRedir | |
675 hi def link shHereDoc09 shRedir | |
676 hi def link shHereDoc10 shRedir | |
677 hi def link shHereDoc11 shRedir | |
678 hi def link shHereDoc12 shRedir | |
679 hi def link shHereDoc13 shRedir | |
680 hi def link shHereDoc14 shRedir | |
681 hi def link shHereDoc15 shRedir | |
682 hi def link shHereDoc16 shRedir | |
683 hi def link shHereDoc17 shRedir | |
684 hi def link shHereDoc18 shRedir | |
685 hi def link shHereDoc19 shRedir | |
686 hi def link shHereDoc20 shRedir | |
687 hi def link shHereDoc21 shRedir | |
7228
873eae260c97
commit https://github.com/vim/vim/commit/b4ff518d95aa57c2f8c0568c915035bef849581b
Christian Brabandt <cb@256bit.org>
parents:
7176
diff
changeset
|
688 |
873eae260c97
commit https://github.com/vim/vim/commit/b4ff518d95aa57c2f8c0568c915035bef849581b
Christian Brabandt <cb@256bit.org>
parents:
7176
diff
changeset
|
689 " Delete shell folding commands {{{1 |
873eae260c97
commit https://github.com/vim/vim/commit/b4ff518d95aa57c2f8c0568c915035bef849581b
Christian Brabandt <cb@256bit.org>
parents:
7176
diff
changeset
|
690 " ============================= |
873eae260c97
commit https://github.com/vim/vim/commit/b4ff518d95aa57c2f8c0568c915035bef849581b
Christian Brabandt <cb@256bit.org>
parents:
7176
diff
changeset
|
691 delc ShFoldFunctions |
873eae260c97
commit https://github.com/vim/vim/commit/b4ff518d95aa57c2f8c0568c915035bef849581b
Christian Brabandt <cb@256bit.org>
parents:
7176
diff
changeset
|
692 delc ShFoldHereDoc |
873eae260c97
commit https://github.com/vim/vim/commit/b4ff518d95aa57c2f8c0568c915035bef849581b
Christian Brabandt <cb@256bit.org>
parents:
7176
diff
changeset
|
693 delc ShFoldIfDoFor |
7 | 694 |
22 | 695 " Set Current Syntax: {{{1 |
696 " =================== | |
7 | 697 if exists("b:is_bash") |
698 let b:current_syntax = "bash" | |
699 elseif exists("b:is_kornshell") | |
700 let b:current_syntax = "ksh" | |
701 else | |
702 let b:current_syntax = "sh" | |
703 endif | |
704 | |
22 | 705 " vim: ts=16 fdm=marker |