Mercurial > vim
annotate runtime/syntax/sh.vim @ 8271:770774e66011 v7.4.1428
commit https://github.com/vim/vim/commit/edb4f2b3601b0abd47091606269c0ac3244a805b
Author: Bram Moolenaar <Bram@vim.org>
Date: Sat Feb 27 15:27:23 2016 +0100
patch 7.4.1428
Problem: Compiler warning for non-virtual destructor.
Solution: Make it virtual. (Yasuhiro Matsumoto)
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Sat, 27 Feb 2016 15:30:05 +0100 |
parents | f16bfe02cef1 |
children | aba2d0a01290 |
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> |
8246
f16bfe02cef1
commit https://github.com/vim/vim/commit/f391327adbbffb11180cf6038a92af1ed144e907
Christian Brabandt <cb@256bit.org>
parents:
8148
diff
changeset
|
5 " Last Change: Feb 18, 2016 |
f16bfe02cef1
commit https://github.com/vim/vim/commit/f391327adbbffb11180cf6038a92af1ed144e907
Christian Brabandt <cb@256bit.org>
parents:
8148
diff
changeset
|
6 " Version: 145 |
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 | |
8148
f5da459c5698
commit https://github.com/vim/vim/commit/e0fa3742ead676a3074a10edadbc955e1a89153d
Christian Brabandt <cb@256bit.org>
parents:
7557
diff
changeset
|
88 " set up the syntax-highlighting iskeyword |
f5da459c5698
commit https://github.com/vim/vim/commit/e0fa3742ead676a3074a10edadbc955e1a89153d
Christian Brabandt <cb@256bit.org>
parents:
7557
diff
changeset
|
89 if has("patch-7.4.1141") |
f5da459c5698
commit https://github.com/vim/vim/commit/e0fa3742ead676a3074a10edadbc955e1a89153d
Christian Brabandt <cb@256bit.org>
parents:
7557
diff
changeset
|
90 exe "syn iskeyword ".&iskeyword.",-" |
f5da459c5698
commit https://github.com/vim/vim/commit/e0fa3742ead676a3074a10edadbc955e1a89153d
Christian Brabandt <cb@256bit.org>
parents:
7557
diff
changeset
|
91 endif |
f5da459c5698
commit https://github.com/vim/vim/commit/e0fa3742ead676a3074a10edadbc955e1a89153d
Christian Brabandt <cb@256bit.org>
parents:
7557
diff
changeset
|
92 |
7228
873eae260c97
commit https://github.com/vim/vim/commit/b4ff518d95aa57c2f8c0568c915035bef849581b
Christian Brabandt <cb@256bit.org>
parents:
7176
diff
changeset
|
93 " 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
|
94 " ================================= |
873eae260c97
commit https://github.com/vim/vim/commit/b4ff518d95aa57c2f8c0568c915035bef849581b
Christian Brabandt <cb@256bit.org>
parents:
7176
diff
changeset
|
95 if s:sh_fold_functions |
873eae260c97
commit https://github.com/vim/vim/commit/b4ff518d95aa57c2f8c0568c915035bef849581b
Christian Brabandt <cb@256bit.org>
parents:
7176
diff
changeset
|
96 com! -nargs=* ShFoldFunctions <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=* ShFoldFunctions <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_heredoc |
873eae260c97
commit https://github.com/vim/vim/commit/b4ff518d95aa57c2f8c0568c915035bef849581b
Christian Brabandt <cb@256bit.org>
parents:
7176
diff
changeset
|
101 com! -nargs=* ShFoldHereDoc <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=* ShFoldHereDoc <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 if s:sh_fold_ifdofor |
873eae260c97
commit https://github.com/vim/vim/commit/b4ff518d95aa57c2f8c0568c915035bef849581b
Christian Brabandt <cb@256bit.org>
parents:
7176
diff
changeset
|
106 com! -nargs=* ShFoldIfDoFor <args> fold |
873eae260c97
commit https://github.com/vim/vim/commit/b4ff518d95aa57c2f8c0568c915035bef849581b
Christian Brabandt <cb@256bit.org>
parents:
7176
diff
changeset
|
107 else |
873eae260c97
commit https://github.com/vim/vim/commit/b4ff518d95aa57c2f8c0568c915035bef849581b
Christian Brabandt <cb@256bit.org>
parents:
7176
diff
changeset
|
108 com! -nargs=* ShFoldIfDoFor <args> |
873eae260c97
commit https://github.com/vim/vim/commit/b4ff518d95aa57c2f8c0568c915035bef849581b
Christian Brabandt <cb@256bit.org>
parents:
7176
diff
changeset
|
109 endif |
873eae260c97
commit https://github.com/vim/vim/commit/b4ff518d95aa57c2f8c0568c915035bef849581b
Christian Brabandt <cb@256bit.org>
parents:
7176
diff
changeset
|
110 |
199 | 111 " sh syntax is case sensitive {{{1 |
7 | 112 syn case match |
113 | |
22 | 114 " Clusters: contains=@... clusters {{{1 |
7 | 115 "================================== |
2034 | 116 syn cluster shErrorList contains=shDoError,shIfError,shInError,shCaseError,shEsacError,shCurlyError,shParenError,shTestError,shOK |
1668 | 117 if exists("b:is_kornshell") |
118 syn cluster ErrorList add=shDTestError | |
119 endif | |
6744 | 120 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 | 121 syn cluster shArithList contains=@shArithParenList,shParenError |
2034 | 122 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
|
123 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
|
124 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 | 125 syn cluster shCurlyList contains=shNumber,shComma,shDeref,shDerefSimple,shDerefSpecial |
3920 | 126 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
|
127 syn cluster shDerefList contains=shDeref,shDerefSimple,shDerefVar,shDerefSpecial,shDerefWordError,shDerefPSR,shDerefPPS |
7 | 128 syn cluster shDerefVarList contains=shDerefOp,shDerefVarArray,shDerefOpError |
3920 | 129 syn cluster shEchoList contains=shArithmetic,shCommandSub,shDeref,shDerefSimple,shEscape,shExpr,shExSingleQuote,shExDoubleQuote,shSingleQuote,shDoubleQuote,shCtrlSeq,shEchoQuote |
2497 | 130 syn cluster shExprList1 contains=shCharClass,shNumber,shOperator,shExSingleQuote,shExDoubleQuote,shSingleQuote,shDoubleQuote,shExpr,shDblBrace,shDeref,shDerefSimple,shCtrlSeq |
119 | 131 syn cluster shExprList2 contains=@shExprList1,@shCaseList,shTest |
3099
887d6d91882e
Updated a few runtime files.
Bram Moolenaar <bram@vim.org>
parents:
2751
diff
changeset
|
132 syn cluster shFunctionList contains=@shCommandSubList,shCaseEsac,shColon,shCommandSub,shComment,shDo,shEcho,shExpr,shFor,shHereDoc,shIf,shOption,shRedir,shSetList,shSource,shStatement,shVariable,shOperator,shCtrlSeq |
1201 | 133 if exists("b:is_kornshell") || exists("b:is_bash") |
1668 | 134 syn cluster shFunctionList add=shRepeat |
1201 | 135 syn cluster shFunctionList add=shDblBrace,shDblParen |
136 endif | |
7 | 137 syn cluster shHereBeginList contains=@shCommandSubList |
138 syn cluster shHereList contains=shBeginHere,shHerePayload | |
139 syn cluster shHereListDQ contains=shBeginHere,@shDblQuoteList,shHerePayload | |
5138
0d4e0cde36e1
A few updated runtime files.
Bram Moolenaar <bram@vim.org>
parents:
4229
diff
changeset
|
140 syn cluster shIdList contains=shCommandSub,shWrapLineOperator,shSetOption,shDeref,shDerefSimple,shRedir,shExSingleQuote,shExDoubleQuote,shSingleQuote,shDoubleQuote,shExpr,shCtrlSeq,shStringSpecial,shAtExpr |
3281 | 141 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
|
142 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
|
143 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
|
144 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
|
145 |
22 | 146 " Echo: {{{1 |
7 | 147 " ==== |
148 " 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
|
149 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
|
150 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 | 151 syn match shEchoQuote contained '\%(\\\\\)*\\["`'()]' |
7 | 152 |
1668 | 153 " This must be after the strings, so that ... \" will be correct |
2497 | 154 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 | 155 |
22 | 156 " Alias: {{{1 |
7 | 157 " ===== |
158 if exists("b:is_kornshell") || exists("b:is_bash") | |
159 syn match shStatement "\<alias\>" | |
3099
887d6d91882e
Updated a few runtime files.
Bram Moolenaar <bram@vim.org>
parents:
2751
diff
changeset
|
160 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
|
161 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
|
162 |
873eae260c97
commit https://github.com/vim/vim/commit/b4ff518d95aa57c2f8c0568c915035bef849581b
Christian Brabandt <cb@256bit.org>
parents:
7176
diff
changeset
|
163 " Touch: {{{1 |
873eae260c97
commit https://github.com/vim/vim/commit/b4ff518d95aa57c2f8c0568c915035bef849581b
Christian Brabandt <cb@256bit.org>
parents:
7176
diff
changeset
|
164 " ===== |
873eae260c97
commit https://github.com/vim/vim/commit/b4ff518d95aa57c2f8c0568c915035bef849581b
Christian Brabandt <cb@256bit.org>
parents:
7176
diff
changeset
|
165 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
|
166 syn match shTouchCmd '\<touch\>' contained |
7 | 167 endif |
168 | |
22 | 169 " Error Codes: {{{1 |
170 " ============ | |
3281 | 171 if !exists("g:sh_no_error") |
6479 | 172 syn match shDoError "\<done\>" |
173 syn match shIfError "\<fi\>" | |
174 syn match shInError "\<in\>" | |
175 syn match shCaseError ";;" | |
176 syn match shEsacError "\<esac\>" | |
177 syn match shCurlyError "}" | |
178 syn match shParenError ")" | |
179 syn match shOK '\.\(done\|fi\|in\|esac\)' | |
3281 | 180 if exists("b:is_kornshell") |
6479 | 181 syn match shDTestError "]]" |
3281 | 182 endif |
6479 | 183 syn match shTestError "]" |
7 | 184 endif |
185 | |
1668 | 186 " Options: {{{1 |
22 | 187 " ==================== |
3920 | 188 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
|
189 syn match shOption "\s\zs--[^ \t$`'"|);]\+" |
7 | 190 |
1201 | 191 " File Redirection Highlighted As Operators: {{{1 |
192 "=========================================== | |
193 syn match shRedir "\d\=>\(&[-0-9]\)\=" | |
194 syn match shRedir "\d\=>>-\=" | |
195 syn match shRedir "\d\=<\(&[-0-9]\)\=" | |
196 syn match shRedir "\d<<-\=" | |
197 | |
22 | 198 " Operators: {{{1 |
199 " ========== | |
1201 | 200 syn match shOperator "<<\|>>" contained |
1668 | 201 syn match shOperator "[!&;|]" contained |
202 syn match shOperator "\[[[^:]\|\]]" contained | |
6840 | 203 syn match shOperator "[-=/*+%]\==" skipwhite nextgroup=shPattern |
2497 | 204 syn match shPattern "\<\S\+\())\)\@=" contained contains=shExSingleQuote,shSingleQuote,shExDoubleQuote,shDoubleQuote,shDeref |
7 | 205 |
22 | 206 " Subshells: {{{1 |
207 " ========== | |
3099
887d6d91882e
Updated a few runtime files.
Bram Moolenaar <bram@vim.org>
parents:
2751
diff
changeset
|
208 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
|
209 syn region shSubSh transparent matchgroup=shSubShRegion start="[^(]\zs(" end=")" contains=@shSubShList nextgroup=shMoreSpecial |
7 | 210 |
22 | 211 " Tests: {{{1 |
212 "======= | |
2152 | 213 syn region shExpr matchgroup=shRange start="\[" skip=+\\\\\|\\$\|\[+ end="\]" contains=@shTestList,shSpecial |
2034 | 214 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
|
215 syn region shNoQuote start='\S' skip='\%(\\\\\)*\\.' end='\ze\s' contained |
6840 | 216 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
|
217 syn match shTestOpr contained "<=\|>=\|!=\|==\|=\~\|-.\>\|-\(nt\|ot\|ef\|eq\|ne\|lt\|le\|gt\|ge\)\>\|[!<>]" |
1121 | 218 syn match shTestPattern contained '\w\+' |
6744 | 219 syn region shTestDoubleQuote contained start='\%(\%(\\\\\)*\\\)\@<!"' skip=+\\\\\|\\"+ end='"' |
1121 | 220 syn match shTestSingleQuote contained '\\.' |
221 syn match shTestSingleQuote contained "'[^']*'" | |
7 | 222 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
|
223 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
|
224 syn region shDblParen matchgroup=Delimiter start="((" skip=+\%(\\\\\)*\\$+ end="))" contains=@shTestList,shComment |
7 | 225 endif |
226 | |
22 | 227 " Character Class In Range: {{{1 |
228 " ========================= | |
7 | 229 syn match shCharClass contained "\[:\(backspace\|escape\|return\|xdigit\|alnum\|alpha\|blank\|cntrl\|digit\|graph\|lower\|print\|punct\|space\|upper\|tab\):\]" |
230 | |
22 | 231 " Loops: do, if, while, until {{{1 |
232 " ====== | |
7228
873eae260c97
commit https://github.com/vim/vim/commit/b4ff518d95aa57c2f8c0568c915035bef849581b
Christian Brabandt <cb@256bit.org>
parents:
7176
diff
changeset
|
233 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
|
234 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
|
235 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
|
236 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
|
237 |
7 | 238 if exists("b:is_kornshell") || exists("b:is_bash") |
1668 | 239 syn cluster shCaseList add=shRepeat |
240 syn cluster shFunctionList add=shRepeat | |
241 syn region shRepeat matchgroup=shLoop start="\<while\_s" end="\<in\_s" end="\<do\>"me=e-2 contains=@shLoopList,shDblParen,shDblBrace | |
242 syn region shRepeat matchgroup=shLoop start="\<until\_s" end="\<in\_s" end="\<do\>"me=e-2 contains=@shLoopList,shDblParen,shDblBrace | |
243 syn region shCaseEsac matchgroup=shConditional start="\<select\s" matchgroup=shConditional end="\<in\>" end="\<do\>" contains=@shLoopList | |
7 | 244 else |
1668 | 245 syn region shRepeat matchgroup=shLoop start="\<while\_s" end="\<do\>"me=e-2 contains=@shLoopList |
246 syn region shRepeat matchgroup=shLoop start="\<until\_s" end="\<do\>"me=e-2 contains=@shLoopList | |
7 | 247 endif |
464 | 248 syn region shCurlyIn contained matchgroup=Delimiter start="{" end="}" contains=@shCurlyList |
249 syn match shComma contained "," | |
7 | 250 |
22 | 251 " Case: case...esac {{{1 |
7 | 252 " ==== |
1668 | 253 syn match shCaseBar contained skipwhite "\(^\|[^\\]\)\(\\\\\)*\zs|" nextgroup=shCase,shCaseStart,shCaseBar,shComment,shCaseExSingleQuote,shCaseSingleQuote,shCaseDoubleQuote |
7 | 254 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
|
255 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
|
256 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
|
257 |
167 | 258 syn keyword shCaseIn contained skipwhite skipnl in nextgroup=shCase,shCaseStart,shCaseBar,shComment,shCaseExSingleQuote,shCaseSingleQuote,shCaseDoubleQuote |
259 if exists("b:is_bash") | |
2473
d55e70cabe2c
Syntax file updates. (Charles Campbell)
Bram Moolenaar <bram@vim.org>
parents:
2357
diff
changeset
|
260 syn region shCaseExSingleQuote matchgroup=shQuote start=+\$'+ skip=+\\\\\|\\.+ end=+'+ contains=shStringSpecial,shSpecial skipwhite skipnl nextgroup=shCaseBar contained |
3281 | 261 elseif !exists("g:sh_no_error") |
167 | 262 syn region shCaseExSingleQuote matchgroup=Error start=+\$'+ skip=+\\\\\|\\.+ end=+'+ contains=shStringSpecial skipwhite skipnl nextgroup=shCaseBar contained |
263 endif | |
2473
d55e70cabe2c
Syntax file updates. (Charles Campbell)
Bram Moolenaar <bram@vim.org>
parents:
2357
diff
changeset
|
264 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
|
265 syn region shCaseDoubleQuote matchgroup=shQuote start=+"+ skip=+\\\\\|\\.+ end=+"+ contains=@shDblQuoteList,shStringSpecial skipwhite skipnl nextgroup=shCaseBar contained |
7 | 266 syn region shCaseCommandSub start=+`+ skip=+\\\\\|\\.+ end=+`+ contains=@shCommandSubList skipwhite skipnl nextgroup=shCaseBar contained |
3920 | 267 if exists("b:is_bash") |
268 syn region shCaseRange matchgroup=Delimiter start=+\[+ skip=+\\\\+ end=+\]+ contained contains=shCharClass | |
269 syn match shCharClass '\[:\%(alnum\|alpha\|ascii\|blank\|cntrl\|digit\|graph\|lower\|print\|punct\|space\|upper\|word\|or\|xdigit\):\]' contained | |
270 else | |
271 syn region shCaseRange matchgroup=Delimiter start=+\[+ skip=+\\\\+ end=+\]+ contained | |
272 endif | |
22 | 273 " Misc: {{{1 |
274 "====== | |
7 | 275 syn match shWrapLineOperator "\\$" |
3920 | 276 syn region shCommandSub start="`" skip="\\\\\|\\." end="`" contains=@shCommandSubList |
5138
0d4e0cde36e1
A few updated runtime files.
Bram Moolenaar <bram@vim.org>
parents:
4229
diff
changeset
|
277 syn match shEscape contained '\%(^\)\@!\%(\\\\\)*\\.' |
7 | 278 |
22 | 279 " $() and $(()): {{{1 |
7 | 280 " $(..) is not supported by sh (Bourne shell). However, apparently |
281 " some systems (HP?) have as their /bin/sh a (link to) Korn shell | |
282 " (ie. Posix compliant shell). /bin/ksh should work for those | |
283 " systems too, however, so the following syntax will flag $(..) as | |
284 " an Error under /bin/sh. By consensus of vimdev'ers! | |
285 if exists("b:is_kornshell") || exists("b:is_bash") | |
286 syn region shCommandSub matchgroup=shCmdSubRegion start="\$(" skip='\\\\\|\\.' end=")" contains=@shCommandSubList | |
1668 | 287 syn region shArithmetic matchgroup=shArithRegion start="\$((" skip='\\\\\|\\.' end="))" contains=@shArithList |
3445 | 288 syn region shArithmetic matchgroup=shArithRegion start="\$\[" skip='\\\\\|\\.' end="\]" contains=@shArithList |
7 | 289 syn match shSkipInitWS contained "^\s\+" |
3281 | 290 elseif !exists("g:sh_no_error") |
167 | 291 syn region shCommandSub matchgroup=Error start="\$(" end=")" contains=@shCommandSubList |
7 | 292 endif |
6479 | 293 syn region shCmdParenRegion matchgroup=shCmdSubRegion start="(\ze[^(]" skip='\\\\\|\\.' end=")" contains=@shCommandSubList |
7 | 294 |
295 if exists("b:is_bash") | |
296 syn cluster shCommandSubList add=bashSpecialVariables,bashStatement | |
297 syn cluster shCaseList add=bashAdminStatement,bashStatement | |
3099
887d6d91882e
Updated a few runtime files.
Bram Moolenaar <bram@vim.org>
parents:
2751
diff
changeset
|
298 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
|
299 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 | 300 syn keyword bashAdminStatement daemon killall killproc nice reload restart start status stop |
3920 | 301 syn keyword bashStatement command compgen |
7 | 302 endif |
303 | |
304 if exists("b:is_kornshell") | |
305 syn cluster shCommandSubList add=kshSpecialVariables,kshStatement | |
306 syn cluster shCaseList add=kshStatement | |
307 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
|
308 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 | 309 syn keyword kshStatement command setgroups setsenv |
7 | 310 endif |
311 | |
312 syn match shSource "^\.\s" | |
313 syn match shSource "\s\.\s" | |
2034 | 314 "syn region shColon start="^\s*:" end="$" end="\s#"me=e-2 contains=@shColonList |
3281 | 315 "syn region shColon start="^\s*\zs:" end="$" end="\s#"me=e-2 |
316 syn match shColon '^\s*\zs:' | |
7 | 317 |
22 | 318 " String And Character Constants: {{{1 |
319 "================================ | |
1121 | 320 syn match shNumber "-\=\<\d\+\>#\=" |
321 syn match shCtrlSeq "\\\d\d\d\|\\[abcfnrtv0]" contained | |
167 | 322 if exists("b:is_bash") |
2034 | 323 syn match shSpecial "\\\o\o\o\|\\x\x\x\|\\c[^"]\|\\[abefnrtv]" contained |
167 | 324 endif |
325 if exists("b:is_bash") | |
2473
d55e70cabe2c
Syntax file updates. (Charles Campbell)
Bram Moolenaar <bram@vim.org>
parents:
2357
diff
changeset
|
326 syn region shExSingleQuote matchgroup=shQuote start=+\$'+ skip=+\\\\\|\\.+ end=+'+ contains=shStringSpecial,shSpecial |
2497 | 327 syn region shExDoubleQuote matchgroup=shQuote start=+\$"+ skip=+\\\\\|\\.\|\\"+ end=+"+ contains=@shDblQuoteList,shStringSpecial,shSpecial |
3281 | 328 elseif !exists("g:sh_no_error") |
1121 | 329 syn region shExSingleQuote matchGroup=Error start=+\$'+ skip=+\\\\\|\\.+ end=+'+ contains=shStringSpecial |
2497 | 330 syn region shExDoubleQuote matchGroup=Error start=+\$"+ skip=+\\\\\|\\.+ end=+"+ contains=shStringSpecial |
167 | 331 endif |
2473
d55e70cabe2c
Syntax file updates. (Charles Campbell)
Bram Moolenaar <bram@vim.org>
parents:
2357
diff
changeset
|
332 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
|
333 syn region shDoubleQuote matchgroup=shQuote start=+\%(\%(\\\\\)*\\\)\@<!"+ skip=+\\"+ end=+"+ contains=@shDblQuoteList,shStringSpecial,@Spell |
6840 | 334 syn match shStringSpecial "[^[:print:] \t]" contained |
1201 | 335 syn match shStringSpecial "\%(\\\\\)*\\[\\"'`$()#]" |
7176
30042ddff503
commit https://github.com/vim/vim/commit/60cce2fb736c8ff6fdb9603f502d3c15f1f7a25d
Christian Brabandt <cb@256bit.org>
parents:
6840
diff
changeset
|
336 syn match shSpecial "[^\\]\zs\%(\\\\\)*\\[\\"'`$()#]" |
30042ddff503
commit https://github.com/vim/vim/commit/60cce2fb736c8ff6fdb9603f502d3c15f1f7a25d
Christian Brabandt <cb@256bit.org>
parents:
6840
diff
changeset
|
337 syn match shSpecial "^\%(\\\\\)*\\[\\"'`$()#]" |
6840 | 338 syn match shMoreSpecial "\%(\\\\\)*\\[\\"'`$()#]" nextgroup=shMoreSpecial contained |
7 | 339 |
22 | 340 " Comments: {{{1 |
341 "========== | |
2034 | 342 syn cluster shCommentGroup contains=shTodo,@Spell |
343 syn keyword shTodo contained COMBAK FIXME TODO XXX | |
344 syn match shComment "^\s*\zs#.*$" contains=@shCommentGroup | |
345 syn match shComment "\s\zs#.*$" contains=@shCommentGroup | |
3920 | 346 syn match shComment contained "#.*$" contains=@shCommentGroup |
2034 | 347 syn match shQuickComment contained "#.*$" |
7 | 348 |
22 | 349 " Here Documents: {{{1 |
350 " ========================================= | |
7 | 351 if version < 600 |
6840 | 352 syn region shHereDoc matchgroup=shHereDoc01 start="<<\s*\**END[a-zA-Z_0-9]*\**" matchgroup=shHereDoc01 end="^END[a-zA-Z_0-9]*$" contains=@shDblQuoteList |
353 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 | |
354 syn region shHereDoc matchgroup=shHereDoc03 start="<<\s*\**EOF\**" matchgroup=shHereDoc03 end="^EOF$" contains=@shDblQuoteList | |
355 syn region shHereDoc matchgroup=shHereDoc04 start="<<-\s*\**EOF\**" matchgroup=shHereDoc04 end="^\s*EOF$" contains=@shDblQuoteList | |
356 syn region shHereDoc matchgroup=shHereDoc05 start="<<\s*\**\.\**" matchgroup=shHereDoc05 end="^\.$" contains=@shDblQuoteList | |
357 syn region shHereDoc matchgroup=shHereDoc06 start="<<-\s*\**\.\**" matchgroup=shHereDoc06 end="^\s*\.$" contains=@shDblQuoteList | |
7 | 358 |
359 else | |
7228
873eae260c97
commit https://github.com/vim/vim/commit/b4ff518d95aa57c2f8c0568c915035bef849581b
Christian Brabandt <cb@256bit.org>
parents:
7176
diff
changeset
|
360 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
|
361 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
|
362 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
|
363 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
|
364 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
|
365 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
|
366 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
|
367 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
|
368 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
|
369 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
|
370 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
|
371 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
|
372 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
|
373 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
|
374 ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc21 start="<<-\s*\\\z([^ \t|]\+\)" matchgroup=shHereDoc21 end="^\s*\z1\s*$" |
7 | 375 endif |
376 | |
22 | 377 " Here Strings: {{{1 |
378 " ============= | |
3099
887d6d91882e
Updated a few runtime files.
Bram Moolenaar <bram@vim.org>
parents:
2751
diff
changeset
|
379 " 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
|
380 if exists("b:is_bash") || (exists("b:is_kornshell") && !exists("g:is_posix")) |
3920 | 381 syn match shRedir "<<<" skipwhite nextgroup=shCmdParenRegion |
22 | 382 endif |
383 | |
384 " Identifiers: {{{1 | |
385 "============= | |
1668 | 386 syn match shSetOption "\s\zs[-+][a-zA-Z0-9]\+\>" contained |
6840 | 387 syn match shVariable "\<\([bwglsav]:\)\=[a-zA-Z0-9.!@_%+,]*\ze=" nextgroup=shVarAssign |
388 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
|
389 syn region shAtExpr contained start="@(" end=")" contains=@shIdList |
7 | 390 if exists("b:is_bash") |
5138
0d4e0cde36e1
A few updated runtime files.
Bram Moolenaar <bram@vim.org>
parents:
4229
diff
changeset
|
391 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
|
392 syn region shSetList oneline matchgroup=shSet start="\<set\>\ze[^/]" end="\ze[;|)]\|$" matchgroup=shSetListDelim end="\ze[}|);&]" matchgroup=NONE end="\ze\s\+=" contains=@shIdList |
7 | 393 elseif exists("b:is_kornshell") |
5138
0d4e0cde36e1
A few updated runtime files.
Bram Moolenaar <bram@vim.org>
parents:
4229
diff
changeset
|
394 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
|
395 syn region shSetList oneline matchgroup=shSet start="\<set\>\ze[^/]" end="$" matchgroup=shSetListDelim end="\ze[}|);&]" matchgroup=NONE end="\ze\s\+[#=]" contains=@shIdList |
7 | 396 else |
5138
0d4e0cde36e1
A few updated runtime files.
Bram Moolenaar <bram@vim.org>
parents:
4229
diff
changeset
|
397 syn region shSetList oneline matchgroup=shSet start="\<\(set\|export\|unset\)\>\ze[^/]" end="$" matchgroup=shSetListDelim end="\ze[}|);&]" matchgroup=NONE end="\ze\s\+[#=]" contains=@shIdList |
7 | 398 endif |
399 | |
22 | 400 " Functions: {{{1 |
1668 | 401 if !exists("g:is_posix") |
402 syn keyword shFunctionKey function skipwhite skipnl nextgroup=shFunctionTwo | |
403 endif | |
404 | |
405 if exists("b:is_bash") | |
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[-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
|
407 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
|
408 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
|
409 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 | 410 else |
7228
873eae260c97
commit https://github.com/vim/vim/commit/b4ff518d95aa57c2f8c0568c915035bef849581b
Christian Brabandt <cb@256bit.org>
parents:
7176
diff
changeset
|
411 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
|
412 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
|
413 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
|
414 ShFoldFunctions syn region shFunctionFour matchgroup=shFunction start="\<[^d][^o]\&\h\w*\s*\%(()\)\=\_s*(" end=")" contains=shFunctionKey,@shFunctionList contained skipwhite skipnl nextgroup=shFunctionStart,shQuickComment |
7 | 415 endif |
416 | |
22 | 417 " Parameter Dereferencing: {{{1 |
418 " ======================== | |
3281 | 419 if !exists("g:sh_no_error") |
420 syn match shDerefWordError "[^}$[]" contained | |
421 endif | |
7245
8896150aba23
commit https://github.com/vim/vim/commit/e392eb41f8dfc01bd13634e534ac6b4d505326f4
Christian Brabandt <cb@256bit.org>
parents:
7228
diff
changeset
|
422 syn match shDerefSimple "\$\%(\k\+\|\d\)" |
7228
873eae260c97
commit https://github.com/vim/vim/commit/b4ff518d95aa57c2f8c0568c915035bef849581b
Christian Brabandt <cb@256bit.org>
parents:
7176
diff
changeset
|
423 syn region shDeref matchgroup=PreProc start="\${" end="}" contains=@shDerefList,shDerefVarArray |
7 | 424 syn match shDerefSimple "\$[-#*@!?]" |
425 syn match shDerefSimple "\$\$" | |
426 if exists("b:is_bash") || exists("b:is_kornshell") | |
427 syn region shDeref matchgroup=PreProc start="\${##\=" end="}" contains=@shDerefList | |
1668 | 428 syn region shDeref matchgroup=PreProc start="\${\$\$" end="}" contains=@shDerefList |
7 | 429 endif |
430 | |
7228
873eae260c97
commit https://github.com/vim/vim/commit/b4ff518d95aa57c2f8c0568c915035bef849581b
Christian Brabandt <cb@256bit.org>
parents:
7176
diff
changeset
|
431 " 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
|
432 " ======================================== |
873eae260c97
commit https://github.com/vim/vim/commit/b4ff518d95aa57c2f8c0568c915035bef849581b
Christian Brabandt <cb@256bit.org>
parents:
7176
diff
changeset
|
433 if exists("b:is_kornshell") |
873eae260c97
commit https://github.com/vim/vim/commit/b4ff518d95aa57c2f8c0568c915035bef849581b
Christian Brabandt <cb@256bit.org>
parents:
7176
diff
changeset
|
434 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
|
435 endif |
873eae260c97
commit https://github.com/vim/vim/commit/b4ff518d95aa57c2f8c0568c915035bef849581b
Christian Brabandt <cb@256bit.org>
parents:
7176
diff
changeset
|
436 |
22 | 437 " bash: ${!prefix*} and ${#parameter}: {{{1 |
438 " ==================================== | |
7 | 439 if exists("b:is_bash") |
440 syn region shDeref matchgroup=PreProc start="\${!" end="\*\=}" contains=@shDerefList,shDerefOp | |
3920 | 441 syn match shDerefVar contained "{\@<=!\k\+" nextgroup=@shDerefVarList |
7 | 442 endif |
7228
873eae260c97
commit https://github.com/vim/vim/commit/b4ff518d95aa57c2f8c0568c915035bef849581b
Christian Brabandt <cb@256bit.org>
parents:
7176
diff
changeset
|
443 if exists("b:is_kornshell") |
873eae260c97
commit https://github.com/vim/vim/commit/b4ff518d95aa57c2f8c0568c915035bef849581b
Christian Brabandt <cb@256bit.org>
parents:
7176
diff
changeset
|
444 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
|
445 endif |
7 | 446 |
447 syn match shDerefSpecial contained "{\@<=[-*@?0]" nextgroup=shDerefOp,shDerefOpError | |
448 syn match shDerefSpecial contained "\({[#!]\)\@<=[[:alnum:]*@_]\+" nextgroup=@shDerefVarList,shDerefOp | |
3920 | 449 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
|
450 if exists("b:is_kornshell") |
873eae260c97
commit https://github.com/vim/vim/commit/b4ff518d95aa57c2f8c0568c915035bef849581b
Christian Brabandt <cb@256bit.org>
parents:
7176
diff
changeset
|
451 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
|
452 endif |
7 | 453 |
22 | 454 " sh ksh bash : ${var[... ]...} array reference: {{{1 |
6479 | 455 syn region shDerefVarArray contained matchgroup=shDeref start="\[" end="]" contains=@shCommandSubList nextgroup=shDerefOp,shDerefOpError |
7 | 456 |
22 | 457 " Special ${parameter OPERATOR word} handling: {{{1 |
6479 | 458 " sh ksh bash : ${parameter:-word} word is default value |
459 " sh ksh bash : ${parameter:=word} assign word as default value | |
460 " sh ksh bash : ${parameter:?word} display word if parameter is null | |
461 " sh ksh bash : ${parameter:+word} use word if parameter is not null, otherwise nothing | |
462 " ksh bash : ${parameter#pattern} remove small left pattern | |
463 " ksh bash : ${parameter##pattern} remove large left pattern | |
464 " ksh bash : ${parameter%pattern} remove small right pattern | |
465 " ksh bash : ${parameter%%pattern} remove large right pattern | |
466 " bash : ${parameter^pattern} Case modification | |
467 " bash : ${parameter^^pattern} Case modification | |
468 " bash : ${parameter,pattern} Case modification | |
469 " bash : ${parameter,,pattern} Case modification | |
7 | 470 syn cluster shDerefPatternList contains=shDerefPattern,shDerefString |
3281 | 471 if !exists("g:sh_no_error") |
472 syn match shDerefOpError contained ":[[:punct:]]" | |
473 endif | |
7 | 474 syn match shDerefOp contained ":\=[-=?]" nextgroup=@shDerefPatternList |
475 syn match shDerefOp contained ":\=+" nextgroup=@shDerefPatternList | |
476 if exists("b:is_bash") || exists("b:is_kornshell") | |
477 syn match shDerefOp contained "#\{1,2}" nextgroup=@shDerefPatternList | |
478 syn match shDerefOp contained "%\{1,2}" nextgroup=@shDerefPatternList | |
482 | 479 syn match shDerefPattern contained "[^{}]\+" contains=shDeref,shDerefSimple,shDerefPattern,shDerefString,shCommandSub,shDerefEscape nextgroup=shDerefPattern |
7 | 480 syn region shDerefPattern contained start="{" end="}" contains=shDeref,shDerefSimple,shDerefString,shCommandSub nextgroup=shDerefPattern |
482 | 481 syn match shDerefEscape contained '\%(\\\\\)*\\.' |
7 | 482 endif |
3099
887d6d91882e
Updated a few runtime files.
Bram Moolenaar <bram@vim.org>
parents:
2751
diff
changeset
|
483 if exists("b:is_bash") |
887d6d91882e
Updated a few runtime files.
Bram Moolenaar <bram@vim.org>
parents:
2751
diff
changeset
|
484 syn match shDerefOp contained "[,^]\{1,2}" nextgroup=@shDerefPatternList |
887d6d91882e
Updated a few runtime files.
Bram Moolenaar <bram@vim.org>
parents:
2751
diff
changeset
|
485 endif |
2473
d55e70cabe2c
Syntax file updates. (Charles Campbell)
Bram Moolenaar <bram@vim.org>
parents:
2357
diff
changeset
|
486 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
|
487 syn region shDerefString contained matchgroup=shDerefDelim start=+\%(\\\)\@<!"+ skip=+\\"+ end=+"+ contains=@shDblQuoteList,shStringSpecial |
1668 | 488 syn match shDerefString contained "\\["']" nextgroup=shDerefPattern |
7 | 489 |
490 if exists("b:is_bash") | |
482 | 491 " bash : ${parameter:offset} |
492 " bash : ${parameter:offset:length} | |
7 | 493 syn region shDerefOp contained start=":[$[:alnum:]_]"me=e-1 end=":"me=e-1 end="}"me=e-1 contains=@shCommandSubList nextgroup=shDerefPOL |
482 | 494 syn match shDerefPOL contained ":[^}]\+" contains=@shCommandSubList |
495 | |
496 " bash : ${parameter//pattern/string} | |
497 " bash : ${parameter//pattern} | |
498 syn match shDerefPPS contained '/\{1,2}' nextgroup=shDerefPPSleft | |
3920 | 499 syn region shDerefPPSleft contained start='.' skip=@\%(\\\\\)*\\/@ matchgroup=shDerefOp end='/' end='\ze}' nextgroup=shDerefPPSright contains=@shCommandSubList |
500 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
|
501 |
502ca0a62fd8
commit https://github.com/vim/vim/commit/acb4f221c715a333f4c49a2235a8006c6ac6e4d5
Christian Brabandt <cb@256bit.org>
parents:
7245
diff
changeset
|
502 " bash : ${parameter/#substring/replacement} |
502ca0a62fd8
commit https://github.com/vim/vim/commit/acb4f221c715a333f4c49a2235a8006c6ac6e4d5
Christian Brabandt <cb@256bit.org>
parents:
7245
diff
changeset
|
503 syn match shDerefPSR contained '/#' nextgroup=shDerefPSRleft |
502ca0a62fd8
commit https://github.com/vim/vim/commit/acb4f221c715a333f4c49a2235a8006c6ac6e4d5
Christian Brabandt <cb@256bit.org>
parents:
7245
diff
changeset
|
504 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
|
505 syn region shDerefPSRright contained start='.' skip=@\%(\\\\\)\+@ end='\ze}' |
7 | 506 endif |
507 | |
1668 | 508 " Arithmetic Parenthesized Expressions: {{{1 |
5138
0d4e0cde36e1
A few updated runtime files.
Bram Moolenaar <bram@vim.org>
parents:
4229
diff
changeset
|
509 "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
|
510 syn region shParen matchgroup=shArithRegion start='\$\@!(\%(\ze[^(]\|$\)' end=')' contains=@shArithParenList |
1668 | 511 |
22 | 512 " Useful sh Keywords: {{{1 |
513 " =================== | |
7 | 514 syn keyword shStatement break cd chdir continue eval exec exit kill newgrp pwd read readonly return shift test trap ulimit umask wait |
515 syn keyword shConditional contained elif else then | |
3281 | 516 if !exists("g:sh_no_error") |
517 syn keyword shCondError elif else then | |
518 endif | |
7 | 519 |
22 | 520 " Useful ksh Keywords: {{{1 |
521 " ==================== | |
7 | 522 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
|
523 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 | 524 if exists("g:is_posix") |
525 syn keyword shStatement command | |
526 else | |
527 syn keyword shStatement time | |
528 endif | |
7 | 529 |
22 | 530 " Useful bash Keywords: {{{1 |
531 " ===================== | |
7 | 532 if exists("b:is_bash") |
533 syn keyword shStatement bind builtin dirs disown enable help local logout popd pushd shopt source | |
534 else | |
535 syn keyword shStatement login newgrp | |
536 endif | |
537 endif | |
538 | |
22 | 539 " Synchronization: {{{1 |
540 " ================ | |
7 | 541 if !exists("sh_minlines") |
542 let sh_minlines = 200 | |
543 endif | |
544 if !exists("sh_maxlines") | |
545 let sh_maxlines = 2 * sh_minlines | |
546 endif | |
547 exec "syn sync minlines=" . sh_minlines . " maxlines=" . sh_maxlines | |
548 syn sync match shCaseEsacSync grouphere shCaseEsac "\<case\>" | |
549 syn sync match shCaseEsacSync groupthere shCaseEsac "\<esac\>" | |
550 syn sync match shDoSync grouphere shDo "\<do\>" | |
551 syn sync match shDoSync groupthere shDo "\<done\>" | |
552 syn sync match shForSync grouphere shFor "\<for\>" | |
553 syn sync match shForSync groupthere shFor "\<in\>" | |
554 syn sync match shIfSync grouphere shIf "\<if\>" | |
555 syn sync match shIfSync groupthere shIf "\<fi\>" | |
556 syn sync match shUntilSync grouphere shRepeat "\<until\>" | |
557 syn sync match shWhileSync grouphere shRepeat "\<while\>" | |
558 | |
22 | 559 " Default Highlighting: {{{1 |
560 " ===================== | |
7 | 561 hi def link shArithRegion shShellVariables |
5138
0d4e0cde36e1
A few updated runtime files.
Bram Moolenaar <bram@vim.org>
parents:
4229
diff
changeset
|
562 hi def link shAtExpr shSetList |
167 | 563 hi def link shBeginHere shRedir |
7 | 564 hi def link shCaseBar shConditional |
565 hi def link shCaseCommandSub shCommandSub | |
566 hi def link shCaseDoubleQuote shDoubleQuote | |
167 | 567 hi def link shCaseIn shConditional |
2473
d55e70cabe2c
Syntax file updates. (Charles Campbell)
Bram Moolenaar <bram@vim.org>
parents:
2357
diff
changeset
|
568 hi def link shQuote shOperator |
7 | 569 hi def link shCaseSingleQuote shSingleQuote |
570 hi def link shCaseStart shConditional | |
571 hi def link shCmdSubRegion shShellVariables | |
2034 | 572 hi def link shColon shComment |
167 | 573 hi def link shDerefOp shOperator |
574 hi def link shDerefPOL shDerefOp | |
482 | 575 hi def link shDerefPPS shDerefOp |
7557
502ca0a62fd8
commit https://github.com/vim/vim/commit/acb4f221c715a333f4c49a2235a8006c6ac6e4d5
Christian Brabandt <cb@256bit.org>
parents:
7245
diff
changeset
|
576 hi def link shDerefPSR shDerefOp |
7 | 577 hi def link shDeref shShellVariables |
2473
d55e70cabe2c
Syntax file updates. (Charles Campbell)
Bram Moolenaar <bram@vim.org>
parents:
2357
diff
changeset
|
578 hi def link shDerefDelim shOperator |
7 | 579 hi def link shDerefSimple shDeref |
580 hi def link shDerefSpecial shDeref | |
581 hi def link shDerefString shDoubleQuote | |
167 | 582 hi def link shDerefVar shDeref |
7 | 583 hi def link shDoubleQuote shString |
584 hi def link shEcho shString | |
2473
d55e70cabe2c
Syntax file updates. (Charles Campbell)
Bram Moolenaar <bram@vim.org>
parents:
2357
diff
changeset
|
585 hi def link shEchoDelim shOperator |
1668 | 586 hi def link shEchoQuote shString |
6744 | 587 hi def link shForPP shLoop |
7 | 588 hi def link shEmbeddedEcho shString |
1668 | 589 hi def link shEscape shCommandSub |
2497 | 590 hi def link shExDoubleQuote shDoubleQuote |
167 | 591 hi def link shExSingleQuote shSingleQuote |
1668 | 592 hi def link shFunction Function |
7 | 593 hi def link shHereDoc shString |
167 | 594 hi def link shHerePayload shHereDoc |
7 | 595 hi def link shLoop shStatement |
2034 | 596 hi def link shMoreSpecial shSpecial |
7228
873eae260c97
commit https://github.com/vim/vim/commit/b4ff518d95aa57c2f8c0568c915035bef849581b
Christian Brabandt <cb@256bit.org>
parents:
7176
diff
changeset
|
597 hi def link shNoQuote shDoubleQuote |
7 | 598 hi def link shOption shCommandSub |
599 hi def link shPattern shString | |
1668 | 600 hi def link shParen shArithmetic |
7 | 601 hi def link shPosnParm shShellVariables |
1668 | 602 hi def link shQuickComment shComment |
7 | 603 hi def link shRange shOperator |
604 hi def link shRedir shOperator | |
2473
d55e70cabe2c
Syntax file updates. (Charles Campbell)
Bram Moolenaar <bram@vim.org>
parents:
2357
diff
changeset
|
605 hi def link shSetListDelim shOperator |
1668 | 606 hi def link shSetOption shOption |
7 | 607 hi def link shSingleQuote shString |
608 hi def link shSource shOperator | |
609 hi def link shStringSpecial shSpecial | |
610 hi def link shSubShRegion shOperator | |
611 hi def link shTestOpr shConditional | |
1121 | 612 hi def link shTestPattern shString |
613 hi def link shTestDoubleQuote shString | |
614 hi def link shTestSingleQuote shString | |
7228
873eae260c97
commit https://github.com/vim/vim/commit/b4ff518d95aa57c2f8c0568c915035bef849581b
Christian Brabandt <cb@256bit.org>
parents:
7176
diff
changeset
|
615 hi def link shTouchCmd shStatement |
7 | 616 hi def link shVariable shSetList |
617 hi def link shWrapLineOperator shOperator | |
618 | |
619 if exists("b:is_bash") | |
620 hi def link bashAdminStatement shStatement | |
621 hi def link bashSpecialVariables shShellVariables | |
622 hi def link bashStatement shStatement | |
199 | 623 hi def link shFunctionParen Delimiter |
624 hi def link shFunctionDelim Delimiter | |
3920 | 625 hi def link shCharClass shSpecial |
7 | 626 endif |
627 if exists("b:is_kornshell") | |
628 hi def link kshSpecialVariables shShellVariables | |
629 hi def link kshStatement shStatement | |
199 | 630 hi def link shFunctionParen Delimiter |
7 | 631 endif |
632 | |
3281 | 633 if !exists("g:sh_no_error") |
634 hi def link shCaseError Error | |
635 hi def link shCondError Error | |
636 hi def link shCurlyError Error | |
637 hi def link shDerefError Error | |
638 hi def link shDerefOpError Error | |
639 hi def link shDerefWordError Error | |
640 hi def link shDoError Error | |
641 hi def link shEsacError Error | |
642 hi def link shIfError Error | |
643 hi def link shInError Error | |
644 hi def link shParenError Error | |
645 hi def link shTestError Error | |
646 if exists("b:is_kornshell") | |
647 hi def link shDTestError Error | |
648 endif | |
7 | 649 endif |
650 | |
651 hi def link shArithmetic Special | |
652 hi def link shCharClass Identifier | |
653 hi def link shSnglCase Statement | |
654 hi def link shCommandSub Special | |
655 hi def link shComment Comment | |
656 hi def link shConditional Conditional | |
1121 | 657 hi def link shCtrlSeq Special |
7 | 658 hi def link shExprRegion Delimiter |
199 | 659 hi def link shFunctionKey Function |
7 | 660 hi def link shFunctionName Function |
661 hi def link shNumber Number | |
662 hi def link shOperator Operator | |
663 hi def link shRepeat Repeat | |
664 hi def link shSet Statement | |
665 hi def link shSetList Identifier | |
666 hi def link shShellVariables PreProc | |
667 hi def link shSpecial Special | |
668 hi def link shStatement Statement | |
669 hi def link shString String | |
670 hi def link shTodo Todo | |
671 hi def link shAlias Identifier | |
6840 | 672 hi def link shHereDoc01 shRedir |
673 hi def link shHereDoc02 shRedir | |
674 hi def link shHereDoc03 shRedir | |
675 hi def link shHereDoc04 shRedir | |
676 hi def link shHereDoc05 shRedir | |
677 hi def link shHereDoc06 shRedir | |
678 hi def link shHereDoc07 shRedir | |
679 hi def link shHereDoc08 shRedir | |
680 hi def link shHereDoc09 shRedir | |
681 hi def link shHereDoc10 shRedir | |
682 hi def link shHereDoc11 shRedir | |
683 hi def link shHereDoc12 shRedir | |
684 hi def link shHereDoc13 shRedir | |
685 hi def link shHereDoc14 shRedir | |
686 hi def link shHereDoc15 shRedir | |
687 hi def link shHereDoc16 shRedir | |
688 hi def link shHereDoc17 shRedir | |
689 hi def link shHereDoc18 shRedir | |
690 hi def link shHereDoc19 shRedir | |
691 hi def link shHereDoc20 shRedir | |
692 hi def link shHereDoc21 shRedir | |
7228
873eae260c97
commit https://github.com/vim/vim/commit/b4ff518d95aa57c2f8c0568c915035bef849581b
Christian Brabandt <cb@256bit.org>
parents:
7176
diff
changeset
|
693 |
873eae260c97
commit https://github.com/vim/vim/commit/b4ff518d95aa57c2f8c0568c915035bef849581b
Christian Brabandt <cb@256bit.org>
parents:
7176
diff
changeset
|
694 " Delete shell folding commands {{{1 |
873eae260c97
commit https://github.com/vim/vim/commit/b4ff518d95aa57c2f8c0568c915035bef849581b
Christian Brabandt <cb@256bit.org>
parents:
7176
diff
changeset
|
695 " ============================= |
873eae260c97
commit https://github.com/vim/vim/commit/b4ff518d95aa57c2f8c0568c915035bef849581b
Christian Brabandt <cb@256bit.org>
parents:
7176
diff
changeset
|
696 delc ShFoldFunctions |
873eae260c97
commit https://github.com/vim/vim/commit/b4ff518d95aa57c2f8c0568c915035bef849581b
Christian Brabandt <cb@256bit.org>
parents:
7176
diff
changeset
|
697 delc ShFoldHereDoc |
873eae260c97
commit https://github.com/vim/vim/commit/b4ff518d95aa57c2f8c0568c915035bef849581b
Christian Brabandt <cb@256bit.org>
parents:
7176
diff
changeset
|
698 delc ShFoldIfDoFor |
7 | 699 |
22 | 700 " Set Current Syntax: {{{1 |
701 " =================== | |
7 | 702 if exists("b:is_bash") |
703 let b:current_syntax = "bash" | |
704 elseif exists("b:is_kornshell") | |
705 let b:current_syntax = "ksh" | |
706 else | |
707 let b:current_syntax = "sh" | |
708 endif | |
709 | |
22 | 710 " vim: ts=16 fdm=marker |