]> git.pld-linux.org Git - packages/vim.git/blame - php.vim
- new
[packages/vim.git] / php.vim
CommitLineData
21166df1
AG
1" Vim syntax file
2" Language: PHP 4/5
3" Maintainer: Peter Hodge <toomuchphp-vim@yahoo.com>
4" Last Change: October 27, 2006
5"
6" URL: http://www.vim.org/scripts/script.php?script_id=1571
7" Version: 0.9.6
8"
9" ================================================================
10"
11" Note: If you are having speed issues loading or editting PHP files, try
12" disabling some of the options. In your .vimrc, try adding:
13" :let php_folding = 0
14" :let php_strict_blocks = 0
15"
16" ================================================================
17"
18" Note: If you are using a colour terminal with dark background, you will
19" probably find the 'elflord' colorscheme is well suited to PHP syntax
20" because of the way it highlights the flow-control statements in your
21" code.
22"
23" ================================================================
24"
25" OPTIONS:
26"
27" Note: Many of these default to 1 (On), so you would need to set
28" them to 0 to turn them off. E.g., in your .vimrc file:
29" let php_special_variables = 0
30" let php_special_functions = 0
31" let php_alt_comparisons = 0
32" etc.
33" If the variables do not exist, the default value will be used.
34"
35" Note: All options can be set globally or on a per-file basis by using
36" global or buffer local variables. For example, you could turn on SQL
37" highlighting globally in your .vimrc:
38" let g:php_sql_query = 1
39" but then turn it off in only one buffer (one open file):
40" let b:php_sql_query = 0
41"
42"
43" -- PHP FEATURES --
44"
45" let php_sql_query = 1/0 [default 0]
46" ... for SQL syntax highlighting inside strings
47"
48" let php_htmlInStrings = 1/0 [default 0]
49" ... for HTML syntax highlighting inside strings
50"
51" let php_baselib = 1/0 [default 0]
52" ... for highlighting baselib functions
53"
54" let php_special_variables = 1/0 [default 1]
55" ... to highlight superglobals like $_GET, $_SERVER, etc.
56" * always on if using php_oldStyle
57"
58" let php_special_functions = 1/0 [default 1]
59" ... to highlight functions with special behaviour
60" e.g., unset(), extract()
61"
62" let php_alt_comparisons = 1/0 [default 1]
63" ... to highlight comparison operators in an alternate colour
64" * always on if using php_oldStyle
65"
66" let php_alt_assignByReference = 1/0 [default 1]
67" ... to highlight '=&' in '$foo =& $bar' in an alternate colour.
68" This also applies to a function which returns by-reference,
69" as well as a function argument which is by-reference.
70"
71" let php_alt_properties = 1/0 [default 0]
72" ... use a different color for '->' based on whether it is used
73" for property access, method access, or dynamic access (using
74" '->{...}')
75"
76" let php_highlight_quotes = 1/0 [default 0]
77" ... makes quote characters the same colour as the string
78" contents, like in C syntax.
79"
80" let php_show_semicolon = 1/0 [default 1]
81" ... to make the semicolon (;) more visible
82"
83" let php_smart_semicolon = 1/0 [default 1]
84" ... semicolon adopts the color of a 'return' or 'break' keyword
85" * requires php_show_semicolon
86"
87" let php_alt_blocks = 1/0 [default 1]
88" ... colorize { and } around class/function/try/catch bodies.
89" * requires php_strict_blocks
90"
91" let php_alt_arrays = 0/1/2 [default 1]
92" ... to colorize ( and ) around an array body, as well as '=>'
93" * requires php_strict_blocks
94" Setting this to '2' will highlighting the commas as well.
95" Commas are not highlighted by default because it's too much
96" color.
97"
98" let php_show_preg = 1/0 [default 1]
99" ... to highlight regular expression patterns inside calls
100" to preg_match(), preg_replace, etc.
101"
102"
103" -- FINDING ERRORS --
104"
105" let php_parent_error_close = 1/0 [default 1]
106" ... for highlighting parent error ] or ) or }
107" * requires php_strict_blocks
108"
109" let php_parent_error_open =
110" ... for skipping a php end tag, if there exists an
111" open ( or [ without a closing one
112" Note: this option is now enabled permanently (unless
113" php_strict_blocks is disabled).
114" * requires php_strict_blocks
115"
116" let php_empty_construct_error = 0/1 [default 1]
117" ... highlights ';' as an error if it comes immediately after
118" an if/else/while/for/foreach/switch statement (the
119" logical constructs should have a body).
120" * requires php_strict_blocks
121"
122" let php_nested_functions = 0/1 [default 0]
123" ... Whether or not to allow contiaining one function inside
124" another. This option is mostly for speeding up syntax
125" highlighting - { } blocks can by inserted much faster while
126" editting a large class.
127" Note: this is the only option which might break valid PHP
128" code, although only if you define one function inside
129" another, which is useually discouraged.
130" * irrelevent without php_strict_blocks
131"
132" -- OTHER OPTIONS --
133"
134" let php_strict_blocks = 1/0 [default 1]
135" ... to match together all {} () and [] blocks correctly. This is
136" required by some of the other options for find errors,
137" applying correct colors to { } blocks, etc. However, it may
138" cause Vim to slow down on large files.
139"
140" let php_asp_tags = 1/0 [default 0]
141" ... for highlighting ASP-style short tags
142"
143" let php_noShortTags = 1/0 [default 0]
144" ... don't sync <? ?> as php
145"
146" let php_oldStyle = 1
147" ... for using old colorstyle
148"
149" let php_folding = 1/2/3 [default 0]
150" ... 1: for folding classes and functions
151" 2: for folding all { } regions
152" 3: for folding only functions
153"
154" let php_fold_arrays = 0/1 [default 0]
155" ... To fold arrays as well.
156" * requires php_folding
157"
158" let php_sync_method = x
159" ... x = -1 to sync by search (default)
160" x > 0 to sync at least x lines backwards
161" x = 0 to sync from start
162" TODO: investigate sync methods, try and find something which
163" is most effective for PHP
164"
165"
166" ================================================================
167"
168" TODO LIST:
169"
170" PRIORITY:
171" - what to do about 'iskeyword' containing '$'?
172" - provide an option to turn off array index colors [0] etc
173" (these array index colors may be deprecated/unnecessary if choosing
174" colors automatically - they were added in because array indexes weren't
175" visible inside a string).
176" - Investigate possibilities for automatic syncing ... Vim regularly
177" gets lost and a sync from start is required. This is quite annoying.
178" - test syntax against older Vims (6.4, 6.0, 5.7)
179" - allow turning off all semicolon errors
180"
181" PHP Syntax:
182" - add @Spell and @NoSpell in appropriate places (spell-checking inside
183" comments and strings probably needs to be optional).
184" - option to disable nesting function declarations so that an unclosed
185" function block can end at the next function declaration
186" (This will be much faster when inserting an '{' near the start of a
187" large class, as not so many { } blocks will need to be recalculated)
188" - review support for PHP built-in superglobals:
189" - ensure all PHP 5.2 superglobals are recognized
190" - highlight known array keys for GLOBALS, _SERVER, _ENV, etc?
191" - review support for PHP built-in constants, make sure I've got them all
192" - make support for PHP built-in class methods optional.
193" - review highlight links to ensure maximum readability on GUI
194" and color terminal using colorschemes 'elflord' and 'default'
195" - new group phpReservedFunction, because some parts of
196" phpSpecialFunction can be used as a method name.
197" - what is php_oldStyle? is it still needed?
198" - use 'nextgroup' to highlight errors when a ']' or ')' is followed by
199" a constant/variable or function call. This will also help find when
200" a closing ')' is missing.
201"
202" PCRE Syntax:
203" - decide on terminology: 'PCRE' or 'PREG'
204" - Review effects of paired delimiters when combined with other
205" PCRE complex atoms using those symbols
206" - decide on better colors for the
207" (?(?=lookahead/lookbehind)conditional|sub-pattern)
208"
209"
210" Future Plans:
211" - option to choose PHP4 or PHP5 compatibility
212" - some way to detect missing commas in various places
213" (function calls, function proto types, class 'implements')
214" - differentiate between an interface block and a class block
215" - add ability to highlight user-defined functions and keywords
216" using any of the following means:
217" 1) a comma-separated string of user functions
218" 2) a file containing user functions
219" 3) using names from the tags file(s)
220" (this may be better as a separate plugin)
221" - add support for phpDocumentor comment blocks and tags
222" - add support for POSIX Regex patterns
223" - allow easy embedding of the PHP syntax using 'contains=@phpClTop' or
224" 'syn region phpRegion ...'
225" - automatically select best colors by examining the colorscheme
226" - check to see if the baselib needs to be highlighted still
227" - Add support 2nd parameter to preg_replace and highlight
228" "\1" and other confusing sequences as errors ("\1" is "\x01")
229" - use nextgroup= to match correct syntax usage
230"
231" ================================================================
232"
233" Note:
234" - syntax case is 'ignore' unless explicitly set to 'match'
235" for a single item.
236
237" For version 5.x: Clear all syntax items
238" For version 6.x: Quit when a syntax file was already loaded
239if version < 600
240 syn clear
241elseif exists("b:current_syntax")
242 finish
243endif
244
245if !exists("main_syntax")
246 let main_syntax = 'php'
247endif
248
249" TODO: what's all this about?
250if version < 600
251 unlet! php_folding
252 if exists("php_sync_method") && !php_sync_method
253 let php_sync_method=-1
254 endif
255 so <sfile>:p:h/html.vim
256else
257 runtime! syntax/html.vim
258 unlet b:current_syntax
259endif
260
261" accept old options
262if !exists("php_sync_method")
263 if exists("php_minlines")
264 let php_sync_method=php_minlines
265 else
266 let php_sync_method=-1
267 endif
268endif
269
270function! s:ChooseValue(name, default)
271 if exists('b:' . a:name)
272 return b:{a:name}
273 elseif exists('g:' . a:name)
274 return g:{a:name}
275 else
276 return a:default
277 endif
278endfunction
279
280" set up variables based on global or buffer variables which have been set
281 " Strict Blocks (s:strict_blocks) {{{1
282 let s:strict_blocks = s:ChooseValue('php_strict_blocks', 1)
283
284 " Fold Level (s:folding) {{{1
285 let s:folding = s:ChooseValue('php_folding', 0)
286
287 " Fold arrays (s:fold_arrays) {{{1
288 let s:fold_arrays = (s:folding && s:ChooseValue('php_fold_arrays', 0))
289
290 " Allow nested functions (s:nested_functions) {{{1
291 " TODO: document this feature
292 let s:nested_functions = s:ChooseValue('php_nested_functions', 1)
293
294 " Allow ASP-style <% %> tags (s:asp_tags) {{{1
295 let s:asp_tags = s:ChooseValue('php_asp_tags', 0)
296
297 " Only allow long tags '<?php' (s:long_tags) {{{1
298 let s:long_tags = s:ChooseValue('php_noShortTags', 0)
299
300 " SQL in strings (s:show_sql) {{{1
301 let s:show_sql = s:ChooseValue('php_sql_query', 0)
302
303 " HTML in strings (s:show_html_in_strings) {{{1
304 let s:show_html_in_strings = s:ChooseValue('php_htmlInStrings', 0)
305
306 " Highlight the PHP baselib (s:show_baselib) {{{1
307 let s:show_baselib = s:ChooseValue('php_baselib', 0)
308
309 " Highlight superglobals (s:superglobals) {{{1
310 " TODO: this is supposed to be always on if using php_oldStyle
311 let s:superglobals = s:ChooseValue('php_special_variables', 1)
312
313 " Highlight special functions (s:special_functions) {{{1
314 let s:special_functions = s:ChooseValue('php_special_functions', 1)
315
316 " Highlight quotes around strings (s:show_quotes) {{{1
317 let s:show_quotes = s:ChooseValue('php_highlight_quotes', 0)
318
319 " Highlight PCRE patterns (s:show_pcre) {{{1
320 let s:show_pcre = s:ChooseValue('php_show_preg', 1)
321
322 " Highlight ';' (s:show_semicolon) {{{1
323 let s:show_semicolon = s:ChooseValue('php_show_semicolon', 1)
324
325 " Highlight parent error ) ] or } (s:parent_error_close) {{{1
326 let s:parent_error_close = (s:strict_blocks && s:ChooseValue('php_parent_error_close', 1))
327
328 " Highlight invalid ';' after if/while/foreach (s:no_empty_construct) {{{1
329 let s:no_empty_construct = (s:strict_blocks && s:ChooseValue('php_empty_construct_error', 1))
330
331 " Alt colors for {} around class/func/try/catch blocks (s:alt_blocks) {{{1
332 let s:alt_blocks = (s:strict_blocks && s:ChooseValue('php_alt_blocks', 1))
333
334 " Alt color for by-reference operators (s:alt_refs) {{{1
335 let s:alt_refs = s:ChooseValue('php_alt_assignByReference', 1)
336
337 "}}}1
338 " Alt color for array syntax (s:alt_arrays) {{{1
339 " * requires strict_blocks
340 let s:alt_arrays = (s:strict_blocks ? s:ChooseValue('php_alt_arrays', 1) : 0)
341
342 " Alt color for comparisons (s:alt_comparisons) {{{1
343 " TODO: this is supposed to be always on if using php_oldStyle
344 let s:alt_comparisons = s:ChooseValue('php_alt_comparisons', 1)
345 " Alt colors for ';' after return/break (s:smart_semicolon) {{{1
346 let s:smart_semicolon = (s:show_semicolon && s:ChooseValue('php_smart_semicolon', 1))
347
348 " Alt colors for '->' (s:alt_properties) {{{1
349 let s:alt_properties = s:ChooseValue('php_alt_properties', 0)
350
351 "}}}1
352
353delfunction s:ChooseValue
354
355syn cluster htmlPreproc add=phpRegion,phpRegionAsp,phpRegionSc
356
357" need to source the SQL syntax file in case we encounter
358" heredoc containing SQL
359if version < 600
360 syn include @sqlTop <sfile>:p:h/sql.vim
361else
362 syn include @sqlTop syntax/sql.vim
363endif
364
365syn sync clear
366unlet b:current_syntax
367syn cluster sqlTop remove=sqlString,sqlComment
368if s:show_sql
369 syn cluster phpAddStrings contains=@sqlTop
370endif
371
372if s:show_html_in_strings
373 syn cluster phpAddStrings add=@htmlTop
374endif
375
376" NOTE: syntax case should be 'ignore' for all items (in keeping
377" with PHP's case insensitive behaviour). If an item MUST be case
378" sensitive, 'syntax case match' should precede that item and
379" 'syntax case ignore' must follow IMMEDIATELY after so that there
380" can be no confusion over the value of 'syntax case' for most items
381" syntax matches and regions may use '\C' to utilize case sensitivity
382syn case ignore
383
384
385
386" Env Variables
387" TODO: check these against the latest PHP manual
388syn case match
389syn keyword phpEnvVar GATEWAY_INTERFACE SERVER_NAME SERVER_SOFTWARE SERVER_PROTOCOL REQUEST_METHOD QUERY_STRING DOCUMENT_ROOT HTTP_ACCEPT HTTP_ACCEPT_CHARSET HTTP_ENCODING HTTP_ACCEPT_LANGUAGE HTTP_CONNECTION HTTP_HOST HTTP_REFERER HTTP_USER_AGENT REMOTE_ADDR REMOTE_PORT SCRIPT_FILENAME SERVER_ADMIN SERVER_PORT SERVER_SIGNATURE PATH_TRANSLATED SCRIPT_NAME REQUEST_URI contained
390syn case ignore
391
392" Internal Variables
393" TODO: check these against the latest PHP manual
394syn case match
395syn keyword phpIntVar contained GLOBALS PHP_ERRMSG PHP_SELF HTTP_GET_VARS HTTP_POST_VARS HTTP_COOKIE_VARS HTTP_POST_FILES HTTP_ENV_VARS HTTP_SERVER_VARS HTTP_SESSION_VARS HTTP_RAW_POST_DATA HTTP_STATE_VARS _GET _POST _COOKIE _FILES _SERVER _ENV _SERVER _REQUEST _SESSION
396syn keyword phpIntVar contained argc argv
397syn case ignore
398
399" Constants
400" Peter Hodge, June 18, 2006
401" - this keyword list is way behind! Unfortunately, all I have
402" access to at the moment is my home installation of 5.1.2, so I will add
403" the ... er ... 626 ... constants harvested from get_defined_constants().
404" TODO: check these against the latest PHP manual
405syn case match
406syn keyword phpCoreConstant contained ASSERT_ACTIVE ASSERT_BAIL ASSERT_CALLBACK ASSERT_QUIET_EVAL ASSERT_WARNING
407syn keyword phpCoreConstant contained CAL_DOW_DAYNO CAL_DOW_LONG CAL_DOW_SHORT CAL_EASTER_ALWAYS_GREGORIAN CAL_EASTER_ALWAYS_JULIAN CAL_EASTER_DEFAULT CAL_EASTER_ROMAN CAL_FRENCH CAL_GREGORIAN CAL_JULIAN CAL_NUM_CALS CAL_JEWISH CAL_JEWISH_ADD_ALAFIM CAL_JEWISH_ADD_ALAFIM_GERESH CAL_JEWISH_ADD_GERESHAYIM CAL_MONTH_FRENCH CAL_MONTH_GREGORIAN_LONG CAL_MONTH_GREGORIAN_SHORT CAL_MONTH_JEWISH CAL_MONTH_JULIAN_LONG CAL_MONTH_JULIAN_SHORT
408syn keyword phpCoreConstant contained CASE_LOWER CASE_UPPER CHAR_MAX
409syn keyword phpCoreConstant contained CLSCTX_ALL CLSCTX_INPROC_HANDLER CLSCTX_INPROC_SERVER CLSCTX_LOCAL_SERVER CLSCTX_REMOTE_SERVER CLSCTX_SERVER
410syn keyword phpCoreConstant contained CONNECTION_ABORTED CONNECTION_NORMAL CONNECTION_TIMEOUT
411syn keyword phpCoreConstant contained COUNT_NORMAL COUNT_RECURSIVE
412syn keyword phpCoreConstant contained CP_ACP CP_MACCP CP_OEMCP CP_SYMBOL CP_THREAD_ACP CP_UTF7 CP_UTF8
413syn keyword phpCoreConstant contained CREDITS_ALL CREDITS_DOCS CREDITS_FULLPAGE CREDITS_GENERAL CREDITS_GROUP CREDITS_MODULES CREDITS_QA CREDITS_SAPI
414syn keyword phpCoreConstant contained CRYPT_BLOWFISH CRYPT_EXT_DES CRYPT_MD5 CRYPT_SALT_LENGTH CRYPT_STD_DES
415syn keyword phpCoreConstant contained DATE_ATOM DATE_COOKIE DATE_ISO8601 DATE_RFC1036 DATE_RFC1123 DATE_RFC2822 DATE_RFC822 DATE_RFC850 DATE_RSS DATE_W3C
416syn keyword phpCoreConstant contained DEFAULT_INCLUDE_PATH DIRECTORY_SEPARATOR
417syn keyword phpCoreConstant contained DISP_E_BADINDEX DISP_E_DIVBYZERO DISP_E_OVERFLOW
418syn keyword phpCoreConstant contained DOMSTRING_SIZE_ERR
419syn keyword phpCoreConstant contained DOM_HIERARCHY_REQUEST_ERR DOM_INDEX_SIZE_ERR DOM_INUSE_ATTRIBUTE_ERR DOM_INVALID_ACCESS_ERR DOM_INVALID_CHARACTER_ERR DOM_INVALID_MODIFICATION_ERR
420syn keyword phpCoreConstant contained DOM_INVALID_STATE_ERR DOM_NAMESPACE_ERR DOM_NOT_FOUND_ERR DOM_NOT_SUPPORTED_ERR DOM_NO_DATA_ALLOWED_ERR DOM_NO_MODIFICATION_ALLOWED_ERR DOM_PHP_ERR
421syn keyword phpCoreConstant contained DOM_SYNTAX_ERR DOM_VALIDATION_ERR DOM_WRONG_DOCUMENT_ERR
422syn keyword phpCoreConstant contained ENT_COMPAT ENT_NOQUOTES ENT_QUOTES
423syn keyword phpCoreConstant contained EXTR_IF_EXISTS EXTR_OVERWRITE EXTR_PREFIX_ALL EXTR_PREFIX_IF_EXISTS EXTR_PREFIX_INVALID EXTR_PREFIX_SAME EXTR_REFS EXTR_SKIP
424syn keyword phpCoreConstant contained E_ERROR E_WARNING E_PARSE E_NOTICE E_STRICT E_CORE_ERROR E_CORE_WARNING E_COMPILE_ERROR E_COMPILE_WARNING E_USER_ERROR E_USER_WARNING E_USER_NOTICE E_ALL
425syn keyword phpCoreConstant contained FILE_APPEND FILE_IGNORE_NEW_LINES FILE_NO_DEFAULT_CONTEXT FILE_SKIP_EMPTY_LINES FILE_USE_INCLUDE_PATH
426syn keyword phpCoreConstant contained FORCE_DEFLATE FORCE_GZIP
427syn keyword phpCoreConstant contained FTP_ASCII FTP_AUTORESUME FTP_AUTOSEEK FTP_BINARY FTP_FAILED FTP_FINISHED FTP_IMAGE FTP_MOREDATA FTP_TEXT FTP_TIMEOUT_SEC
428syn keyword phpCoreConstant contained GLOB_BRACE GLOB_ERR GLOB_MARK GLOB_NOCHECK GLOB_NOESCAPE GLOB_NOSORT GLOB_ONLYDIR
429syn keyword phpCoreConstant contained HTML_ENTITIES HTML_SPECIALCHARS
430syn keyword phpCoreConstant contained ICONV_IMPL ICONV_MIME_DECODE_CONTINUE_ON_ERROR ICONV_MIME_DECODE_STRICT ICONV_VERSION
431syn keyword phpCoreConstant contained IMAGETYPE_BMP IMAGETYPE_GIF IMAGETYPE_IFF IMAGETYPE_JB2 IMAGETYPE_JP2 IMAGETYPE_JPC IMAGETYPE_JPEG IMAGETYPE_JPEG2000
432syn keyword phpCoreConstant contained IMAGETYPE_JPX IMAGETYPE_PNG IMAGETYPE_PSD IMAGETYPE_SWC IMAGETYPE_SWF IMAGETYPE_TIFF_II IMAGETYPE_TIFF_MM IMAGETYPE_WBMP IMAGETYPE_XBM
433syn keyword phpCoreConstant contained INF
434syn keyword phpCoreConstant contained INFO_ALL INFO_CONFIGURATION INFO_CREDITS INFO_ENVIRONMENT INFO_GENERAL INFO_LICENSE INFO_MODULES INFO_VARIABLES
435syn keyword phpCoreConstant contained INI_ALL INI_PERDIR INI_SYSTEM INI_USER
436syn keyword phpCoreConstant contained LC_ALL LC_COLLATE LC_CTYPE LC_MONETARY LC_NUMERIC LC_TIME
437syn keyword phpCoreConstant contained LIBXML_COMPACT LIBXML_DOTTED_VERSION LIBXML_DTDATTR LIBXML_DTDLOAD LIBXML_DTDVALID LIBXML_ERR_ERROR LIBXML_ERR_FATAL LIBXML_ERR_NONE
438syn keyword phpCoreConstant contained LIBXML_ERR_WARNING LIBXML_NOBLANKS LIBXML_NOCDATA LIBXML_NOEMPTYTAG LIBXML_NOENT LIBXML_NOERROR LIBXML_NONET LIBXML_NOWARNING
439syn keyword phpCoreConstant contained LIBXML_NOXMLDECL LIBXML_NSCLEAN LIBXML_VERSION LIBXML_XINCLUDE
440syn keyword phpCoreConstant contained LOCK_EX LOCK_NB LOCK_SH LOCK_UN
441syn keyword phpCoreConstant contained LOG_ALERT LOG_AUTH LOG_AUTHPRIV LOG_CONS LOG_CRIT LOG_CRON LOG_DAEMON LOG_DEBUG
442syn keyword phpCoreConstant contained LOG_EMERG LOG_ERR LOG_INFO LOG_KERN LOG_LPR LOG_MAIL LOG_NDELAY LOG_NEWS
443syn keyword phpCoreConstant contained LOG_NOTICE LOG_NOWAIT LOG_ODELAY LOG_PERROR LOG_PID LOG_SYSLOG LOG_USER LOG_UUCP LOG_WARNING
444syn keyword phpCoreConstant contained MK_E_UNAVAILABLE
445syn keyword phpCoreConstant contained MYSQL_ASSOC MYSQL_BOTH MYSQL_CLIENT_COMPRESS MYSQL_CLIENT_IGNORE_SPACE MYSQL_CLIENT_INTERACTIVE MYSQL_CLIENT_SSL MYSQL_NUM
446syn keyword phpCoreConstant contained M_1_PI M_2_PI M_2_SQRTPI M_E M_LN10 M_LN2 M_LOG10E M_LOG2E M_PI M_PI_2 M_PI_4 M_SQRT1_2 M_SQRT2
447syn keyword phpCoreConstant contained NAN
448syn keyword phpCoreConstant contained NORM_IGNORECASE NORM_IGNOREKANATYPE NORM_IGNORENONSPACE NORM_IGNORESYMBOLS NORM_IGNOREWIDTH
449syn keyword phpCoreConstant contained ODBC_BINMODE_CONVERT ODBC_BINMODE_PASSTHRU ODBC_BINMODE_RETURN ODBC_TYPE
450syn keyword phpCoreConstant contained PATHINFO_BASENAME PATHINFO_DIRNAME PATHINFO_EXTENSION
451syn keyword phpCoreConstant contained PATH_SEPARATOR
452syn keyword phpCoreConstant contained PEAR_INSTALL_DIR PEAR_EXTENSION_DIR
453syn keyword phpCoreConstant contained PHP_PREFIX PHP_BINDIR PHP_CONFIG_FILE_PATH PHP_CONFIG_FILE_SCAN_DIR PHP_DATADIR PHP_EXTENSION_DIR PHP_LIBDIR PHP_LOCALSTATEDIR PHP_SYSCONFDIR PHP_SHLIB_SUFFIX
454syn keyword phpCoreConstant contained PHP_OUTPUT_HANDLER_CONT PHP_OUTPUT_HANDLER_END PHP_OUTPUT_HANDLER_START
455syn keyword phpCoreConstant contained PHP_URL_FRAGMENT PHP_URL_HOST PHP_URL_PASS PHP_URL_PATH PHP_URL_PORT PHP_URL_QUERY PHP_URL_SCHEME PHP_URL_USER
456syn keyword phpCoreConstant contained PHP_VERSION PHP_OS PHP_SAPI PHP_EOL PHP_INT_MAX PHP_INT_SIZE
457syn keyword phpCoreConstant contained PREG_GREP_INVERT PREG_OFFSET_CAPTURE PREG_PATTERN_ORDER PREG_SET_ORDER PREG_SPLIT_DELIM_CAPTURE PREG_SPLIT_NO_EMPTY PREG_SPLIT_OFFSET_CAPTURE
458syn keyword phpCoreConstant contained PSFS_ERR_FATAL PSFS_FEED_ME PSFS_FLAG_FLUSH_CLOSE PSFS_FLAG_FLUSH_INC PSFS_FLAG_NORMAL PSFS_PASS_ON
459syn keyword phpCoreConstant contained SEEK_CUR SEEK_END SEEK_SET
460syn keyword phpCoreConstant contained SORT_ASC SORT_DESC SORT_LOCALE_STRING SORT_NUMERIC SORT_REGULAR SORT_STRING
461syn keyword phpCoreConstant contained SQL_BIGINT SQL_BINARY SQL_BIT SQL_CHAR SQL_CONCURRENCY SQL_CONCUR_LOCK SQL_CONCUR_READ_ONLY SQL_CONCUR_ROWVER SQL_CONCUR_VALUES
462syn keyword phpCoreConstant contained SQL_CURSOR_DYNAMIC SQL_CURSOR_FORWARD_ONLY SQL_CURSOR_KEYSET_DRIVEN SQL_CURSOR_STATIC SQL_CURSOR_TYPE SQL_CUR_USE_DRIVER SQL_CUR_USE_IF_NEEDED SQL_CUR_USE_ODBC
463syn keyword phpCoreConstant contained SQL_DATE SQL_DECIMAL SQL_DOUBLE SQL_FETCH_FIRST SQL_FETCH_NEXT SQL_FLOAT SQL_INTEGER SQL_KEYSET_SIZE
464syn keyword phpCoreConstant contained SQL_LONGVARBINARY SQL_LONGVARCHAR SQL_NUMERIC SQL_ODBC_CURSORS SQL_REAL SQL_SMALLINT SQL_TIME SQL_TIMESTAMP SQL_TINYINT SQL_VARBINARY SQL_VARCHAR
465syn keyword phpCoreConstant contained STDERR STDIN STDOUT
466syn keyword phpCoreConstant contained STREAM_CLIENT_ASYNC_CONNECT STREAM_CLIENT_CONNECT STREAM_CLIENT_PERSISTENT
467syn keyword phpCoreConstant contained STREAM_CRYPTO_METHOD_SSLv23_CLIENT STREAM_CRYPTO_METHOD_SSLv23_SERVER STREAM_CRYPTO_METHOD_SSLv2_CLIENT STREAM_CRYPTO_METHOD_SSLv2_SERVER STREAM_CRYPTO_METHOD_SSLv3_CLIENT STREAM_CRYPTO_METHOD_SSLv3_SERVER STREAM_CRYPTO_METHOD_TLS_CLIENT STREAM_CRYPTO_METHOD_TLS_SERVER
468syn keyword phpCoreConstant contained STREAM_ENFORCE_SAFE_MODE STREAM_FILTER_ALL STREAM_FILTER_READ STREAM_FILTER_WRITE STREAM_IGNORE_URL
469syn keyword phpCoreConstant contained STREAM_IPPROTO_ICMP STREAM_IPPROTO_IP STREAM_IPPROTO_RAW STREAM_IPPROTO_TCP STREAM_IPPROTO_UDP STREAM_MKDIR_RECURSIVE STREAM_MUST_SEEK
470syn keyword phpCoreConstant contained STREAM_NOTIFY_AUTH_REQUIRED STREAM_NOTIFY_AUTH_RESULT STREAM_NOTIFY_COMPLETED STREAM_NOTIFY_CONNECT STREAM_NOTIFY_FAILURE STREAM_NOTIFY_FILE_SIZE_IS STREAM_NOTIFY_MIME_TYPE_IS
471syn keyword phpCoreConstant contained STREAM_NOTIFY_PROGRESS STREAM_NOTIFY_REDIRECTED STREAM_NOTIFY_RESOLVE STREAM_NOTIFY_SEVERITY_ERR STREAM_NOTIFY_SEVERITY_INFO STREAM_NOTIFY_SEVERITY_WARN
472syn keyword phpCoreConstant contained STREAM_OOB STREAM_PEEK STREAM_PF_INET STREAM_PF_INET6 STREAM_PF_UNIX STREAM_REPORT_ERRORS STREAM_SERVER_BIND STREAM_SERVER_LISTEN
473syn keyword phpCoreConstant contained STREAM_SOCK_DGRAM STREAM_SOCK_RAW STREAM_SOCK_RDM STREAM_SOCK_SEQPACKET STREAM_SOCK_STREAM STREAM_URL_STAT_LINK STREAM_URL_STAT_QUIET STREAM_USE_PATH
474syn keyword phpCoreConstant contained STR_PAD_BOTH STR_PAD_LEFT STR_PAD_RIGHT
475syn keyword phpCoreConstant contained SUNFUNCS_RET_DOUBLE SUNFUNCS_RET_STRING SUNFUNCS_RET_TIMESTAMP
476syn keyword phpCoreConstant contained T_ABSTRACT T_AND_EQUAL T_ARRAY T_ARRAY_CAST T_AS T_BAD_CHARACTER T_BOOLEAN_AND T_BOOLEAN_OR T_BOOL_CAST T_BREAK T_CASE T_CATCH
477syn keyword phpCoreConstant contained T_CHARACTER T_CLASS T_CLASS_C T_CLONE T_CLOSE_TAG T_COMMENT T_CONCAT_EQUAL T_CONST T_CONSTANT_ENCAPSED_STRING T_CONTINUE
478syn keyword phpCoreConstant contained T_CURLY_OPEN T_DEC T_DECLARE T_DEFAULT T_DIV_EQUAL T_DNUMBER T_DO T_DOC_COMMENT T_DOLLAR_OPEN_CURLY_BRACES T_DOUBLE_ARROW
479syn keyword phpCoreConstant contained T_DOUBLE_CAST T_DOUBLE_COLON T_ECHO T_ELSE T_ELSEIF T_EMPTY T_ENCAPSED_AND_WHITESPACE T_ENDDECLARE T_ENDFOR T_ENDFOREACH
480syn keyword phpCoreConstant contained T_ENDIF T_ENDSWITCH T_ENDWHILE T_END_HEREDOC T_EVAL T_EXIT T_EXTENDS T_FILE T_FINAL T_FOR T_FOREACH T_FUNCTION T_FUNC_C
481syn keyword phpCoreConstant contained T_GLOBAL T_HALT_COMPILER T_IF T_IMPLEMENTS T_INC T_INCLUDE T_INCLUDE_ONCE T_INLINE_HTML T_INSTANCEOF T_INTERFACE T_INT_CAST
482syn keyword phpCoreConstant contained T_ISSET T_IS_EQUAL T_IS_GREATER_OR_EQUAL T_IS_IDENTICAL T_IS_NOT_EQUAL T_IS_NOT_IDENTICAL T_IS_SMALLER_OR_EQUAL T_LINE T_LIST
483syn keyword phpCoreConstant contained T_LNUMBER T_LOGICAL_AND T_LOGICAL_OR T_LOGICAL_XOR T_METHOD_C T_MINUS_EQUAL T_MOD_EQUAL T_MUL_EQUAL T_NEW T_NUM_STRING T_OBJECT_CAST
484syn keyword phpCoreConstant contained T_OBJECT_OPERATOR T_OPEN_TAG T_OPEN_TAG_WITH_ECHO T_OR_EQUAL T_PAAMAYIM_NEKUDOTAYIM T_PLUS_EQUAL T_PRINT T_PRIVATE T_PROTECTED T_PUBLIC
485syn keyword phpCoreConstant contained T_REQUIRE T_REQUIRE_ONCE T_RETURN T_SL T_SL_EQUAL T_SR T_SR_EQUAL T_START_HEREDOC T_STATIC T_STRING T_STRING_CAST T_STRING_VARNAME
486syn keyword phpCoreConstant contained T_SWITCH T_THROW T_TRY T_UNSET T_UNSET_CAST T_USE T_VAR T_VARIABLE T_WHILE T_WHITESPACE T_XOR_EQUAL
487syn keyword phpCoreConstant contained UPLOAD_ERR_CANT_WRITE UPLOAD_ERR_FORM_SIZE UPLOAD_ERR_INI_SIZE UPLOAD_ERR_NO_FILE UPLOAD_ERR_NO_TMP_DIR UPLOAD_ERR_OK UPLOAD_ERR_PARTIAL
488syn keyword phpCoreConstant contained VARCMP_EQ VARCMP_GT VARCMP_LT VARCMP_NULL
489syn keyword phpCoreConstant contained VT_ARRAY VT_BOOL VT_BSTR VT_BYREF VT_CY VT_DATE VT_DECIMAL VT_DISPATCH VT_EMPTY VT_ERROR VT_I1 VT_I2 VT_I4 VT_INT VT_NULL VT_R4 VT_R8 VT_UI1 VT_UI2 VT_UI4 VT_UINT VT_UNKNOWN VT_VARIANT
490syn keyword phpCoreConstant contained XML_ATTRIBUTE_CDATA XML_ATTRIBUTE_DECL_NODE XML_ATTRIBUTE_ENTITY XML_ATTRIBUTE_ENUMERATION XML_ATTRIBUTE_ID XML_ATTRIBUTE_IDREF
491syn keyword phpCoreConstant contained XML_ATTRIBUTE_IDREFS XML_ATTRIBUTE_NMTOKEN XML_ATTRIBUTE_NMTOKENS XML_ATTRIBUTE_NODE XML_ATTRIBUTE_NOTATION XML_CDATA_SECTION_NODE
492syn keyword phpCoreConstant contained XML_COMMENT_NODE XML_DOCUMENT_FRAG_NODE XML_DOCUMENT_NODE XML_DOCUMENT_TYPE_NODE XML_DTD_NODE XML_ELEMENT_DECL_NODE XML_ELEMENT_NODE
493syn keyword phpCoreConstant contained XML_ENTITY_DECL_NODE XML_ENTITY_NODE XML_ENTITY_REF_NODE XML_ERROR_ASYNC_ENTITY XML_ERROR_ATTRIBUTE_EXTERNAL_ENTITY_REF XML_ERROR_BAD_CHAR_REF
494syn keyword phpCoreConstant contained XML_ERROR_BINARY_ENTITY_REF XML_ERROR_DUPLICATE_ATTRIBUTE XML_ERROR_EXTERNAL_ENTITY_HANDLING XML_ERROR_INCORRECT_ENCODING XML_ERROR_INVALID_TOKEN
495syn keyword phpCoreConstant contained XML_ERROR_JUNK_AFTER_DOC_ELEMENT XML_ERROR_MISPLACED_XML_PI XML_ERROR_NONE XML_ERROR_NO_ELEMENTS XML_ERROR_NO_MEMORY XML_ERROR_PARAM_ENTITY_REF
496syn keyword phpCoreConstant contained XML_ERROR_PARTIAL_CHAR XML_ERROR_RECURSIVE_ENTITY_REF XML_ERROR_SYNTAX XML_ERROR_TAG_MISMATCH XML_ERROR_UNCLOSED_CDATA_SECTION
497syn keyword phpCoreConstant contained XML_ERROR_UNCLOSED_TOKEN XML_ERROR_UNDEFINED_ENTITY XML_ERROR_UNKNOWN_ENCODING XML_HTML_DOCUMENT_NODE XML_LOCAL_NAMESPACE
498syn keyword phpCoreConstant contained XML_NAMESPACE_DECL_NODE XML_NOTATION_NODE XML_OPTION_CASE_FOLDING XML_OPTION_SKIP_TAGSTART XML_OPTION_SKIP_WHITE XML_OPTION_TARGET_ENCODING
499syn keyword phpCoreConstant contained XML_PI_NODE XML_SAX_IMPL XML_TEXT_NODE
500syn keyword phpCoreConstant contained ZEND_THREAD_SAFE
501syn case ignore
502
503" Peter Hodge, June 17 2006
504" - changed this from 'phpConstant' to 'phpMagicConstant'
505" to clarify its contents
506syn case match
507syn keyword phpMagicConstant contained __LINE__ __FILE__ __FUNCTION__ __METHOD__ __CLASS__
508syn case ignore
509
510
511" Function and Methods ripped from php_manual_de.tar.gz Jan 2003
512" TODO: check these against the latest PHP manual
513syn keyword phpFunctions apache_child_terminate apache_get_modules apache_get_version apache_getenv apache_lookup_uri apache_note apache_request_headers apache_response_headers apache_setenv ascii2ebcdic ebcdic2ascii getallheaders virtual contained
514syn keyword phpFunctions array_change_key_case array_chunk array_combine array_count_values array_diff_assoc array_diff_uassoc array_diff array_fill array_filter array_flip array_intersect_assoc array_intersect array_key_exists array_keys array_map array_merge_recursive array_merge array_multisort array_pad array_pop array_push array_rand array_reduce array_reverse array_search array_shift array_slice array_splice array_sum array_udiff_assoc array_udiff_uassoc array_udiff array_unique array_unshift array_values array_walk arsort asort compact count current each end extract in_array key krsort ksort natcasesort natsort next pos prev range reset rsort shuffle sizeof sort uasort uksort usort contained
515syn keyword phpFunctions aspell_check aspell_new aspell_suggest contained
516syn keyword phpFunctions bcadd bccomp bcdiv bcmod bcmul bcpow bcpowmod bcscale bcsqrt bcsub contained
517syn keyword phpFunctions bzclose bzcompress bzdecompress bzerrno bzerror bzerrstr bzflush bzopen bzread bzwrite contained
518syn keyword phpFunctions cal_days_in_month cal_from_jd cal_info cal_to_jd easter_date easter_days frenchtojd gregoriantojd jddayofweek jdmonthname jdtofrench jdtogregorian jdtojewish jdtojulian jdtounix jewishtojd juliantojd unixtojd contained
519syn keyword phpFunctions ccvs_add ccvs_auth ccvs_command ccvs_count ccvs_delete ccvs_done ccvs_init ccvs_lookup ccvs_new ccvs_report ccvs_return ccvs_reverse ccvs_sale ccvs_status ccvs_textvalue ccvs_void contained
520syn keyword phpFunctions call_user_method_array call_user_method class_exists get_class_methods get_class_vars get_class get_declared_classes get_object_vars get_parent_class is_a is_subclass_of method_exists contained
521syn keyword phpFunctions com VARIANT com_addref com_get com_invoke com_isenum com_load_typelib com_load com_propget com_propput com_propset com_release com_set contained
522syn keyword phpFunctions cpdf_add_annotation cpdf_add_outline cpdf_arc cpdf_begin_text cpdf_circle cpdf_clip cpdf_close cpdf_closepath_fill_stroke cpdf_closepath_stroke cpdf_closepath cpdf_continue_text cpdf_curveto cpdf_end_text cpdf_fill_stroke cpdf_fill cpdf_finalize_page cpdf_finalize cpdf_global_set_document_limits cpdf_import_jpeg cpdf_lineto cpdf_moveto cpdf_newpath cpdf_open cpdf_output_buffer cpdf_page_init cpdf_place_inline_image cpdf_rect cpdf_restore cpdf_rlineto cpdf_rmoveto cpdf_rotate_text cpdf_rotate cpdf_save_to_file cpdf_save cpdf_scale cpdf_set_action_url cpdf_set_char_spacing cpdf_set_creator cpdf_set_current_page cpdf_set_font_directories cpdf_set_font_map_file cpdf_set_font cpdf_set_horiz_scaling cpdf_set_keywords cpdf_set_leading cpdf_set_page_animation cpdf_set_subject cpdf_set_text_matrix cpdf_set_text_pos cpdf_set_text_rendering cpdf_set_text_rise cpdf_set_title cpdf_set_viewer_preferences cpdf_set_word_spacing cpdf_setdash cpdf_setflat cpdf_setgray_fill cpdf_setgray_stroke cpdf_setgray cpdf_setlinecap cpdf_setlinejoin cpdf_setlinewidth cpdf_setmiterlimit cpdf_setrgbcolor_fill cpdf_setrgbcolor_stroke cpdf_setrgbcolor cpdf_show_xy cpdf_show cpdf_stringwidth cpdf_stroke cpdf_text cpdf_translate contained
523syn keyword phpFunctions crack_check crack_closedict crack_getlastmessage crack_opendict contained
524syn keyword phpFunctions ctype_alnum ctype_alpha ctype_cntrl ctype_digit ctype_graph ctype_lower ctype_print ctype_punct ctype_space ctype_upper ctype_xdigit contained
525syn keyword phpFunctions curl_close curl_errno curl_error curl_exec curl_getinfo curl_init curl_multi_add_handle curl_multi_close curl_multi_exec curl_multi_getcontent curl_multi_info_read curl_multi_init curl_multi_remove_handle curl_multi_select curl_setopt curl_version contained
526syn keyword phpFunctions cybercash_base64_decode cybercash_base64_encode cybercash_decr cybercash_encr contained
527syn keyword phpFunctions cyrus_authenticate cyrus_bind cyrus_close cyrus_connect cyrus_query cyrus_unbind contained
528syn keyword phpFunctions checkdate date getdate gettimeofday gmdate gmmktime gmstrftime localtime microtime mktime strftime strtotime time contained
529syn keyword phpFunctions dba_close dba_delete dba_exists dba_fetch dba_firstkey dba_handlers dba_insert dba_key_split dba_list dba_nextkey dba_open dba_optimize dba_popen dba_replace dba_sync contained
530syn keyword phpFunctions dbase_add_record dbase_close dbase_create dbase_delete_record dbase_get_header_info dbase_get_record_with_names dbase_get_record dbase_numfields dbase_numrecords dbase_open dbase_pack dbase_replace_record contained
531syn keyword phpFunctions dblist dbmclose dbmdelete dbmexists dbmfetch dbmfirstkey dbminsert dbmnextkey dbmopen dbmreplace contained
532syn keyword phpFunctions dbplus_add dbplus_aql dbplus_chdir dbplus_close dbplus_curr dbplus_errcode dbplus_errno dbplus_find dbplus_first dbplus_flush dbplus_freealllocks dbplus_freelock dbplus_freerlocks dbplus_getlock dbplus_getunique dbplus_info dbplus_last dbplus_lockrel dbplus_next dbplus_open dbplus_prev dbplus_rchperm dbplus_rcreate dbplus_rcrtexact dbplus_rcrtlike dbplus_resolve dbplus_restorepos dbplus_rkeys dbplus_ropen dbplus_rquery dbplus_rrename dbplus_rsecindex dbplus_runlink dbplus_rzap dbplus_savepos dbplus_setindex dbplus_setindexbynumber dbplus_sql dbplus_tcl dbplus_tremove dbplus_undo dbplus_undoprepare dbplus_unlockrel dbplus_unselect dbplus_update dbplus_xlockrel dbplus_xunlockrel contained
533syn keyword phpFunctions dbx_close dbx_compare dbx_connect dbx_error dbx_escape_string dbx_fetch_row dbx_query dbx_sort contained
534syn keyword phpFunctions dio_close dio_fcntl dio_open dio_read dio_seek dio_stat dio_tcsetattr dio_truncate dio_write contained
535syn keyword phpFunctions chdir chroot dir closedir getcwd opendir readdir rewinddir scandir contained
536syn keyword phpFunctions domxml_new_doc domxml_open_file domxml_open_mem domxml_version domxml_xmltree domxml_xslt_stylesheet_doc domxml_xslt_stylesheet_file domxml_xslt_stylesheet xpath_eval_expression xpath_eval xpath_new_context xptr_eval xptr_new_context contained
537syn keyword phpMethods name specified value create_attribute create_cdata_section create_comment create_element_ns create_element create_entity_reference create_processing_instruction create_text_node doctype document_element dump_file dump_mem get_element_by_id get_elements_by_tagname html_dump_mem xinclude entities internal_subset name notations public_id system_id get_attribute_node get_attribute get_elements_by_tagname has_attribute remove_attribute set_attribute tagname add_namespace append_child append_sibling attributes child_nodes clone_node dump_node first_child get_content has_attributes has_child_nodes insert_before is_blank_node last_child next_sibling node_name node_type node_value owner_document parent_node prefix previous_sibling remove_child replace_child replace_node set_content set_name set_namespace unlink_node data target process result_dump_file result_dump_mem contained
538syn keyword phpFunctions dotnet_load contained
539syn keyword phpFunctions debug_backtrace debug_print_backtrace error_log error_reporting restore_error_handler set_error_handler trigger_error user_error contained
540syn keyword phpFunctions escapeshellarg escapeshellcmd exec passthru proc_close proc_get_status proc_nice proc_open proc_terminate shell_exec system contained
541syn keyword phpFunctions fam_cancel_monitor fam_close fam_monitor_collection fam_monitor_directory fam_monitor_file fam_next_event fam_open fam_pending fam_resume_monitor fam_suspend_monitor contained
542syn keyword phpFunctions fbsql_affected_rows fbsql_autocommit fbsql_change_user fbsql_close fbsql_commit fbsql_connect fbsql_create_blob fbsql_create_clob fbsql_create_db fbsql_data_seek fbsql_database_password fbsql_database fbsql_db_query fbsql_db_status fbsql_drop_db fbsql_errno fbsql_error fbsql_fetch_array fbsql_fetch_assoc fbsql_fetch_field fbsql_fetch_lengths fbsql_fetch_object fbsql_fetch_row fbsql_field_flags fbsql_field_len fbsql_field_name fbsql_field_seek fbsql_field_table fbsql_field_type fbsql_free_result fbsql_get_autostart_info fbsql_hostname fbsql_insert_id fbsql_list_dbs fbsql_list_fields fbsql_list_tables fbsql_next_result fbsql_num_fields fbsql_num_rows fbsql_password fbsql_pconnect fbsql_query fbsql_read_blob fbsql_read_clob fbsql_result fbsql_rollback fbsql_select_db fbsql_set_lob_mode fbsql_set_transaction fbsql_start_db fbsql_stop_db fbsql_tablename fbsql_username fbsql_warnings contained
543syn keyword phpFunctions fdf_add_doc_javascript fdf_add_template fdf_close fdf_create fdf_enum_values fdf_errno fdf_error fdf_get_ap fdf_get_attachment fdf_get_encoding fdf_get_file fdf_get_flags fdf_get_opt fdf_get_status fdf_get_value fdf_get_version fdf_header fdf_next_field_name fdf_open_string fdf_open fdf_remove_item fdf_save_string fdf_save fdf_set_ap fdf_set_encoding fdf_set_file fdf_set_flags fdf_set_javascript_action fdf_set_opt fdf_set_status fdf_set_submit_form_action fdf_set_target_frame fdf_set_value fdf_set_version contained
544syn keyword phpFunctions filepro_fieldcount filepro_fieldname filepro_fieldtype filepro_fieldwidth filepro_retrieve filepro_rowcount filepro contained
545syn keyword phpFunctions basename chgrp chmod chown clearstatcache copy delete dirname disk_free_space disk_total_space diskfreespace fclose feof fflush fgetc fgetcsv fgets fgetss file_exists file_get_contents file_put_contents file fileatime filectime filegroup fileinode filemtime fileowner fileperms filesize filetype flock fnmatch fopen fpassthru fputs fread fscanf fseek fstat ftell ftruncate fwrite glob is_dir is_executable is_file is_link is_readable is_uploaded_file is_writable is_writeable link linkinfo lstat mkdir move_uploaded_file parse_ini_file pathinfo pclose popen readfile readlink realpath rename rewind rmdir set_file_buffer stat symlink tempnam tmpfile touch umask unlink contained
546syn keyword phpFunctions fribidi_log2vis contained
547syn keyword phpFunctions ftp_alloc ftp_cdup ftp_chdir ftp_chmod ftp_close ftp_connect ftp_delete ftp_exec ftp_fget ftp_fput ftp_get_option ftp_get ftp_login ftp_mdtm ftp_mkdir ftp_nb_continue ftp_nb_fget ftp_nb_fput ftp_nb_get ftp_nb_put ftp_nlist ftp_pasv ftp_put ftp_pwd ftp_quit ftp_raw ftp_rawlist ftp_rename ftp_rmdir ftp_set_option ftp_site ftp_size ftp_ssl_connect ftp_systype contained
548syn keyword phpFunctions call_user_func_array call_user_func create_function func_get_arg func_get_args func_num_args function_exists get_defined_functions register_shutdown_function register_tick_function unregister_tick_function contained
549syn keyword phpFunctions bind_textdomain_codeset bindtextdomain dcgettext dcngettext dgettext dngettext gettext ngettext textdomain contained
550syn keyword phpFunctions gmp_abs gmp_add gmp_and gmp_clrbit gmp_cmp gmp_com gmp_div_q gmp_div_qr gmp_div_r gmp_div gmp_divexact gmp_fact gmp_gcd gmp_gcdext gmp_hamdist gmp_init gmp_intval gmp_invert gmp_jacobi gmp_legendre gmp_mod gmp_mul gmp_neg gmp_or gmp_perfect_square gmp_popcount gmp_pow gmp_powm gmp_prob_prime gmp_random gmp_scan0 gmp_scan1 gmp_setbit gmp_sign gmp_sqrt gmp_sqrtrem gmp_sqrtrm gmp_strval gmp_sub gmp_xor contained
551syn keyword phpFunctions header headers_list headers_sent setcookie contained
552syn keyword phpFunctions hw_api_attribute hwapi_hgcsp hw_api_content hw_api_object contained
553syn keyword phpMethods key langdepvalue value values checkin checkout children mimetype read content copy dbstat dcstat dstanchors dstofsrcanchors count reason find ftstat hwstat identify info insert insertanchor insertcollection insertdocument link lock move assign attreditable count insert remove title value object objectbyanchor parents description type remove replace setcommitedversion srcanchors srcsofdst unlock user userlist contained
554syn keyword phpFunctions hw_Array2Objrec hw_changeobject hw_Children hw_ChildrenObj hw_Close hw_Connect hw_connection_info hw_cp hw_Deleteobject hw_DocByAnchor hw_DocByAnchorObj hw_Document_Attributes hw_Document_BodyTag hw_Document_Content hw_Document_SetContent hw_Document_Size hw_dummy hw_EditText hw_Error hw_ErrorMsg hw_Free_Document hw_GetAnchors hw_GetAnchorsObj hw_GetAndLock hw_GetChildColl hw_GetChildCollObj hw_GetChildDocColl hw_GetChildDocCollObj hw_GetObject hw_GetObjectByQuery hw_GetObjectByQueryColl hw_GetObjectByQueryCollObj hw_GetObjectByQueryObj hw_GetParents hw_GetParentsObj hw_getrellink hw_GetRemote hw_getremotechildren hw_GetSrcByDestObj hw_GetText hw_getusername hw_Identify hw_InCollections hw_Info hw_InsColl hw_InsDoc hw_insertanchors hw_InsertDocument hw_InsertObject hw_mapid hw_Modifyobject hw_mv hw_New_Document hw_objrec2array hw_Output_Document hw_pConnect hw_PipeDocument hw_Root hw_setlinkroot hw_stat hw_Unlock hw_Who contained
555syn keyword phpFunctions ibase_add_user ibase_affected_rows ibase_blob_add ibase_blob_cancel ibase_blob_close ibase_blob_create ibase_blob_echo ibase_blob_get ibase_blob_import ibase_blob_info ibase_blob_open ibase_close ibase_commit_ret ibase_commit ibase_connect ibase_delete_user ibase_drop_db ibase_errcode ibase_errmsg ibase_execute ibase_fetch_assoc ibase_fetch_object ibase_fetch_row ibase_field_info ibase_free_event_handler ibase_free_query ibase_free_result ibase_gen_id ibase_modify_user ibase_name_result ibase_num_fields ibase_num_params ibase_param_info ibase_pconnect ibase_prepare ibase_query ibase_rollback_ret ibase_rollback ibase_set_event_handler ibase_timefmt ibase_trans ibase_wait_event contained
556syn keyword phpFunctions iconv_get_encoding iconv_mime_decode_headers iconv_mime_decode iconv_mime_encode iconv_set_encoding iconv_strlen iconv_strpos iconv_strrpos iconv_substr iconv ob_iconv_handler contained
557syn keyword phpFunctions ifx_affected_rows ifx_blobinfile_mode ifx_byteasvarchar ifx_close ifx_connect ifx_copy_blob ifx_create_blob ifx_create_char ifx_do ifx_error ifx_errormsg ifx_fetch_row ifx_fieldproperties ifx_fieldtypes ifx_free_blob ifx_free_char ifx_free_result ifx_get_blob ifx_get_char ifx_getsqlca ifx_htmltbl_result ifx_nullformat ifx_num_fields ifx_num_rows ifx_pconnect ifx_prepare ifx_query ifx_textasvarchar ifx_update_blob ifx_update_char ifxus_close_slob ifxus_create_slob ifxus_free_slob ifxus_open_slob ifxus_read_slob ifxus_seek_slob ifxus_tell_slob ifxus_write_slob contained
558syn keyword phpFunctions exif_imagetype exif_read_data exif_thumbnail gd_info getimagesize image_type_to_mime_type image2wbmp imagealphablending imageantialias imagearc imagechar imagecharup imagecolorallocate imagecolorallocatealpha imagecolorat imagecolorclosest imagecolorclosestalpha imagecolorclosesthwb imagecolordeallocate imagecolorexact imagecolorexactalpha imagecolormatch imagecolorresolve imagecolorresolvealpha imagecolorset imagecolorsforindex imagecolorstotal imagecolortransparent imagecopy imagecopymerge imagecopymergegray imagecopyresampled imagecopyresized imagecreate imagecreatefromgd2 imagecreatefromgd2part imagecreatefromgd imagecreatefromgif imagecreatefromjpeg imagecreatefrompng imagecreatefromstring imagecreatefromwbmp imagecreatefromxbm imagecreatefromxpm imagecreatetruecolor imagedashedline imagedestroy imageellipse imagefill imagefilledarc imagefilledellipse imagefilledpolygon imagefilledrectangle imagefilltoborder imagefontheight imagefontwidth imageftbbox imagefttext imagegammacorrect imagegd2 imagegd imagegif imageinterlace imageistruecolor imagejpeg imageline imageloadfont imagepalettecopy imagepng imagepolygon imagepsbbox imagepscopyfont imagepsencodefont imagepsextendfont imagepsfreefont imagepsloadfont imagepsslantfont imagepstext imagerectangle imagerotate imagesavealpha imagesetbrush imagesetpixel imagesetstyle imagesetthickness imagesettile imagestring imagestringup imagesx imagesy imagetruecolortopalette imagettfbbox imagettftext imagetypes imagewbmp iptcembed iptcparse jpeg2wbmp png2wbmp read_exif_data contained
559syn keyword phpFunctions imap_8bit imap_alerts imap_append imap_base64 imap_binary imap_body imap_bodystruct imap_check imap_clearflag_full imap_close imap_createmailbox imap_delete imap_deletemailbox imap_errors imap_expunge imap_fetch_overview imap_fetchbody imap_fetchheader imap_fetchstructure imap_get_quota imap_get_quotaroot imap_getacl imap_getmailboxes imap_getsubscribed imap_header imap_headerinfo imap_headers imap_last_error imap_list imap_listmailbox imap_listscan imap_listsubscribed imap_lsub imap_mail_compose imap_mail_copy imap_mail_move imap_mail imap_mailboxmsginfo imap_mime_header_decode imap_msgno imap_num_msg imap_num_recent imap_open imap_ping imap_qprint imap_renamemailbox imap_reopen imap_rfc822_parse_adrlist imap_rfc822_parse_headers imap_rfc822_write_address imap_scanmailbox imap_search imap_set_quota imap_setacl imap_setflag_full imap_sort imap_status imap_subscribe imap_thread imap_timeout imap_uid imap_undelete imap_unsubscribe imap_utf7_decode imap_utf7_encode imap_utf8 contained
560syn keyword phpFunctions assert_options assert dl extension_loaded get_cfg_var get_current_user get_defined_constants get_extension_funcs get_include_path get_included_files get_loaded_extensions get_magic_quotes_gpc get_magic_quotes_runtime get_required_files getenv getlastmod getmygid getmyinode getmypid getmyuid getopt getrusage ini_alter ini_get_all ini_get ini_restore ini_set main memory_get_usage php_ini_scanned_files php_logo_guid php_sapi_name php_uname phpcredits phpinfo phpversion putenv restore_include_path set_include_path set_magic_quotes_runtime set_time_limit version_compare zend_logo_guid zend_version contained
561syn keyword phpFunctions ingres_autocommit ingres_close ingres_commit ingres_connect ingres_fetch_array ingres_fetch_object ingres_fetch_row ingres_field_length ingres_field_name ingres_field_nullable ingres_field_precision ingres_field_scale ingres_field_type ingres_num_fields ingres_num_rows ingres_pconnect ingres_query ingres_rollback contained
562syn keyword phpFunctions ircg_channel_mode ircg_disconnect ircg_fetch_error_msg ircg_get_username ircg_html_encode ircg_ignore_add ircg_ignore_del ircg_is_conn_alive ircg_join ircg_kick ircg_lookup_format_messages ircg_msg ircg_nick ircg_nickname_escape ircg_nickname_unescape ircg_notice ircg_part ircg_pconnect ircg_register_format_messages ircg_set_current ircg_set_file ircg_set_on_die ircg_topic ircg_whois contained
563syn keyword phpFunctions java_last_exception_clear java_last_exception_get contained
564syn keyword phpFunctions ldap_8859_to_t61 ldap_add ldap_bind ldap_close ldap_compare ldap_connect ldap_count_entries ldap_delete ldap_dn2ufn ldap_err2str ldap_errno ldap_error ldap_explode_dn ldap_first_attribute ldap_first_entry ldap_first_reference ldap_free_result ldap_get_attributes ldap_get_dn ldap_get_entries ldap_get_option ldap_get_values_len ldap_get_values ldap_list ldap_mod_add ldap_mod_del ldap_mod_replace ldap_modify ldap_next_attribute ldap_next_entry ldap_next_reference ldap_parse_reference ldap_parse_result ldap_read ldap_rename ldap_search ldap_set_option ldap_set_rebind_proc ldap_sort ldap_start_tls ldap_t61_to_8859 ldap_unbind contained
565syn keyword phpFunctions lzf_compress lzf_decompress lzf_optimized_for contained
566syn keyword phpFunctions ezmlm_hash mail contained
567syn keyword phpFunctions mailparse_determine_best_xfer_encoding mailparse_msg_create mailparse_msg_extract_part_file mailparse_msg_extract_part mailparse_msg_free mailparse_msg_get_part_data mailparse_msg_get_part mailparse_msg_get_structure mailparse_msg_parse_file mailparse_msg_parse mailparse_rfc822_parse_addresses mailparse_stream_encode mailparse_uudecode_all contained
568syn keyword phpFunctions abs acos acosh asin asinh atan2 atan atanh base_convert bindec ceil cos cosh decbin dechex decoct deg2rad exp expm1 floor fmod getrandmax hexdec hypot is_finite is_infinite is_nan lcg_value log10 log1p log max min mt_getrandmax mt_rand mt_srand octdec pi pow rad2deg rand round sin sinh sqrt srand tan tanh contained
569syn keyword phpFunctions mb_convert_case mb_convert_encoding mb_convert_kana mb_convert_variables mb_decode_mimeheader mb_decode_numericentity mb_detect_encoding mb_detect_order mb_encode_mimeheader mb_encode_numericentity mb_ereg_match mb_ereg_replace mb_ereg_search_getpos mb_ereg_search_getregs mb_ereg_search_init mb_ereg_search_pos mb_ereg_search_regs mb_ereg_search_setpos mb_ereg_search mb_ereg mb_eregi_replace mb_eregi mb_get_info mb_http_input mb_http_output mb_internal_encoding mb_language mb_output_handler mb_parse_str mb_preferred_mime_name mb_regex_encoding mb_regex_set_options mb_send_mail mb_split mb_strcut mb_strimwidth mb_strlen mb_strpos mb_strrpos mb_strtolower mb_strtoupper mb_strwidth mb_substitute_character mb_substr_count mb_substr contained
570syn keyword phpFunctions mcal_append_event mcal_close mcal_create_calendar mcal_date_compare mcal_date_valid mcal_day_of_week mcal_day_of_year mcal_days_in_month mcal_delete_calendar mcal_delete_event mcal_event_add_attribute mcal_event_init mcal_event_set_alarm mcal_event_set_category mcal_event_set_class mcal_event_set_description mcal_event_set_end mcal_event_set_recur_daily mcal_event_set_recur_monthly_mday mcal_event_set_recur_monthly_wday mcal_event_set_recur_none mcal_event_set_recur_weekly mcal_event_set_recur_yearly mcal_event_set_start mcal_event_set_title mcal_expunge mcal_fetch_current_stream_event mcal_fetch_event mcal_is_leap_year mcal_list_alarms mcal_list_events mcal_next_recurrence mcal_open mcal_popen mcal_rename_calendar mcal_reopen mcal_snooze mcal_store_event mcal_time_valid mcal_week_of_year contained
571syn keyword phpFunctions mcrypt_cbc mcrypt_cfb mcrypt_create_iv mcrypt_decrypt mcrypt_ecb mcrypt_enc_get_algorithms_name mcrypt_enc_get_block_size mcrypt_enc_get_iv_size mcrypt_enc_get_key_size mcrypt_enc_get_modes_name mcrypt_enc_get_supported_key_sizes mcrypt_enc_is_block_algorithm_mode mcrypt_enc_is_block_algorithm mcrypt_enc_is_block_mode mcrypt_enc_self_test mcrypt_encrypt mcrypt_generic_deinit mcrypt_generic_end mcrypt_generic_init mcrypt_generic mcrypt_get_block_size mcrypt_get_cipher_name mcrypt_get_iv_size mcrypt_get_key_size mcrypt_list_algorithms mcrypt_list_modes mcrypt_module_close mcrypt_module_get_algo_block_size mcrypt_module_get_algo_key_size mcrypt_module_get_supported_key_sizes mcrypt_module_is_block_algorithm_mode mcrypt_module_is_block_algorithm mcrypt_module_is_block_mode mcrypt_module_open mcrypt_module_self_test mcrypt_ofb mdecrypt_generic contained
572syn keyword phpFunctions mcve_adduser mcve_adduserarg mcve_bt mcve_checkstatus mcve_chkpwd mcve_chngpwd mcve_completeauthorizations mcve_connect mcve_connectionerror mcve_deleteresponse mcve_deletetrans mcve_deleteusersetup mcve_deluser mcve_destroyconn mcve_destroyengine mcve_disableuser mcve_edituser mcve_enableuser mcve_force mcve_getcell mcve_getcellbynum mcve_getcommadelimited mcve_getheader mcve_getuserarg mcve_getuserparam mcve_gft mcve_gl mcve_gut mcve_initconn mcve_initengine mcve_initusersetup mcve_iscommadelimited mcve_liststats mcve_listusers mcve_maxconntimeout mcve_monitor mcve_numcolumns mcve_numrows mcve_override mcve_parsecommadelimited mcve_ping mcve_preauth mcve_preauthcompletion mcve_qc mcve_responseparam mcve_return mcve_returncode mcve_returnstatus mcve_sale mcve_setblocking mcve_setdropfile mcve_setip mcve_setssl_files mcve_setssl mcve_settimeout mcve_settle mcve_text_avs mcve_text_code mcve_text_cv mcve_transactionauth mcve_transactionavs mcve_transactionbatch mcve_transactioncv mcve_transactionid mcve_transactionitem mcve_transactionssent mcve_transactiontext mcve_transinqueue mcve_transnew mcve_transparam mcve_transsend mcve_ub mcve_uwait mcve_verifyconnection mcve_verifysslcert mcve_void contained
573syn keyword phpFunctions mhash_count mhash_get_block_size mhash_get_hash_name mhash_keygen_s2k mhash contained
574syn keyword phpFunctions mime_content_type contained
575syn keyword phpFunctions ming_setcubicthreshold ming_setscale ming_useswfversion SWFAction SWFBitmap swfbutton_keypress SWFbutton SWFDisplayItem SWFFill SWFFont SWFGradient SWFMorph SWFMovie SWFShape SWFSprite SWFText SWFTextField contained
576syn keyword phpMethods getHeight getWidth addAction addShape setAction setdown setHit setOver setUp addColor move moveTo multColor remove Rotate rotateTo scale scaleTo setDepth setName setRatio skewX skewXTo skewY skewYTo moveTo rotateTo scaleTo skewXTo skewYTo getwidth addEntry getshape1 getshape2 add nextframe output remove save setbackground setdimension setframes setrate streammp3 addFill drawCurve drawCurveTo drawLine drawLineTo movePen movePenTo setLeftFill setLine setRightFill add nextframe remove setframes addString getWidth moveTo setColor setFont setHeight setSpacing addstring align setbounds setcolor setFont setHeight setindentation setLeftMargin setLineSpacing setMargins setname setrightMargin contained
577syn keyword phpFunctions connection_aborted connection_status connection_timeout constant define defined eval get_browser highlight_file highlight_string ignore_user_abort pack show_source sleep uniqid unpack usleep contained
578syn keyword phpFunctions udm_add_search_limit udm_alloc_agent udm_api_version udm_cat_list udm_cat_path udm_check_charset udm_check_stored udm_clear_search_limits udm_close_stored udm_crc32 udm_errno udm_error udm_find udm_free_agent udm_free_ispell_data udm_free_res udm_get_doc_count udm_get_res_field udm_get_res_param udm_load_ispell_data udm_open_stored udm_set_agent_param contained
579syn keyword phpFunctions msession_connect msession_count msession_create msession_destroy msession_disconnect msession_find msession_get_array msession_get msession_getdata msession_inc msession_list msession_listvar msession_lock msession_plugin msession_randstr msession_set_array msession_set msession_setdata msession_timeout msession_uniq msession_unlock contained
580syn keyword phpFunctions msql_affected_rows msql_close msql_connect msql_create_db msql_createdb msql_data_seek msql_dbname msql_drop_db msql_dropdb msql_error msql_fetch_array msql_fetch_field msql_fetch_object msql_fetch_row msql_field_seek msql_fieldflags msql_fieldlen msql_fieldname msql_fieldtable msql_fieldtype msql_free_result msql_freeresult msql_list_dbs msql_list_fields msql_list_tables msql_listdbs msql_listfields msql_listtables msql_num_fields msql_num_rows msql_numfields msql_numrows msql_pconnect msql_query msql_regcase msql_result msql_select_db msql_selectdb msql_tablename msql contained
581syn keyword phpFunctions mssql_bind mssql_close mssql_connect mssql_data_seek mssql_execute mssql_fetch_array mssql_fetch_assoc mssql_fetch_batch mssql_fetch_field mssql_fetch_object mssql_fetch_row mssql_field_length mssql_field_name mssql_field_seek mssql_field_type mssql_free_result mssql_free_statement mssql_get_last_message mssql_guid_string mssql_init mssql_min_error_severity mssql_min_message_severity mssql_next_result mssql_num_fields mssql_num_rows mssql_pconnect mssql_query mssql_result mssql_rows_affected mssql_select_db contained
582syn keyword phpFunctions muscat_close muscat_get muscat_give muscat_setup_net muscat_setup contained
583syn keyword phpFunctions mysql_affected_rows mysql_change_user mysql_client_encoding mysql_close mysql_connect mysql_create_db mysql_data_seek mysql_db_name mysql_db_query mysql_drop_db mysql_errno mysql_error mysql_escape_string mysql_fetch_array mysql_fetch_assoc mysql_fetch_field mysql_fetch_lengths mysql_fetch_object mysql_fetch_row mysql_field_flags mysql_field_len mysql_field_name mysql_field_seek mysql_field_table mysql_field_type mysql_free_result mysql_get_client_info mysql_get_host_info mysql_get_proto_info mysql_get_server_info mysql_info mysql_insert_id mysql_list_dbs mysql_list_fields mysql_list_processes mysql_list_tables mysql_num_fields mysql_num_rows mysql_pconnect mysql_ping mysql_query mysql_real_escape_string mysql_result mysql_select_db mysql_stat mysql_tablename mysql_thread_id mysql_unbuffered_query contained
584syn keyword phpFunctions mysqli_affected_rows mysqli_autocommit mysqli_bind_param mysqli_bind_result mysqli_change_user mysqli_character_set_name mysqli_close mysqli_commit mysqli_connect mysqli_data_seek mysqli_debug mysqli_disable_reads_from_master mysqli_disable_rpl_parse mysqli_dump_debug_info mysqli_enable_reads_from_master mysqli_enable_rpl_parse mysqli_errno mysqli_error mysqli_execute mysqli_fetch_array mysqli_fetch_assoc mysqli_fetch_field_direct mysqli_fetch_field mysqli_fetch_fields mysqli_fetch_lengths mysqli_fetch_object mysqli_fetch_row mysqli_fetch mysqli_field_count mysqli_field_seek mysqli_field_tell mysqli_free_result mysqli_get_client_info mysqli_get_host_info mysqli_get_proto_info mysqli_get_server_info mysqli_get_server_version mysqli_info mysqli_init mysqli_insert_id mysqli_kill mysqli_master_query mysqli_num_fields mysqli_num_rows mysqli_options mysqli_param_count mysqli_ping mysqli_prepare_result mysqli_prepare mysqli_profiler mysqli_query mysqli_read_query_result mysqli_real_connect mysqli_real_escape_string mysqli_real_query mysqli_reload mysqli_rollback mysqli_rpl_parse_enabled mysqli_rpl_probe mysqli_rpl_query_type mysqli_select_db mysqli_send_long_data mysqli_send_query mysqli_slave_query mysqli_ssl_set mysqli_stat mysqli_stmt_affected_rows mysqli_stmt_close mysqli_stmt_errno mysqli_stmt_error mysqli_stmt_store_result mysqli_store_result mysqli_thread_id mysqli_thread_safe mysqli_use_result mysqli_warning_count contained
585syn keyword phpFunctions ncurses_addch ncurses_addchnstr ncurses_addchstr ncurses_addnstr ncurses_addstr ncurses_assume_default_colors ncurses_attroff ncurses_attron ncurses_attrset ncurses_baudrate ncurses_beep ncurses_bkgd ncurses_bkgdset ncurses_border ncurses_bottom_panel ncurses_can_change_color ncurses_cbreak ncurses_clear ncurses_clrtobot ncurses_clrtoeol ncurses_color_content ncurses_color_set ncurses_curs_set ncurses_def_prog_mode ncurses_def_shell_mode ncurses_define_key ncurses_del_panel ncurses_delay_output ncurses_delch ncurses_deleteln ncurses_delwin ncurses_doupdate ncurses_echo ncurses_echochar ncurses_end ncurses_erase ncurses_erasechar ncurses_filter ncurses_flash ncurses_flushinp ncurses_getch ncurses_getmaxyx ncurses_getmouse ncurses_getyx ncurses_halfdelay ncurses_has_colors ncurses_has_ic ncurses_has_il ncurses_has_key ncurses_hide_panel ncurses_hline ncurses_inch ncurses_init_color ncurses_init_pair ncurses_init ncurses_insch ncurses_insdelln ncurses_insertln ncurses_insstr ncurses_instr ncurses_isendwin ncurses_keyok ncurses_keypad ncurses_killchar ncurses_longname ncurses_meta ncurses_mouse_trafo ncurses_mouseinterval ncurses_mousemask ncurses_move_panel ncurses_move ncurses_mvaddch ncurses_mvaddchnstr ncurses_mvaddchstr ncurses_mvaddnstr ncurses_mvaddstr ncurses_mvcur ncurses_mvdelch ncurses_mvgetch ncurses_mvhline ncurses_mvinch ncurses_mvvline ncurses_mvwaddstr ncurses_napms ncurses_new_panel ncurses_newpad ncurses_newwin ncurses_nl ncurses_nocbreak ncurses_noecho ncurses_nonl ncurses_noqiflush ncurses_noraw ncurses_pair_content ncurses_panel_above ncurses_panel_below ncurses_panel_window ncurses_pnoutrefresh ncurses_prefresh ncurses_putp ncurses_qiflush ncurses_raw ncurses_refresh ncurses_replace_panel ncurses_reset_prog_mode ncurses_reset_shell_mode ncurses_resetty ncurses_savetty ncurses_scr_dump ncurses_scr_init ncurses_scr_restore ncurses_scr_set ncurses_scrl ncurses_show_panel ncurses_slk_attr ncurses_slk_attroff ncurses_slk_attron ncurses_slk_attrset ncurses_slk_clear ncurses_slk_color ncurses_slk_init ncurses_slk_noutrefresh ncurses_slk_refresh ncurses_slk_restore ncurses_slk_set ncurses_slk_touch ncurses_standend ncurses_standout ncurses_start_color ncurses_termattrs ncurses_termname ncurses_timeout ncurses_top_panel ncurses_typeahead ncurses_ungetch ncurses_ungetmouse ncurses_update_panels ncurses_use_default_colors ncurses_use_env ncurses_use_extended_names ncurses_vidattr ncurses_vline ncurses_waddch ncurses_waddstr ncurses_wattroff ncurses_wattron ncurses_wattrset ncurses_wborder ncurses_wclear ncurses_wcolor_set ncurses_werase ncurses_wgetch ncurses_whline ncurses_wmouse_trafo ncurses_wmove ncurses_wnoutrefresh ncurses_wrefresh ncurses_wstandend ncurses_wstandout ncurses_wvline contained
586syn keyword phpFunctions checkdnsrr closelog debugger_off debugger_on define_syslog_variables dns_check_record dns_get_mx dns_get_record fsockopen gethostbyaddr gethostbyname gethostbynamel getmxrr getprotobyname getprotobynumber getservbyname getservbyport ip2long long2ip openlog pfsockopen socket_get_status socket_set_blocking socket_set_timeout syslog contained
587syn keyword phpFunctions yp_all yp_cat yp_err_string yp_errno yp_first yp_get_default_domain yp_master yp_match yp_next yp_order contained
588syn keyword phpFunctions notes_body notes_copy_db notes_create_db notes_create_note notes_drop_db notes_find_note notes_header_info notes_list_msgs notes_mark_read notes_mark_unread notes_nav_create notes_search notes_unread notes_version contained
589syn keyword phpFunctions nsapi_request_headers nsapi_response_headers nsapi_virtual contained
590syn keyword phpFunctions aggregate_info aggregate_methods_by_list aggregate_methods_by_regexp aggregate_methods aggregate_properties_by_list aggregate_properties_by_regexp aggregate_properties aggregate aggregation_info deaggregate contained
591syn keyword phpFunctions ocibindbyname ocicancel ocicloselob ocicollappend ocicollassign ocicollassignelem ocicollgetelem ocicollmax ocicollsize ocicolltrim ocicolumnisnull ocicolumnname ocicolumnprecision ocicolumnscale ocicolumnsize ocicolumntype ocicolumntyperaw ocicommit ocidefinebyname ocierror ociexecute ocifetch ocifetchinto ocifetchstatement ocifreecollection ocifreecursor ocifreedesc ocifreestatement ociinternaldebug ociloadlob ocilogoff ocilogon ocinewcollection ocinewcursor ocinewdescriptor ocinlogon ocinumcols ociparse ociplogon ociresult ocirollback ocirowcount ocisavelob ocisavelobfile ociserverversion ocisetprefetch ocistatementtype ociwritelobtofile ociwritetemporarylob contained
592syn keyword phpFunctions odbc_autocommit odbc_binmode odbc_close_all odbc_close odbc_columnprivileges odbc_columns odbc_commit odbc_connect odbc_cursor odbc_data_source odbc_do odbc_error odbc_errormsg odbc_exec odbc_execute odbc_fetch_array odbc_fetch_into odbc_fetch_object odbc_fetch_row odbc_field_len odbc_field_name odbc_field_num odbc_field_precision odbc_field_scale odbc_field_type odbc_foreignkeys odbc_free_result odbc_gettypeinfo odbc_longreadlen odbc_next_result odbc_num_fields odbc_num_rows odbc_pconnect odbc_prepare odbc_primarykeys odbc_procedurecolumns odbc_procedures odbc_result_all odbc_result odbc_rollback odbc_setoption odbc_specialcolumns odbc_statistics odbc_tableprivileges odbc_tables contained
593syn keyword phpFunctions openssl_csr_export_to_file openssl_csr_export openssl_csr_new openssl_csr_sign openssl_error_string openssl_free_key openssl_get_privatekey openssl_get_publickey openssl_open openssl_pkcs7_decrypt openssl_pkcs7_encrypt openssl_pkcs7_sign openssl_pkcs7_verify openssl_pkey_export_to_file openssl_pkey_export openssl_pkey_get_private openssl_pkey_get_public openssl_pkey_new openssl_private_decrypt openssl_private_encrypt openssl_public_decrypt openssl_public_encrypt openssl_seal openssl_sign openssl_verify openssl_x509_check_private_key openssl_x509_checkpurpose openssl_x509_export_to_file openssl_x509_export openssl_x509_free openssl_x509_parse openssl_x509_read contained
594syn keyword phpFunctions ora_bind ora_close ora_columnname ora_columnsize ora_columntype ora_commit ora_commitoff ora_commiton ora_do ora_error ora_errorcode ora_exec ora_fetch_into ora_fetch ora_getcolumn ora_logoff ora_logon ora_numcols ora_numrows ora_open ora_parse ora_plogon ora_rollback contained
595syn keyword phpFunctions flush ob_clean ob_end_clean ob_end_flush ob_flush ob_get_clean ob_get_contents ob_get_flush ob_get_length ob_get_level ob_get_status ob_gzhandler ob_implicit_flush ob_list_handlers ob_start output_add_rewrite_var output_reset_rewrite_vars contained
596syn keyword phpFunctions overload contained
597syn keyword phpFunctions ovrimos_close ovrimos_commit ovrimos_connect ovrimos_cursor ovrimos_exec ovrimos_execute ovrimos_fetch_into ovrimos_fetch_row ovrimos_field_len ovrimos_field_name ovrimos_field_num ovrimos_field_type ovrimos_free_result ovrimos_longreadlen ovrimos_num_fields ovrimos_num_rows ovrimos_prepare ovrimos_result_all ovrimos_result ovrimos_rollback contained
598syn keyword phpFunctions pcntl_exec pcntl_fork pcntl_signal pcntl_waitpid pcntl_wexitstatus pcntl_wifexited pcntl_wifsignaled pcntl_wifstopped pcntl_wstopsig pcntl_wtermsig contained
599syn keyword phpFunctions preg_grep preg_match_all preg_match preg_quote preg_replace_callback preg_replace preg_split contained
600syn keyword phpFunctions pdf_add_annotation pdf_add_bookmark pdf_add_launchlink pdf_add_locallink pdf_add_note pdf_add_outline pdf_add_pdflink pdf_add_thumbnail pdf_add_weblink pdf_arc pdf_arcn pdf_attach_file pdf_begin_page pdf_begin_pattern pdf_begin_template pdf_circle pdf_clip pdf_close_image pdf_close_pdi_page pdf_close_pdi pdf_close pdf_closepath_fill_stroke pdf_closepath_stroke pdf_closepath pdf_concat pdf_continue_text pdf_curveto pdf_delete pdf_end_page pdf_end_pattern pdf_end_template pdf_endpath pdf_fill_stroke pdf_fill pdf_findfont pdf_get_buffer pdf_get_font pdf_get_fontname pdf_get_fontsize pdf_get_image_height pdf_get_image_width pdf_get_majorversion pdf_get_minorversion pdf_get_parameter pdf_get_pdi_parameter pdf_get_pdi_value pdf_get_value pdf_initgraphics pdf_lineto pdf_makespotcolor pdf_moveto pdf_new pdf_open_CCITT pdf_open_file pdf_open_gif pdf_open_image_file pdf_open_image pdf_open_jpeg pdf_open_memory_image pdf_open_pdi_page pdf_open_pdi pdf_open_png pdf_open_tiff pdf_open pdf_place_image pdf_place_pdi_page pdf_rect pdf_restore pdf_rotate pdf_save pdf_scale pdf_set_border_color pdf_set_border_dash pdf_set_border_style pdf_set_char_spacing pdf_set_duration pdf_set_font pdf_set_horiz_scaling pdf_set_info_author pdf_set_info_creator pdf_set_info_keywords pdf_set_info_subject pdf_set_info_title pdf_set_info pdf_set_leading pdf_set_parameter pdf_set_text_matrix pdf_set_text_pos pdf_set_text_rendering pdf_set_text_rise pdf_set_value pdf_set_word_spacing pdf_setcolor pdf_setdash pdf_setflat pdf_setfont pdf_setgray_fill pdf_setgray_stroke pdf_setgray pdf_setlinecap pdf_setlinejoin pdf_setlinewidth pdf_setmatrix pdf_setmiterlimit pdf_setpolydash pdf_setrgbcolor_fill pdf_setrgbcolor_stroke pdf_setrgbcolor pdf_show_boxed pdf_show_xy pdf_show pdf_skew pdf_stringwidth pdf_stroke pdf_translate contained
601syn keyword phpFunctions pfpro_cleanup pfpro_init pfpro_process_raw pfpro_process pfpro_version contained
602syn keyword phpFunctions pg_affected_rows pg_cancel_query pg_client_encoding pg_close pg_connect pg_connection_busy pg_connection_reset pg_connection_status pg_convert pg_copy_from pg_copy_to pg_dbname pg_delete pg_end_copy pg_escape_bytea pg_escape_string pg_fetch_all pg_fetch_array pg_fetch_assoc pg_fetch_object pg_fetch_result pg_fetch_row pg_field_is_null pg_field_name pg_field_num pg_field_prtlen pg_field_size pg_field_type pg_free_result pg_get_notify pg_get_pid pg_get_result pg_host pg_insert pg_last_error pg_last_notice pg_last_oid pg_lo_close pg_lo_create pg_lo_export pg_lo_import pg_lo_open pg_lo_read_all pg_lo_read pg_lo_seek pg_lo_tell pg_lo_unlink pg_lo_write pg_meta_data pg_num_fields pg_num_rows pg_options pg_pconnect pg_ping pg_port pg_put_line pg_query pg_result_error pg_result_seek pg_result_status pg_select pg_send_query pg_set_client_encoding pg_trace pg_tty pg_unescape_bytea pg_untrace pg_update contained
603syn keyword phpFunctions posix_ctermid posix_get_last_error posix_getcwd posix_getegid posix_geteuid posix_getgid posix_getgrgid posix_getgrnam posix_getgroups posix_getlogin posix_getpgid posix_getpgrp posix_getpid posix_getppid posix_getpwnam posix_getpwuid posix_getrlimit posix_getsid posix_getuid posix_isatty posix_kill posix_mkfifo posix_setegid posix_seteuid posix_setgid posix_setpgid posix_setsid posix_setuid posix_strerror posix_times posix_ttyname posix_uname contained
604syn keyword phpFunctions printer_abort printer_close printer_create_brush printer_create_dc printer_create_font printer_create_pen printer_delete_brush printer_delete_dc printer_delete_font printer_delete_pen printer_draw_bmp printer_draw_chord printer_draw_elipse printer_draw_line printer_draw_pie printer_draw_rectangle printer_draw_roundrect printer_draw_text printer_end_doc printer_end_page printer_get_option printer_list printer_logical_fontheight printer_open printer_select_brush printer_select_font printer_select_pen printer_set_option printer_start_doc printer_start_page printer_write contained
605syn keyword phpFunctions pspell_add_to_personal pspell_add_to_session pspell_check pspell_clear_session pspell_config_create pspell_config_ignore pspell_config_mode pspell_config_personal pspell_config_repl pspell_config_runtogether pspell_config_save_repl pspell_new_config pspell_new_personal pspell_new pspell_save_wordlist pspell_store_replacement pspell_suggest contained
606syn keyword phpFunctions qdom_error qdom_tree contained
607syn keyword phpFunctions readline_add_history readline_clear_history readline_completion_function readline_info readline_list_history readline_read_history readline_write_history readline contained
608syn keyword phpFunctions recode_file recode_string recode contained
609syn keyword phpFunctions ereg_replace ereg eregi_replace eregi split spliti sql_regcase contained
610syn keyword phpFunctions ftok msg_get_queue msg_receive msg_remove_queue msg_send msg_set_queue msg_stat_queue sem_acquire sem_get sem_release sem_remove shm_attach shm_detach shm_get_var shm_put_var shm_remove_var shm_remove contained
611syn keyword phpFunctions sesam_affected_rows sesam_commit sesam_connect sesam_diagnostic sesam_disconnect sesam_errormsg sesam_execimm sesam_fetch_array sesam_fetch_result sesam_fetch_row sesam_field_array sesam_field_name sesam_free_result sesam_num_fields sesam_query sesam_rollback sesam_seek_row sesam_settransaction contained
612syn keyword phpFunctions session_cache_expire session_cache_limiter session_decode session_destroy session_encode session_get_cookie_params session_id session_is_registered session_module_name session_name session_regenerate_id session_register session_save_path session_set_cookie_params session_set_save_handler session_start session_unregister session_unset session_write_close contained
613syn keyword phpFunctions shmop_close shmop_delete shmop_open shmop_read shmop_size shmop_write contained
614syn keyword phpFunctions snmp_get_quick_print snmp_set_quick_print snmpget snmprealwalk snmpset snmpwalk snmpwalkoid contained
615syn keyword phpFunctions socket_accept socket_bind socket_clear_error socket_close socket_connect socket_create_listen socket_create_pair socket_create socket_get_option socket_getpeername socket_getsockname socket_iovec_add socket_iovec_alloc socket_iovec_delete socket_iovec_fetch socket_iovec_free socket_iovec_set socket_last_error socket_listen socket_read socket_readv socket_recv socket_recvfrom socket_recvmsg socket_select socket_send socket_sendmsg socket_sendto socket_set_block socket_set_nonblock socket_set_option socket_shutdown socket_strerror socket_write socket_writev contained
616syn keyword phpFunctions sqlite_array_query sqlite_busy_timeout sqlite_changes sqlite_close sqlite_column sqlite_create_aggregate sqlite_create_function sqlite_current sqlite_error_string sqlite_escape_string sqlite_fetch_array sqlite_fetch_single sqlite_fetch_string sqlite_field_name sqlite_has_more sqlite_last_error sqlite_last_insert_rowid sqlite_libencoding sqlite_libversion sqlite_next sqlite_num_fields sqlite_num_rows sqlite_open sqlite_popen sqlite_query sqlite_rewind sqlite_seek sqlite_udf_decode_binary sqlite_udf_encode_binary sqlite_unbuffered_query contained
617syn keyword phpFunctions stream_context_create stream_context_get_options stream_context_set_option stream_context_set_params stream_copy_to_stream stream_filter_append stream_filter_prepend stream_filter_register stream_get_contents stream_get_filters stream_get_line stream_get_meta_data stream_get_transports stream_get_wrappers stream_register_wrapper stream_select stream_set_blocking stream_set_timeout stream_set_write_buffer stream_socket_accept stream_socket_client stream_socket_get_name stream_socket_recvfrom stream_socket_sendto stream_socket_server stream_wrapper_register contained
618syn keyword phpFunctions addcslashes addslashes bin2hex chop chr chunk_split convert_cyr_string count_chars crc32 crypt explode fprintf get_html_translation_table hebrev hebrevc html_entity_decode htmlentities htmlspecialchars implode join levenshtein localeconv ltrim md5_file md5 metaphone money_format nl_langinfo nl2br number_format ord parse_str print printf quoted_printable_decode quotemeta rtrim setlocale sha1_file sha1 similar_text soundex sprintf sscanf str_ireplace str_pad str_repeat str_replace str_rot13 str_shuffle str_split str_word_count strcasecmp strchr strcmp strcoll strcspn strip_tags stripcslashes stripos stripslashes stristr strlen strnatcasecmp strnatcmp strncasecmp strncmp strpos strrchr strrev strripos strrpos strspn strstr strtok strtolower strtoupper strtr substr_compare substr_count substr_replace substr trim ucfirst ucwords vprintf vsprintf wordwrap contained
619syn keyword phpFunctions swf_actiongeturl swf_actiongotoframe swf_actiongotolabel swf_actionnextframe swf_actionplay swf_actionprevframe swf_actionsettarget swf_actionstop swf_actiontogglequality swf_actionwaitforframe swf_addbuttonrecord swf_addcolor swf_closefile swf_definebitmap swf_definefont swf_defineline swf_definepoly swf_definerect swf_definetext swf_endbutton swf_enddoaction swf_endshape swf_endsymbol swf_fontsize swf_fontslant swf_fonttracking swf_getbitmapinfo swf_getfontinfo swf_getframe swf_labelframe swf_lookat swf_modifyobject swf_mulcolor swf_nextid swf_oncondition swf_openfile swf_ortho2 swf_ortho swf_perspective swf_placeobject swf_polarview swf_popmatrix swf_posround swf_pushmatrix swf_removeobject swf_rotate swf_scale swf_setfont swf_setframe swf_shapearc swf_shapecurveto3 swf_shapecurveto swf_shapefillbitmapclip swf_shapefillbitmaptile swf_shapefilloff swf_shapefillsolid swf_shapelinesolid swf_shapelineto swf_shapemoveto swf_showframe swf_startbutton swf_startdoaction swf_startshape swf_startsymbol swf_textwidth swf_translate swf_viewport contained
620syn keyword phpFunctions sybase_affected_rows sybase_close sybase_connect sybase_data_seek sybase_deadlock_retry_count sybase_fetch_array sybase_fetch_assoc sybase_fetch_field sybase_fetch_object sybase_fetch_row sybase_field_seek sybase_free_result sybase_get_last_message sybase_min_client_severity sybase_min_error_severity sybase_min_message_severity sybase_min_server_severity sybase_num_fields sybase_num_rows sybase_pconnect sybase_query sybase_result sybase_select_db sybase_set_message_handler sybase_unbuffered_query contained
621syn keyword phpFunctions tidy_access_count tidy_clean_repair tidy_config_count tidy_diagnose tidy_error_count tidy_get_body tidy_get_config tidy_get_error_buffer tidy_get_head tidy_get_html_ver tidy_get_html tidy_get_output tidy_get_release tidy_get_root tidy_get_status tidy_getopt tidy_is_xhtml tidy_load_config tidy_parse_file tidy_parse_string tidy_repair_file tidy_repair_string tidy_reset_config tidy_save_config tidy_set_encoding tidy_setopt tidy_warning_count contained
622syn keyword phpMethods attributes children get_attr get_nodes has_children has_siblings is_asp is_comment is_html is_jsp is_jste is_text is_xhtml is_xml next prev tidy_node contained
623syn keyword phpFunctions token_get_all token_name contained
624syn keyword phpFunctions base64_decode base64_encode get_meta_tags http_build_query parse_url rawurldecode rawurlencode urldecode urlencode contained
625syn keyword phpFunctions doubleval empty floatval get_defined_vars get_resource_type gettype import_request_variables intval is_array is_bool is_callable is_double is_float is_int is_integer is_long is_null is_numeric is_object is_real is_resource is_scalar is_string isset print_r serialize settype strval unserialize unset var_dump var_export contained
626syn keyword phpFunctions vpopmail_add_alias_domain_ex vpopmail_add_alias_domain vpopmail_add_domain_ex vpopmail_add_domain vpopmail_add_user vpopmail_alias_add vpopmail_alias_del_domain vpopmail_alias_del vpopmail_alias_get_all vpopmail_alias_get vpopmail_auth_user vpopmail_del_domain_ex vpopmail_del_domain vpopmail_del_user vpopmail_error vpopmail_passwd vpopmail_set_user_quota contained
627syn keyword phpFunctions w32api_deftype w32api_init_dtype w32api_invoke_function w32api_register_function w32api_set_call_method contained
628syn keyword phpFunctions wddx_add_vars wddx_deserialize wddx_packet_end wddx_packet_start wddx_serialize_value wddx_serialize_vars contained
629syn keyword phpFunctions utf8_decode utf8_encode xml_error_string xml_get_current_byte_index xml_get_current_column_number xml_get_current_line_number xml_get_error_code xml_parse_into_struct xml_parse xml_parser_create_ns xml_parser_create xml_parser_free xml_parser_get_option xml_parser_set_option xml_set_character_data_handler xml_set_default_handler xml_set_element_handler xml_set_end_namespace_decl_handler xml_set_external_entity_ref_handler xml_set_notation_decl_handler xml_set_object xml_set_processing_instruction_handler xml_set_start_namespace_decl_handler xml_set_unparsed_entity_decl_handler contained
630syn keyword phpFunctions xmlrpc_decode_request xmlrpc_decode xmlrpc_encode_request xmlrpc_encode xmlrpc_get_type xmlrpc_parse_method_descriptions xmlrpc_server_add_introspection_data xmlrpc_server_call_method xmlrpc_server_create xmlrpc_server_destroy xmlrpc_server_register_introspection_callback xmlrpc_server_register_method xmlrpc_set_type contained
631syn keyword phpFunctions xslt_create xslt_errno xslt_error xslt_free xslt_output_process xslt_set_base xslt_set_encoding xslt_set_error_handler xslt_set_log xslt_set_sax_handler xslt_set_sax_handlers xslt_set_scheme_handler xslt_set_scheme_handlers contained
632syn keyword phpFunctions yaz_addinfo yaz_ccl_conf yaz_ccl_parse yaz_close yaz_connect yaz_database yaz_element yaz_errno yaz_error yaz_es_result yaz_get_option yaz_hits yaz_itemorder yaz_present yaz_range yaz_record yaz_scan_result yaz_scan yaz_schema yaz_search yaz_set_option yaz_sort yaz_syntax yaz_wait contained
633syn keyword phpFunctions zip_close zip_entry_close zip_entry_compressedsize zip_entry_compressionmethod zip_entry_filesize zip_entry_name zip_entry_open zip_entry_read zip_open zip_read contained
634syn keyword phpFunctions gzclose gzcompress gzdeflate gzencode gzeof gzfile gzgetc gzgets gzgetss gzinflate gzopen gzpassthru gzputs gzread gzrewind gzseek gztell gzuncompress gzwrite readgzfile zlib_get_coding_type contained
635
636if s:show_baselib
637 syn keyword phpMethods query next_record num_rows affected_rows nf f p np num_fields haltmsg seek link_id query_id metadata table_names nextid connect halt free register unregister is_registered delete url purl self_url pself_url hidden_session add_query padd_query reimport_get_vars reimport_post_vars reimport_cookie_vars set_container set_tokenname release_token put_headers get_id get_id put_id freeze thaw gc reimport_any_vars start url purl login_if is_authenticated auth_preauth auth_loginform auth_validatelogin auth_refreshlogin auth_registerform auth_doregister start check have_perm permsum perm_invalid contained
638 syn keyword phpFunctions page_open page_close sess_load sess_save contained
639endif
640
641" Conditional
642syn keyword phpConditional contained declare enddeclare if else elseif endif switch endswitch
643
644" Repeat
645syn keyword phpRepeat contained foreach as endforeach do while endwhile for endfor
646
647" need a special parenthesis block for a foreach statement
648if s:alt_arrays
649 syn keyword phpRepeat contained foreach nextgroup=phpForeachRegion skipwhite skipempty
650endif
651
652" need an alternate parenthesis block for 'for' structure
653" when using strict blocks
654if s:strict_blocks
655 syn keyword phpRepeat contained for nextgroup=phpForRegion skipwhite skipempty
656
657 " if looking for errors with semicolons, add the other 'nextgroups' as well
658 if s:no_empty_construct
659 syn keyword phpRepeat contained while switch nextgroup=phpConstructRegion skipwhite skipempty
660 syn keyword phpConditional contained if elseif nextgroup=phpConstructRegion skipwhite skipempty
661 syn keyword phpConditional contained else nextgroup=phpSemicolonNotAllowedHere skipwhite skipempty
662 syn keyword phpRepeat contained do nextgroup=phpDoBlock,phpSemicolonNotAllowedHere skipwhite skipempty
663 syn region phpDoBlock matchgroup=phpBlock start=/{/ end=/}/ keepend extend
664 \ contained transparent
665 \ nextgroup=phpDoWhile skipwhite skipempty
666 \ matchgroup=phpHTMLError end=/?>/
667 syn keyword phpDoWhile contained while
668 hi link phpDoWhile phpRepeat
669 endif
670endif
671
672" Switch
673" Peter Hodge June 17 20067
674" - removed 'switch' from here to reserve phpLabel
675" for code-flow entry points
676syn keyword phpLabel case default contained
677
678" Statement
679" TODO: re-arrange things so this is near semicolon?
680if ! s:smart_semicolon
681 syn keyword phpStatement return break continue exit die contained
682endif
683
684" Keyword
685syn keyword phpKeyword var const contained
686
687" Type
688syn keyword phpType bool boolean int integer real double float string object null contained
689
690if s:alt_arrays
691 syn cluster phpClInside add=phpArrayRegion
692 " TODO: should the error highlighting be optional???
693 if s:fold_arrays
694 syn region phpArrayRegion contained matchgroup=phpArrayParens start=/\<array(/ end=/)/
695 \ keepend extend contains=@phpClInside,phpArrayPair,phpArrayComma
696 \ matchgroup=Error end=/;/
697 \ fold
698 else
699 syn region phpArrayRegion contained matchgroup=phpArrayParens start=/\<array(/ end=/)/
700 \ keepend extend contains=@phpClInside,phpArrayPair,phpArrayComma
701 \ matchgroup=Error end=/;/
702 endif
703 syn match phpArrayComma contained /,/
704
705 syn cluster phpClInside add=phpListRegion
706 " need to make a region for the 'list' keyword as well!!!
707 " TODO: should the error highlighting be optional???
708 " TODO: only allow variables and stuff inside the list() construct
709 syn region phpListRegion contained matchgroup=phpArrayParens start=/\<list(/ end=/)/
710 \ keepend extend contains=@phpClInside,phpListComma
711 \ matchgroup=Error end=/;/
712 syn match phpListComma contained /,/
713 hi link phpListComma phpArrayComma
714else
715 " need to use a match instead of keyword here ... to stop it
716 " from blocking a match later on.
717 syn match phpArray contained /\<array\>/
718
719 syn keyword phpType contained list
720endif
721
722" Structure
723" TODO: should 'instanceof' still be here?
724syn keyword phpStructure instanceof parent self contained
725
726" Operator
727syn match phpOperator contained display /[=+%^|*!.~:]/
728" TODO: need to match special methods everywhere
729syn match phpOperator contained display /::/
730syn match phpOperator contained display /&\$\@!/
731syn match phpOperator contained display /->\@!/
732syn match phpOperator contained display /[-+*/%^&|.]=/
733syn match phpOperator contained display /\/[*/]\@!/
734syn match phpOperator contained display /\$/
735syn match phpOperator contained display /&&/
736syn match phpOperator contained display /||/
737syn keyword phpOperator contained and or xor
738
739" a match for a static function call
740syn cluster phpClInside add=phpStaticCall
741syn match phpStaticCall contained display /::\h\w*\ze\%(\_s*\)\@>(/ contains=phpOperator,@phpClMethodNames
742
743"
744syn cluster phpClInside add=phpTernaryRegion
745syn region phpTernaryRegion matchgroup=phpOperator start=/?/ end=/:/ transparent keepend extend display
746 \ contained matchgroup=Error end=/[;)\]}]/
747
748" Peter Hodge - added support for array-building operator
749" to stop the relations from mixing this up
750if s:alt_arrays
751 syn match phpArrayPair /=>/ contained display
752 syn match phpArrayPairError /=>/ contained display
753else
754 syn match phpOperator /=>/ contained display
755endif
756
757" call-time pass-by-reference
758" TODO: make this a little more robust ... it doesn't know how to protect
759" itself when someone does something like '$foo&$bar' - it thinks that's a
760" call-time by-reference arg.
761" We really need a nextgroup= to find when an '&' bit-wise operator is being
762" used, and not a call-time pass-by-ref. Maybe some other time
763syn match phpAssignByRef /&\$\@=/ contained display
764
765" relations
766" Peter Hodge, June 17 2006
767" - altered relations to match strict comparisons (=== and !==)
768" - highlight the 'instanceof' operator as a relation operator
769" rather than a structure, if comparison support is a priority.
770syn match phpRelation "===\=" contained display
771syn match phpRelation "!==\=" contained display
772syn match phpRelation "<=\=" contained display
773syn match phpRelation ">=\=" contained display
774if s:alt_comparisons
775 syn keyword phpRelation instanceof contained containedin=phpRegion
776endif
777
778" identifier stuff
779syn match phpMemberSelector /->/ contained display
780syn match phpVarSelector /\$/ contained display
781
782syn cluster phpClConst add=phpUnknownSelector
783syn match phpUnknownSelector /->\_s*{\@=/ contained display
784
785" Identifier
786syn match phpIdentifier /\$\h\w*/ contained display contains=phpEnvVar,phpIntVar,phpVarSelector
787 \ nextgroup=phpIdentifierIndex
788
789" match a dereference-identifier
790syn cluster phpClInside add=phpIdentifierDeref
791"syn match phpIdentifier /\$\$\h\w*/ contained display contains=phpVarSelectorDeref,phpDerefInvalid
792"syn match phpVarSelectorDeref /\$\$/ contained display
793"hi link phpVarSelectorDeref phpDefine
794syn match phpIdentifierDeref /\$\$\h\w*/ contained display contains=phpVarSelector,phpDerefInvalid
795hi link phpIdentifierDeref phpDefine
796
797" variables you can't dereference
798syn case match
799syn keyword phpDerefInvalid contained this argc argv GLOBALS
800 \ _GET _POST _REQUEST _COOKIE _SESSION _SERVER _ENV
801syn case ignore
802hi link phpDerefInvalid Error
803
804"syn match phpIdentifierSimply "${\h\w*}" contains=phpOperator,phpParent contained display
805
806" Peter Hodge:
807" - changing this item to contain all PHP inside syntax, as it
808" is able to
809syn region phpIdentifierComplex contained display matchgroup=phpSpecialChar start=/\${/ end=/}/
810 \ keepend extend
811 \ contains=@phpClInside
812 \ nextgroup=phpIdentifierIndex
813
814" create an identifier match for double-quoted strings:
815syn match phpIdentifierInString "\$\h\w*" contained display
816 \ nextgroup=phpIdentifierIndexInString,phpPropertyInString
817 \ contains=phpEnvVar,phpIntVar,phpVarSelector containedin=@phpStringSubs
818syn region phpIdentifierInStringComplex matchgroup=phpSpecialChar
819 \ start=/{\ze\$/ start=/\${\ze\$/ end=/}/
820 \ contained extend keepend
821 \ contains=@phpClInside containedin=@phpStringSubs
822hi link phpIdentifierInString phpIdentifier
823
824syn region phpIdentifierInStringErratic matchgroup=phpSpecialChar
825 \ start=/\${\ze\w/ end=/}/
826 \ contained extend
827 \ containedin=@phpStringSubs
828hi link phpIdentifierInStringErratic phpIdentifier
829
830" create a match for the identifier numeric indexes
831" TODO: error if invalid characters inbetween?
832syn match phpIdentifierIndexInString /\[.\{-}\]/ contained display
833 \ contains=phpParent,phpIdentifierIndexInStringWrongCharsError
834syn match phpIdentifierIndexInString /\[\]/ contained display
835 \ contains=phpIdentifierIndexInStringNoMiddleError
836syn match phpIdentifierIndexInString /\[\d\+\w.\{-}\]/ contained display
837 \ contains=phpParent,phpIdentifierIndexInStringNonDigitError
838syn match phpIdentifierIndexInStringNonDigitError /[^0-9]/ contained
839syn match phpIdentifierIndexInStringWrongCharsError /[^a-zA-Z0-9_]/ contained
840syn match phpIdentifierIndexInStringNoMiddleError /\[\]/ contained
841hi link phpIdentifierIndexInStringWrongCharsError Error
842hi link phpIdentifierIndexInStringNonDigitError Error
843hi link phpIdentifierIndexInStringNoMiddleError Error
844syn match phpIdentifierIndex /\[\d\+\]\|{\d\+}/ contained display extend
845 \ contains=phpIdentifierIndexParens
846syn match phpIdentifierIndexParens /[{}[\]]/ contained
847hi link phpIdentifierIndexParens phpParent
848
849syn match phpIdentifierIndexInString /\[\%(\d\+\|\h\w*\)\@>\]/ contained display
850 \ contains=phpIdentifierIndexParens
851hi link phpIdentifierIndexInString phpIdentifierIndex
852
853" Methoden
854" NOTE: have taken out phpMethods (because it just wasn't accurate)
855" but have added phpSpecialMethods because they are always special
856syn match phpMethodsVar /->\_s*\h\w*/ contained display contains=phpMemberSelector,@phpClMethodNames
857
858" Peter Hodge - June 25, 2006
859" - trying to fix support for things like
860" $foo->$bar
861syn match phpMethodsVar /->\_s*\$\h\w*/ contained display contains=phpMemberSelector,phpIdentifier
862
863" Include
864syn keyword phpInclude contained include require include_once require_once
865
866" Peter Hodge - added 'clone' keyword here
867" Define
868syn keyword phpObjectOperator contained new clone
869
870" Peter Hodge - a separate keyword for null as its own value
871syn keyword phpNull contained null
872
873" Boolean
874syn keyword phpBoolean contained true false
875
876" Number
877syn match phpNumber contained display /-\=\<\d\+\>/
878syn match phpNumber contained display /\<0x\x\{1,8}\>/
879
880" Float
881" Note: have split float into 3 matches which each have a fixed
882" starting character
883syn match phpFloat contained display /\.\d\+\>/
884syn match phpFloat contained display /\<\d\+\.\d\+\>/
885syn match phpFloat contained display /-\%(\<\d\+\)\=\.\d\+\>/
886
887" SpecialChar
888" TODO: these should be moved near strings and identifiers in strings, and
889" should also be available in PCRE pattern strings
890syn match phpSpecialChar contained display "\\[abcfnrtyv\\]"
891syn match phpSpecialChar contained display "\\\o\{1,3}"
892syn match phpSpecialChar contained display "\\x\x\x\="
893
894" Error
895syn match phpOctalError /[89]/ contained display
896
897" Todo
898syn keyword phpTodo contained todo fixme xxx
899
900" Comment
901syn region phpComment start="/\*" end="\*/" contained contains=phpTodo extend
902if version >= 600
903 syn match phpComment "#.\{-}\(?>\|$\)\@=" contained contains=phpTodo extend
904 syn match phpComment "//.\{-}\(?>\|$\)\@=" contained contains=phpTodo extend
905else
906 syn match phpComment "#.\{-}$" contained contains=phpTodo
907 syn match phpComment "#.\{-}?>"me=e-2 contained contains=phpTodo
908 syn match phpComment "//.\{-}$" contained contains=phpTodo
909 syn match phpComment "//.\{-}?>"me=e-2 contained contains=phpTodo
910endif
911
912" Peter Hodge - June 13, 2006
913" - changed the matchgroup on these three regions from 'None'
914" to 'phpQuote<type>' so that they can be coloured individually
915" (which I have done below).
916
917" Peter Hodge - July 20 2006
918" - adding a cluster for strings which should have variable substitution
919syn cluster phpStringSubs add=phpStringDouble,phpHereDoc,phpBacktick
920
921" String
922syn region phpStringDouble matchgroup=phpQuoteDouble start=/"/ skip=/\\./ end=/"/
923 \ contained keepend extend contains=@phpAddStrings,phpSpecialChar
924syn region phpBacktick matchgroup=phpQuoteBacktick start=/`/ skip=/\\./ end=/`/
925 \ contained keepend extend contains=@phpAddStrings,phpSpecialChar
926syn region phpStringSingle matchgroup=phpQuoteSingle start=/'/ skip=/\\./ end=/'/
927 \ contained keepend extend contains=@phpAddStrings
928
929" HereDoc
930if version >= 600
931 " Peter Hodge - July 20 2006
932 " - removing contains=phpIdentifier stuff, these are now defined elsewhere
933 " and added in using contains=phpHereDoc
934 syn case match
935 syn region phpHereDoc keepend extend matchgroup=phpHereDocDelimiter
936 \ end=/^\z1\%(;\=$\)\@=/ contained contains=phpSpecialChar
937 \ start=/<<<\s*\z(\h\w*\)$/
938
939" including HTML,JavaScript,SQL even if not enabled via options
940 syn region phpHereDoc keepend extend matchgroup=phpHereDocDelimiter
941 \ end=/^\z1\(;\=$\)\@=/ contained contains=@htmlTop,phpSpecialChar
942 \ start=/\c<<<\s*\z(\%(\h\w*\)\=html\)$/
943
944 syn region phpHereDoc keepend extend matchgroup=phpHereDocDelimiter
945 \ end=/^\z1\(;\=$\)\@=/ contained contains=@sqlTop,phpSpecialChar
946 \ start=/\c<<<\s*\z(\%(\h\w*\)\=sql\)$/
947
948 syn region phpHereDoc keepend extend matchgroup=phpHereDocDelimiter
949 \ end=/^\z1\(;\=$\)\@=/ contained contains=@htmlJavascript,phpSpecialChar
950 \ start=/\c<<<\s*\z(\%(\h\w*\)\=javascript\)$/
951 syn case ignore
952endif
953
954" a special match for when a semicolon is not allowed here
955if s:no_empty_construct
956 syn match phpSemicolonNotAllowedHere /;/ contained display
957 hi link phpSemicolonNotAllowedHere Error
958endif
959
960" Parent
961if s:strict_blocks
962 " a block in global PHP scope
963 syn cluster phpClTop add=phpBlockInGlobal
964 if s:folding == 2
965 syn region phpBlockInGlobal matchgroup=phpBlock start=/{/ end=/}/ keepend extend
966 \ contained contains=@phpClTop
967 \ fold
968 else
969 syn region phpBlockInGlobal matchgroup=phpBlock start=/{/ end=/}/ keepend extend
970 \ contained contains=@phpClTop
971 endif
972
973 " a block inside a function
974 syn cluster phpClInside add=phpBlockInFunc
975 if s:folding == 2
976 syn region phpBlockInFunc matchgroup=phpBlock start=/{/ end=/}/ keepend extend
977 \ contained contains=@phpClTop
978 \ fold
979 else
980 syn region phpBlockInFunc matchgroup=phpBlock start=/{/ end=/}/ keepend extend
981 \ contained contains=@phpClTop
982 endif
983
984 " parenthesis for a foreach() block, not found automatically
985 " (is triggered by a nextgroup=phpForeachRegion)
986 " TODO: see if the 'dispay' option on these regions is dangerous
987 if s:alt_arrays
988 syn region phpForeachRegion matchgroup=phpParent start=/(/ end=/)/ keepend extend display
989 \ contained contains=@phpClInside,phpArrayPair
990 \ nextgroup=phpSemicolonNotAllowedHere skipwhite skipempty
991 endif
992
993 " parenthesis for a for() block, not found automatically
994 " (is triggered by a nextgroup=phpForeachRegion)
995 " TODO: see if the 'dispay' option on these regions is dangerous
996 if s:alt_arrays
997 syn region phpForRegion matchgroup=phpParent start=/(/ end=/)/ keepend extend display
998 \ contained contains=@phpClInside
999 \ nextgroup=phpSemicolonNotAllowedHere skipwhite skipempty
1000 endif
1001
1002 " special parent regions for 'if/while' blocks so we can catch a semicolon
1003 " which shouldn't be at the end
1004 if s:no_empty_construct
1005 syn region phpConstructRegion matchgroup=phpParent start=/(/ end=/)/ keepend extend display
1006 \ contained contains=@phpClInside
1007 \ nextgroup=phpSemicolonNotAllowedHere skipwhite skipempty
1008 endif
1009
1010 " match up ( and ), as well as [ and ]
1011 " TODO: see if the 'dispay' option on these regions is dangerous
1012 syn cluster phpClInside add=phpParentRegion
1013 syn region phpParentRegion contained contains=@phpClInside keepend extend display
1014 \ matchgroup=phpParent start=/(/ end=/)/
1015 \ matchgroup=Error end=/;/
1016 syn region phpParentRegion contained contains=@phpClInside keepend extend display
1017 \ matchgroup=phpParent start=/\[/ end=/\]/
1018 \ matchgroup=Error end=/;/
1019
1020 " when a closing }, ) or ] is out of place ...
1021 if s:parent_error_close
1022 syn cluster phpClInside add=phpBlockError,phpParentError
1023 syn match phpBlockError contained display /}/
1024 syn match phpParentError contained display /)/
1025 syn match phpParentError contained display /\]/
1026 endif
1027
1028else
1029 syn match phpParent contained display /{/
1030 syn match phpParent contained display /}/
1031 syn match phpParent contained display /\[/
1032 syn match phpParent contained display /\]/
1033 syn match phpParent contained display /(/
1034 syn match phpParent contained display /)/
1035endif
1036
1037syn cluster phpClConst add=phpNull,phpBoolean,phpNumber,phpFloat,phpMagicConstant,phpCoreConstant
1038syn cluster phpClConst add=phpStringSingle,phpStringDouble,phpBacktick,phpArray
1039syn cluster phpClConst add=phpIdentifier,phpIdentifierComplex,phpMethodsVar,phpOperator,phpRelation
1040syn cluster phpClConst add=phpFunctions,phpKeyword,phpType,phpStructure
1041syn cluster phpClConst add=phpConditional,phpRepeat,phpStatement,phpException,phpBlock
1042syn cluster phpClConst add=phpObjectOperator
1043
1044syn cluster phpClInside add=@phpClConst,phpComment,phpLabel,phpParent,phpParentError,phpInclude,phpHereDoc
1045syn cluster phpClInside add=phpStorageClass
1046
1047syn cluster phpClFunction add=@phpClInside,phpDefine,phpMacro
1048syn cluster phpClFunction add=phpParentError,phpStorageClass
1049syn cluster phpClFunction add=phpFoldTry,phpFoldCatch,phpStorageClass
1050
1051syn cluster phpClTop add=@phpClFunction,phpFoldFunction,phpFoldClass,phpFoldInterface
1052
1053" PHP Region
1054if s:long_tags
1055 syn region phpRegion matchgroup=phpRegionDelimiter start=/<?php/ end=/?>/
1056 \ keepend extend contains=@phpClTop
1057else
1058 syn region phpRegion matchgroup=phpRegionDelimiter start=/<?\(php\|=\)\=/ end=/?>/
1059 \ keepend extend contains=@phpClTop
1060endif
1061
1062syn region phpRegionSc matchgroup=phpRegionDelimiter
1063 \ start=#<script language="php"># end=#</script>#
1064 \ contains=@phpClTop keepend extend
1065
1066if s:asp_tags
1067 syn region phpRegionAsp matchgroup=phpRegionDelimiter start=/<%=\=/ end=/%>/
1068 \ keepend extend contains=@phpClTop
1069endif
1070
1071if s:strict_blocks
1072 syn cluster phpClInside add=phpHTMLError
1073 syn match phpHTMLError /?>/ contained
1074endif
1075
1076" if using strict blocks, need to look out for HTML inside
1077" blocks
1078if s:strict_blocks
1079 " only allow in base-level code (not inside () or [])
1080 syn cluster phpClFunction add=htmlRegion
1081 if s:long_tags
1082 " only match full php tags
1083 syn region htmlRegion contained contains=TOP matchgroup=phpRegionDelimiter
1084 \ start=/?>/ end=/<?php/ keepend extend
1085 else
1086 " match any php tags
1087 syn region htmlRegion contained contains=TOP matchgroup=phpRegionDelimiter
1088 \ start=/?>/ end=/<?\%(php\|=\)\=/ keepend extend
1089 endif
1090
1091 if s:asp_tags
1092 syn region htmlRegion contained contains=TOP matchgroup=phpRegionDelimiter
1093 \ start=/%>/ end=/<%=\=/ keepend extend
1094 endif
1095endif
1096
1097" if strict curly-braces matching is enabled, then match braces
1098" properly
1099if s:strict_blocks
1100 " DEFINITIONS FOR:
1101 " function ...() {
1102 " class ... {
1103 " method ...() {
1104 " these need to be done piece-by-piece so that we can use 'nextgroups'
1105 " to match the { } code blocks - we want to use special colors for them!
1106 " {{{1
1107
1108 " CLASSES: class myFoo extends baseFoo implements foo, Iterator { }: {{{2
1109 " I MATCH: <class myFoo> extends baseFoo implements foo, Iterator { }: {{{3
1110
1111 " 1: Match the 'final' and 'abstract' keywords first
1112 syn keyword phpStructure contained abstract final
1113
1114 " 2: match the start of the class declaration
1115 syn keyword phpStructure contained class
1116 \ nextgroup=phpDefineClassName skipwhite skipempty
1117
1118 " 3: an empty placeholder for any class name (which in turn can contain
1119 " any of the known PHP class names)
1120 " NOTE: allow matching the class block immediately after the class name
1121 syn match phpDefineClassName /\h\w*/ contained contains=phpClasses,phpInterfaces
1122 \ nextgroup=@phpClDefineClassBlock
1123 \ skipwhite skipempty
1124
1125 " II MATCH: class myFoo <extends baseFoo> implements foo, Iterator { }: {{{3
1126
1127 " match the 'extends' keyword and follow it by the match
1128 " for class names in a declaration (as above)
1129 syn keyword phpStructure contained extends
1130 \ nextgroup=phpDefineClassName skipwhite skipempty
1131
1132 " III MATCH: class myFoo extends baseFoo <implements foo, Iterator> { }: {{{3
1133
1134 " 1: match the 'implements' keyword and follow it by the match
1135 " for class names in a declaration (as above)
1136 syn keyword phpStructure contained implements
1137 \ nextgroup=@phpClDefineClassImplements skipwhite skipempty
1138
1139 " 2: define a place-holding for interfaces which matches any valid
1140 " interface name and also contains the recognized names
1141 syn cluster phpClDefineClassImplements add=phpDefineClassImplementsName
1142 syn match phpDefineClassImplementsName /\h\w*/ contained contains=phpClasses,phpInterfaces
1143 \ nextgroup=@phpClDefineClassImplements skipwhite skipempty
1144
1145 " 3: allow a comma in the list
1146 syn cluster phpClDefineClassImplements add=phpDefineClassImplementsComma
1147 syn match phpDefineClassImplementsComma /,/ contained
1148 \ nextgroup=@phpClDefineClassImplements skipwhite skipempty
1149
1150 " 4: there might be a '#' or '//'-style comment in-between!
1151 syn cluster phpClDefineClassImplements add=phpDefineClassImplementsCommentOneLine
1152 syn region phpDefineClassImplementsCommentOneLine
1153 \ start=/#/ start=,//, end=/$/ end=/.\ze?>/ oneline
1154 \ contained contains=phpComment
1155 \ nextgroup=@phpClDefineClassImplements skipwhite skipempty
1156
1157 " 5: there might a C-style comment (/*...*/) in-between
1158 syn cluster phpClDefineClassImplements add=phpDefineClassImplementsCommentCStyle
1159 syn region phpDefineClassImplementsCommentCStyle start=,/\*, end=,\*/, keepend
1160 \ contained
1161 \ nextgroup=@phpClDefineClassImplements skipwhite skipempty
1162 hi link phpDefineClassImplementsCommentCStyle phpComment
1163
1164 " 6: add the block to the list so it can match here also
1165 syn cluster phpClDefineClassImplements add=phpClassBlock
1166
1167 " IV MATCH: class myFoo extends baseFoo implements foo, Iterator <{ }>: {{{3
1168
1169 " 1: there might be a '#' or '//'-style comment in-between!
1170 syn cluster phpClDefineClassBlock add=phpDefineClassBlockCommentOneline
1171 syn region phpDefineClassBlockCommentOneline start=/#/ start=,//, end=/$/ end=/.\ze?>/ oneline
1172 \ contained contains=phpComment
1173 \ nextgroup=@phpClDefineClassBlock skipwhite skipempty
1174
1175 " 2: there might a C-style comment (/*...*/) in-between
1176 syn cluster phpClDefineClassBlock add=phpDefineClassBlockCommentCStyle
1177 syn region phpDefineClassBlockCommentCStyle start=,/\*, end=,\*/, keepend
1178 \ contained
1179 \ nextgroup=@phpClDefineClassBlock skipwhite skipempty
1180 hi link phpDefineClassBlockCommentCStyle phpComment
1181
1182 " 3: look for the actual { } block
1183 syn cluster phpClDefineClassBlock add=phpClassBlock
1184 if (s:folding == 1) || (s:folding == 2)
1185 syn region phpClassBlock matchgroup=phpBlockClass start=/{/ end=/}/ keepend extend
1186 \ contained contains=@phpClFunction
1187 \ matchgroup=phpHTMLError end=/?>/
1188 \ fold
1189 else
1190 syn region phpClassBlock matchgroup=phpBlockClass start=/{/ end=/}/ keepend extend
1191 \ contained contains=@phpClFunction
1192 \ matchgroup=phpHTMLError end=/?>/
1193 endif
1194
1195
1196 " }}}2
1197
1198 " INTERFACES: interface myFoo extends baseFoo { }: {{{2
1199 " I MATCH: <interface myFoo> extends baseFoo { }: {{{3
1200
1201 " 1: match the start of the interface declaration
1202 syn keyword phpStructure contained interface
1203 \ nextgroup=phpDefineInterfaceName skipwhite skipempty
1204
1205 " 2: an empty placeholder for any interface name (which in turn can contain
1206 " any of the known PHP class names)
1207 " NOTE: allow matching the class block immediately after the class name
1208 " NOTE: maybe one day will make a separate block for interface bodies
1209 syn match phpDefineInterfaceName /\h\w*/ contained contains=phpClasses,phpInterfaces
1210 \ nextgroup=@phpClDefineClassBlock skipwhite skipempty
1211
1212 " II MATCH: interface myFoo <extends baseFoo> { }: {{{3
1213
1214 " NOTE: this is handled in the class syntax handling above
1215
1216 " IV MATCH: class myFoo extends baseFoo implements foo, Iterator <{ }>: {{{3
1217
1218 " NOTE: this is handled in the class syntax handling above
1219
1220 " }}}2
1221
1222 " FUNCTIONS: function & somefunc($a = 0, &$b) { }: {{{2
1223 " I MATCH: <function> somefunc($a = 0, &$b) { }: {{{3
1224 syn keyword phpDefine function contained
1225 \ nextgroup=@phpClDefineFuncName,phpDefineFuncByRef
1226 \ skipwhite skipempty
1227
1228 " II MATCH: function <&> somefunc($a = 0, &$b) { }: {{{3
1229 " second, there might be a '&' return-by-reference option, so add
1230 " a match for that.
1231 syn match phpDefineFuncByRef /&/ contained nextgroup=@phpClDefineFuncName skipwhite skipnl
1232 hi link phpDefineFuncByRef phpAssignByRef
1233
1234
1235 " III MATCH: function & <somefunc>($a = 0, &$b) { }: {{{3
1236 " what can go inside a function name? Anything that does will need
1237 " a 'nextgroup=phpDefineFuncProto' argument!
1238
1239 " first up, an empty placeholder to match any valid function name.
1240 " It should contain the special user-defineable function names.
1241 syn cluster phpClDefineFuncName add=phpDefineFuncName
1242 syn match phpDefineFuncName /\h\w*/ contained
1243 \ contains=phpFunctions,phpSpecialFunction
1244 \ nextgroup=phpDefineFuncProto
1245 \ skipwhite skipempty
1246 " TODO: allow adding comments between 'function' and 'someFunc'
1247
1248
1249 " IV MATCH: function & somefunc<(>$a = 0, &$b<)> { }: {{{3
1250 " match the parenthesis surrounding the function arguments
1251 syn region phpDefineFuncProto contained contains=@phpClDefineFuncProtoArgs
1252 \ matchgroup=phpParent start=/(/ end=/)/ keepend extend
1253 \ nextgroup=@phpClDefineFuncBlock
1254 \ skipwhite skipempty
1255 " TODO: allow comments in this cluster
1256
1257
1258 " V MATCH: function & somefunc(<stdClass> $a = 0, &$b) { }: {{{3
1259 " first: any valid class name
1260 syn cluster phpClDefineFuncProtoArgs add=phpClasses
1261
1262 " VI MATCH: function & somefunc(stdClass <$a => 0, <&$b>) { }: {{{3
1263
1264 " 1: match the by-ref '&'
1265 syn cluster phpClDefineFuncProtoArgs add=phpProtoArgByRef
1266 syn match phpProtoArgByRef /&/ contained
1267 hi link phpProtoArgByRef phpAssignByRef
1268
1269 " 2: match a valid identifier
1270 " TODO: work out a way to get rid of the contains= part!!
1271 syn cluster phpClDefineFuncProtoArgs add=phpProtoIdentifier
1272 syn match phpProtoIdentifier /\$\h\w*/ contained
1273 \ contains=phpEnvVar,phpIntVar,phpVarSelector
1274 \ nextgroup=phpProtoAssign skipwhite
1275 hi link phpProtoIdentifier phpIdentifier
1276
1277 " 3: match the '=' after the identifier
1278 syn match phpProtoAssign contained /=/
1279 hi link phpProtoAssign phpOperator
1280
1281 " VII MATCH: function & somefunc(stdClass $a = <0>, &$b) { }: {{{3
1282 " What about other items? numbers? strings? arrays()?
1283 syn cluster phpClDefineFuncProtoArgs add=@phpClProtoValues
1284
1285 " 1: simple types (null, boolean)
1286 syn cluster phpClProtoValues add=phpNull
1287 syn cluster phpClProtoValues add=phpBoolean
1288
1289 " 2: numbers and strings
1290 syn cluster phpClProtoValues add=phpNumber,phpFloat
1291 syn cluster phpClProtoValues add=phpStringSingle,phpStringDouble
1292
1293 " 3: arrays must be done separately to ensure ( and ) match correctly
1294 " (but only if using alt colors for arrays)
1295 if s:alt_arrays
1296 syn cluster phpClProtoValues add=phpProtoArray
1297 syn region phpProtoArray matchgroup=phpArrayParens start=/\<array(/ end=/)/ keepend extend
1298 \ contained contains=@phpClProtoValues,phpArrayPair
1299
1300 " don't allow arbitrary parenthesis here!!
1301 syn cluster phpClProtoValues add=phpProtoParentError
1302 syn match phpProtoParentError /(/ contained
1303 hi link phpProtoParentError phpParentError
1304 else
1305 syn cluster phpClProtoValues add=phpArray
1306
1307 " need to allow arbitrary parenthesis for arrays
1308 syn cluster phpClProtoValues add=phpParentRegion
1309 endif
1310
1311 " 4: comments
1312 syn cluster phpClProtoValues add=phpComment
1313
1314
1315 " VIII MATCH: function & somefunc(</* foo */>) { }: {{{3
1316 " What about comment items?
1317 syn cluster phpClDefineFuncProtoArgs add=phpComment
1318
1319 " IX MATCH: function & somefunc(stdclass $a = 0, &$b) <{ }>: {{{3
1320
1321 " 1: there might be a '#' or '//'-style comment in-between!
1322 syn cluster phpClDefineFuncBlock add=phpDefineFuncBlockCommentOneline
1323 syn region phpDefineFuncBlockCommentOneline start=/#/ start=,//, end=/$/ end=/.\ze?>/ oneline
1324 \ contained contains=phpComment
1325 \ nextgroup=@phpClDefineFuncBlock skipwhite skipempty
1326
1327 " 2: there might a C-style comment (/*...*/) in-between
1328 syn cluster phpClDefineFuncBlock add=phpDefineFuncBlockCommentCStyle
1329 syn region phpDefineFuncBlockCommentCStyle start=,/\*, end=,\*/, keepend
1330 \ contained
1331 \ nextgroup=@phpClDefineFuncBlock skipwhite skipempty
1332 hi link phpDefineFuncBlockCommentCStyle phpComment
1333
1334 " 3: look for the actual { } block
1335 " NOTE: how the function block will end at the next function
1336 " declaration: this helps stop the region extending indefinitely,
1337 " forcing the recalculation of all { } blocks for the rest of the file.
1338 " Otherwise, inserting an open-brace will
1339 " NOTE: that the error can't happen on a 'final', 'abstract', 'class',
1340 " or 'interface' keyword because they can't be contained in a function
1341 syn cluster phpClDefineFuncBlock add=phpFuncBlock
1342 if s:folding
1343 if s:nested_functions
1344 syn region phpFuncBlock keepend extend matchgroup=phpBlockFunc start=/{/ end=/}/
1345 \ matchgroup=Error end=/\%(^\|\s\)\%(public\|private\|protected\)\>/
1346 \ contained contains=@phpClFunction,phpBlockInFunc
1347 \ fold
1348 else
1349 syn region phpFuncBlock keepend extend matchgroup=phpBlockFunc start=/{/ end=/}/
1350 \ matchgroup=Error end=/\%(^\|\s\)function\>/
1351 \ matchgroup=Error end=/\%(^\|\s\)\%(public\|private\|protected\)\>/
1352 \ contained contains=@phpClFunction,phpBlockInFunc
1353 \ fold
1354 endif
1355 else
1356 if s:nested_functions
1357 syn region phpFuncBlock keepend extend matchgroup=phpBlockFunc start=/{/ end=/}/
1358 \ matchgroup=Error end=/\%(^\|\s\)\%(public\|private\|protected\)\>/
1359 \ contained contains=@phpClFunction,phpBlockInFunc
1360 else
1361 syn region phpFuncBlock keepend extend matchgroup=phpBlockFunc start=/{/ end=/}/
1362 \ matchgroup=Error end=/\%(^\|\s\)function\>/
1363 \ matchgroup=Error end=/\%(^\|\s\)\%(public\|private\|protected\)\>/
1364 \ contained contains=@phpClFunction,phpBlockInFunc
1365 endif
1366 endif
1367
1368 " }}}2
1369
1370 " METHODS: protected function & somefunc($a = 0, &$b) { }: {{{2
1371 " I MATCH: <protected function> somefunc($a = 0, &$b) { }: {{{3
1372
1373 " 1: match the final / abstract / private keywords at start
1374 " TODO: rename 'phpStorageClass' to Typedef (for global and static keywords)
1375 " and rename 'phpStorageClass2' to 'phpStorageClass'
1376 syn keyword phpStorageClass2 contained private protected public static final abstract
1377 \ containedin=phpClassBlock
1378 hi link phpStorageClass2 phpStorageClass
1379
1380 syn keyword phpDefineMethod function contained containedin=phpClassBlock
1381 \ nextgroup=@phpClDefineMethodName,phpDefineMethodByRef
1382 \ skipwhite skipempty
1383 " TODO: add phpDefineFunction in the proper place
1384 hi link phpDefineFunction phpDefine
1385 hi link phpDefineMethod phpDefineFunction
1386
1387 " II MATCH: protected function <&> somefunc($a = 0, &$b) { }: {{{3
1388 " second, there might be a '&' return-by-reference option, so add
1389 " a match for that.
1390 syn match phpDefineMethodByRef /&/ contained
1391 \ nextgroup=@phpClDefineMethodName skipwhite skipnl
1392 hi link phpDefineMethodByRef phpDefineFuncByRef
1393
1394 " III MATCH: protected function & <somefunc>($a = 0, &$b) { }: {{{3
1395 " what can go inside a method name? Anything that does will need
1396 " a 'nextgroup=phpDefineMethodProto' argument!
1397
1398 " An empty placeholder to match any valid method name.
1399 " It should contain the special user-defineable method names.
1400 " NOTE: how we are just re-using 'function' block instead of
1401 " making more stuff to have a special 'method' block also.
1402 " I don't think it would be worthwhile at this stage.
1403 " NOTE: phpSpecialFunction must be included as well, because
1404 " that's a reserved function name and will break things.
1405 " TODO: cater for a new group, phpReservedFunction
1406 syn cluster phpClDefineMethodName add=phpDefineMethodName
1407 syn match phpDefineMethodName /\h\w*/ contained
1408 \ contains=phpSpecialFunction,@phpClMethodNames
1409 \ nextgroup=phpDefineFuncProto
1410 \ skipwhite skipempty
1411 " TODO: allow adding comments between 'function' and 'someFunc'
1412
1413 " }}}2
1414
1415 " EXCEPTIONS: try/catch { } {{{2
1416
1417 " 1: match the start of a try block
1418 syn keyword phpException try contained nextgroup=@phpClTryBlock skipwhite skipnl
1419
1420 " TODO: 2: allow having comments preceding the { } block?
1421
1422 " 3: match the try block
1423 syn cluster phpClTryBlock add=phpTryBlock
1424 if s:folding == 2
1425 syn region phpTryBlock matchgroup=phpBlockTry start=/{/ end=/}/ keepend extend
1426 \ contained transparent
1427 \ fold
1428 else
1429 syn region phpTryBlock matchgroup=phpBlockTry start=/{/ end=/}/ keepend extend
1430 \ contained transparent
1431 endif
1432
1433 " 3: match the start of the catch block
1434 syn keyword phpException catch contained nextgroup=phpCatchRegion skipwhite skipnl
1435 syn region phpCatchRegion matchgroup=phpParent start=/(/ end=/)/ keepend extend
1436 \ contained contains=@phpClInside
1437 \ nextgroup=@phpClCatchBlock skipwhite skipnl
1438
1439 " TODO: 4: allow having comments preceding the { } block?
1440
1441 " 5: match the catch block
1442 syn cluster phpClCatchBlock add=phpCatchBlock
1443 if s:folding == 2
1444 syn region phpCatchBlock matchgroup=phpBlockCatch start=/{/ end=/}/ keepend extend
1445 \ contained transparent
1446 \ fold
1447 else
1448 syn region phpCatchBlock matchgroup=phpBlockCatch start=/{/ end=/}/ keepend extend
1449 \ contained transparent
1450 endif
1451
1452 " 6: the 'throw' keyword (not needed if using smart semicolons)
1453 if ! s:smart_semicolon
1454 syn keyword phpException contained throw
1455 endif
1456
1457 " }}}2
1458
1459 " }}}1
1460
1461 " make sure 'static' and 'global' work inside a function block
1462 " TODO: refactor this?
1463 syn keyword phpStorageClass static global contained
1464
1465 " set foldmethod if folding
1466 if s:folding
1467 set foldmethod=syntax
1468 endif
1469else
1470 " Fold
1471 if s:folding == 1 " {{{1
1472 " match one line constructs here and skip them at folding
1473 syn keyword phpSCKeyword abstract final private protected public static contained
1474 syn keyword phpFCKeyword function contained
1475 syn keyword phpStorageClass global contained
1476 syn match phpDefine "\(\s\|^\)\(abstract\s\+\|final\s\+\|private\s\+\|protected\s\+\|public\s\+\|static\s\+\)*function\(\s\+.*[;}]\)\@=" contained contains=phpSCKeyword
1477 syn match phpStructure "\(\s\|^\)\(abstract\s\+\|final\s\+\)*class\(\s\+.*}\)\@=" contained
1478 syn match phpStructure "\(\s\|^\)interface\(\s\+.*}\)\@=" contained
1479 syn match phpException "\(\s\|^\)try\(\s\+.*}\)\@=" contained
1480 syn match phpException "\(\s\|^\)catch\(\s\+.*}\)\@=" contained
1481
1482 set foldmethod=syntax
1483 syn region phpFoldHtmlInside matchgroup=phpRegionDelimiter start="?>" end="<?\(php\)\=" contained transparent contains=@htmlTop
1484 syn region phpFoldFunction matchgroup=Storageclass start="^\z(\s*\)\(abstract\s\+\|final\s\+\|private\s\+\|protected\s\+\|public\s\+\|static\s\+\)*function\s\([^};]*$\)\@="rs=e-9 matchgroup=Delimiter end="^\z1}" contains=@phpClFunction,phpFoldHtmlInside,phpFCKeyword contained transparent fold extend
1485 syn region phpFoldFunction matchgroup=Define start="^function\s\([^};]*$\)\@=" matchgroup=Delimiter end="^}" contains=@phpClFunction,phpFoldHtmlInside contained transparent fold extend
1486 syn region phpFoldClass matchgroup=Structure start="^\z(\s*\)\(abstract\s\+\|final\s\+\)*class\s\+\([^}]*$\)\@=" matchgroup=Delimiter end="^\z1}" contains=@phpClFunction,phpFoldFunction,phpSCKeyword contained transparent fold extend
1487 syn region phpFoldInterface matchgroup=Structure start="^\z(\s*\)interface\s\+\([^}]*$\)\@=" matchgroup=Delimiter end="^\z1}" contains=@phpClFunction,phpFoldFunction contained transparent fold extend
1488 syn region phpFoldCatch matchgroup=Exception start="^\z(\s*\)catch\%([^}]*$\)\@=" matchgroup=Delimiter end="^\z1}" contains=@phpClFunction,phpFoldFunction contained transparent fold extend
1489 syn region phpFoldTry matchgroup=Exception start="^\z(\s*\)try\s\+\([^}]*$\)\@=" matchgroup=Delimiter end="^\z1}" contains=@phpClFunction,phpFoldFunction contained transparent fold extend
1490
1491 elseif s:folding == 2 " {{{1
1492 syn keyword phpDefine function contained
1493 syn keyword phpStructure abstract class interface contained
1494 syn keyword phpException catch throw try contained
1495 syn keyword phpStorageClass final global private protected public static contained
1496
1497 set foldmethod=syntax
1498 syn region phpFoldHtmlInside matchgroup=phpRegionDelimiter start="?>" end="<?\(php\)\=" contained transparent contains=@htmlTop
1499 syn region phpParent matchgroup=Delimiter start="{" end="}" keepend extend contained contains=@phpClFunction,phpFoldHtmlInside transparent fold
1500
1501 elseif s:folding == 3 " {{{1
1502 " match one line constructs here and skip them at folding
1503 syn keyword phpSCKeyword abstract final private protected public static contained
1504 syn keyword phpFCKeyword function contained
1505 syn keyword phpStorageClass global static contained
1506 syn keyword phpException catch throw try contained
1507
1508 syn match phpDefine "\(\s\|^\)\(abstract\s\+\|final\s\+\|private\s\+\|protected\s\+\|public\s\+\|static\s\+\)*function\(\s\+.*[;}]\)\@=" contained contains=phpSCKeyword
1509 syn match phpStructure "\(\s\|^\)\(abstract\s\+\|final\s\+\)*class\(\s\+.*}\)\@=" contained
1510 syn match phpStructure "\(\s\|^\)interface\(\s\+.*}\)\@=" contained
1511 syn match phpException "\(\s\|^\)try\(\s\+.*}\)\@=" contained
1512 syn match phpException "\(\s\|^\)catch\(\s\+.*}\)\@=" contained
1513
1514 " fold these:
1515 set foldmethod=syntax
1516 syn region phpFoldFunction matchgroup=Storageclass start="^\z(\s*\)\(abstract\s\+\|final\s\+\|private\s\+\|protected\s\+\|public\s\+\|static\s\+\)*function\s\([^};]*$\)\@="rs=e-9 matchgroup=Delimiter end="^\z1}" contains=@phpClFunction,phpFoldHtmlInside,phpFCKeyword contained transparent fold extend
1517 syn region phpFoldFunction matchgroup=Define start="^function\s\([^};]*$\)\@=" matchgroup=Delimiter end="^}" contains=@phpClFunction,phpFoldHtmlInside contained transparent fold extend
1518
1519 " don't fold these:
1520 syn region phpFoldHtmlInside matchgroup=phpRegionDelimiter start="?>" end="<?\(php\)\=" contained transparent contains=@htmlTop
1521 syn region phpFoldClass matchgroup=Structure start="^\z(\s*\)\(abstract\s\+\|final\s\+\)*class\s\+\([^}]*$\)\@=" matchgroup=Delimiter end="^\z1}" contains=@phpClFunction,phpFoldFunction,phpSCKeyword contained transparent extend
1522 syn region phpFoldInterface matchgroup=Structure start="^\z(\s*\)interface\s\+\([^}]*$\)\@=" matchgroup=Delimiter end="^\z1}" contains=@phpClFunction,phpFoldFunction contained transparent extend
1523 syn region phpFoldCatch matchgroup=Exception start="^\z(\s*\)catch\s\+\([^}]*$\)\@=" matchgroup=Delimiter end="^\z1}" contains=@phpClFunction,phpFoldFunction contained transparent extend
1524 syn region phpFoldTry matchgroup=Exception start="^\z(\s*\)try\s\+\([^}]*$\)\@=" matchgroup=Delimiter end="^\z1}" contains=@phpClFunction,phpFoldFunction contained transparent extend
1525
1526 else " {{{1
1527 syn keyword phpDefine contained function
1528 syn keyword phpStructure contained abstract class interface
1529 syn keyword phpException contained catch throw try
1530 syn keyword phpStorageClass contained final global private protected public static
1531 endif " }}} 1
1532
1533 " always need these
1534 syn keyword phpStructure contained extends implements
1535endif
1536
1537" ================================================================
1538" Peter Hodge - June 9, 2006
1539" Some of these changes (highlighting isset/unset/echo etc) are not so
1540" critical, but they make things more colourful. :-)
1541
1542" corrected highlighting for an escaped '\$' inside a double-quoted string
1543syn match phpSpecialChar /\\\$/ contained display
1544
1545" Peter Hodge - June 17 2006:
1546" - match \" as a specialchar inside a double-quoted string,
1547" - OR, match \' inside a single-quoted string
1548" TODO: \" should not be a specialchar inside HereDoc strings
1549syn match phpStringSpecialChar /\\["\\]/ contained containedin=@phpStringSubs display
1550syn match phpStringSpecialChar /\\['\\]/ contained containedin=phpStringSingle display
1551hi link phpStringSpecialChar phpSpecialChar
1552
1553" Peter Hodge - August 22 2006:
1554" - match \{ as regular string content so that it stops \{$var} from
1555" highlighting the { }
1556syn match phpStringRegular /\\{/ contained containedin=@phpStringSubs
1557hi link phpStringRegular String
1558
1559" highlight incorrect use of -> as an error
1560syn cluster phpClConst add=phpMemberError
1561syn match phpMemberError /->\%(\_s*\)\@>[a-z{_$]\@!/ contained
1562
1563" different syntax highlighting for 'echo', 'print', 'switch', 'die' and 'list' keywords
1564" to better indicate what they are.
1565syn keyword phpMacro echo print contained
1566"syn keyword phpType list contained
1567
1568" Highlighting for PHP5's user-definable magic class methods
1569syn cluster phpClMethodNames add=phpSpecialMethods
1570syn keyword phpSpecialMethods contained containedin=phpRegion
1571 \ __construct __destruct __sleep __wakeup __clone __set_state __toString
1572 \ __set __get __unset __isset __call
1573
1574" Highlighting for __autoload slightly different from line above
1575" TODO: need to remove this from here!!!
1576syn cluster phpClMethodNames add=phpSpecialFunction
1577syn keyword phpSpecialFunction contained containedin=@phpClFunction,phpRegion
1578 \ __autoload
1579
1580" Highlighting for PHP5's built-in classes
1581" - built-in classes harvested from get_declared_classes() in 5.1.4
1582syn cluster phpClConst add=phpClasses
1583syn keyword phpClasses contained containedin=phpRegion
1584 \ stdClass __PHP_Incomplete_Class php_user_filter Directory ArrayObject
1585 \ Exception ErrorException LogicException BadFunctionCallException BadMethodCallException DomainException
1586 \ RecursiveIteratorIterator IteratorIterator FilterIterator RecursiveFilterIterator ParentIterator LimitIterator
1587 \ CachingIterator RecursiveCachingIterator NoRewindIterator AppendIterator InfiniteIterator EmptyIterator
1588 \ ArrayIterator RecursiveArrayIterator DirectoryIterator RecursiveDirectoryIterator
1589 \ InvalidArgumentException LengthException OutOfRangeException RuntimeException OutOfBoundsException
1590 \ OverflowException RangeException UnderflowException UnexpectedValueException
1591 \ PDO PDOException PDOStatement PDORow
1592 \ Reflection ReflectionFunction ReflectionParameter ReflectionMethod ReflectionClass
1593 \ ReflectionObject ReflectionProperty ReflectionExtension ReflectionException
1594 \ SplFileInfo SplFileObject SplTempFileObject SplObjectStorage
1595 \ XMLWriter LibXMLError XMLReader SimpleXMLElement SimpleXMLIterator
1596 \ DOMException DOMStringList DOMNameList DOMDomError DOMErrorHandler
1597 \ DOMImplementation DOMImplementationList DOMImplementationSource
1598 \ DOMNode DOMNameSpaceNode DOMDocumentFragment DOMDocument DOMNodeList DOMNamedNodeMap
1599 \ DOMCharacterData DOMAttr DOMElement DOMText DOMComment DOMTypeinfo DOMUserDataHandler
1600 \ DOMLocator DOMConfiguration DOMCdataSection DOMDocumentType DOMNotation DOMEntity
1601 \ DOMEntityReference DOMProcessingInstruction DOMStringExtend DOMXPath
1602
1603" Highlighting for PHP5's built-in interfaces
1604" - built-in classes harvested from get_declared_interfaces() in 5.1.4
1605syn cluster phpClConst add=phpInterfaces
1606syn keyword phpInterfaces contained
1607 \ Iterator IteratorAggregate RecursiveIterator OuterIterator SeekableIterator
1608 \ Traversable ArrayAccess Serializable Countable SplObserver SplSubject Reflector
1609"
1610" add php_errormsg as a special variable
1611syn keyword phpIntVar contained php_errormsg
1612
1613if s:show_semicolon
1614 " highlight the semicolon same colour as 'echo'
1615 syn cluster phpClConst add=phpSemicolon
1616 syn match phpSemicolon /;/ contained display
1617
1618 " look for errors with a semicolon
1619 syn match phpSemicolonError contained display extend
1620 \ ";\%(\%(\_s*\%(//.*$\|#.*$\|/\*\_.\{-}\*/\)\@>\)*\)\@>\_s*\%([.*/\^|&,:!=<>]\|?>\@!\|++\@!\|--\@!\)"
1621 \ containedin=phpSemicolon
1622 hi link phpSemicolonError Error
1623
1624 " need to sync back one line to capture the semicolon error properly
1625 syn sync linebreaks=1
1626endif
1627
1628" re-write return/break/continue/exit/die statements.
1629if s:smart_semicolon
1630 syn cluster phpClFunction add=phpStatementRegion
1631 " with or without error on mis-matched /})]/ at end?
1632 " TODO: can we make the semi-colon end-error any shorter?
1633 if s:strict_blocks
1634 syn region phpStatementRegion extend keepend transparent contained
1635 \ matchgroup=phpStatement end=/;/
1636 \ start=/\$\@<!\<return\>/
1637 \ start=/\$\@<!\<break\>/
1638 \ start=/\$\@<!\<continue\>/
1639 \ start=/\$\@<!\<exit\>/
1640 \ start=/\$\@<!\<die\>/
1641 \ start=/\$\@<!\<throw\>/
1642 \ matchgroup=Error end=/}/ end=/)/ end=/\]/
1643 \ matchgroup=Error end=/;\_s*\%([.*\^|&,:!=<>]\|?>\@!\|\/[/*]\@!\|++\@!\|--\@!\)/
1644 else
1645 syn region phpStatementRegion extend keepend transparent contained
1646 \ matchgroup=phpStatement end=/;/
1647 \ start=/\$\@<!\<return\>/
1648 \ start=/\$\@<!\<break\>/
1649 \ start=/\$\@<!\<continue\>/
1650 \ start=/\$\@<!\<exit\>/
1651 \ start=/\$\@<!\<die\>/
1652 endif
1653endif
1654
1655syn cluster phpClInside add=phpProperty
1656syn match phpProperty /->\s*\%(\$\=\h\w*\)\@>(\@!/ contained contains=phpPropertySelector,phpIdentifier
1657 \ nextgroup=phpIdentifierIndex skipwhite
1658syn match phpPropertySelector /->/ contained
1659
1660" for going in string where can be followed by () without making it a method
1661" call
1662syn match phpPropertyInString /->\h\w*/ contained contains=phpPropertySelectorInString
1663syn match phpPropertySelectorInString /->/ contained
1664hi link phpPropertySelectorInString phpPropertySelector
1665
1666if s:special_functions
1667 " Highlighting for PHP built-in functions which exhibit special behaviours
1668 " - isset()/unset()/empty() are not real functions.
1669 " - compact()/extract() directly manipulate variables in the local scope where
1670 " regular functions would not be able to.
1671 " - eval() is the token 'make_your_code_twice_as_complex()' function for PHP.
1672 " - user_error()/trigger_error() can be overloaded by set_error_handler and also
1673 " have the capacity to terminate your script when type is E_USER_ERROR.
1674 syn cluster phpClConst add=phpSpecialFunction
1675 syn keyword phpSpecialFunction contained containedin=phpRegion
1676 \ user_error trigger_error isset unset empty eval extract compact
1677endif
1678
1679" special highlighting for '=&' operator
1680syn cluster phpClInside add=phpAssignByRef
1681syn match phpAssignByRef /=\s*&/ contained display
1682
1683" highlighting for the '@' error-supressing operator
1684syn match phpSupressErrors /@/ contained display
1685syn cluster phpClConst add=phpSupressErrors
1686
1687" ================================================================
1688
1689" Sync
1690if php_sync_method == -1
1691 if s:long_tags
1692 syn sync match phpRegionSync grouphere phpRegion "^\s*<?php\s*$"
1693 else
1694 syn sync match phpRegionSync grouphere phpRegion "^\s*<?\(php\)\=\s*$"
1695 endif
1696 syn sync match phpRegionSync grouphere phpRegionSc +^\s*<script language="php">\s*$+
1697 if s:asp_tags
1698 syn sync match phpRegionSync grouphere phpRegionAsp "^\s*<%\(=\)\=\s*$"
1699 endif
1700 syn sync match phpRegionSync grouphere NONE "^\s*?>\s*$"
1701 syn sync match phpRegionSync grouphere NONE "^\s*%>\s*$"
1702 syn sync match phpRegionSync grouphere phpRegion "function\s.*(.*\$"
1703 "syn sync match phpRegionSync grouphere NONE "/\i*>\s*$"
1704elseif php_sync_method > 0
1705 exec "syn sync minlines=" . php_sync_method
1706else
1707 syn sync fromstart
1708endif
1709
1710" Define the default highlighting.
1711" For version 5.7 and earlier: only when not done already
1712" For version 5.8 and later: only when an item doesn't have highlighting yet
1713if version >= 508 || !exists("did_php_syn_inits")
1714 if version < 508
1715 let did_php_syn_inits = 1
1716 command -nargs=+ HiLink hi link <args>
1717 else
1718 "command -nargs=+ HiLink hi def link <args>
1719 command -nargs=+ HiLink hi link <args>
1720 endif
1721
1722 " Peter Hodge, June 17 2006
1723 " - I'm optimizing these highlight links for the default
1724 " colorscheme, or 'elflord' when it would make a major
1725 " difference.
1726 " After most HiLinks I have noted which color the group
1727 " will revert back to under default or elflord.
1728
1729 " TODO: remove this testing
1730 if exists('g:colors_name') && g:colors_name == 'elflord'
1731 let s:is_elflord = 1
1732 else
1733 let s:is_elflord = 0
1734 endif
1735
1736 if exists("php_oldStyle")
1737 hi phpOperator guifg=SeaGreen ctermfg=DarkGreen
1738 hi phpIdentifier guifg=DarkGray ctermfg=Brown
1739" hi phpIdentifierSimply guifg=DarkGray ctermfg=Brown
1740 hi phpVarSelector guifg=SeaGreen ctermfg=DarkGreen
1741
1742 hi phpRelation guifg=SeaGreen ctermfg=DarkGreen
1743
1744 hi phpIntVar guifg=Red ctermfg=DarkRed
1745 hi phpEnvVar guifg=Red ctermfg=DarkRed
1746 else
1747 HiLink phpOperator Operator " => Statement(Yellow) / Operator(Red)
1748 HiLink phpIdentifier Identifier " => Identifier(Cyan)
1749" HiLink phpIdentifierSimply phpIdentifier
1750 HiLink phpVarSelector Operator " => Statement (yellow)
1751
1752 HiLink phpArray phpType
1753 if s:alt_arrays
1754 HiLink phpArrayParens phpArray
1755 HiLink phpArrayPair phpArray
1756
1757 " highlight the comma as well?
1758 if s:alt_arrays == 2
1759 HiLink phpArrayComma phpArrayParens
1760 endif
1761 else
1762 HiLink phpArrayParens phpParent
1763 HiLink phpArrayPair phpOperator
1764 endif
1765
1766 if s:alt_comparisons
1767 if s:is_elflord
1768 HiLink phpRelation Statement " => Yellow
1769 else
1770 HiLink phpRelation Constant " => Constant (SlateBlue)
1771 endif
1772 else
1773 HiLink phpRelation phpOperator
1774 endif
1775
1776 " special variables support:
1777 if s:superglobals
1778 HiLink phpIntVar Tag " => Special (orange/red)
1779 HiLink phpEnvVar Tag " => Special (ornage/red)
1780 else
1781 HiLink phpIntVar phpIdentifier
1782 HiLink phpEnvVar phpIdentifier
1783 endif
1784 endif
1785
1786 " language:
1787 HiLink phpComment Comment " Slateblue
1788
1789 HiLink phpSemicolon Macro " => PreProc (LightMagenta)
1790 HiLink phpDefine Define " => PreProc (LightMagenta)
1791 HiLink phpMacro Macro " => PreProc (LightMagenta)
1792 HiLink phpObjectOperator phpMacro
1793 HiLink phpInclude Include " => PreProc (LightMagenta)
1794
1795 HiLink phpParent Delimiter " => Special (Red)
1796 HiLink phpBlock phpParent " => Special (Red)
1797 HiLink phpBlockError Error " => Error
1798
1799 if s:alt_blocks
1800 HiLink phpBlockFunc phpDefine
1801 HiLink phpBlockClass phpStructure
1802 HiLink phpBlockMethod phpDefine
1803 HiLink phpBlockTry phpException
1804 HiLink phpBlockCatch phpException
1805 else
1806 HiLink phpBlockFunc phpBlock
1807 HiLink phpBlockClass phpBlock
1808 HiLink phpBlockMethod phpBlock
1809 HiLink phpBlockTry phpBlock
1810 HiLink phpBlockCatch phpBlock
1811 endif
1812
1813 HiLink phpType Type " Green
1814
1815 " other operations
1816 HiLink phpSupressErrors PreProc " LightMagenta
1817
1818 if s:alt_refs
1819 HiLink phpAssignByRef Type " Green
1820 else
1821 HiLink phpAssignByRef Operator " Red
1822 endif
1823
1824 HiLink phpMemberSelector Structure " => Type (Green)
1825 if s:alt_properties
1826 HiLink phpPropertySelector Function " => Identifier (Cyan) / (White)
1827 HiLink phpUnknownSelector Operator " => Operator (Red) / (White)
1828 else
1829 HiLink phpPropertySelector phpMemberSelector
1830 HiLink phpUnknownSelector phpMemberSelector
1831 endif
1832
1833
1834 " execution control structures
1835 HiLink phpConditional Conditional " => Statement (Yellow) / Repeat (White)
1836 HiLink phpRepeat Repeat " => Statement (Yellow) / Repeat (White)
1837 HiLink phpStatement Statement " (Yellow / Brown)
1838 HiLink phpLabel Label " => Statement (Yellow / Brown)
1839 HiLink phpException Exception " => Statement (Yellow)
1840
1841 " constants
1842 HiLink phpMagicConstant Constant " Pink / Magenta
1843 HiLink phpCoreConstant Constant " Pink / Magenta
1844 HiLink phpNumber Number " => Constant (Pink)
1845 HiLink phpFloat Float " => Constant (Pink)
1846 HiLink phpBoolean phpType
1847 HiLink phpNull phpType
1848 HiLink phpStringSingle String " => Constant (Pink)
1849 HiLink phpStringDouble String " => Constant (Pink)
1850 HiLink phpBacktick String " => Constant (Pink)
1851 HiLink phpSpecialChar SpecialChar " => Special (Orange / Red)
1852
1853 " keywords (mainly class / function definitions)
1854 HiLink phpStorageClass StorageClass " => Type (Green)
1855 HiLink phpSCKeyword phpStorageClass
1856 HiLink phpStructure Structure " => Type (Green)
1857 HiLink phpFCKeyword phpDefine
1858 HiLink phpKeyword phpDefine
1859
1860 if s:show_quotes
1861 HiLink phpQuoteSingle String
1862 HiLink phpQuoteDouble String
1863 else
1864 HiLink phpQuoteSingle Normal
1865 HiLink phpQuoteDouble Normal
1866 endif
1867
1868 " always highlight backtick quotes like an operator
1869 " (seeing as it executes stuff)
1870 HiLink phpQuoteBacktick phpOperator
1871
1872 " built-in langauge functions / classes
1873 HiLink phpFunctions Function " => Identifier (Cyan) / Function (White)
1874 HiLink phpClasses phpFunctions
1875 HiLink phpMethods phpFunctions
1876 HiLink phpInterfaces phpCoreConstant
1877 HiLink phpSpecialFunction SpecialComment " => Special (Orange / Red)
1878 HiLink phpSpecialMethods phpSpecialFunction
1879
1880 " other items
1881 HiLink phpMemberError Error
1882 HiLink phpParentError Error
1883 HiLink phpHTMLError Error
1884 HiLink phpOctalError Error
1885 HiLink phpTodo Todo
1886 HiLink phpIdentifierIndex phpFunctions
1887
1888 " Peter Hodge June 17, 2006:
1889 " changed matchgroup for phpRegion from Delimiter to phpRegionDelimiter
1890 HiLink phpRegionDelimiter Debug " => Special (Orange / Red)
1891
1892 " changed matchgroup for phpHereDoc to phpHereDocDelimiter
1893 HiLink phpHereDocDelimiter phpRegionDelimiter " => Special (Orange / Red)
1894
1895 delcommand HiLink
1896endif
1897
1898" optional support for PCRE extension (preg_* functions)
1899if s:show_pcre
1900 " ===================================================
1901 " Note: I have deliberately neglected to support the '\cx' functionality
1902 " - it would do more harm than good by complicating this already-
1903 " mind-numbing syntax file when nobody really needs this feature in
1904 " PHP.
1905 " TODO: add support for '\cx' sequences
1906
1907 " 1) Allow for dropping out of SQ and concatenating a variable {{{
1908
1909 " flag a lone quote as an error!
1910 syn match pregError /'/ contained containedin=pregPattern_S
1911 syn match pregError /"/ contained containedin=pregPattern_D
1912
1913 " find real concatenations (overrides the errors)
1914 syn region pregConcat matchgroup=phpQuoteSingle start=/'\ze\_s*\./ end=/'/
1915 \ skip=/\['.\{-}'\]\|('.\{-}'[,)]/
1916 \ keepend extend
1917 \ contained containedin=pregPattern_S
1918 \ contains=@phpClInside
1919 syn region pregConcat matchgroup=phpQuoteDouble start=/"/ end=/"/
1920 \ skip=/\[".\{-}"\]\|(".\{-}"[,)]/
1921 \ keepend extend
1922 \ contained containedin=pregPattern_D
1923 \ contains=@phpClInside
1924 " }}}
1925
1926 " 2) look for special characters {{{
1927
1928 " TODO: re-examine how \$ is going to fit into a double-quoted string ...
1929 syn match pregSpecial /\$/ contained containedin=pregPattern_S display
1930 syn match pregSpecial /\$/ contained containedin=pregPattern_D display
1931 \ contains=phpIdentifierInString,phpIdentifierInStringComplex
1932 syn match pregSpecial /\^/ contained containedin=@pregPattern_Q display
1933 syn match pregSpecial /|/ contained containedin=@pregPattern_Q display
1934 syn match pregDot /\./ contained containedin=@pregPattern_Q display
1935
1936 " TODO: move these things out of here???
1937 " find a ] character at the start of a character range ...
1938 syn match pregClassIncStartBracket /\]/ contained display containedin=@pregClassIncStart_Q
1939 syn match pregClassExcStartBracket /\]/ contained display containedin=@pregClassExcStart_Q
1940 hi link pregClassIncStartBracket pregClassInc
1941 hi link pregClassExcStartBracket pregClassExc
1942 " }}}
1943
1944 " 3) look for escape sequences {{{
1945
1946 " look for any escape sequence inside the pattern and mark them as errors
1947 " by default, all escape sequences are errors
1948 syn match pregEscapeUnknown /\\./ contained containedin=@pregPattern_Q display
1949
1950 " TODO: when \$ is encountered, the \ is a PHP escape and prevents
1951 " variable expansion, but the '$' becomes the end-of-line wildcard.
1952 " \\$ will match a literal '$', but the '$' might be part of a variable
1953 " name also. \\\$ is the proper way to match
1954
1955 " TODO: deprecate these clusters?
1956 " TODO: deprecate pregClass_any
1957 syn cluster pregClass_any add=@pregClassInc,pregClassExc
1958 syn cluster pregClassRange_any_S add=pregClassIncRange_S,pregClassExcRange_S
1959 syn cluster pregClassRange_any_D add=pregClassIncRange_D,pregClassExcRange_D
1960
1961 syn match pregClassEscapeUnknown /\\[^\^\-\]]/ contained containedin=@pregClass_any_Q display
1962 syn match pregClassEscape /\\[^a-zA-Z0-9]/ contained containedin=@pregClass_any_Q display
1963
1964 " known escape sequences:
1965 syn match pregClassIncEscapeKnown /\C\\[abtnfret]/ contained display
1966 \ containedin=@pregClassInc_Q,@pregClassIncRange_Q
1967 syn match pregClassIncEscapeRange /\\[dsw]/ contained display
1968 \ containedin=@pregClassInc_Q,@pregClassIncRange_Q
1969 syn match pregClassExcEscapeKnown /\C\\[abtnfret]/ contained display
1970 \ containedin=@pregClassExc_Q,@pregClassExcRange_Q
1971 syn match pregClassExcEscapeRange /\\[dsw]/ contained display
1972 \ containedin=@pregClassExc_Q,@pregClassExcRange_Q
1973
1974 " ... including hex sequences
1975 syn match pregClassIncEscapeKnown /\C\\x\x\{0,2}/ contained display
1976 \ containedin=@pregClassInc_Q,@pregClassIncRange_Q
1977 syn match pregClassExcEscapeKnown /\C\\x\x\{0,2}/ contained display
1978 \ containedin=@pregClassExc_Q,@pregClassExcRange_Q
1979
1980 " ... and octal sequences
1981 syn match pregClassIncEscapeKnown /\\\o\{1,3}/ contained display
1982 \ containedin=@pregClassInc_Q,@pregClassIncRange_Q
1983 syn match pregClassExcEscapeKnown /\\\o\{1,3}/ contained display
1984 \ containedin=@pregClassExc_Q,@pregClassExcRange_Q
1985
1986 syn match pregClassEscapeMainQuote /\\'/ contained transparent display contains=pregEscapePHP
1987 \ containedin=@pregClass_any_S,@pregClassRange_any_S
1988 syn match pregClassEscapeMainQuote /\\"/ contained transparent display contains=pregEscapePHP
1989 \ containedin=@pregClass_any_D,@pregClassRange_any_D
1990
1991 syn match pregClassEscape /\\\\\ze\\'/ contained display
1992 \ containedin=@pregClass_any_S contains=pregEscapePHP
1993 \ nextgroup=pregClassEscapeMainQuote
1994 syn match pregClassEscape /\\\\\ze\\"/ contained display
1995 \ containedin=@pregClass_any_D contains=pregEscapePHP
1996 \ nextgroup=pregClassEscapeMainQuote
1997
1998 syn match pregClassEscapeDouble1 /\\\\\ze\\\\/ contained containedin=@pregClass_any_Q display
1999 \ contains=pregEscapePHP
2000 \ nextgroup=pregClassEscapeDouble2
2001 syn match pregClassEscapeDouble2 /\\\\/ contained transparent display
2002 \ containedin=@pregClassRange_any_S,@pregClassRange_any_D
2003 \ contains=pregEscapePHP
2004 hi link pregClassEscapeDouble1 pregClassEscape
2005
2006 " in the unknown escapes, match those that make a special character
2007 " take on its literal meaning (except for <single-quote> which is covered next)
2008 " NOTE: am changing these from being contained inside pregEscapeUnknown
2009 " to being in the main scope to make SQ and DQ containment easier
2010 syn match pregEscapeLiteral /\\[^A-Za-z0-9]/ contained containedin=@pregPattern_Q display
2011 syn match pregEscapeLiteral /\\\{4}/ contained containedin=@pregPattern_Q display
2012
2013 " for single-quoted strings
2014 syn match pregEscapeLiteral /\\"/ contained containedin=pregPattern_S display
2015 syn match pregEscapeLiteral /\\\\\\'/ contained containedin=pregPattern_S display contains=pregEscapePHP
2016
2017 " for double-quoted strings
2018 syn match pregEscapeLiteral /\\'/ contained containedin=pregPattern_D display
2019 syn match pregEscapeLiteral /\\\\\\"/ contained containedin=pregPattern_D display contains=pregEscapePHP
2020
2021 syn match pregEscapeMainQuote /\\'/ contained containedin=pregPattern_S display
2022 syn match pregEscapeMainQuote /\\"/ contained containedin=pregPattern_D display
2023
2024 " match the escaped strings which are known
2025 syn match pregBackreference /\\[1-9][0-9]\=/ contained containedin=pregEscapeUnknown display
2026 syn match pregEscapeSpecial /\C\\[rnt]/ contained containedin=pregEscapeUnknown display
2027 syn match pregEscapeSpecial /\C\\x\x\{0,2}/ contained containedin=pregEscapeUnknown display
2028 syn match pregEscapeSpecial /\\\%(0\o\{0,2}\|\o\o\o\)/ contained containedin=pregEscapeUnknown display
2029 syn match pregEscapeRange /\\[wsd]/ contained containedin=pregEscapeUnknown display
2030 syn match pregEscapeAnchor /\C\\[AbBGzZ]/ contained containedin=pregEscapeUnknown display
2031
2032 " unicode characters
2033 syn match pregEscapeUnicode /\C\\X/ contained containedin=pregEscapeUnknown display
2034 syn match pregEscapeUnicodeError /\c\\p{\^\=\w\+}/ contained display
2035 \ containedin=pregEscapeUnknown,pregClassEscapeUnknown
2036 syn match pregEscapeUnicode /\\p{^\=/ contained containedin=pregEscapeUnicodeError display
2037 syn match pregEscapeUnicode /\CC[cfnos]\=/ contained containedin=pregEscapeUnicodeError display
2038 syn match pregEscapeUnicode /\CL[lmotu]\=/ contained containedin=pregEscapeUnicodeError display
2039 syn match pregEscapeUnicode /\CM[cen]\=/ contained containedin=pregEscapeUnicodeError display
2040 syn match pregEscapeUnicode /\CN[dlo]\=/ contained containedin=pregEscapeUnicodeError display
2041 syn match pregEscapeUnicode /\CP[cdefios]\=/ contained containedin=pregEscapeUnicodeError display
2042 syn match pregEscapeUnicode /\CS[ckmo]\=/ contained containedin=pregEscapeUnicodeError display
2043 syn match pregEscapeUnicode /\CZ[lps]\=/ contained containedin=pregEscapeUnicodeError display
2044 syn match pregEscapeUnicode /}/ contained containedin=pregEscapeUnicodeError display
2045 " shorthand
2046 syn match pregEscapeUnicode /\C\\[pP][CLMNPSZ]/ contained display
2047 \ containedin=pregEscapeUnknown,pregClassEscapeUnknown
2048
2049 " match the PHP escaping in literal escapes
2050 syn match pregEscapePHP /\\./he=s+1 contained display containedin=pregEscapeMainQuote
2051 syn match pregEscapePHP /\\\\/he=s+1 contained display containedin=pregEscapeLiteral
2052
2053 " this captures confusing usage of escape characters:
2054 " - need to make sure they don't capture the quote character because
2055 " that wouldn't right
2056 syn match pregEscapeNotNeeded /\\\ze\\[^\\']/ contained display containedin=pregPattern_S,@pregClass_any_S
2057 syn match pregEscapeNotNeeded /\\\ze\\[^\\"]/ contained display containedin=pregPattern_D,@pregClass_any_D
2058
2059 " a triple-backslash can be dangerous: it is not obvious that
2060 " the meaning of the 3rd backslash is dependent on the following
2061 " character; if the following character is changed to a
2062 " single-quote or backslash, it will change the meaning of the 3
2063 " backslashes
2064 syn match pregEscapeLiteral /\\\{3}\ze[^\\']/ contained display containedin=pregPattern_S
2065 syn match pregEscapeLiteral /\\\{3}\ze[^\\"]/ contained display containedin=pregPattern_D
2066 syn match pregClassEscape /\\\{3}\ze[^\\']/ contained display contains=pregClassEscapePHP containedin=@pregClass_any_S
2067 syn match pregClassEscape /\\\{3}\ze[^\\"]/ contained display contains=pregClassEscapePHP containedin=@pregClass_any_D
2068 syn match pregClassEscapePHP /\\\\/he=s+1 contained
2069 hi link pregClassEscapePHP pregEscapePHP
2070 " }}}
2071
2072 " 4) Look for quantifiers ?*+{1,2} {{{
2073
2074 syn match pregQuantifier /\*?\=/ contained containedin=@pregPattern_Q display
2075 syn match pregQuantifier /+?\=/ contained containedin=@pregPattern_Q display
2076 syn match pregQuantifier /??\=/ contained containedin=@pregPattern_Q display
2077
2078 syn match pregQuantifierComplex /{\d*\(,\d*\)\?}/ contained containedin=@pregPattern_Q display
2079 syn match pregQuantifier /\d\+/ contained containedin=pregQuantifierComplex display
2080 " }}}
2081
2082 " 5) Look for sub-patterns {{{
2083 syn match pregParens /(/ contained containedin=@pregPattern_Q display
2084 syn match pregParens /(?<[=!]/ contained containedin=@pregPattern_Q display extend
2085 syn match pregParens /(?[:>=!]/ contained containedin=@pregPattern_Q display extend
2086 syn match pregParens /(?(?<\=[=!]/ contained containedin=@pregPattern_Q display extend
2087
2088 " recursion
2089 syn match pregParens /(?R)/ contained containedin=@pregPattern_Q display extend
2090 syn match pregParens /(?[1-9]\d\=)/ contained containedin=@pregPattern_Q display extend
2091 \ contains=pregBackreferenceNumber
2092
2093 " conditional sub-patterns
2094 syn match pregParens /(?(\d\+)/ contained containedin=@pregPattern_Q display
2095 \ contains=pregBackreferenceNumber
2096 syn match pregBackreferenceNumber /\d\+/ contained display
2097 " TODO: move hi link out of here?
2098 hi link pregBackreferenceNumber pregBackreference
2099 syn match pregParens /(?\a\+\(-\a\+\)\=[):]/ contained containedin=@pregPattern_Q display
2100 \ contains=pregOption
2101 syn match pregParens /(?-\a\+[):]/ contained containedin=@pregPattern_Q display
2102 \ contains=pregOption
2103 syn match pregParens /)/ contained containedin=@pregPattern_Q display
2104
2105 " find a named backreference
2106 syn match pregBackreference contained containedin=@pregPattern_Q /(?P>\w\+)/
2107 \ contains=pregNamedBackreference
2108 syn match pregParens contained containedin=@pregPattern_Q /(?P<\w\+>/
2109 \ contains=pregNamedBackreference
2110
2111 syn match pregNamedBackreference /(?P>\zs\w\+\ze)/ contained
2112 syn match pregNamedBackreference /(?P<\zs\w\+\ze>/ contained
2113 hi link pregNamedBackreference pregEscapeRange
2114 " }}}
2115
2116 " 6) Look for PCRE patterns {{{
2117 syn cluster phpClInside add=phpPREGFunctions
2118
2119 " look for preg_* functions which take a single pattern
2120 syn keyword phpPREGFunctions contained preg_match preg_match_all preg_split preg_grep
2121 \ nextgroup=phpPREGOpenParent,phpPREGRegion skipwhite skipempty
2122
2123 " special case for preg_replace functions which can take an array of
2124 " patterns
2125 syn keyword phpPREGFunctions contained preg_replace preg_replace_callback
2126 \ nextgroup=phpPREGOpenParentMulti,phpPREGRegionMulti skipwhite skipempty
2127
2128 if s:strict_blocks
2129 " regions for ( ) after name of preg_* function
2130 syn region phpPREGRegion matchgroup=phpParent start=/(/ end=/)/ keepend extend
2131 \ contained contains=@phpClInside,phpPREGStringStarter
2132 syn region phpPREGRegionMulti matchgroup=phpParent start=/(/ end=/)/ keepend extend
2133 \ contained contains=@phpClInside,phpPREGStringStarter,phpPREGArray
2134
2135 " match an array of preg patterns
2136 if s:alt_arrays
2137 syn region phpPREGArray matchgroup=phpArrayParens start=/\%((\_s*\)\@<=array(/ end=/)/
2138 \ keepend extend
2139 \ contained
2140 \ contains=@phpClInside,phpPREGStringStarter,phpPREGArrayComma,phpPREGArrayComment
2141 else
2142 syn match phpPREGArray /\%((\_s*\)\@<=array/ contained
2143 \ nextgroup=phpPREGArrayRegion skipwhite skipempty
2144
2145 syn region phpPREGArrayRegion matchgroup=phpParent start=/(/ end=/)/
2146 \ keepend extend
2147 \ contained
2148 \ contains=phpPREGStringStarter,phpPREGArrayComment,phpPREGArrayComma
2149 endif
2150 hi link phpPREGArray phpArray
2151
2152 " a special match to open a pattern string immediately after a '('
2153 " TODO: will this work as a match instead?
2154" syn region phpPREGStringStarter start=/\%((\_s*\)\@<=\z(['"]\)/ end=/\z1/ extend
2155" \ contained contains=@phpPREGString_any
2156 syn match phpPREGStringStarter /\%((\_s*\)\@<=['"]/ extend
2157 \ contained contains=@phpPREGString_any
2158
2159 " TODO: move 'hi link' commands out of here
2160 hi link phpPREGArrayComma phpArrayComma
2161 else
2162 " highlight the opening parenthesis
2163 syn match phpPREGOpenParent /(/ contained nextgroup=@phpPREGString_any display
2164 hi link phpPREGOpenParent phpParent
2165 syn match phpPREGOpenParentMulti /(/ contained display
2166 \ nextgroup=@phpPREGString_any,phpPREGArray skipwhite skipnl skipempty
2167 hi link phpPREGOpenParentMulti phpPREGOpenParent
2168
2169 " TODO: move 'hi link' commands out of here
2170 " match an array of preg patterns
2171 syn keyword phpPREGArray array contained nextgroup=phpPREGArrayOpenParent
2172 hi link phpPREGArray phpType
2173 syn match phpPREGArrayOpenParent /(/ contained display
2174 \ nextgroup=@phpPREGArrayString_any skipwhite skipnl skipempty
2175 hi link phpPREGArrayOpenParent phpPREGOpenParent
2176 endif
2177
2178 " match a phpString (single or double-quoted) which is able to contain a
2179 " pregPattern
2180 " NOTE: we can only error on comma-ending as long as the delimiter is
2181 " not a comma!!!
2182 syn cluster phpPREGString_any add=phpPREGStringSingle,phpPREGStringDouble
2183 syn region phpPREGStringSingle matchgroup=phpQuoteSingle start=/'\ze\z(.\)/ end=/'/
2184 \ keepend extend contained contains=pregPattern_S
2185 \ matchgroup=Error end=/\z1\@!,/
2186 syn region phpPREGStringDouble matchgroup=phpQuoteSingle start=/"\ze\z(.\)/ end=/"/
2187 \ keepend extend contained contains=pregPattern_D
2188 \ matchgroup=Error end=/\z1\@!,/
2189
2190 " match a single-quoted string inside an array, followed by a comma
2191 " and another string
2192 " TODO: remove hi link commands from here
2193 syn cluster phpPREGArrayString_any add=phpPREGArrayStringSingle,phpPREGArrayStringDouble
2194 syn region phpPREGArrayStringSingle matchgroup=phpQuoteSingle start=/'/ end=/'/
2195 \ keepend extend contained contains=pregPattern_S
2196 \ nextgroup=phpPREGArrayComma skipwhite skipnl skipempty
2197 hi link phpPREGArrayStringSingle phpPREGStringSingle
2198 syn region phpPREGArrayStringDouble matchgroup=phpQuoteDouble start=/"/ end=/"/
2199 \ keepend extend contained contains=pregPattern_D
2200 \ nextgroup=phpPREGArrayComma skipwhite skipnl skipempty
2201 hi link phpPREGArrayStringDouble phpPREGStringDouble
2202
2203 " use the comma inside a pattern array to trigger off the next pattern
2204 syn match phpPREGArrayComma /,/ contained
2205 \ nextgroup=@phpPREGArrayString_any skipwhite skipnl skipempty
2206
2207 " use the comments inside a pattern array to trigger off the next pattern
2208 syn region phpPREGArrayComment start=#//# end=#$# contained keepend extend
2209 \ nextgroup=@phpPREGArrayString_any skipwhite skipnl skipempty
2210 syn region phpPREGArrayComment start=#/\*# end=#\*/# contained keepend extend
2211 \ nextgroup=@phpPREGArrayString_any skipwhite skipnl skipempty
2212 hi link phpPREGArrayComment phpComment
2213 " }}}
2214
2215 " 7) Look for pattern delimiters {{{
2216 syn cluster pregPattern_Q add=pregPattern_S,pregPattern_D
2217
2218 " add a region which starts with any valid delimiter character
2219 " and ends when the delimiter character is met again
2220 syn region pregPattern_S matchgroup=pregDelimiter
2221 \ start=/\z([ !"#$%&*+,-./:;=?@^_`|~]\)/ start=/\z(\\'\)/
2222 \ end=/\z1/ skip=/\\\\\{2,3}\|\\\\\z1\=\|\\\z1/ keepend extend
2223 \ contained nextgroup=pregOptionError_S
2224
2225 function! s:pregPattern_S(open, close)
2226 execute 'syntax region pregPattern_S matchgroup=pregDelimiter'
2227 \ 'start=/\%x' . a:open . '/'
2228 \ 'end=/\%x' . a:close . '/'
2229 \ 'skip=/\\\{4}\|\\\\\=./ keepend extend'
2230 \ 'contained nextgroup=pregOptionError_S'
2231 endfunction
2232 function! s:pregPattern_D(open, close)
2233 execute 'syntax region pregPattern_D matchgroup=pregDelimiter'
2234 \ 'start=/\%x' . a:open . '/'
2235 \ 'end=/\%x' . a:close . '/'
2236 \ 'skip=/\\\{4}\|\\\\\=./ keepend extend'
2237 \ 'contained nextgroup=pregOptionError_D'
2238 endfunction
2239 call s:pregPattern_S('28', '29')
2240 call s:pregPattern_S('3C', '3E')
2241 call s:pregPattern_S('5B', '5D')
2242 call s:pregPattern_S('7B', '7D')
2243 call s:pregPattern_D('28', '29')
2244 call s:pregPattern_D('3C', '3E')
2245 call s:pregPattern_D('5B', '5D')
2246 call s:pregPattern_D('7B', '7D')
2247
2248 " TODO: make a cluster for the things which go inside double-quoted
2249 " strings!
2250 syn region pregPattern_D matchgroup=pregDelimiter
2251 \ start=/\z([ !'#$%&*+,-./:;=?@^_`|~]\)/ start=/\z(\\"\)/
2252 \ end=/\z1/ skip=/\\\\\{2,3}\|\\\\\z1\=\|\\\z1/
2253 \ keepend extend
2254 \ contained nextgroup=pregOptionError_D
2255 \ contains=phpIdentifierInString,phpIdentifierInStringComplex
2256
2257 " TODO: work out how to have '$' as delimiter in a double-quoted string
2258" syn region pregPattern_D matchgroup=pregDelimiter
2259" \ start=/\\\$\|\$[a-z_]\@!\%({[a-z_$]\)\@!/
2260" \ end=/\\\$\|\$[a-z_]\@!\%({[a-z_$]\)\@!/ skip=/\\\{4}\|\\\{3}[^$]\|\\\\\$/
2261" \ keepend extend
2262" \ contained nextgroup=pregOptionError_D
2263" \ contains=phpIdentifierInString,phpIdentifierInStringComplex
2264
2265 " TODO move hi link out of here
2266 hi link pregPattern_S pregPattern
2267 hi link pregPattern_D pregPattern
2268 " }}}
2269
2270 " 8) Look for character classes {{{
2271 " Inc[lusive] and Exc[lusive] character classes:
2272 " if the first char is ']'
2273 " that is tricky so is handled by another match below
2274 syn cluster pregClassInc_Q add=pregClassInc_S,pregClassInc_D
2275 syn cluster pregClassExc_Q add=pregClassExc_S,pregClassExc_D
2276 syn cluster pregClass_any_S add=pregClassInc_S,pregClassExc_S
2277 syn cluster pregClass_any_D add=pregClassInc_D,pregClassExc_D
2278 syn cluster pregClass_any_Q add=@pregClassInc_Q,@pregClassExc_Q
2279
2280 syn region pregClassInc_S matchgroup=pregClassParent start=/\[\ze[^\^\]]/ end=/\]/ skip=/\\./
2281 \ keepend display contained containedin=pregPattern_S
2282 syn region pregClassInc_D matchgroup=pregClassParent start=/\[\ze[^\^\]]/ end=/\]/ skip=/\\./
2283 \ keepend display contained containedin=pregPattern_D
2284 " TODO: move these out of here???
2285 hi link pregClassInc_S pregClassInc
2286 hi link pregClassInc_D pregClassInc
2287 hi link pregClassExc_S pregClassExc
2288 hi link pregClassExc_D pregClassExc
2289
2290 syn region pregClassExc_S matchgroup=pregClassParent start=/\[\^\]\@!/ end=/\]/ skip=/\\./
2291 \ keepend display contained containedin=pregPattern_S
2292 syn region pregClassExc_D matchgroup=pregClassParent start=/\[\^\]\@!/ end=/\]/ skip=/\\./
2293 \ keepend display contained containedin=pregPattern_D
2294
2295 " TODO: move hi link commands out of here
2296
2297 " TODO: just use one match for all character classes???
2298 " this is an alternate form of the character class region,
2299 " it is not contained in @pregPattern_Q and can only be activated
2300 " by a nextgroup=pregClassInc.
2301 " 'EXECUTE'ed:
2302 "syntax region pregClassInc_S start=/\ze./ matchgroup=pregClassParent end=/\]/ skip=/\\\\\|\\]/ contained display
2303 "syntax region pregClassInc_D start=/\ze./ matchgroup=pregClassParent end=/\]/ skip=/\\\\\|\\]/ contained display
2304 "syntax region pregClassExc_S start=/\ze./ matchgroup=pregClassParent end=/\]/ skip=/\\\\\|\\]/ contained display
2305 "syntax region pregClassExc_D start=/\ze./ matchgroup=pregClassParent end=/\]/ skip=/\\\\\|\\]/ contained display
2306 let s:command = 'syntax region pregClass<TYPE> start=/\ze./ matchgroup=pregClassParent end=/\]/'
2307 \ . ' skip=/\\\\\|\\]/ contained display keepend'
2308 execute substitute(s:command, '<TYPE>', 'Inc_S', 'g')
2309 execute substitute(s:command, '<TYPE>', 'Inc_D', 'g')
2310 execute substitute(s:command, '<TYPE>', 'Exc_S', 'g')
2311 execute substitute(s:command, '<TYPE>', 'Exc_D', 'g')
2312 unlet! s:command
2313
2314 " this is a special match to start off the character class
2315 " region when the very first character inside it is ']',
2316 " because otherwise the character class region would end
2317 " immediately
2318 syn cluster pregClassIncStart_Q add=pregClassIncStart_S,pregClassIncStart_D
2319 syn cluster pregClassExcStart_Q add=pregClassExcStart_S,pregClassExcStart_D
2320 let s:command = 'syntax match pregClassIncStart_<QUOTE> /\[\]/ contained display'
2321 \ . ' containedin=pregPattern_<QUOTE> nextgroup=pregClassInc_<QUOTE>,pregClassIncEnd'
2322 execute substitute(s:command, '<QUOTE>', 'S', 'g')
2323 execute substitute(s:command, '<QUOTE>', 'D', 'g')
2324 let s:command = 'syntax match pregClassExcStart_<QUOTE> /\[\^\]/ contained display'
2325 \ . ' containedin=pregPattern_<QUOTE> nextgroup=pregClassExc_<QUOTE>,pregClassExcEnd'
2326 execute substitute(s:command, '<QUOTE>', 'S', 'g')
2327 execute substitute(s:command, '<QUOTE>', 'D', 'g')
2328 unlet! s:command
2329
2330 " TODO: move hi link commands out of here
2331 hi link pregClassIncStart_S pregClassParent
2332 hi link pregClassIncStart_D pregClassParent
2333 hi link pregClassExcStart_S pregClassParent
2334 hi link pregClassExcStart_D pregClassParent
2335
2336 " this is a special match to end off the character class immediately
2337 " should a ']' be followed immediately by another ']'
2338 " TODO: move hi link commands out of here
2339 syn match pregClassIncEnd /\]/ contained display
2340 hi link pregClassIncEnd pregClassParent
2341 syn match pregClassExcEnd /\]/ contained display
2342 hi link pregClassExcEnd pregClassParent
2343
2344 " add the range-matching string here
2345 syn cluster pregClassIncRange_Q add=pregClassIncRange_S,pregClassIncRange_D
2346 syn cluster pregClassExcRange_Q add=pregClassExcRange_S,pregClassExcRange_D
2347 syn match pregClassIncRange_S contained display
2348 \ containedin=pregClassInc_S,pregClassIncStart_S
2349 \ /\%([^\\]\|\\\%(\\\{2}[\\']\=\|x\x\{0,2}\|\o\{1,3}\|[^dsw]\)\)-\%(\\\{3,4}\|\\[^dsw]\|[^\\\]]\)/
2350 syn match pregClassIncRange_D contained display
2351 \ containedin=pregClassInc_D,pregClassIncStart_D
2352 \ /\%([^\\]\|\\\%(\\\{2}[\\"]\=\|x\x\{0,2}\|\o\{1,3}\|[^dsw]\)\)-\%(\\\{3,4}\|\\[^dsw]\|[^\\\]]\)/
2353 syn match pregClassExcRange_S contained display
2354 \ containedin=pregClassExc_S,pregClassExcStart_S
2355 \ /\%([^\\]\|\\\%(\\\{2}[\\']\=\|x\x\{0,2}\|\o\{1,3}\|[^dsw]\)\)-\%(\\\{3,4}\|\\[^dsw]\|[^\\\]]\)/
2356 syn match pregClassExcRange_D contained display
2357 \ containedin=pregClassExc_D,pregClassExcStart_D
2358 \ /\%([^\\]\|\\\%(\\\{2}[\\']\=\|x\x\{0,2}\|\o\{1,3}\|[^dsw]\)\)-\%(\\\{3,4}\|\\[^dsw]\|[^\\\]]\)/
2359 hi link pregClassIncRange_S pregClassIncRange
2360 hi link pregClassIncRange_D pregClassIncRange
2361 hi link pregClassExcRange_S pregClassExcRange
2362 hi link pregClassExcRange_D pregClassExcRange
2363
2364 " what about the pre-defined sets using [:space:]?
2365 syn region pregClassSetRegion matchgroup=pregClassSet start=/\[:/ end=/:\]/
2366 \ extend keepend
2367 \ contained containedin=@pregClass_any_Q contains=pregClassSet
2368 hi link pregClassSetRegion Error
2369 syn keyword pregClassSet contained
2370 \ alnum digit punct
2371 \ alpha graph space
2372 \ blank lower upper
2373 \ cntrl print xdigit
2374 hi link pregClassSet pregEscapeRange
2375 " }}}
2376
2377 " 9) Look for escaping using \Q and \E {{{
2378 syn region pregNonSpecial_S matchgroup=pregParens start=/\\Q/ end=/\\E/
2379 \ contained containedin=pregPattern_S
2380 syn region pregNonSpecial_D matchgroup=pregParens start=/\\Q/ end=/\\E/
2381 \ contained containedin=pregPattern_D
2382 hi link pregNonSpecial_S pregNonSpecial
2383 hi link pregNonSpecial_D pregNonSpecial
2384 hi link pregNonSpecial pregPattern
2385
2386 " I'm just going to rebuild escapes here to make it easier
2387 syn match pregError /'/ contained containedin=pregNonSpecial_S
2388 syn match pregError /"/ contained containedin=pregNonSpecial_D
2389 syn match pregNonSpecialEscape /\\['\\]/ contained containedin=pregNonSpecial_S
2390 syn match pregNonSpecialEscape /\\["\\$]/ contained containedin=pregNonSpecial_D
2391 syn match pregNonSpecialEscapePHP /\\./he=s+1 contained containedin=pregNonSpecialEscape
2392 syn match pregNonSpecialEscapePHP /\\[rnt]/ contained containedin=pregNonSpecial_D
2393 hi link pregNonSpecialEscapePHP pregEscapePHP
2394 " }}}
2395
2396 " 10) Match PCRE pattern options {{{
2397 syn match pregOptionError_S /\%(\\[\\']\|[^']\)\+/ contained contains=pregOption display
2398 syn match pregOptionError_D /\%(\\[\\"]\|[^"]\)\+/ contained display
2399 \ contains=pregOption,phpIdentifierInString,phpIdentifierInStringComplex
2400 syn match pregOption /\C[eimsuxADSUX]\+/ contained display
2401 " TODO: move hi links out of here?
2402 hi link pregOptionError_S pregOptionError
2403 hi link pregOptionError_D pregOptionError
2404 " }}}
2405
2406 " 11) PCRE pattern comments {{{
2407 syn match pregComment /\v\(\?\#[^)]*\)/ contained containedin=@pregPattern_Q
2408
2409 " TODO: multi-line comments must be turned on explicitly!?
2410 " syntax match pregComment /\v\#(.*)@>/ contained containedin=@pregPattern_Q
2411 " }}}
2412
2413 " 12) highlight links {{{
2414 command -nargs=+ HiLink hi link <args>
2415
2416 HiLink phpPREGFunctions phpFunctions
2417 HiLink phpPREGOpenParent phpParent
2418 HiLink phpPREGStringSingle phpStringSingle
2419 HiLink phpPREGStringDouble phpStringDouble
2420
2421 HiLink pregError Error
2422 HiLink pregAmbiguous Todo
2423
2424 HiLink pregDelimiter Statement
2425
2426 HiLink pregOptionError Error
2427 HiLink pregOption Type
2428
2429 HiLink pregComment phpComment
2430
2431 HiLink pregEscapeDelimiter pregDelimiter
2432 HiLink pregEscapeUnknown pregAmbiguous
2433 HiLink pregEscapeLiteral Comment
2434 HiLink pregEscapeSpecial Number
2435 HiLink pregEscapeAnchor Typedef
2436 HiLink pregEscapeRange Identifier
2437 HiLink pregEscapePHP phpSpecialChar
2438 HiLink pregEscapeUnicode pregEscapeRange
2439 HiLink pregEscapeUnicodeError pregError
2440
2441 HiLink pregEscapeNotNeeded pregEscapePHP
2442
2443 HiLink pregPattern Normal
2444 HiLink pregSpecial Typedef
2445 HiLink pregDot Typedef
2446 HiLink pregParens PreProc
2447 HiLink pregBackreference pregParens
2448
2449 HiLink pregQuantifier Typedef
2450 HiLink pregQuantifierComplex Typedef
2451
2452 HiLink pregClassParent pregParens
2453 HiLink pregClassInc pregClassParent
2454 HiLink pregClassExc pregClassParent
2455 HiLink pregClassIncRange Identifier
2456 HiLink pregClassExcRange Identifier
2457 HiLink pregClassEscape Comment
2458 HiLink pregClassIncEscapeKnown pregEscapeSpecial
2459 HiLink pregClassIncEscapeRange pregClassIncRange
2460 HiLink pregClassExcEscapeKnown Type
2461 HiLink pregClassExcEscapeRange pregClassExcRange
2462 HiLink pregClassEscapeUnknown pregAmbiguous
2463
2464 delcommand HiLink
2465 " }}}
2466endif
2467
2468" ================================================================
2469
2470let b:current_syntax = "php"
2471
2472if main_syntax == 'php'
2473 unlet main_syntax
2474endif
2475
2476" vim: sw=2 sts=2 expandtab foldmethod=marker foldcolumn=1 columns=110
This page took 0.313744 seconds and 4 git commands to generate.