Mercurial > vim
annotate runtime/syntax/awk.vim @ 29338:f4f531986753 v9.0.0012
patch 9.0.0012: signature files not detected properly
Commit: https://github.com/vim/vim/commit/cdbfc6dbab1d63aa56af316d6b13e37939e7f7a8
Author: Bram Moolenaar <Bram@vim.org>
Date: Thu Jun 30 16:25:21 2022 +0100
patch 9.0.0012: signature files not detected properly
Problem: Signature files not detected properly.
Solution: Add a function to better detect signature files. (Doug Kearns)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Thu, 30 Jun 2022 17:30:06 +0200 |
parents | 8dad79c661d1 |
children | 65921ec26072 |
rev | line source |
---|---|
7 | 1 " Vim syntax file |
22824 | 2 " Language: awk, nawk, gawk, mawk |
3 " Maintainer: Doug Kearns <dougkearns@gmail.com> | |
4 " Previous Maintainer: Antonio Colombo <azc100@gmail.com> | |
5 " Last Change: 2020 Aug 18 | |
7 | 6 |
9533
9f921133ee90
commit https://github.com/vim/vim/commit/269f595f9eef584937e7eae70fde68cdd7da5bcf
Christian Brabandt <cb@256bit.org>
parents:
6530
diff
changeset
|
7 " AWK ref. is: Alfred V. Aho, Brian W. Kernighan, Peter J. Weinberger |
7 | 8 " The AWK Programming Language, Addison-Wesley, 1988 |
9 | |
10 " GAWK ref. is: Arnold D. Robbins | |
11 " Effective AWK Programming, Third Edition, O'Reilly, 2001 | |
6530 | 12 " Effective AWK Programming, Fourth Edition, O'Reilly, 2015 |
19813 | 13 " (up-to-date version available with the gawk source distribution) |
7 | 14 |
15 " MAWK is a "new awk" meaning it implements AWK ref. | |
16 " mawk conforms to the Posix 1003.2 (draft 11.3) | |
17 " definition of the AWK language which contains a few features | |
18 " not described in the AWK book, and mawk provides a small number of extensions. | |
19 | |
20 " TODO: | |
21 " Dig into the commented out syntax expressions below. | |
22 | |
9533
9f921133ee90
commit https://github.com/vim/vim/commit/269f595f9eef584937e7eae70fde68cdd7da5bcf
Christian Brabandt <cb@256bit.org>
parents:
6530
diff
changeset
|
23 " Quit when a syntax file was already loaded |
9f921133ee90
commit https://github.com/vim/vim/commit/269f595f9eef584937e7eae70fde68cdd7da5bcf
Christian Brabandt <cb@256bit.org>
parents:
6530
diff
changeset
|
24 if exists("b:current_syntax") |
7 | 25 finish |
26 endif | |
27 | |
3312 | 28 let s:cpo_save = &cpo |
29 set cpo&vim | |
30 | |
21991 | 31 syn iskeyword @,48-57,_,192-255,@-@ |
32 | |
7 | 33 " A bunch of useful Awk keywords |
34 " AWK ref. p. 188 | |
35 syn keyword awkStatement break continue delete exit | |
36 syn keyword awkStatement function getline next | |
37 syn keyword awkStatement print printf return | |
9533
9f921133ee90
commit https://github.com/vim/vim/commit/269f595f9eef584937e7eae70fde68cdd7da5bcf
Christian Brabandt <cb@256bit.org>
parents:
6530
diff
changeset
|
38 " GAWK ref. Chapter 7-9 |
19813 | 39 syn keyword awkStatement case default switch nextfile |
9533
9f921133ee90
commit https://github.com/vim/vim/commit/269f595f9eef584937e7eae70fde68cdd7da5bcf
Christian Brabandt <cb@256bit.org>
parents:
6530
diff
changeset
|
40 syn keyword awkStatement func |
19813 | 41 " GAWK ref. Chapter 2.7, Including Other Files into Your Program |
42 " GAWK ref. Chapter 2.8, Loading Dynamic Extensions into Your Program | |
43 " GAWK ref. Chapter 15, Namespaces | |
44 " Directives | |
45 syn keyword awkStatement @include @load @namespace | |
6530 | 46 " |
47 " GAWK ref. Chapter 9, Functions | |
48 " Numeric Functions | |
19813 | 49 syn keyword awkFunction atan2 cos exp int log rand sin sqrt srand |
6530 | 50 " String Manipulation Functions |
19813 | 51 syn keyword awkFunction asort asorti gensub gsub index length match |
6530 | 52 syn keyword awkFunction patsplit split sprintf strtonum sub substr |
7 | 53 syn keyword awkFunction tolower toupper |
6530 | 54 " Input Output Functions |
55 syn keyword awkFunction close fflush system | |
56 " Time Functions | |
57 syn keyword awkFunction mktime strftime systime | |
58 " Bit Manipulation Functions | |
59 syn keyword awkFunction and compl lshift or rshift xor | |
19813 | 60 " Getting Type Information Functions |
9533
9f921133ee90
commit https://github.com/vim/vim/commit/269f595f9eef584937e7eae70fde68cdd7da5bcf
Christian Brabandt <cb@256bit.org>
parents:
6530
diff
changeset
|
61 syn keyword awkFunction isarray typeof |
6530 | 62 " String-Translation Functions |
63 syn keyword awkFunction bindtextdomain dcgettext dcngetext | |
7 | 64 |
65 syn keyword awkConditional if else | |
9533
9f921133ee90
commit https://github.com/vim/vim/commit/269f595f9eef584937e7eae70fde68cdd7da5bcf
Christian Brabandt <cb@256bit.org>
parents:
6530
diff
changeset
|
66 syn keyword awkRepeat while for do |
7 | 67 |
9533
9f921133ee90
commit https://github.com/vim/vim/commit/269f595f9eef584937e7eae70fde68cdd7da5bcf
Christian Brabandt <cb@256bit.org>
parents:
6530
diff
changeset
|
68 syn keyword awkTodo contained TODO |
7 | 69 |
9533
9f921133ee90
commit https://github.com/vim/vim/commit/269f595f9eef584937e7eae70fde68cdd7da5bcf
Christian Brabandt <cb@256bit.org>
parents:
6530
diff
changeset
|
70 syn keyword awkPatterns BEGIN END BEGINFILE ENDFILE |
6530 | 71 |
72 " GAWK ref. Chapter 7 | |
73 " Built-in Variables That Control awk | |
74 syn keyword awkVariables BINMODE CONVFMT FIELDWIDTHS FPAT FS | |
75 syn keyword awkVariables IGNORECASE LINT OFMT OFS ORS PREC | |
76 syn keyword awkVariables ROUNDMODE RS SUBSEP TEXTDOMAIN | |
77 " Built-in Variables That Convey Information | |
78 syn keyword awkVariables ARGC ARGV ARGIND ENVIRON ERRNO FILENAME | |
79 syn keyword awkVariables FNR NF FUNCTAB NR PROCINFO RLENGTH RSTART | |
80 syn keyword awkVariables RT SYMTAB | |
7 | 81 |
10140
b11ceef7116e
commit https://github.com/vim/vim/commit/64d8e25bf6efe5f18b032563521c3ce278c316ab
Christian Brabandt <cb@256bit.org>
parents:
9533
diff
changeset
|
82 " Arithmetic operators: +, and - take care of ++, and -- |
b11ceef7116e
commit https://github.com/vim/vim/commit/64d8e25bf6efe5f18b032563521c3ce278c316ab
Christian Brabandt <cb@256bit.org>
parents:
9533
diff
changeset
|
83 syn match awkOperator "+\|-\|\*\|/\|%\|=" |
b11ceef7116e
commit https://github.com/vim/vim/commit/64d8e25bf6efe5f18b032563521c3ce278c316ab
Christian Brabandt <cb@256bit.org>
parents:
9533
diff
changeset
|
84 syn match awkOperator "+=\|-=\|\*=\|/=\|%=" |
b11ceef7116e
commit https://github.com/vim/vim/commit/64d8e25bf6efe5f18b032563521c3ce278c316ab
Christian Brabandt <cb@256bit.org>
parents:
9533
diff
changeset
|
85 syn match awkOperator "\^\|\^=" |
7 | 86 |
87 " Octal format character. | |
88 syn match awkSpecialCharacter display contained "\\[0-7]\{1,3\}" | |
89 " Hex format character. | |
90 syn match awkSpecialCharacter display contained "\\x[0-9A-Fa-f]\+" | |
91 | |
92 syn match awkFieldVars "\$\d\+" | |
93 | |
9533
9f921133ee90
commit https://github.com/vim/vim/commit/269f595f9eef584937e7eae70fde68cdd7da5bcf
Christian Brabandt <cb@256bit.org>
parents:
6530
diff
changeset
|
94 " catch errors caused by wrong parenthesis |
9f921133ee90
commit https://github.com/vim/vim/commit/269f595f9eef584937e7eae70fde68cdd7da5bcf
Christian Brabandt <cb@256bit.org>
parents:
6530
diff
changeset
|
95 syn region awkParen transparent start="(" end=")" contains=ALLBUT,awkParenError,awkSpecialCharacter,awkArrayElement,awkArrayArray,awkTodo,awkRegExp,awkBrktRegExp,awkBrackets,awkCharClass,awkComment |
7 | 96 syn match awkParenError display ")" |
9533
9f921133ee90
commit https://github.com/vim/vim/commit/269f595f9eef584937e7eae70fde68cdd7da5bcf
Christian Brabandt <cb@256bit.org>
parents:
6530
diff
changeset
|
97 "syn match awkInParen display contained "[{}]" |
7 | 98 |
99 " 64 lines for complex &&'s, and ||'s in a big "if" | |
100 syn sync ccomment awkParen maxlines=64 | |
101 | |
102 " Search strings & Regular Expressions therein. | |
103 syn region awkSearch oneline start="^[ \t]*/"ms=e start="\(,\|!\=\~\)[ \t]*/"ms=e skip="\\\\\|\\/" end="/" contains=awkBrackets,awkRegExp,awkSpecialCharacter | |
104 syn region awkBrackets contained start="\[\^\]\="ms=s+2 start="\[[^\^]"ms=s+1 end="\]"me=e-1 contains=awkBrktRegExp,awkCharClass | |
105 syn region awkSearch oneline start="[ \t]*/"hs=e skip="\\\\\|\\/" end="/" contains=awkBrackets,awkRegExp,awkSpecialCharacter | |
106 | |
107 syn match awkCharClass contained "\[:[^:\]]*:\]" | |
108 syn match awkBrktRegExp contained "\\.\|.\-[^]]" | |
109 syn match awkRegExp contained "/\^"ms=s+1 | |
110 syn match awkRegExp contained "\$/"me=e-1 | |
111 syn match awkRegExp contained "[?.*{}|+]" | |
112 | |
113 " String and Character constants | |
114 " Highlight special characters (those which have a backslash) differently | |
3513 | 115 syn region awkString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=@Spell,awkSpecialCharacter,awkSpecialPrintf |
7 | 116 syn match awkSpecialCharacter contained "\\." |
117 | |
118 " Some of these combinations may seem weird, but they work. | |
119 syn match awkSpecialPrintf contained "%[-+ #]*\d*\.\=\d*[cdefgiosuxEGX%]" | |
120 | |
121 " Numbers, allowing signs (both -, and +) | |
122 " Integer number. | |
123 syn match awkNumber display "[+-]\=\<\d\+\>" | |
124 " Floating point number. | |
125 syn match awkFloat display "[+-]\=\<\d\+\.\d+\>" | |
126 " Floating point number, starting with a dot. | |
127 syn match awkFloat display "[+-]\=\<.\d+\>" | |
128 syn case ignore | |
129 "floating point number, with dot, optional exponent | |
130 syn match awkFloat display "\<\d\+\.\d*\(e[-+]\=\d\+\)\=\>" | |
131 "floating point number, starting with a dot, optional exponent | |
132 syn match awkFloat display "\.\d\+\(e[-+]\=\d\+\)\=\>" | |
133 "floating point number, without dot, with exponent | |
134 syn match awkFloat display "\<\d\+e[-+]\=\d\+\>" | |
135 syn case match | |
136 | |
137 "syn match awkIdentifier "\<[a-zA-Z_][a-zA-Z0-9_]*\>" | |
138 | |
139 " Comparison expressions. | |
6530 | 140 syn match awkExpression "==\|>=\|=>\|<=\|=<\|\!=" |
141 syn match awkExpression "\~\|\!\~" | |
142 syn match awkExpression "?\|:" | |
143 syn keyword awkExpression in | |
7 | 144 |
145 " Boolean Logic (OR, AND, NOT) | |
9533
9f921133ee90
commit https://github.com/vim/vim/commit/269f595f9eef584937e7eae70fde68cdd7da5bcf
Christian Brabandt <cb@256bit.org>
parents:
6530
diff
changeset
|
146 syn match awkBoolLogic "||\|&&\|\!" |
7 | 147 |
148 " This is overridden by less-than & greater-than. | |
149 " Put this above those to override them. | |
150 " Put this in a 'match "\<printf\=\>.*;\="' to make it not override | |
151 " less/greater than (most of the time), but it won't work yet because | |
3513 | 152 " keywords always have precedence over match & region. |
7 | 153 " File I/O: (print foo, bar > "filename") & for nawk (getline < "filename") |
154 "syn match awkFileIO contained ">" | |
155 "syn match awkFileIO contained "<" | |
156 | |
157 " Expression separators: ';' and ',' | |
158 syn match awkSemicolon ";" | |
159 syn match awkComma "," | |
160 | |
3513 | 161 syn match awkComment "#.*" contains=@Spell,awkTodo |
7 | 162 |
163 syn match awkLineSkip "\\$" | |
164 | |
165 " Highlight array element's (recursive arrays allowed). | |
166 " Keeps nested array names' separate from normal array elements. | |
167 " Keeps numbers separate from normal array elements (variables). | |
168 syn match awkArrayArray contained "[^][, \t]\+\["me=e-1 | |
169 syn match awkArrayElement contained "[^][, \t]\+" | |
170 syn region awkArray transparent start="\[" end="\]" contains=awkArray,awkArrayElement,awkArrayArray,awkNumber,awkFloat | |
171 | |
172 " 10 should be enough. | |
173 " (for the few instances where it would be more than "oneline") | |
174 syn sync ccomment awkArray maxlines=10 | |
175 | |
9533
9f921133ee90
commit https://github.com/vim/vim/commit/269f595f9eef584937e7eae70fde68cdd7da5bcf
Christian Brabandt <cb@256bit.org>
parents:
6530
diff
changeset
|
176 " Define the default highlighting. |
9f921133ee90
commit https://github.com/vim/vim/commit/269f595f9eef584937e7eae70fde68cdd7da5bcf
Christian Brabandt <cb@256bit.org>
parents:
6530
diff
changeset
|
177 hi def link awkConditional Conditional |
9f921133ee90
commit https://github.com/vim/vim/commit/269f595f9eef584937e7eae70fde68cdd7da5bcf
Christian Brabandt <cb@256bit.org>
parents:
6530
diff
changeset
|
178 hi def link awkFunction Function |
9f921133ee90
commit https://github.com/vim/vim/commit/269f595f9eef584937e7eae70fde68cdd7da5bcf
Christian Brabandt <cb@256bit.org>
parents:
6530
diff
changeset
|
179 hi def link awkRepeat Repeat |
9f921133ee90
commit https://github.com/vim/vim/commit/269f595f9eef584937e7eae70fde68cdd7da5bcf
Christian Brabandt <cb@256bit.org>
parents:
6530
diff
changeset
|
180 hi def link awkStatement Statement |
9f921133ee90
commit https://github.com/vim/vim/commit/269f595f9eef584937e7eae70fde68cdd7da5bcf
Christian Brabandt <cb@256bit.org>
parents:
6530
diff
changeset
|
181 hi def link awkString String |
9f921133ee90
commit https://github.com/vim/vim/commit/269f595f9eef584937e7eae70fde68cdd7da5bcf
Christian Brabandt <cb@256bit.org>
parents:
6530
diff
changeset
|
182 hi def link awkSpecialPrintf Special |
9f921133ee90
commit https://github.com/vim/vim/commit/269f595f9eef584937e7eae70fde68cdd7da5bcf
Christian Brabandt <cb@256bit.org>
parents:
6530
diff
changeset
|
183 hi def link awkSpecialCharacter Special |
9f921133ee90
commit https://github.com/vim/vim/commit/269f595f9eef584937e7eae70fde68cdd7da5bcf
Christian Brabandt <cb@256bit.org>
parents:
6530
diff
changeset
|
184 hi def link awkSearch String |
9f921133ee90
commit https://github.com/vim/vim/commit/269f595f9eef584937e7eae70fde68cdd7da5bcf
Christian Brabandt <cb@256bit.org>
parents:
6530
diff
changeset
|
185 hi def link awkBrackets awkRegExp |
9f921133ee90
commit https://github.com/vim/vim/commit/269f595f9eef584937e7eae70fde68cdd7da5bcf
Christian Brabandt <cb@256bit.org>
parents:
6530
diff
changeset
|
186 hi def link awkBrktRegExp awkNestRegExp |
9f921133ee90
commit https://github.com/vim/vim/commit/269f595f9eef584937e7eae70fde68cdd7da5bcf
Christian Brabandt <cb@256bit.org>
parents:
6530
diff
changeset
|
187 hi def link awkCharClass awkNestRegExp |
9f921133ee90
commit https://github.com/vim/vim/commit/269f595f9eef584937e7eae70fde68cdd7da5bcf
Christian Brabandt <cb@256bit.org>
parents:
6530
diff
changeset
|
188 hi def link awkNestRegExp Keyword |
9f921133ee90
commit https://github.com/vim/vim/commit/269f595f9eef584937e7eae70fde68cdd7da5bcf
Christian Brabandt <cb@256bit.org>
parents:
6530
diff
changeset
|
189 hi def link awkRegExp Special |
9f921133ee90
commit https://github.com/vim/vim/commit/269f595f9eef584937e7eae70fde68cdd7da5bcf
Christian Brabandt <cb@256bit.org>
parents:
6530
diff
changeset
|
190 hi def link awkNumber Number |
9f921133ee90
commit https://github.com/vim/vim/commit/269f595f9eef584937e7eae70fde68cdd7da5bcf
Christian Brabandt <cb@256bit.org>
parents:
6530
diff
changeset
|
191 hi def link awkFloat Float |
9f921133ee90
commit https://github.com/vim/vim/commit/269f595f9eef584937e7eae70fde68cdd7da5bcf
Christian Brabandt <cb@256bit.org>
parents:
6530
diff
changeset
|
192 hi def link awkFileIO Special |
9f921133ee90
commit https://github.com/vim/vim/commit/269f595f9eef584937e7eae70fde68cdd7da5bcf
Christian Brabandt <cb@256bit.org>
parents:
6530
diff
changeset
|
193 hi def link awkOperator Special |
9f921133ee90
commit https://github.com/vim/vim/commit/269f595f9eef584937e7eae70fde68cdd7da5bcf
Christian Brabandt <cb@256bit.org>
parents:
6530
diff
changeset
|
194 hi def link awkExpression Special |
9f921133ee90
commit https://github.com/vim/vim/commit/269f595f9eef584937e7eae70fde68cdd7da5bcf
Christian Brabandt <cb@256bit.org>
parents:
6530
diff
changeset
|
195 hi def link awkBoolLogic Special |
9f921133ee90
commit https://github.com/vim/vim/commit/269f595f9eef584937e7eae70fde68cdd7da5bcf
Christian Brabandt <cb@256bit.org>
parents:
6530
diff
changeset
|
196 hi def link awkPatterns Special |
9f921133ee90
commit https://github.com/vim/vim/commit/269f595f9eef584937e7eae70fde68cdd7da5bcf
Christian Brabandt <cb@256bit.org>
parents:
6530
diff
changeset
|
197 hi def link awkVariables Special |
9f921133ee90
commit https://github.com/vim/vim/commit/269f595f9eef584937e7eae70fde68cdd7da5bcf
Christian Brabandt <cb@256bit.org>
parents:
6530
diff
changeset
|
198 hi def link awkFieldVars Special |
9f921133ee90
commit https://github.com/vim/vim/commit/269f595f9eef584937e7eae70fde68cdd7da5bcf
Christian Brabandt <cb@256bit.org>
parents:
6530
diff
changeset
|
199 hi def link awkLineSkip Special |
9f921133ee90
commit https://github.com/vim/vim/commit/269f595f9eef584937e7eae70fde68cdd7da5bcf
Christian Brabandt <cb@256bit.org>
parents:
6530
diff
changeset
|
200 hi def link awkSemicolon Special |
9f921133ee90
commit https://github.com/vim/vim/commit/269f595f9eef584937e7eae70fde68cdd7da5bcf
Christian Brabandt <cb@256bit.org>
parents:
6530
diff
changeset
|
201 hi def link awkComma Special |
9f921133ee90
commit https://github.com/vim/vim/commit/269f595f9eef584937e7eae70fde68cdd7da5bcf
Christian Brabandt <cb@256bit.org>
parents:
6530
diff
changeset
|
202 hi def link awkIdentifier Identifier |
9f921133ee90
commit https://github.com/vim/vim/commit/269f595f9eef584937e7eae70fde68cdd7da5bcf
Christian Brabandt <cb@256bit.org>
parents:
6530
diff
changeset
|
203 hi def link awkComment Comment |
9f921133ee90
commit https://github.com/vim/vim/commit/269f595f9eef584937e7eae70fde68cdd7da5bcf
Christian Brabandt <cb@256bit.org>
parents:
6530
diff
changeset
|
204 hi def link awkTodo Todo |
9f921133ee90
commit https://github.com/vim/vim/commit/269f595f9eef584937e7eae70fde68cdd7da5bcf
Christian Brabandt <cb@256bit.org>
parents:
6530
diff
changeset
|
205 " Change this if you want nested array names to be highlighted. |
9f921133ee90
commit https://github.com/vim/vim/commit/269f595f9eef584937e7eae70fde68cdd7da5bcf
Christian Brabandt <cb@256bit.org>
parents:
6530
diff
changeset
|
206 hi def link awkArrayArray awkArray |
9f921133ee90
commit https://github.com/vim/vim/commit/269f595f9eef584937e7eae70fde68cdd7da5bcf
Christian Brabandt <cb@256bit.org>
parents:
6530
diff
changeset
|
207 hi def link awkArrayElement Special |
9f921133ee90
commit https://github.com/vim/vim/commit/269f595f9eef584937e7eae70fde68cdd7da5bcf
Christian Brabandt <cb@256bit.org>
parents:
6530
diff
changeset
|
208 hi def link awkParenError awkError |
9f921133ee90
commit https://github.com/vim/vim/commit/269f595f9eef584937e7eae70fde68cdd7da5bcf
Christian Brabandt <cb@256bit.org>
parents:
6530
diff
changeset
|
209 hi def link awkInParen awkError |
9f921133ee90
commit https://github.com/vim/vim/commit/269f595f9eef584937e7eae70fde68cdd7da5bcf
Christian Brabandt <cb@256bit.org>
parents:
6530
diff
changeset
|
210 hi def link awkError Error |
7 | 211 |
212 let b:current_syntax = "awk" | |
213 | |
3312 | 214 let &cpo = s:cpo_save |
215 unlet s:cpo_save | |
216 | |
7 | 217 " vim: ts=8 |