JasonWoof Got questions, comments, patches, etc.? Contact Jason Woofenden
getting closer
[vim-syntax.git] / php.vim
diff --git a/php.vim b/php.vim
index 1bca021..e230281 100644 (file)
--- a/php.vim
+++ b/php.vim
@@ -1,11 +1,10 @@
 " Vim syntax file
 " Language: php PHP 3/4/5
-" Maintainer: Peter Hodge <toomuchphp-vim@yahoo.com>
-" Last Change:  June 9, 2006
-" URL: http://www.vim.org/scripts/script.php?script_id=1571
-"
-" Former Maintainer:  Debian VIM Maintainers <pkg-vim-maintainers@lists.alioth.debian.org>
-" Former URL: http://svn.debian.org/wsvn/pkg-vim/trunk/runtime/syntax/php.vim?op=file&rev=0&sc=0
+" Maintainer: Jason Woofenden <jason@jasonwoof.com>
+" Last Change:  April 28, 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>
 "
 " Note: If you are using a colour terminal with dark background, you will probably find
 "       the 'elflord' colorscheme is much better for PHP's syntax than the default
@@ -303,6 +302,14 @@ syn match phpIdentifierSimply "${\h\w*}"  contains=phpOperator,phpParent  contai
 syn region  phpIdentifierComplex  matchgroup=phpParent start="{\$"rs=e-1 end="}"  contains=phpIdentifier,phpMemberSelector,phpVarSelector,phpIdentifierComplexP contained extend
 syn region  phpIdentifierComplexP matchgroup=phpParent start="\[" end="]" contains=@phpClInside contained
 
+" Interpolated indentifiers (inside strings)
+syn match phpInterpEmptyKey "\[\]" contained display
+syn match phpInterpSimple "$\h\w*\(\[\w*\]\|->\h\w*\)\?" contained contains=phpIdentifier,phpInterpEmptyKey,phpMethods,phpMemberSelector display
+syn match phpInterpSimpleCurly "${\h\w*\(\[\w*\]\)\?" contained contains=phpIdentifierSimply,phpInterpEmptyKey display
+" syn match phpIdentifierSimply "${\h\w*}"  contains=phpOperator,phpParent  contained display
+"syn region  phpInterpComplex  matchgroup=phpParent start="{\$"rs=e-1 end="}"  contains=phpIdentifier,phpMemberSelector,phpVarSelector,phpIdentifierComplexP contained extend
+"syn region  phpIdentifierComplexP matchgroup=phpParent start="\[" end="]" contains=@phpClInside contained
+
 " Methoden
 syn match phpMethodsVar "->\h\w*" contained contains=phpMethods,phpMemberSelector display
 
@@ -327,7 +334,9 @@ syn match phpFloat  "\(-\=\<\d+\|-\=\)\.\d\+\>" contained display
 syn match phpSpecialChar  "\\[abcfnrtyv\\]" contained display
 syn match phpSpecialChar  "\\\d\{3}"  contained contains=phpOctalError display
 syn match phpSpecialChar  "\\x\x\{2}" contained display
-syn match phpDoubleSpecialChar "\\\"" contained display
+" Also special for double-quoted strings
+syn match phpDoubleSpecialChar "\\[\"$]" contained display
+" Only chars special for single-quoted strings
 syn match phpSingleSpecialChar "\\[\\']" contained display
 
 " Error
@@ -357,11 +366,11 @@ endif
 
 " String
 if exists("php_parent_error_open")
-  syn region  phpStringDouble matchgroup=None start=+"+ skip=+\\\\\|\\"+ end=+"+  contains=@phpAddStrings,phpIdentifier,phpSpecialChar,phpIdentifierSimply,phpIdentifierComplex,phpDoubleSpecialChar contained keepend
+  syn region  phpStringDouble matchgroup=None start=+"+ skip=+\\\\\|\\"+ end=+"+  contains=@phpAddStrings,phpSpecialChar,phpDoubleSpecialChar,phpInterpComplex,phpInterpSimple contained keepend
   syn region  phpBacktick matchgroup=None start=+`+ skip=+\\\\\|\\"+ end=+`+  contains=@phpAddStrings,phpIdentifier,phpSpecialChar,phpIdentifierSimply,phpIdentifierComplex contained keepend
   syn region  phpStringSingle matchgroup=None start=+'+ skip=+\\\\\|\\'+ end=+'+  contains=@phpAddStrings,phpSingleSpecialChar contained keepend
 else
-  syn region  phpStringDouble matchgroup=None start=+"+ skip=+\\\\\|\\"+ end=+"+  contains=@phpAddStrings,phpIdentifier,phpSpecialChar,phpIdentifierSimply,phpIdentifierComplex,phpDoubleSpecialChar contained extend keepend
+  syn region  phpStringDouble matchgroup=None start=+"+ skip=+\\\\\|\\"+ end=+"+  contains=@phpAddStrings,phpSpecialChar,phpDoubleSpecialChar,phpInterpComplex,phpInterpSimpleCurly,phpInterpSimple contained extend keepend
   syn region  phpBacktick matchgroup=None start=+`+ skip=+\\\\\|\\"+ end=+`+  contains=@phpAddStrings,phpIdentifier,phpSpecialChar,phpIdentifierSimply,phpIdentifierComplex contained extend keepend
   syn region  phpStringSingle matchgroup=None start=+'+ skip=+\\\\\|\\'+ end=+'+  contains=@phpAddStrings,phpSingleSpecialChar contained keepend extend
 endif
@@ -458,12 +467,6 @@ endif
 " Some of these changes (highlighting isset/unset/echo etc) are not so
 " critical, but they make things more colourful. :-)
 
-" corrected highlighting for an escaped '\$' inside a double-quoted string
-syn match phpSpecialChar  "\\\$"  contained display
-
-" highlight object variables inside strings
-syn match phpMethodsVar "->\h\w*" contained contains=phpMethods,phpMemberSelector display containedin=phpStringDouble
-
 " highlight constant E_STRICT
 syntax case match
 syntax keyword phpCoreConstant E_STRICT contained
@@ -621,6 +624,7 @@ if version >= 508 || !exists("did_php_syn_inits")
   HiLink   phpIdentifierConst Delimiter
   HiLink   phpParentError Error
   HiLink   phpOctalError  Error
+  HiLink   phpInterpEmptyKey Error
   HiLink   phpTodo  Todo
   HiLink   phpMemberSelector  Structure
   if exists("php_oldStyle")