Mercurial > vim
annotate runtime/syntax/sh.vim @ 9027:773d627cac0b v7.4.1799
commit https://github.com/vim/vim/commit/61be73bb0f965a895bfb064ea3e55476ac175162
Author: Bram Moolenaar <Bram@vim.org>
Date: Fri Apr 29 22:59:22 2016 +0200
patch 7.4.1799
Problem: 'guicolors' is a confusing option name.
Solution: Use 'termguicolors' instead. (Hirohito Higashi)
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Fri, 29 Apr 2016 23:00:07 +0200 |
parents | 47f17f66da3d |
children | 9305a1251e51 |
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> |
8876
47f17f66da3d
commit https://github.com/vim/vim/commit/03413f44167c4b5cd0012def9bb331e2518c83cf
Christian Brabandt <cb@256bit.org>
parents:
8795
diff
changeset
|
5 " Last Change: Apr 11, 2016 |
47f17f66da3d
commit https://github.com/vim/vim/commit/03413f44167c4b5cd0012def9bb331e2518c83cf
Christian Brabandt <cb@256bit.org>
parents:
8795
diff
changeset
|
6 " Version: 147 |
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 " ==================== |
8795
aba2d0a01290
commit https://github.com/vim/vim/commit/7db8f6f4f85e5d0526d23107b2a5e2334dc23354
Christian Brabandt <cb@256bit.org>
parents:
8246
diff
changeset
|
188 syn match shOption "\s\zs[-+][-_a-zA-Z#@]\+" |
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 "================================ | |
8795
aba2d0a01290
commit https://github.com/vim/vim/commit/7db8f6f4f85e5d0526d23107b2a5e2334dc23354
Christian Brabandt <cb@256bit.org>
parents:
8246
diff
changeset
|
320 syn match shNumber "\<\d\+\>#\=" |
aba2d0a01290
commit https://github.com/vim/vim/commit/7db8f6f4f85e5d0526d23107b2a5e2334dc23354
Christian Brabandt <cb@256bit.org>
parents:
8246
diff
changeset
|
321 syn match shNumber "-\=\.\=\d\+\>#\=" |
1121 | 322 syn match shCtrlSeq "\\\d\d\d\|\\[abcfnrtv0]" contained |
167 | 323 if exists("b:is_bash") |
2034 | 324 syn match shSpecial "\\\o\o\o\|\\x\x\x\|\\c[^"]\|\\[abefnrtv]" contained |
167 | 325 endif |
326 if exists("b:is_bash") | |
2473
d55e70cabe2c
Syntax file updates. (Charles Campbell)
Bram Moolenaar <bram@vim.org>
parents:
2357
diff
changeset
|
327 syn region shExSingleQuote matchgroup=shQuote start=+\$'+ skip=+\\\\\|\\.+ end=+'+ contains=shStringSpecial,shSpecial |
2497 | 328 syn region shExDoubleQuote matchgroup=shQuote start=+\$"+ skip=+\\\\\|\\.\|\\"+ end=+"+ contains=@shDblQuoteList,shStringSpecial,shSpecial |
3281 | 329 elseif !exists("g:sh_no_error") |
1121 | 330 syn region shExSingleQuote matchGroup=Error start=+\$'+ skip=+\\\\\|\\.+ end=+'+ contains=shStringSpecial |
2497 | 331 syn region shExDoubleQuote matchGroup=Error start=+\$"+ skip=+\\\\\|\\.+ end=+"+ contains=shStringSpecial |
167 | 332 endif |
2473
d55e70cabe2c
Syntax file updates. (Charles Campbell)
Bram Moolenaar <bram@vim.org>
parents:
2357
diff
changeset
|
333 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
|
334 syn region shDoubleQuote matchgroup=shQuote start=+\%(\%(\\\\\)*\\\)\@<!"+ skip=+\\"+ end=+"+ contains=@shDblQuoteList,shStringSpecial,@Spell |
6840 | 335 syn match shStringSpecial "[^[:print:] \t]" contained |
1201 | 336 syn match shStringSpecial "\%(\\\\\)*\\[\\"'`$()#]" |
7176
30042ddff503
commit https://github.com/vim/vim/commit/60cce2fb736c8ff6fdb9603f502d3c15f1f7a25d
Christian Brabandt <cb@256bit.org>
parents:
6840
diff
changeset
|
337 syn match shSpecial "[^\\]\zs\%(\\\\\)*\\[\\"'`$()#]" |
30042ddff503
commit https://github.com/vim/vim/commit/60cce2fb736c8ff6fdb9603f502d3c15f1f7a25d
Christian Brabandt <cb@256bit.org>
parents:
6840
diff
changeset
|
338 syn match shSpecial "^\%(\\\\\)*\\[\\"'`$()#]" |
6840 | 339 syn match shMoreSpecial "\%(\\\\\)*\\[\\"'`$()#]" nextgroup=shMoreSpecial contained |
7 | 340 |
22 | 341 " Comments: {{{1 |
342 "========== | |
2034 | 343 syn cluster shCommentGroup contains=shTodo,@Spell |
344 syn keyword shTodo contained COMBAK FIXME TODO XXX | |
345 syn match shComment "^\s*\zs#.*$" contains=@shCommentGroup | |
346 syn match shComment "\s\zs#.*$" contains=@shCommentGroup | |
3920 | 347 syn match shComment contained "#.*$" contains=@shCommentGroup |
2034 | 348 syn match shQuickComment contained "#.*$" |
7 | 349 |
22 | 350 " Here Documents: {{{1 |
351 " ========================================= | |
7 | 352 if version < 600 |
6840 | 353 syn region shHereDoc matchgroup=shHereDoc01 start="<<\s*\**END[a-zA-Z_0-9]*\**" matchgroup=shHereDoc01 end="^END[a-zA-Z_0-9]*$" contains=@shDblQuoteList |
354 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 | |
355 syn region shHereDoc matchgroup=shHereDoc03 start="<<\s*\**EOF\**" matchgroup=shHereDoc03 end="^EOF$" contains=@shDblQuoteList | |
356 syn region shHereDoc matchgroup=shHereDoc04 start="<<-\s*\**EOF\**" matchgroup=shHereDoc04 end="^\s*EOF$" contains=@shDblQuoteList | |
357 syn region shHereDoc matchgroup=shHereDoc05 start="<<\s*\**\.\**" matchgroup=shHereDoc05 end="^\.$" contains=@shDblQuoteList | |
358 syn region shHereDoc matchgroup=shHereDoc06 start="<<-\s*\**\.\**" matchgroup=shHereDoc06 end="^\s*\.$" contains=@shDblQuoteList | |
7 | 359 |
360 else | |
7228
873eae260c97
commit https://github.com/vim/vim/commit/b4ff518d95aa57c2f8c0568c915035bef849581b
Christian Brabandt <cb@256bit.org>
parents:
7176
diff
changeset
|
361 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
|
362 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
|
363 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
|
364 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
|
365 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
|
366 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
|
367 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
|
368 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
|
369 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
|
370 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
|
371 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
|
372 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
|
373 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
|
374 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
|
375 ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc21 start="<<-\s*\\\z([^ \t|]\+\)" matchgroup=shHereDoc21 end="^\s*\z1\s*$" |
7 | 376 endif |
377 | |
22 | 378 " Here Strings: {{{1 |
379 " ============= | |
3099
887d6d91882e
Updated a few runtime files.
Bram Moolenaar <bram@vim.org>
parents:
2751
diff
changeset
|
380 " 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
|
381 if exists("b:is_bash") || (exists("b:is_kornshell") && !exists("g:is_posix")) |
3920 | 382 syn match shRedir "<<<" skipwhite nextgroup=shCmdParenRegion |
22 | 383 endif |
384 | |
385 " Identifiers: {{{1 | |
386 "============= | |
1668 | 387 syn match shSetOption "\s\zs[-+][a-zA-Z0-9]\+\>" contained |
6840 | 388 syn match shVariable "\<\([bwglsav]:\)\=[a-zA-Z0-9.!@_%+,]*\ze=" nextgroup=shVarAssign |
389 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
|
390 syn region shAtExpr contained start="@(" end=")" contains=@shIdList |
7 | 391 if exists("b:is_bash") |
5138
0d4e0cde36e1
A few updated runtime files.
Bram Moolenaar <bram@vim.org>
parents:
4229
diff
changeset
|
392 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
|
393 syn region shSetList oneline matchgroup=shSet start="\<set\>\ze[^/]" end="\ze[;|)]\|$" matchgroup=shSetListDelim end="\ze[}|);&]" matchgroup=NONE end="\ze\s\+=" contains=@shIdList |
7 | 394 elseif exists("b:is_kornshell") |
5138
0d4e0cde36e1
A few updated runtime files.
Bram Moolenaar <bram@vim.org>
parents:
4229
diff
changeset
|
395 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
|
396 syn region shSetList oneline matchgroup=shSet start="\<set\>\ze[^/]" end="$" matchgroup=shSetListDelim end="\ze[}|);&]" matchgroup=NONE end="\ze\s\+[#=]" contains=@shIdList |
7 | 397 else |
5138
0d4e0cde36e1
A few updated runtime files.
Bram Moolenaar <bram@vim.org>
parents:
4229
diff
changeset
|
398 syn region shSetList oneline matchgroup=shSet start="\<\(set\|export\|unset\)\>\ze[^/]" end="$" matchgroup=shSetListDelim end="\ze[}|);&]" matchgroup=NONE end="\ze\s\+[#=]" contains=@shIdList |
7 | 399 endif |
400 | |
22 | 401 " Functions: {{{1 |
1668 | 402 if !exists("g:is_posix") |
403 syn keyword shFunctionKey function skipwhite skipnl nextgroup=shFunctionTwo | |
404 endif | |
405 | |
406 if exists("b:is_bash") | |
7228
873eae260c97
commit https://github.com/vim/vim/commit/b4ff518d95aa57c2f8c0568c915035bef849581b
Christian Brabandt <cb@256bit.org>
parents:
7176
diff
changeset
|
407 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
|
408 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
|
409 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
|
410 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 | 411 else |
7228
873eae260c97
commit https://github.com/vim/vim/commit/b4ff518d95aa57c2f8c0568c915035bef849581b
Christian Brabandt <cb@256bit.org>
parents:
7176
diff
changeset
|
412 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
|
413 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
|
414 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
|
415 ShFoldFunctions syn region shFunctionFour matchgroup=shFunction start="\<[^d][^o]\&\h\w*\s*\%(()\)\=\_s*(" end=")" contains=shFunctionKey,@shFunctionList contained skipwhite skipnl nextgroup=shFunctionStart,shQuickComment |
7 | 416 endif |
417 | |
22 | 418 " Parameter Dereferencing: {{{1 |
419 " ======================== | |
3281 | 420 if !exists("g:sh_no_error") |
421 syn match shDerefWordError "[^}$[]" contained | |
422 endif | |
7245
8896150aba23
commit https://github.com/vim/vim/commit/e392eb41f8dfc01bd13634e534ac6b4d505326f4
Christian Brabandt <cb@256bit.org>
parents:
7228
diff
changeset
|
423 syn match shDerefSimple "\$\%(\k\+\|\d\)" |
7228
873eae260c97
commit https://github.com/vim/vim/commit/b4ff518d95aa57c2f8c0568c915035bef849581b
Christian Brabandt <cb@256bit.org>
parents:
7176
diff
changeset
|
424 syn region shDeref matchgroup=PreProc start="\${" end="}" contains=@shDerefList,shDerefVarArray |
7 | 425 syn match shDerefSimple "\$[-#*@!?]" |
426 syn match shDerefSimple "\$\$" | |
427 if exists("b:is_bash") || exists("b:is_kornshell") | |
428 syn region shDeref matchgroup=PreProc start="\${##\=" end="}" contains=@shDerefList | |
1668 | 429 syn region shDeref matchgroup=PreProc start="\${\$\$" end="}" contains=@shDerefList |
7 | 430 endif |
431 | |
7228
873eae260c97
commit https://github.com/vim/vim/commit/b4ff518d95aa57c2f8c0568c915035bef849581b
Christian Brabandt <cb@256bit.org>
parents:
7176
diff
changeset
|
432 " 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
|
433 " ======================================== |
873eae260c97
commit https://github.com/vim/vim/commit/b4ff518d95aa57c2f8c0568c915035bef849581b
Christian Brabandt <cb@256bit.org>
parents:
7176
diff
changeset
|
434 if exists("b:is_kornshell") |
873eae260c97
commit https://github.com/vim/vim/commit/b4ff518d95aa57c2f8c0568c915035bef849581b
Christian Brabandt <cb@256bit.org>
parents:
7176
diff
changeset
|
435 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
|
436 endif |
873eae260c97
commit https://github.com/vim/vim/commit/b4ff518d95aa57c2f8c0568c915035bef849581b
Christian Brabandt <cb@256bit.org>
parents:
7176
diff
changeset
|
437 |
22 | 438 " bash: ${!prefix*} and ${#parameter}: {{{1 |
439 " ==================================== | |
7 | 440 if exists("b:is_bash") |
441 syn region shDeref matchgroup=PreProc start="\${!" end="\*\=}" contains=@shDerefList,shDerefOp | |
3920 | 442 syn match shDerefVar contained "{\@<=!\k\+" nextgroup=@shDerefVarList |
7 | 443 endif |
7228
873eae260c97
commit https://github.com/vim/vim/commit/b4ff518d95aa57c2f8c0568c915035bef849581b
Christian Brabandt <cb@256bit.org>
parents:
7176
diff
changeset
|
444 if exists("b:is_kornshell") |
873eae260c97
commit https://github.com/vim/vim/commit/b4ff518d95aa57c2f8c0568c915035bef849581b
Christian Brabandt <cb@256bit.org>
parents:
7176
diff
changeset
|
445 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
|
446 endif |
7 | 447 |
448 syn match shDerefSpecial contained "{\@<=[-*@?0]" nextgroup=shDerefOp,shDerefOpError | |
449 syn match shDerefSpecial contained "\({[#!]\)\@<=[[:alnum:]*@_]\+" nextgroup=@shDerefVarList,shDerefOp | |
3920 | 450 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
|
451 if exists("b:is_kornshell") |
873eae260c97
commit https://github.com/vim/vim/commit/b4ff518d95aa57c2f8c0568c915035bef849581b
Christian Brabandt <cb@256bit.org>
parents:
7176
diff
changeset
|
452 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
|
453 endif |
7 | 454 |
22 | 455 " sh ksh bash : ${var[... ]...} array reference: {{{1 |
6479 | 456 syn region shDerefVarArray contained matchgroup=shDeref start="\[" end="]" contains=@shCommandSubList nextgroup=shDerefOp,shDerefOpError |
7 | 457 |
22 | 458 " Special ${parameter OPERATOR word} handling: {{{1 |
6479 | 459 " sh ksh bash : ${parameter:-word} word is default value |
460 " sh ksh bash : ${parameter:=word} assign word as default value | |
461 " sh ksh bash : ${parameter:?word} display word if parameter is null | |
462 " sh ksh bash : ${parameter:+word} use word if parameter is not null, otherwise nothing | |
463 " ksh bash : ${parameter#pattern} remove small left pattern | |
464 " ksh bash : ${parameter##pattern} remove large left pattern | |
465 " ksh bash : ${parameter%pattern} remove small right pattern | |
466 " ksh bash : ${parameter%%pattern} remove large right pattern | |
467 " bash : ${parameter^pattern} Case modification | |
468 " bash : ${parameter^^pattern} Case modification | |
469 " bash : ${parameter,pattern} Case modification | |
470 " bash : ${parameter,,pattern} Case modification | |
7 | 471 syn cluster shDerefPatternList contains=shDerefPattern,shDerefString |
3281 | 472 if !exists("g:sh_no_error") |
473 syn match shDerefOpError contained ":[[:punct:]]" | |
474 endif | |
7 | 475 syn match shDerefOp contained ":\=[-=?]" nextgroup=@shDerefPatternList |
476 syn match shDerefOp contained ":\=+" nextgroup=@shDerefPatternList | |
477 if exists("b:is_bash") || exists("b:is_kornshell") | |
478 syn match shDerefOp contained "#\{1,2}" nextgroup=@shDerefPatternList | |
479 syn match shDerefOp contained "%\{1,2}" nextgroup=@shDerefPatternList | |
482 | 480 syn match shDerefPattern contained "[^{}]\+" contains=shDeref,shDerefSimple,shDerefPattern,shDerefString,shCommandSub,shDerefEscape nextgroup=shDerefPattern |
7 | 481 syn region shDerefPattern contained start="{" end="}" contains=shDeref,shDerefSimple,shDerefString,shCommandSub nextgroup=shDerefPattern |
482 | 482 syn match shDerefEscape contained '\%(\\\\\)*\\.' |
7 | 483 endif |
3099
887d6d91882e
Updated a few runtime files.
Bram Moolenaar <bram@vim.org>
parents:
2751
diff
changeset
|
484 if exists("b:is_bash") |
887d6d91882e
Updated a few runtime files.
Bram Moolenaar <bram@vim.org>
parents:
2751
diff
changeset
|
485 syn match shDerefOp contained "[,^]\{1,2}" nextgroup=@shDerefPatternList |
887d6d91882e
Updated a few runtime files.
Bram Moolenaar <bram@vim.org>
parents:
2751
diff
changeset
|
486 endif |
2473
d55e70cabe2c
Syntax file updates. (Charles Campbell)
Bram Moolenaar <bram@vim.org>
parents:
2357
diff
changeset
|
487 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
|
488 syn region shDerefString contained matchgroup=shDerefDelim start=+\%(\\\)\@<!"+ skip=+\\"+ end=+"+ contains=@shDblQuoteList,shStringSpecial |
1668 | 489 syn match shDerefString contained "\\["']" nextgroup=shDerefPattern |
7 | 490 |
491 if exists("b:is_bash") | |
482 | 492 " bash : ${parameter:offset} |
493 " bash : ${parameter:offset:length} | |
7 | 494 syn region shDerefOp contained start=":[$[:alnum:]_]"me=e-1 end=":"me=e-1 end="}"me=e-1 contains=@shCommandSubList nextgroup=shDerefPOL |
482 | 495 syn match shDerefPOL contained ":[^}]\+" contains=@shCommandSubList |
496 | |
497 " bash : ${parameter//pattern/string} | |
498 " bash : ${parameter//pattern} | |
499 syn match shDerefPPS contained '/\{1,2}' nextgroup=shDerefPPSleft | |
3920 | 500 syn region shDerefPPSleft contained start='.' skip=@\%(\\\\\)*\\/@ matchgroup=shDerefOp end='/' end='\ze}' nextgroup=shDerefPPSright contains=@shCommandSubList |
501 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
|
502 |
502ca0a62fd8
commit https://github.com/vim/vim/commit/acb4f221c715a333f4c49a2235a8006c6ac6e4d5
Christian Brabandt <cb@256bit.org>
parents:
7245
diff
changeset
|
503 " bash : ${parameter/#substring/replacement} |
502ca0a62fd8
commit https://github.com/vim/vim/commit/acb4f221c715a333f4c49a2235a8006c6ac6e4d5
Christian Brabandt <cb@256bit.org>
parents:
7245
diff
changeset
|
504 syn match shDerefPSR contained '/#' nextgroup=shDerefPSRleft |
502ca0a62fd8
commit https://github.com/vim/vim/commit/acb4f221c715a333f4c49a2235a8006c6ac6e4d5
Christian Brabandt <cb@256bit.org>
parents:
7245
diff
changeset
|
505 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
|
506 syn region shDerefPSRright contained start='.' skip=@\%(\\\\\)\+@ end='\ze}' |
7 | 507 endif |
508 | |
1668 | 509 " Arithmetic Parenthesized Expressions: {{{1 |
5138
0d4e0cde36e1
A few updated runtime files.
Bram Moolenaar <bram@vim.org>
parents:
4229
diff
changeset
|
510 "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
|
511 syn region shParen matchgroup=shArithRegion start='\$\@!(\%(\ze[^(]\|$\)' end=')' contains=@shArithParenList |
1668 | 512 |
22 | 513 " Useful sh Keywords: {{{1 |
514 " =================== | |
7 | 515 syn keyword shStatement break cd chdir continue eval exec exit kill newgrp pwd read readonly return shift test trap ulimit umask wait |
516 syn keyword shConditional contained elif else then | |
3281 | 517 if !exists("g:sh_no_error") |
518 syn keyword shCondError elif else then | |
519 endif | |
7 | 520 |
22 | 521 " Useful ksh Keywords: {{{1 |
522 " ==================== | |
7 | 523 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
|
524 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 | 525 if exists("g:is_posix") |
526 syn keyword shStatement command | |
527 else | |
528 syn keyword shStatement time | |
529 endif | |
7 | 530 |
22 | 531 " Useful bash Keywords: {{{1 |
532 " ===================== | |
7 | 533 if exists("b:is_bash") |
534 syn keyword shStatement bind builtin dirs disown enable help local logout popd pushd shopt source | |
535 else | |
536 syn keyword shStatement login newgrp | |
537 endif | |
538 endif | |
539 | |
22 | 540 " Synchronization: {{{1 |
541 " ================ | |
8876
47f17f66da3d
commit https://github.com/vim/vim/commit/03413f44167c4b5cd0012def9bb331e2518c83cf
Christian Brabandt <cb@256bit.org>
parents:
8795
diff
changeset
|
542 if !exists("g:sh_minlines") |
47f17f66da3d
commit https://github.com/vim/vim/commit/03413f44167c4b5cd0012def9bb331e2518c83cf
Christian Brabandt <cb@256bit.org>
parents:
8795
diff
changeset
|
543 let s:sh_minlines = 200 |
47f17f66da3d
commit https://github.com/vim/vim/commit/03413f44167c4b5cd0012def9bb331e2518c83cf
Christian Brabandt <cb@256bit.org>
parents:
8795
diff
changeset
|
544 else |
47f17f66da3d
commit https://github.com/vim/vim/commit/03413f44167c4b5cd0012def9bb331e2518c83cf
Christian Brabandt <cb@256bit.org>
parents:
8795
diff
changeset
|
545 let s:sh_minlines= g:sh_minlines |
7 | 546 endif |
8876
47f17f66da3d
commit https://github.com/vim/vim/commit/03413f44167c4b5cd0012def9bb331e2518c83cf
Christian Brabandt <cb@256bit.org>
parents:
8795
diff
changeset
|
547 if !exists("g:sh_maxlines") |
47f17f66da3d
commit https://github.com/vim/vim/commit/03413f44167c4b5cd0012def9bb331e2518c83cf
Christian Brabandt <cb@256bit.org>
parents:
8795
diff
changeset
|
548 let s:sh_maxlines = 2*s:sh_minlines |
47f17f66da3d
commit https://github.com/vim/vim/commit/03413f44167c4b5cd0012def9bb331e2518c83cf
Christian Brabandt <cb@256bit.org>
parents:
8795
diff
changeset
|
549 if s:sh_maxlines < 25 |
47f17f66da3d
commit https://github.com/vim/vim/commit/03413f44167c4b5cd0012def9bb331e2518c83cf
Christian Brabandt <cb@256bit.org>
parents:
8795
diff
changeset
|
550 let s:sh_maxlines= 25 |
47f17f66da3d
commit https://github.com/vim/vim/commit/03413f44167c4b5cd0012def9bb331e2518c83cf
Christian Brabandt <cb@256bit.org>
parents:
8795
diff
changeset
|
551 endif |
47f17f66da3d
commit https://github.com/vim/vim/commit/03413f44167c4b5cd0012def9bb331e2518c83cf
Christian Brabandt <cb@256bit.org>
parents:
8795
diff
changeset
|
552 else |
47f17f66da3d
commit https://github.com/vim/vim/commit/03413f44167c4b5cd0012def9bb331e2518c83cf
Christian Brabandt <cb@256bit.org>
parents:
8795
diff
changeset
|
553 let s:sh_maxlines= g:sh_maxlines |
7 | 554 endif |
8876
47f17f66da3d
commit https://github.com/vim/vim/commit/03413f44167c4b5cd0012def9bb331e2518c83cf
Christian Brabandt <cb@256bit.org>
parents:
8795
diff
changeset
|
555 exec "syn sync minlines=" . s:sh_minlines . " maxlines=" . s:sh_maxlines |
7 | 556 syn sync match shCaseEsacSync grouphere shCaseEsac "\<case\>" |
557 syn sync match shCaseEsacSync groupthere shCaseEsac "\<esac\>" | |
558 syn sync match shDoSync grouphere shDo "\<do\>" | |
559 syn sync match shDoSync groupthere shDo "\<done\>" | |
560 syn sync match shForSync grouphere shFor "\<for\>" | |
561 syn sync match shForSync groupthere shFor "\<in\>" | |
562 syn sync match shIfSync grouphere shIf "\<if\>" | |
563 syn sync match shIfSync groupthere shIf "\<fi\>" | |
564 syn sync match shUntilSync grouphere shRepeat "\<until\>" | |
565 syn sync match shWhileSync grouphere shRepeat "\<while\>" | |
566 | |
22 | 567 " Default Highlighting: {{{1 |
568 " ===================== | |
7 | 569 hi def link shArithRegion shShellVariables |
5138
0d4e0cde36e1
A few updated runtime files.
Bram Moolenaar <bram@vim.org>
parents:
4229
diff
changeset
|
570 hi def link shAtExpr shSetList |
167 | 571 hi def link shBeginHere shRedir |
7 | 572 hi def link shCaseBar shConditional |
573 hi def link shCaseCommandSub shCommandSub | |
574 hi def link shCaseDoubleQuote shDoubleQuote | |
167 | 575 hi def link shCaseIn shConditional |
2473
d55e70cabe2c
Syntax file updates. (Charles Campbell)
Bram Moolenaar <bram@vim.org>
parents:
2357
diff
changeset
|
576 hi def link shQuote shOperator |
7 | 577 hi def link shCaseSingleQuote shSingleQuote |
578 hi def link shCaseStart shConditional | |
579 hi def link shCmdSubRegion shShellVariables | |
2034 | 580 hi def link shColon shComment |
167 | 581 hi def link shDerefOp shOperator |
582 hi def link shDerefPOL shDerefOp | |
482 | 583 hi def link shDerefPPS shDerefOp |
7557
502ca0a62fd8
commit https://github.com/vim/vim/commit/acb4f221c715a333f4c49a2235a8006c6ac6e4d5
Christian Brabandt <cb@256bit.org>
parents:
7245
diff
changeset
|
584 hi def link shDerefPSR shDerefOp |
7 | 585 hi def link shDeref shShellVariables |
2473
d55e70cabe2c
Syntax file updates. (Charles Campbell)
Bram Moolenaar <bram@vim.org>
parents:
2357
diff
changeset
|
586 hi def link shDerefDelim shOperator |
7 | 587 hi def link shDerefSimple shDeref |
588 hi def link shDerefSpecial shDeref | |
589 hi def link shDerefString shDoubleQuote | |
167 | 590 hi def link shDerefVar shDeref |
7 | 591 hi def link shDoubleQuote shString |
592 hi def link shEcho shString | |
2473
d55e70cabe2c
Syntax file updates. (Charles Campbell)
Bram Moolenaar <bram@vim.org>
parents:
2357
diff
changeset
|
593 hi def link shEchoDelim shOperator |
1668 | 594 hi def link shEchoQuote shString |
6744 | 595 hi def link shForPP shLoop |
7 | 596 hi def link shEmbeddedEcho shString |
1668 | 597 hi def link shEscape shCommandSub |
2497 | 598 hi def link shExDoubleQuote shDoubleQuote |
167 | 599 hi def link shExSingleQuote shSingleQuote |
1668 | 600 hi def link shFunction Function |
7 | 601 hi def link shHereDoc shString |
167 | 602 hi def link shHerePayload shHereDoc |
7 | 603 hi def link shLoop shStatement |
2034 | 604 hi def link shMoreSpecial shSpecial |
7228
873eae260c97
commit https://github.com/vim/vim/commit/b4ff518d95aa57c2f8c0568c915035bef849581b
Christian Brabandt <cb@256bit.org>
parents:
7176
diff
changeset
|
605 hi def link shNoQuote shDoubleQuote |
7 | 606 hi def link shOption shCommandSub |
607 hi def link shPattern shString | |
1668 | 608 hi def link shParen shArithmetic |
7 | 609 hi def link shPosnParm shShellVariables |
1668 | 610 hi def link shQuickComment shComment |
7 | 611 hi def link shRange shOperator |
612 hi def link shRedir shOperator | |
2473
d55e70cabe2c
Syntax file updates. (Charles Campbell)
Bram Moolenaar <bram@vim.org>
parents:
2357
diff
changeset
|
613 hi def link shSetListDelim shOperator |
1668 | 614 hi def link shSetOption shOption |
7 | 615 hi def link shSingleQuote shString |
616 hi def link shSource shOperator | |
617 hi def link shStringSpecial shSpecial | |
618 hi def link shSubShRegion shOperator | |
619 hi def link shTestOpr shConditional | |
1121 | 620 hi def link shTestPattern shString |
621 hi def link shTestDoubleQuote shString | |
622 hi def link shTestSingleQuote shString | |
7228
873eae260c97
commit https://github.com/vim/vim/commit/b4ff518d95aa57c2f8c0568c915035bef849581b
Christian Brabandt <cb@256bit.org>
parents:
7176
diff
changeset
|
623 hi def link shTouchCmd shStatement |
7 | 624 hi def link shVariable shSetList |
625 hi def link shWrapLineOperator shOperator | |
626 | |
627 if exists("b:is_bash") | |
628 hi def link bashAdminStatement shStatement | |
629 hi def link bashSpecialVariables shShellVariables | |
630 hi def link bashStatement shStatement | |
199 | 631 hi def link shFunctionParen Delimiter |
632 hi def link shFunctionDelim Delimiter | |
3920 | 633 hi def link shCharClass shSpecial |
7 | 634 endif |
635 if exists("b:is_kornshell") | |
636 hi def link kshSpecialVariables shShellVariables | |
637 hi def link kshStatement shStatement | |
199 | 638 hi def link shFunctionParen Delimiter |
7 | 639 endif |
640 | |
3281 | 641 if !exists("g:sh_no_error") |
642 hi def link shCaseError Error | |
643 hi def link shCondError Error | |
644 hi def link shCurlyError Error | |
645 hi def link shDerefError Error | |
646 hi def link shDerefOpError Error | |
647 hi def link shDerefWordError Error | |
648 hi def link shDoError Error | |
649 hi def link shEsacError Error | |
650 hi def link shIfError Error | |
651 hi def link shInError Error | |
652 hi def link shParenError Error | |
653 hi def link shTestError Error | |
654 if exists("b:is_kornshell") | |
655 hi def link shDTestError Error | |
656 endif | |
7 | 657 endif |
658 | |
659 hi def link shArithmetic Special | |
660 hi def link shCharClass Identifier | |
661 hi def link shSnglCase Statement | |
662 hi def link shCommandSub Special | |
663 hi def link shComment Comment | |
664 hi def link shConditional Conditional | |
1121 | 665 hi def link shCtrlSeq Special |
7 | 666 hi def link shExprRegion Delimiter |
199 | 667 hi def link shFunctionKey Function |
7 | 668 hi def link shFunctionName Function |
669 hi def link shNumber Number | |
670 hi def link shOperator Operator | |
671 hi def link shRepeat Repeat | |
672 hi def link shSet Statement | |
673 hi def link shSetList Identifier | |
674 hi def link shShellVariables PreProc | |
675 hi def link shSpecial Special | |
676 hi def link shStatement Statement | |
677 hi def link shString String | |
678 hi def link shTodo Todo | |
679 hi def link shAlias Identifier | |
6840 | 680 hi def link shHereDoc01 shRedir |
681 hi def link shHereDoc02 shRedir | |
682 hi def link shHereDoc03 shRedir | |
683 hi def link shHereDoc04 shRedir | |
684 hi def link shHereDoc05 shRedir | |
685 hi def link shHereDoc06 shRedir | |
686 hi def link shHereDoc07 shRedir | |
687 hi def link shHereDoc08 shRedir | |
688 hi def link shHereDoc09 shRedir | |
689 hi def link shHereDoc10 shRedir | |
690 hi def link shHereDoc11 shRedir | |
691 hi def link shHereDoc12 shRedir | |
692 hi def link shHereDoc13 shRedir | |
693 hi def link shHereDoc14 shRedir | |
694 hi def link shHereDoc15 shRedir | |
695 hi def link shHereDoc16 shRedir | |
696 hi def link shHereDoc17 shRedir | |
697 hi def link shHereDoc18 shRedir | |
698 hi def link shHereDoc19 shRedir | |
699 hi def link shHereDoc20 shRedir | |
700 hi def link shHereDoc21 shRedir | |
7228
873eae260c97
commit https://github.com/vim/vim/commit/b4ff518d95aa57c2f8c0568c915035bef849581b
Christian Brabandt <cb@256bit.org>
parents:
7176
diff
changeset
|
701 |
873eae260c97
commit https://github.com/vim/vim/commit/b4ff518d95aa57c2f8c0568c915035bef849581b
Christian Brabandt <cb@256bit.org>
parents:
7176
diff
changeset
|
702 " Delete shell folding commands {{{1 |
873eae260c97
commit https://github.com/vim/vim/commit/b4ff518d95aa57c2f8c0568c915035bef849581b
Christian Brabandt <cb@256bit.org>
parents:
7176
diff
changeset
|
703 " ============================= |
873eae260c97
commit https://github.com/vim/vim/commit/b4ff518d95aa57c2f8c0568c915035bef849581b
Christian Brabandt <cb@256bit.org>
parents:
7176
diff
changeset
|
704 delc ShFoldFunctions |
873eae260c97
commit https://github.com/vim/vim/commit/b4ff518d95aa57c2f8c0568c915035bef849581b
Christian Brabandt <cb@256bit.org>
parents:
7176
diff
changeset
|
705 delc ShFoldHereDoc |
873eae260c97
commit https://github.com/vim/vim/commit/b4ff518d95aa57c2f8c0568c915035bef849581b
Christian Brabandt <cb@256bit.org>
parents:
7176
diff
changeset
|
706 delc ShFoldIfDoFor |
7 | 707 |
22 | 708 " Set Current Syntax: {{{1 |
709 " =================== | |
7 | 710 if exists("b:is_bash") |
711 let b:current_syntax = "bash" | |
712 elseif exists("b:is_kornshell") | |
713 let b:current_syntax = "ksh" | |
714 else | |
715 let b:current_syntax = "sh" | |
716 endif | |
717 | |
22 | 718 " vim: ts=16 fdm=marker |