JasonWoof Got questions, comments, patches, etc.? Contact Jason Woofenden
add json_* functions (thank you j4miel)
[vim-syntax.git] / php.vim
diff --git a/php.vim b/php.vim
index 39dcd73..374737a 100644 (file)
--- a/php.vim
+++ b/php.vim
@@ -1,7 +1,7 @@
 " Vim syntax file
 " Language: php PHP 3/4/5
 " Maintainer: Jason Woofenden <jason@jasonwoof.com>
-" Last Change: July 29, 2011
+" Last Change: Oct 20, 2011
 " URL: https://gitorious.org/jasonwoof/vim-syntax/blobs/master/php.vim
 " Former Maintainers: Peter Hodge <toomuchphp-vim@yahoo.com>
 "         Debian VIM Maintainers <pkg-vim-maintainers@lists.alioth.debian.org>
@@ -110,6 +110,10 @@ if exists( "php_htmlInStrings")
   syn cluster phpAddStrings add=@htmlTop
 endif
 
+" make sure we can use \ at the begining of the line to do a continuation
+let s:cpo_save = &cpo
+set cpo&vim
+
 syn case match
 
 " Env Variables
@@ -123,7 +127,7 @@ syn keyword phpCoreConstant PHP_VERSION PHP_OS DEFAULT_INCLUDE_PATH PEAR_INSTALL
 
 syn case ignore
 
-syn keyword phpConstant  __LINE__ __FILE__ __FUNCTION__ __METHOD__ __CLASS__  contained
+syn keyword phpConstant  __LINE__ __FILE__ __FUNCTION__ __METHOD__ __CLASS__ __DIR__ __NAMESPACE__  contained
 
 
 " Function and Methods ripped from php_manual_de.tar.gz Jan 2003
@@ -178,6 +182,7 @@ syn keyword phpFunctions  assert_options assert dl extension_loaded get_cfg_var
 syn 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
 syn 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
 syn keyword phpFunctions  java_last_exception_clear java_last_exception_get contained
+syn keyword phpFunctions  json_decode json_encode json_last_error contained
 syn 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
 syn keyword phpFunctions  lzf_compress lzf_decompress lzf_optimized_for contained
 syn keyword phpFunctions  ezmlm_hash mail contained
@@ -265,7 +270,7 @@ syn keyword phpRepeat as do endfor endforeach endwhile for foreach while  contai
 syn keyword phpLabel  case default switch contained
 
 " Statement
-syn keyword phpStatement  return break continue exit  contained
+syn keyword phpStatement  return break continue exit goto  contained
 
 " Keyword
 syn keyword phpKeyword  var const contained
@@ -274,7 +279,7 @@ syn keyword phpKeyword  var const contained
 syn keyword phpType bool[ean] int[eger] real double float string array object NULL  contained
 
 " Structure
-syn keyword phpStructure  extends implements instanceof parent self contained
+syn keyword phpStructure  namespace extends implements instanceof parent self contained
 
 " Operator
 syn match phpOperator "[-=+%^&|*!.~?:]" contained display
@@ -295,15 +300,17 @@ syn region  phpIdentifierComplex  matchgroup=phpParent start="{\$"rs=e-1 end="}"
 syn region  phpIdentifierComplexP matchgroup=phpParent start="\[" end="]" contains=@phpClInside contained
 
 " Interpolated indentifiers (inside strings)
+       syn match phpBrackets "[][}{]" contained display
        " errors
-               syn match phpInterpEmptyKey "\[\]" contained display
-               syn match phpInterpEmptyKey "->[^a-zA-Z_]" contained display
+               syn match phpInterpSimpleError "\[[^]]*\]" contained display  " fallback (if nothing else matches)
+               syn match phpInterpSimpleError "->[^a-zA-Z_]" contained display
                " make sure these stay above the correct DollarCurlies so they don't take priority
-               syn match phpInterpBogusDollarCurley "${.*}" contained display
-       syn match phpBrackets "[][}{]" contained display
+               syn match phpInterpBogusDollarCurley "${[^}]*}" contained display  " fallback (if nothing else matches)
        syn match phpinterpSimpleBracketsInner "\w\+" contained
-       syn match phpInterpSimpleBrackets "\[\w*]" contained contains=phpBrackets,phpInterpSimpleBracketsInner
-       syn match phpInterpSimple "\$\h\w*\(\[\w*\]\|->\h\w*\)\?" contained contains=phpInterpSimpleBrackets,phpIdentifier,phpInterpEmptyKey,phpMethods,phpMemberSelector display
+       syn match phpInterpSimpleBrackets "\[\h\w*]" contained contains=phpBrackets,phpInterpSimpleBracketsInner
+       syn match phpInterpSimpleBrackets "\[\d\+]" contained contains=phpBrackets,phpInterpSimpleBracketsInner
+       syn match phpInterpSimpleBrackets "\[0[xX]\x\+]" contained contains=phpBrackets,phpInterpSimpleBracketsInner
+       syn match phpInterpSimple "\$\h\w*\(\[[^]]*\]\|->\h\w*\)\?" contained contains=phpInterpSimpleBrackets,phpIdentifier,phpInterpSimpleError,phpMethods,phpMemberSelector display
        syn match phpInterpVarname "\h\w*" contained
        syn match phpInterpMethodName "\h\w*" contained " default color
        syn match phpInterpSimpleCurly "\${\h\w*}"  contains=phpInterpVarname contained extend
@@ -326,7 +333,7 @@ syn region  phpIdentifierComplexP matchgroup=phpParent start="\[" end="]" contai
 syn match phpMethodsVar "->\h\w*" contained contains=phpMethods,phpMemberSelector display
 
 " Include
-syn keyword phpInclude  include require include_once require_once contained
+syn keyword phpInclude  include require include_once require_once use contained
 
 " Peter Hodge - added 'clone' keyword
 " Define
@@ -487,6 +494,9 @@ else
   syn keyword phpStorageClass final global private protected public static  contained
 endif
 
+" TODO: fold on "trait". For now just make sure it gets colored:
+syn keyword phpStructure trait
+
 " ================================================================
 " Peter Hodge - June 9, 2006
 " Some of these changes (highlighting isset/unset/echo etc) are not so
@@ -650,7 +660,7 @@ if version >= 508 || !exists("did_php_syn_inits")
   HiLink   phpIdentifierConst Delimiter
   HiLink   phpParentError Error
   HiLink   phpOctalError  Error
-  HiLink   phpInterpEmptyKey Error
+  HiLink   phpInterpSimpleError Error
   HiLink   phpInterpBogusDollarCurley Error
   HiLink   phpInterpDollarCurly1 Error
   HiLink   phpInterpDollarCurly2 Error
@@ -686,4 +696,8 @@ if main_syntax == 'php'
   unlet main_syntax
 endif
 
+" put cpoptions back the way we found it
+let &cpo = s:cpo_save
+unlet s:cpo_save
+
 " vim: ts=8 sts=2 sw=2 expandtab