changeset 12909:1578c0ba0dd1

Update runtime files. commit https://github.com/vim/vim/commit/a2a80162deb1e96e16b097dfe48b61b6eb0824bf Author: Bram Moolenaar <Bram@vim.org> Date: Tue Nov 21 23:09:50 2017 +0100 Update runtime files.
author Christian Brabandt <cb@256bit.org>
date Tue, 21 Nov 2017 23:15:06 +0100
parents 0e296474b577
children d21adefd4a50
files runtime/doc/debugger.txt runtime/doc/editing.txt runtime/doc/eval.txt runtime/doc/quickref.txt runtime/doc/remote.txt runtime/doc/starting.txt runtime/doc/tags runtime/doc/todo.txt runtime/doc/usr_41.txt runtime/doc/various.txt runtime/filetype.vim runtime/optwin.vim runtime/syntax/doxygen.vim
diffstat 13 files changed, 194 insertions(+), 94 deletions(-) [+]
line wrap: on
line diff
--- a/runtime/doc/debugger.txt
+++ b/runtime/doc/debugger.txt
@@ -1,4 +1,4 @@
-*debugger.txt*  For Vim version 8.0.  Last change: 2005 Mar 29
+*debugger.txt*  For Vim version 8.0.  Last change: 2017 Nov 21
 
 
 		  VIM REFERENCE MANUAL    by Gordon Prieur
@@ -95,10 +95,12 @@ list and colors can be set via X resourc
 XmNballoonEvalBackground, and XmNballoonEvalForeground).
 The 'balloondelay' option sets the delay before an attempt is made to show a
 balloon.
-The 'ballooneval' option needs to be set to switch it on.
+The 'ballooneval' and/or the 'balloonevalterm' option needs to be set to
+switch it on.
 
-Balloon evaluation is only available when compiled with the |+balloon_eval|
-feature.
+Balloon evaluation is only available in the GUI when compiled with the
+|+balloon_eval| feature.  For the terminal the  |+balloon_eval_term| feature
+matters.
 
 The Balloon evaluation functions are also used to show a tooltip for the
 toolbar.  The 'ballooneval' option does not need to be set for this.  But the
--- a/runtime/doc/editing.txt
+++ b/runtime/doc/editing.txt
@@ -1,4 +1,4 @@
-*editing.txt*   For Vim version 8.0.  Last change: 2017 Aug 21
+*editing.txt*   For Vim version 8.0.  Last change: 2017 Nov 16
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -900,7 +900,7 @@ Note: When the 'write' option is off, yo
 
 							*:w* *:write*
 						*E502* *E503* *E504* *E505*
-						*E512* *E514* *E667* *E796*
+						*E512* *E514* *E667* *E796* *E949*
 :w[rite] [++opt]	Write the whole buffer to the current file.  This is
 			the normal way to save changes to a file.  It fails
 			when the 'readonly' option is set or when there is
@@ -956,6 +956,9 @@ used, for example, when the write fails 
 ":w #".  This can be switched off by removing the 'A' flag from the
 'cpoptions' option.
 
+Note that the 'fsync' option matters here.  If it's set it may make writes
+slower (but safer).
+
 							*:sav* *:saveas*
 :sav[eas][!] [++opt] {file}
 			Save the current buffer under the name {file} and set
--- a/runtime/doc/eval.txt
+++ b/runtime/doc/eval.txt
@@ -1,4 +1,4 @@
-*eval.txt*	For Vim version 8.0.  Last change: 2017 Nov 16
+*eval.txt*	For Vim version 8.0.  Last change: 2017 Nov 19
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -2748,6 +2748,8 @@ bufexists({expr})					*bufexists()*
 		The result is a Number, which is |TRUE| if a buffer called
 		{expr} exists.
 		If the {expr} argument is a number, buffer numbers are used.
+		Number zero is the alternate buffer for the current window.
+
 		If the {expr} argument is a string it must match a buffer name
 		exactly.  The name can be:
 		- Relative to the current directory.
--- a/runtime/doc/quickref.txt
+++ b/runtime/doc/quickref.txt
@@ -1,4 +1,4 @@
-*quickref.txt*  For Vim version 8.0.  Last change: 2017 Oct 19
+*quickref.txt*  For Vim version 8.0.  Last change: 2017 Nov 21
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -618,7 +618,8 @@ Short explanation of each option:		*opti
 'backupext'	  'bex'     extension used for the backup file
 'backupskip'	  'bsk'     no backup for files that match these patterns
 'balloondelay'	  'bdlay'   delay in mS before a balloon may pop up
-'ballooneval'	  'beval'   switch on balloon evaluation
+'ballooneval'	  'beval'     switch on balloon evaluation in the GUI
+'balloonevalterm' 'bevalterm' switch on balloon evaluation in the terminal
 'balloonexpr'	  'bexpr'   expression to show in balloon
 'belloff'	  'bo'	    do not ring the bell for these reasons
 'binary'	  'bin'     read/write/edit file in binary mode
--- a/runtime/doc/remote.txt
+++ b/runtime/doc/remote.txt
@@ -1,4 +1,4 @@
-*remote.txt*    For Vim version 8.0.  Last change: 2017 Aug 01
+*remote.txt*    For Vim version 8.0.  Last change: 2017 Nov 12
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -181,7 +181,8 @@ name on the 'VimRegistry' property on th
 
 A non GUI Vim with access to the X11 display (|xterm-clipboard| enabled), can
 also act as a command server if a server name is explicitly given with the
---servername argument.
+--servername argument, or when Vim was build with the |+autoservername|
+feature.
 
 An empty --servername argument will cause the command server to be disabled.
 
--- a/runtime/doc/starting.txt
+++ b/runtime/doc/starting.txt
@@ -1,4 +1,4 @@
-*starting.txt*  For Vim version 8.0.  Last change: 2017 Nov 11
+*starting.txt*  For Vim version 8.0.  Last change: 2017 Nov 18
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -58,9 +58,9 @@ filename	One or more file names.  The fi
 		that is read from stdin.  The commands that would normally be
 		read from stdin will now be read from stderr.  Example: >
 			find . -name "*.c" -print | vim -
-<		The buffer will be marked modified, because it contains text
-		that needs to be saved.  Except when in readonly mode, then
-		the buffer is not marked modified.  Example: >
+<		The buffer will not be marked as modified, so that it's easy
+		to exit.  Be careful to mark it as modified if you don't want
+		to accidentally lose it.  Example: >
 			ls | view -
 <
 		Starting in Ex mode: >
@@ -421,7 +421,9 @@ a slash.  Thus "-R" means recovery and "
 							*--not-a-term*
 --not-a-term	Tells Vim that the user knows that the input and/or output is
 		not connected to a terminal.  This will avoid the warning and
-		the two second delay that would happen. {not in Vi}
+		the two second delay that would happen.
+		Also avoids the "Reading from stdin..." message.
+		{not in Vi}
 
 							*--ttyfail*
 --ttyfail	When the stdin or stdout is not a terminal (tty) then exit
--- a/runtime/doc/tags
+++ b/runtime/doc/tags
@@ -74,12 +74,14 @@
 'backupskip'	options.txt	/*'backupskip'*
 'balloondelay'	options.txt	/*'balloondelay'*
 'ballooneval'	options.txt	/*'ballooneval'*
+'balloonevalterm'	options.txt	/*'balloonevalterm'*
 'balloonexpr'	options.txt	/*'balloonexpr'*
 'bdir'	options.txt	/*'bdir'*
 'bdlay'	options.txt	/*'bdlay'*
 'beautify'	vi_diff.txt	/*'beautify'*
 'belloff'	options.txt	/*'belloff'*
 'beval'	options.txt	/*'beval'*
+'bevalterm'	options.txt	/*'bevalterm'*
 'bex'	options.txt	/*'bex'*
 'bexpr'	options.txt	/*'bexpr'*
 'bf'	vi_diff.txt	/*'bf'*
@@ -505,7 +507,9 @@
 'noawa'	options.txt	/*'noawa'*
 'nobackup'	options.txt	/*'nobackup'*
 'noballooneval'	options.txt	/*'noballooneval'*
+'noballoonevalterm'	options.txt	/*'noballoonevalterm'*
 'nobeval'	options.txt	/*'nobeval'*
+'nobevalterm'	options.txt	/*'nobevalterm'*
 'nobin'	options.txt	/*'nobin'*
 'nobinary'	options.txt	/*'nobinary'*
 'nobiosk'	options.txt	/*'nobiosk'*
@@ -1223,7 +1227,9 @@
 +acl	various.txt	/*+acl*
 +arabic	various.txt	/*+arabic*
 +autocmd	various.txt	/*+autocmd*
++autoservername	various.txt	/*+autoservername*
 +balloon_eval	various.txt	/*+balloon_eval*
++balloon_eval_term	various.txt	/*+balloon_eval_term*
 +browse	various.txt	/*+browse*
 +builtin_terms	various.txt	/*+builtin_terms*
 +byte_offset	various.txt	/*+byte_offset*
@@ -4569,6 +4575,7 @@ E945	pattern.txt	/*E945*
 E946	terminal.txt	/*E946*
 E947	terminal.txt	/*E947*
 E948	terminal.txt	/*E948*
+E949	editing.txt	/*E949*
 E95	message.txt	/*E95*
 E96	diff.txt	/*E96*
 E97	diff.txt	/*E97*
@@ -5145,6 +5152,7 @@ backup-extension	version4.txt	/*backup-e
 backup-table	editing.txt	/*backup-table*
 balloon-eval	debugger.txt	/*balloon-eval*
 balloon_show()	eval.txt	/*balloon_show()*
+balloon_split()	eval.txt	/*balloon_split()*
 bar	motion.txt	/*bar*
 bars	help.txt	/*bars*
 base_font_name_list	mbyte.txt	/*base_font_name_list*
--- a/runtime/doc/todo.txt
+++ b/runtime/doc/todo.txt
@@ -1,4 +1,4 @@
-*todo.txt*      For Vim version 8.0.  Last change: 2017 Nov 11
+*todo.txt*      For Vim version 8.0.  Last change: 2017 Nov 21
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -35,10 +35,6 @@ entered there will not be repeated below
 							*known-bugs*
 -------------------- Known bugs and current work -----------------------
 
-Permission of viminfo tempfile can be wrong. (Simon Ruderich)
-Always use 600 ?  Also avoids groups problem.
-patch from Simon Ruderich, Nov 8
-
 No maintainer for Vietnamese translations.
 No maintainer for Simplified Chinese translations.
 
@@ -49,10 +45,6 @@ Terminal emulator window:
     - Implement the right-click popup menu for the terminal. Can use the
       completion popup menu code and mouse dragging.
       Use it for "set breakpoint", "remove breakpoint", etc.
-    - make showballoon() work in a terminal.  Requires getting mouse-move
-      events.
-    - send 'balloonText' events for the cursor position (using CursorHold ?)
-      in terminal mode.
   - get ideas from http://clewn.sf.net
   - Look into the idevim plugin/script.
 - Improve testing:
@@ -88,6 +80,8 @@ Terminal emulator window:
     Although user could use "xterm -e 'cmd arg'".
 
 Regexp problems:
+- When search pattern has the base character both with and without combining
+  character, search fails.  E.g. "รรีบ" in "การรีบรักใคร". (agguser, #2312)
 - [:space:] only matches ASCII spaces.  Add [:white:] for all space-like
   characters, esp. including 0xa0.  Use character class zero.
 - Since 7.4.704 the old regex engine fails to match [[:print:]] in 0xf6.
@@ -136,7 +130,7 @@ Regexp problems:
 Include a few color schemes, based on popularity:
 http://www.vim.org/scripts/script_search_results.php?keywords=&script_type=color+scheme&order_by=rating&direction=descending&search=search
 http://vimawesome.com/?q=tag:color-scheme
-Use names that indicate their apperance (Christian Brabandt, 2017 Aug 3)
+Use names that indicate their appearance (Christian Brabandt, 2017 Aug 3)
 - monokai - Xia Crusoe (2017 Aug 4) 
 - seoul256 - Christian Brabandt (2017 Aug 3)
 - gruvbox -  Christian Brabandt (2017 Aug 3)
@@ -147,6 +141,7 @@ Suggested by Hiroki Kokubun:
 - [hybrid](https://github.com/w0ng/vim-hybrid)
 Include solarized color scheme?, it does not support termguicolors.
 -> Make check for colorscheme that it's sane.
+- Sanitized version of pablo (Lifepillar, 2017 Nov 21)
 
 Compiler warnings (geeknik, 2017 Oct 26):
 - signed integer overflow in do_sub() (#2249)
@@ -155,6 +150,13 @@ Compiler warnings (geeknik, 2017 Oct 26)
 - signed integer overflow in nfa_regatom() (#2251)
 - undefined left shift in get_string_tv() (#2250)
 
+Patch to use imactivatefunc() also without +xim feature. (Yasuhiro Matsumoto,
+2017 Nov 19, #2349)
+
+'hlsearch' shows empty matches, which means highlighting everything.
+Don't do that.  For "foo\|" or "\v"
+Patch from Christian, 2017 Nov 14.  Should still display "$" matches.
+
 When starting with --clean packages under "start" are not loaded.  Make this
 work:  :packadd START {name}  similar to :runtime START name
 
@@ -169,6 +171,12 @@ With foldmethod=syntax and nofoldenable 
 Using 'wildignore' also applies to literally entered file name.  Also with
 :drop (remote commands).
 
+Race condition between stat() and open() in write_viminfo(). Use open() in the
+loop and try another name instead of using a temp file. (Simon Ruderich)
+The first one, when viminfo is new, should just fail if it creating with
+O_EXCL fails.
+Also use umask instead of mch_fopen() after vim_tempname().
+
 "gvim --remote" from a directory with non-word characters changes the current
 directory (Paulo Marcel Coelho Arabic, 2017 Oct 30, #2266)
 Also see #1689.
@@ -176,19 +184,38 @@ Also see #1689.
 ml_get error when using a Python. (Yggdroot, 2017 Jun 1, #1737)
 Lemonboy can reproduce (2017 Jun 5)
 
+Invalid range error when using BufWinLeave for closing terminal.
+(Gabriel Barta, 2017 Nov 15, #2339)
+
 ml_get errors with buggy script. (Dominique, 2017 Apr 30)
 
 Error in emsg with buggy script. (Dominique, 2017 Apr 30)
 
+Patch to avoid clearing the intro message on Win32 console.
+(Ken Takata, 2017 Nov 14)
+
+Patch to copy buffer-local options before buffer leaves the window. (Bjorn
+Linse, 2017 Nov 14, #2336)
+
 When a timer is running and typing CTRL-R on the command line, it is not
 redrawn properly. (xtal8, 2017 Oct 23, #2241)
 
 Universal solution to detect if t_RS is working, using cursor position.
 Koichi Iwamoto, #2126
 
+Patch to fix cmdline abbreviation after '<,'>. (Christian Brabandt, 2017 Nov
+13, on issue #2320)
+
+Patch to add TextDeletePost and TextYankPost events. (Philippe Vaucher, 2011
+May 24)  Update May 26.
+Now in patch by Lemonboy, #2333  (who is Lemonboy?)
+
 Default install on MS-Windows should source defaults.vim.
 Ask whether to use Windows or Vim key behavior?
 
+Patch for improving detecting Ruby on Mac in configure. (Ilya Mikhaltsou, 2017
+Nov 21)
+
 When using command line window, CmdlineLeave is triggered without
 CmdlineEnter.  (xtal8, 2017 Oct 30, #2263)
 Add some way to get the nested state.  Although CmdwinEnter is obviously
@@ -196,9 +223,14 @@ always nested.
 
 matchit hasn't been maintained for a long time.  #955.
 
+Problem with 'delcombine'. (agguser, 2017 Nov 10, #2313)
+
 MS-Windows: buffer completetion doesn't work when using backslash (or slash)
 for a path separator. (xtal8, #2201)
 
+Patch to adjust to DPI setting for GTK. (Roel van de Kraats, 2017 Nov 20,
+#2357)
+
 Test runtime files.
 Start with filetype detection: testdir/test_filetype.vim
 
@@ -217,15 +249,22 @@ Still happens (2017 Jul 9)
 When bracketed paste is used, pasting at the ":append" prompt does not get the
 line breaks. (Ken Takata, 2017 Aug 22)
 
+The ":move" command does not honor closed folds. (Ryan Lue, #2351)
+
 Patch for 24 bit color support in MS-Windows console, using vcon. (Nobuhiro
-Takasaki, 2017 Oct 1, #2060).  Ready to include now?
+Takasaki, Ken Takata, 2017 Oct 1, #2060).
 
 Memory leaks in test_channel? (or is it because of fork())
 Memory leak in test_arabic.
 Using uninitialized value in test_crypt.
 
+Patch to clear background when "guibg=NONE" is used and 'termguicolors' is
+set.
+
 Patch to make gM move to middle of line. (Yasuhiro Matsumoto, Sep 8, #2070)
 
+Cannot copy modeless selection when cursor is inside it. (lkintact, #2300)
+
 Include Haiku port. (Adrien Destugues, Siarzhuk Zharski, 2013 Oct 24)
 It can replace the BeOS code, which is likely not used anymore.
 Now on github: #1856.  Updated Oct 2017
@@ -290,8 +329,15 @@ Patch to add argument to :cquit. (Thinca
 Python: After "import vim" error messages only show the first line of the
 stack trace. (Yggdroot, 2017 Jul 28, #1887)
 
+Profile of a dict function is lost when the dict is deleted.  Would it be
+possible to collect this?  (Daniel Hahler, #2350)
+
 Patch to add "module" to quickfix entries. (Marcin Szamotulski, Coot, 2017 Jun
-8, #1757)
+8, #1757)  Now part of #2322.  Or #2327?  #1757 was re-opened, include that
+first.
+
+Add `:filter` support for various commands (Marcin Szamotulski, 2017 Nov 12
+#2322)  Now in #2327?
 
 When checking if a bufref is valid, also check the buffer number, to catch the
 case of :bwipe followed by :new.
@@ -1484,9 +1530,6 @@ Build problem with small features on Mac
 
 "0g@$" puts '] on last byte of multi-byte. (ZyX, 2011 Jan 22)
 
-Patch to add TextDeletePost and TextYankPost events. (Philippe Vaucher, 2011
-May 24)  Update May 26.
-
 Patch for :tabrecently. (Hirokazu Yoshida, 2012 Jan 30)
 
 Problem with "syn sync grouphere". (Gustavo Niemeyer, 2011 Jan 27)
@@ -4653,7 +4696,7 @@ Command line history:
 -   Add "KeyWasTyped" flag: It's reset before each command and set when a
     character from the keyboard is consumed. Value is used to decide to put a
     command line in history or not. Put line in history if it didn't
-    completely resulted from one mapping.
+    completely result from one mapping.
 -   When using ":browse", also put the resulting edit command in the history,
     so that it can be repeated. (Demirel)
 
--- a/runtime/doc/usr_41.txt
+++ b/runtime/doc/usr_41.txt
@@ -1,4 +1,4 @@
-*usr_41.txt*	For Vim version 8.0.  Last change: 2017 Oct 15
+*usr_41.txt*	For Vim version 8.0.  Last change: 2017 Nov 19
 
 		     VIM USER MANUAL - by Bram Moolenaar
 
@@ -886,6 +886,7 @@ GUI:						*gui-functions*
 	getwinposx()		X position of the GUI Vim window
 	getwinposy()		Y position of the GUI Vim window
 	balloon_show()		set the balloon content
+	balloon_split()		split a message for a balloon
 
 Vim server:					*server-functions*
 	serverlist()		return the list of server names
--- a/runtime/doc/various.txt
+++ b/runtime/doc/various.txt
@@ -1,4 +1,4 @@
-*various.txt*   For Vim version 8.0.  Last change: 2017 Sep 16
+*various.txt*   For Vim version 8.0.  Last change: 2017 Nov 18
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -310,9 +310,12 @@ 8g8			Find an illegal UTF-8 byte sequenc
 B  *+arabic*		|Arabic| language support
 N  *+autocmd*		|:autocmd|, automatic commands
 H  *+autoservername*	Automatically enable |clientserver|
-m  *+balloon_eval*	|balloon-eval| support. Included when compiling with
-			supported GUI (Motif, GTK, GUI) and either
-			Netbeans/Sun Workshop integration or |+eval| feature.
+m  *+balloon_eval*	|balloon-eval| support in the GUI. Included when
+			compiling with supported GUI (Motif, GTK, GUI) and
+			either Netbeans/Sun Workshop integration or |+eval|
+			feature.
+H  *+balloon_eval_term*	|balloon-eval| support in the terminal,
+			'balloonevalterm'
 N  *+browse*		|:browse| command
 N  *+builtin_terms*	some terminals builtin |builtin-terms|
 B  *++builtin_terms*	maximal terminals builtin |builtin-terms|
--- a/runtime/filetype.vim
+++ b/runtime/filetype.vim
@@ -1,7 +1,7 @@
 " Vim support file to detect file types
 "
 " Maintainer:	Bram Moolenaar <Bram@vim.org>
-" Last Change:	2017 Nov 11
+" Last Change:	2017 Nov 21
 
 " Listen very carefully, I will say this only once
 if exists("did_load_filetypes")
@@ -231,10 +231,10 @@ au BufNewFile,BufRead *.bl			setf blank
 au BufNewFile,BufRead */etc/blkid.tab,*/etc/blkid.tab.old   setf xml
 
 " Bazel (http://bazel.io)
-autocmd BufRead,BufNewFile *.bzl,WORKSPACE 	setf bzl
+autocmd BufRead,BufNewFile *.bzl,WORKSPACE,BUILD.bazel 	setf bzl
 if has("fname_case")
   " There is another check for BUILD further below.
-  autocmd BufRead,BufNewFile BUILD		setf bzl
+  autocmd BufRead,BufNewFile BUILD			setf bzl
 endif
 
 " C or lpc
--- a/runtime/optwin.vim
+++ b/runtime/optwin.vim
@@ -1,7 +1,7 @@
 " These commands create the option window.
 "
 " Maintainer:	Bram Moolenaar <Bram@vim.org>
-" Last Change:	2017 Oct 19
+" Last Change:	2017 Nov 21
 
 " If there already is an option window, jump to that one.
 let buf = bufnr('option-window')
@@ -647,11 +647,17 @@ if has("gui")
   endif
   call append("$", "linespace\tnumber of pixel lines to use between characters")
   call append("$", " \tset lsp=" . &lsp)
-  if has("balloon_eval")
+  if has("balloon_eval") || has("balloon_eval_term")
     call append("$", "balloondelay\tdelay in milliseconds before a balloon may pop up")
     call append("$", " \tset bdlay=" . &bdlay)
-    call append("$", "ballooneval\twhether the balloon evaluation is to be used")
-    call <SID>BinOptionG("beval", &beval)
+    if has("balloon_eval")
+      call append("$", "ballooneval\tuse balloon evaluation in the GUI")
+      call <SID>BinOptionG("beval", &beval)
+    endif
+    if has("balloon_eval_term")
+      call append("$", "balloonevalterm\tuse balloon evaluation in the terminal")
+      call <SID>BinOptionG("bevalterm", &beval)
+    endif
     if has("eval")
       call append("$", "balloonexpr\texpression to show in balloon eval")
       call append("$", " \tset bexpr=" . &bexpr)
--- a/runtime/syntax/doxygen.vim
+++ b/runtime/syntax/doxygen.vim
@@ -2,11 +2,10 @@
 " Language:     doxygen on top of c, cpp, idl, java, php
 " Maintainer:   Michael Geddes <vimmer@frog.wheelycreek.net>
 " Author:       Michael Geddes
-" Last Changes: Jan 2009 (\tparam by Domnique Pelle, Aug 2013)
-"               Nov 2017 (@throws by Domnique Pelle)
-" Version:      1.23
+" Last Change: November 2017 (\throws by Candy Gumdrop)
+" Version:      1.27
 "
-" Copyright 2004-2008 Michael Geddes
+" Copyright 2004-2017 Michael Geddes
 " Please feel free to use, modify & distribute all or part of this script,
 " providing this copyright message remains.
 " I would appreciate being acknowledged in any derived scripts, and would
@@ -59,52 +58,76 @@ try
   "
 
   " C/C++ Style line comments
-  syn region doxygenComment start=+/\*\(\*/\)\@![*!]+  end=+\*/+ contains=doxygenSyncStart,doxygenStart,doxygenTODO keepend fold containedin=phpRegion
-  syn region doxygenCommentL start=+//[/!]<\@!+me=e-1 end=+$+ contains=doxygenStartL,@Spell keepend skipwhite skipnl nextgroup=doxygenComment2 fold containedin=phpRegion
+  syn match doxygenCommentWhite +\s*\ze/\*\(\*/\)\@![*!]+ containedin=phpRegion
+  syn match doxygenCommentWhite +\s*\ze//[/!]+ containedin=phpRegion
+  syn match doxygenCommentWhite +\s*\ze/\*\(\*/\)\@![*!]+
+  syn match doxygenCommentWhite +\s*\ze//[/!]+ containedin=phpRegion
+
+  syn region doxygenComment start=+/\*\(\*/\)\@![*!]+  end=+\*/+ contains=doxygenSyncStart,doxygenStart,doxygenTODO,doxygenLeadingWhite  keepend fold containedin=phpRegion
+  syn region doxygenCommentL start=+//[/!]<\@!+me=e-1 end=+$+ contains=doxygenLeadingLWhite,doxygenStartL,@Spell keepend skipwhite skipnl nextgroup=doxygenCommentWhite2 fold containedin=phpRegion
   syn region doxygenCommentL start=+//[/!]<+me=e-2 end=+$+ contains=doxygenStartL,@Spell keepend skipwhite skipnl fold containedin=phpRegion
   syn region doxygenCommentL start=+//@\ze[{}]+ end=+$+ contains=doxygenGroupDefine,doxygenGroupDefineSpecial,@Spell fold containedin=phpRegion
+  syn region doxygenComment start=+/\*@\ze[{}]+ end=+\*/+ contains=doxygenGroupDefine,doxygenGroupDefineSpecial,@Spell fold containedin=phpRegion
 
   " Single line brief followed by multiline comment.
+  syn match doxygenCommentWhite2 +\_s*\ze/\*\(\*/\)\@![*!]+ contained nextgroup=doxygenComment2
   syn region doxygenComment2 start=+/\*\(\*/\)\@![*!]+ end=+\*/+ contained contains=doxygenSyncStart2,doxygenStart2,doxygenTODO keepend fold
   " This helps with sync-ing as for some reason, syncing behaves differently to a normal region, and the start pattern does not get matched.
   syn match doxygenSyncStart2 +[^*/]+ contained nextgroup=doxygenBody,doxygenPrev,doxygenStartSpecial,doxygenSkipComment,doxygenStartSkip2 skipwhite skipnl
 
   " Skip empty lines at the start for when comments start on the 2nd/3rd line.
-  syn match doxygenStartSkip2 +^\s*\*[^/]+me=e-1 contained nextgroup=doxygenBody,doxygenStartSpecial,doxygenStartSkip skipwhite skipnl
-  syn match doxygenStartSkip2 +^\s*\*$+ contained nextgroup=doxygenBody,doxygenStartSpecial,,doxygenStartSkip skipwhite skipnl
+  syn match doxygenStartSkip2 +^\s*\*[^/]+me=e-1 contained nextgroup=doxygenBody,doxygenStartSpecial,doxygenStartSkipWhite skipwhite skipnl
+  syn match doxygenStartSkip2 +^\s*\*$+ contained nextgroup=doxygenBody,doxygenStartSpecial,doxygenStartSkipWhite skipwhite skipnl
   syn match doxygenStart2 +/\*[*!]+ contained nextgroup=doxygenBody,doxygenPrev,doxygenStartSpecial,doxygenStartSkip2 skipwhite skipnl
 
 
   " Match the Starting pattern (effectively creating the start of a BNF)
   if !exists('g:doxygen_javadoc_autobrief') || g:doxygen_javadoc_autobrief
-    syn match doxygenStart +/\*[*!]+ contained nextgroup=doxygenBrief,doxygenPrev,doxygenFindBriefSpecial,doxygenStartSpecial,doxygenStartSkip,doxygenPage skipwhite skipnl
-    syn match doxygenStartL +//[/!]+ contained nextgroup=doxygenPrevL,doxygenBriefL,doxygenSpecial skipwhite
+    syn match doxygenStart +/\*[*!]+ contained nextgroup=doxygenBrief,doxygenPrev,doxygenFindBriefSpecial,doxygenStartSpecial,doxygenStartSkipWhite,doxygenPage skipwhite skipnl
+    syn match doxygenLeadingLWhite +\s\++ contained nextgroup=doxygenPrevL,doxygenBriefL,doxygenSpecial
+    syn match doxygenStartL +//[/!]+ contained nextgroup=doxygenLeaingLWhite,doxygenPrevL,doxygenBriefL,doxygenSpecial
     " Match the first sentence as a brief comment
     if ! exists('g:doxygen_end_punctuation')
       let g:doxygen_end_punctuation='[.]'
     endif
 
-    exe 'syn region doxygenBrief contained start=+[\\@]\([npcbea]\>\|em\>\|ref\>\|link\>\|f\$\|[$\\&<>#]\)\|[^ \t\\@*]+ start=+\(^\s*\)\@<!\*/\@!+ start=+\<\k+ skip=+'.doxygen_end_punctuation.'\S\@=+ end=+'.doxygen_end_punctuation.'+ end=+\(\s*\(\n\s*\*\=\s*\)[@\\]\([npcbea]\>\|em\>\|ref\>\|link\>\|f\$\|[$\\&<>#]\)\@!\)\@=+ contains=doxygenSmallSpecial,doxygenContinueComment,doxygenBriefEndComment,doxygenFindBriefSpecial,doxygenSmallSpecial,@doxygenHtmlGroup,doxygenTODO,doxygenHyperLink,doxygenHashLink,@Spell  skipnl nextgroup=doxygenBody'
+    exe 'syn region doxygenBrief contained start=+[\\@]\([npcbea]\>\|em\>\|ref\>\|link\>\|f\$\|[$\\&<>#]\)\|[^ \t\\@*]+ start=+\(^\s*\)\@<!\*/\@!+ start=+\<\k+ skip=+'.doxygen_end_punctuation.'\S\@=+ end=+'.doxygen_end_punctuation.'+ end=+\(\s*\(\n\s*\*\=\s*\)[@\\]\([npcbea]\>\|em\>\|ref\>\|link\>\|f\$\|[$\\&<>#]\)\@!\)\@=+ contains=doxygenSmallSpecial,doxygenContinueCommentWhite,doxygenLeadingWhite,doxygenBriefEndComment,doxygenFindBriefSpecial,doxygenSmallSpecial,@doxygenHtmlGroup,doxygenTODO,doxygenHyperLink,doxygenHashLink,@Spell  skipnl nextgroup=doxygenBody'
 
     syn match doxygenBriefEndComment +\*/+ contained
 
     exe 'syn region doxygenBriefL start=+@\k\@!\|[\\@]\([npcbea]\>\|em\>\|ref\>\|link\>\|f\$\|[$\\&<>#]\)\|[^ \t\\@]+ start=+\<+ skip=+'.doxygen_end_punctuation.'\S+ end=+'.doxygen_end_punctuation.'\|$+ contained contains=doxygenSmallSpecial,doxygenHyperLink,doxygenHashLink,@doxygenHtmlGroup,@Spell keepend'
     syn match doxygenPrevL +<+ contained  nextgroup=doxygenBriefL,doxygenSpecial skipwhite
   else
-    syn match doxygenStart +/\*[*!]+ contained nextgroup=doxygenBody,doxygenPrev,doxygenFindBriefSpecial,doxygenStartSpecial,doxygenStartSkip,doxygenPage skipwhite skipnl
-    syn match doxygenStartL +//[/!]+ contained nextgroup=doxygenPrevL,doxygenLine,doxygenSpecial skipwhite
+    syn match doxygenStart +/\*[*!]+ contained nextgroup=doxygenBody,doxygenPrev,doxygenFindBriefSpecial,doxygenStartSpecial,doxygenStartSkipWhite,doxygenPage skipwhite skipnl
+    syn match doxygenStartL +//[/!]+ contained nextgroup=doxygenLeadingLWhite,doxygenPrevL,doxygenLine,doxygenSpecial
+    syn match doxygenLeadingLWhite +\s\++ contained nextgroup=doxygenPrevL,doxygenLine,doxygenSpecial
     syn region doxygenLine start=+@\k\@!\|[\\@]\([npcbea]\>\|em\>\|ref\>\|link\>\|f\$\|[$\\&<>#]\)\|[^ \t\\@<]+ start=+\<+ end='$' contained contains=doxygenSmallSpecial,doxygenHyperLink,doxygenHashLink,@doxygenHtmlGroup,@Spell keepend
     syn match doxygenPrevL +<+ contained  nextgroup=doxygenLine,doxygenSpecial skipwhite
 
   endif
 
   " This helps with sync-ing as for some reason, syncing behaves differently to a normal region, and the start pattern does not get matched.
-  syn match doxygenSyncStart +\ze[^*/]+ contained nextgroup=doxygenBrief,doxygenPrev,doxygenStartSpecial,doxygenFindBriefSpecial,doxygenStartSkip,doxygenPage skipwhite skipnl
+  syn match doxygenSyncStart +\ze[^*/]+ contained nextgroup=doxygenBrief,doxygenPrev,doxygenStartSpecial,doxygenFindBriefSpecial,doxygenStartSkipWhite,doxygenPage skipwhite skipnl
+  " Match an [@\]brief so that it moves to body-mode.
+  "
+  "
+  " syn match doxygenBriefLine  contained
+  syn match doxygenBriefSpecial contained +[@\\]+ nextgroup=doxygenBriefWord skipwhite
+  " syn region doxygenFindBriefSpecial start=+[@\\]brief\>+ end=+\(\n\s*\*\=\s*\([@\\]\([npcbea]\>\|em\>\|ref\>\|link\>\|f\$\|[$\\&<>#]\)\@!\)\|\s*$\)\@=+ keepend contains=doxygenBriefSpecial nextgroup=doxygenBody keepend skipwhite skipnl contained
+  syn region doxygenFindBriefSpecial start=+[@\\]brief\>+ skip=+^\s*\(\*/\@!\s*\)\=\(\<\|[@\\]\<\([npcbea]\>\|em\>\|ref\|link\>\>\|f\$\|[$\\&<>#]\)\|[^ \t\\@*]\)+ end=+^+ keepend contains=doxygenBriefSpecial nextgroup=doxygenBody keepend skipwhite skipnl contained
 
-  syn region doxygenBriefLine contained start=+\<\k+ end=+\(\n\s*\*\=\s*\([@\\]\([npcbea]\>\|em\>\|ref\>\|link\>\|f\$\|[$\\&<>#]\)\@!\)\|\s*$\)\@=+ contains=doxygenContinueComment,doxygenFindBriefSpecial,doxygenSmallSpecial,@doxygenHtmlGroup,doxygenTODO,doxygenHyperLink,doxygenHashLink,@Spell  skipwhite keepend
+
+
+" end=+\(\n\s*\*\=\s*\([@\\]\([npcbea]\>\|em\>\|ref\>\|link\>\|f\$\|[$\\&<>#]\)\@!\)\|\s*$\)\@=+
+"syn region doxygenBriefLine contained start=+\<\k+ skip=+^\s*\(\*/\@!\s*\)\=\(\<\|[@\\]\<\([npcbea]\>\|em\>\|ref\|link\>\>\|f\$\|[$\\&<>#]\)\|[^ \t\\@*]\)+ end=+^+ contains=doxygenContinueCommentWhite,doxygenSmallSpecial,@doxygenHtmlGroup,doxygenTODO,doxygenHyperLink,doxygenHashLink,@Spell  skipwhite keepend matchgroup=xxx
+syn region doxygenBriefLine contained start=+\<\k+ skip=+^\s*\(\*/\@!\s*\)\=\(\<\|[@\\]\<\([npcbea]\>\|em\>\|ref\|link\>\>\|f\$\|[$\\&<>#]\)\|[^ \t\\@*]\)+ end=+^+  skipwhite keepend matchgroup=xxx
+" syn region doxygenBriefLine matchgroup=xxxy contained start=+\<\k.\++ skip=+^\s*\k+ end=+end+  skipwhite keepend
+"doxygenFindBriefSpecial,
+  "" syn region doxygenSpecialMultilineDesc  start=+.\++ contained contains=doxygenSpecialContinueCommentWhite,doxygenSmallSpecial,doxygenHyperLink,doxygenHashLink,@doxygenHtmlGroup,@Spell  skipwhite keepend
+
 
   " Match a '<' for applying a comment to the previous element.
-  syn match doxygenPrev +<+ contained nextgroup=doxygenBrief,doxygenBody,doxygenSpecial,doxygenStartSkip skipwhite
+  syn match doxygenPrev +<+ contained nextgroup=doxygenBrief,doxygenBody,doxygenSpecial,doxygenStartSkipWhite skipwhite
 
 if exists("c_comment_strings")
   " These are anti-Doxygen comments.  If there are more than two asterisks or 3 '/'s
@@ -123,10 +146,11 @@ endif
   "syn region doxygenBodyBit contained start=+$+
 
   " The main body of a doxygen comment.
-  syn region doxygenBody contained start=+\(/\*[*!]\)\@<!<\|[^<]\|$+ matchgroup=doxygenEndComment end=+\*/+re=e-2,me=e-2 contains=doxygenContinueComment,doxygenTODO,doxygenSpecial,doxygenSmallSpecial,doxygenHyperLink,doxygenHashLink,@doxygenHtmlGroup,@Spell
+  syn region doxygenBody contained start=+\(/\*[*!]\)\@<!<\|[^<]\|$+ matchgroup=doxygenEndComment end=+\*/+re=e-2,me=e-2 contains=doxygenContinueCommentWhite,doxygenTODO,doxygenSpecial,doxygenSmallSpecial,doxygenHyperLink,doxygenHashLink,@doxygenHtmlGroup,@Spell
 
   " These allow the skipping of comment continuation '*' characters.
-  syn match doxygenContinueComment contained +^\s*\*/\@!\s*+
+  syn match doxygenContinueCommentWhite contained +^\s*\ze\*+ nextgroup=doxygenContinueComment
+  syn match doxygenContinueComment contained +\*/\@!+
 
   " Catch a Brief comment without punctuation - flag it as an error but
   " make sure the end comment is picked up also.
@@ -135,27 +159,19 @@ endif
 
   " Skip empty lines at the start for when comments start on the 2nd/3rd line.
   if !exists('g:doxygen_javadoc_autobrief') || g:doxygen_javadoc_autobrief
-    syn match doxygenStartSkip +^\s*\*[^/]+me=e-1 contained nextgroup=doxygenBrief,doxygenStartSpecial,doxygenFindBriefSpecial,doxygenStartSkip,doxygenPage skipwhite skipnl
-    syn match doxygenStartSkip +^\s*\*$+ contained nextgroup=doxygenBrief,doxygenStartSpecial,doxygenFindBriefSpecial,doxygenStartSkip,doxygenPage skipwhite skipnl
+    syn match doxygenStartSkipWhite +^\s*\ze\*/\@!+ contained nextgroup=doxygenBrief,doxygenStartSpecial,doxygenFindBriefSpecial,doxygenStartSkipWhite,doxygenPage skipwhite skipnl
+    "syn match doxygenStartSkipWhite +^\s*\ze\*$+ contained nextgroup=doxygenBrief,doxygenStartSpecial,doxygenFindBriefSpecial,doxygenStartSkipWhite,doxygenPage skipwhite skipnl
   else
-    syn match doxygenStartSkip +^\s*\*[^/]+me=e-1 contained nextgroup=doxygenStartSpecial,doxygenFindBriefSpecial,doxygenStartSkip,doxygenPage,doxygenBody skipwhite skipnl
-    syn match doxygenStartSkip +^\s*\*$+ contained nextgroup=doxygenStartSpecial,doxygenFindBriefSpecial,doxygenStartSkip,doxygenPage,doxygenBody skipwhite skipnl
+    syn match doxygenStartSkipWhite +^\s*\*[^/]+me=e-1 contained nextgroup=doxygenStartSpecial,doxygenFindBriefSpecial,doxygenStartSkipWhite,doxygenPage,doxygenBody skipwhite skipnl
+    syn match doxygenStartSkipWhite +^\s*\*$+ contained nextgroup=doxygenStartSpecial,doxygenFindBriefSpecial,doxygenStartSkipWhite,doxygenPage,doxygenBody skipwhite skipnl
   endif
 
-  " Match an [@\]brief so that it moves to body-mode.
-  "
-  "
-  " syn match doxygenBriefLine  contained
-  syn match doxygenBriefSpecial contained +[@\\]+ nextgroup=doxygenBriefWord skipwhite
-  syn region doxygenFindBriefSpecial start=+[@\\]brief\>+ end=+\(\n\s*\*\=\s*\([@\\]\([npcbea]\>\|em\>\|ref\>\|link\>\|f\$\|[$\\&<>#]\)\@!\)\|\s*$\)\@=+ keepend contains=doxygenBriefSpecial nextgroup=doxygenBody keepend skipwhite skipnl contained
-
-
   " Create the single word matching special identifiers.
 
   fun! s:DxyCreateSmallSpecial( kword, name )
 
     let mx='[-:0-9A-Za-z_%=&+*/!~>|]\@<!\([-0-9A-Za-z_%=+*/!~>|#]\+[-0-9A-Za-z_%=+*/!~>|]\@!\|\\[\\<>&.]@\|[.,][0-9a-zA-Z_]\@=\|::\|([^)]*)\|&[0-9a-zA-Z]\{2,7};\)\+'
-    exe 'syn region doxygenSpecial'.a:name.'Word contained start=+'.a:kword.'+ end=+\(\_s\+'.mx.'\)\@<=[-a-zA-Z_0-9+*/^%|~!=&\\]\@!+ skipwhite contains=doxygenContinueComment,doxygen'.a:name.'Word'
+    exe 'syn region doxygenSpecial'.a:name.'Word contained start=+'.a:kword.'+ end=+\(\_s\+'.mx.'\)\@<=[-a-zA-Z_0-9+*/^%|~!=&\\]\@!+ skipwhite contains=doxygenContinueCommentWhite,doxygen'.a:name.'Word'
     exe 'syn match doxygen'.a:name.'Word contained "\_s\@<='.mx.'" contains=doxygenHtmlSpecial,@Spell keepend'
   endfun
   call s:DxyCreateSmallSpecial('p', 'Code')
@@ -180,40 +196,42 @@ endif
 
   " Match parameters and retvals (highlighting the first word as special).
   syn match doxygenParamDirection contained "\v\[(\s*in>((]\s*\[|\s*,\s*)out>)=|out>((]\s*\[|\s*,\s*)in>)=)\]" nextgroup=doxygenParamName skipwhite
-  syn keyword doxygenParam contained param tparam nextgroup=doxygenParamName,doxygenParamDirection skipwhite
+  syn keyword doxygenParam contained param nextgroup=doxygenParamName,doxygenParamDirection skipwhite
+  syn keyword doxygenTParam contained tparam nextgroup=doxygenParamName skipwhite
   syn match doxygenParamName contained +[A-Za-z0-9_:]\++ nextgroup=doxygenSpecialMultilineDesc skipwhite
   syn keyword doxygenRetval contained retval throw throws exception nextgroup=doxygenParamName skipwhite
 
   " Match one line identifiers.
   syn keyword doxygenOther contained addindex anchor
   \ dontinclude endhtmlonly endlatexonly showinitializer hideinitializer
-  \ example htmlonly image include ingroup internal latexonly line
-  \ overload related relates relatedalso relatesalso sa skip skipline
+  \ example htmlonly image include includelineno ingroup internal latexonly line
+  \ overload relates relatesalso sa skip skipline
   \ until verbinclude version addtogroup htmlinclude copydoc dotfile
   \ xmlonly endxmlonly
-  \ nextgroup=doxygenSpecialOnelineDesc
+  \ nextgroup=doxygenSpecialOnelineDesc copybrief copydetails copyright dir extends
+  \ implements
 
-  syn region doxygenCodeRegion contained matchgroup=doxygenOther start=+\<code\>+ matchgroup=doxygenOther end=+[\\@]\@<=\<endcode\>+ contains=doxygenCodeRegionSpecial,doxygenContinueComment,doxygenErrorComment,@NoSpell
+  syn region doxygenCodeRegion contained matchgroup=doxygenOther start=+\<code\>+ matchgroup=doxygenOther end=+[\\@]\@<=\<endcode\>+ contains=doxygenCodeRegionSpecial,doxygenContinueCommentWhite,doxygenErrorComment,@NoSpell
   syn match doxygenCodeRegionSpecial contained +[\\@]\(endcode\>\)\@=+
 
-  syn region doxygenVerbatimRegion contained matchgroup=doxygenOther start=+\<verbatim\>+ matchgroup=doxygenOther end=+[\\@]\@<=\<endverbatim\>+ contains=doxygenVerbatimRegionSpecial,doxygenContinueComment,doxygenErrorComment,@NoSpell
+  syn region doxygenVerbatimRegion contained matchgroup=doxygenOther start=+\<verbatim\>+ matchgroup=doxygenOther end=+[\\@]\@<=\<endverbatim\>+ contains=doxygenVerbatimRegionSpecial,doxygenContinueCommentWhite,doxygenErrorComment,@NoSpell
   syn match doxygenVerbatimRegionSpecial contained +[\\@]\(endverbatim\>\)\@=+
 
-  if exists('b:current_syntax') 
+  if exists('b:current_syntax')
     let b:doxygen_syntax_save=b:current_syntax
     unlet b:current_syntax
   endif
 
   syn include @Dotx syntax/dot.vim
 
-  if exists('b:doxygen_syntax_save') 
+  if exists('b:doxygen_syntax_save')
     let b:current_syntax=b:doxygen_syntax_save
     unlet b:doxygen_syntax_save
   else
     unlet b:current_syntax
   endif
 
-  syn region doxygenDotRegion contained matchgroup=doxygenOther start=+\<dot\>+ matchgroup=doxygenOther end=+[\\@]\@<=\<enddot\>+ contains=doxygenDotRegionSpecial,doxygenErrorComment,doxygenContinueComment,@NoSpell,@Dotx
+  syn region doxygenDotRegion contained matchgroup=doxygenOther start=+\<dot\>+ matchgroup=doxygenOther end=+[\\@]\@<=\<enddot\>+ contains=doxygenDotRegionSpecial,doxygenErrorComment,doxygenContinueCommentWhite,@NoSpell,@Dotx
   syn match doxygenDotRegionSpecial contained +[\\@]\(enddot\>\)\@=+
 
   " Match single line identifiers.
@@ -224,13 +242,13 @@ endif
   syn keyword doxygenOther contained par nextgroup=doxygenHeaderLine
   syn region doxygenHeaderLine start=+.+ end=+^+ contained skipwhite nextgroup=doxygenSpecialMultilineDesc
 
-  syn keyword doxygenOther contained arg author authors date deprecated li result return returns see invariant note post pre remark remarks since test nextgroup=doxygenSpecialMultilineDesc
+  syn keyword doxygenOther contained arg author authors date deprecated li return returns see invariant note post pre remarks since test nextgroup=doxygenSpecialMultilineDesc
   syn keyword doxygenOtherTODO contained todo attention nextgroup=doxygenSpecialMultilineDesc
   syn keyword doxygenOtherWARN contained warning nextgroup=doxygenSpecialMultilineDesc
   syn keyword doxygenOtherBUG contained bug nextgroup=doxygenSpecialMultilineDesc
 
   " Handle \link, \endlink, highlighting the link-to and the link text bits separately.
-  syn region doxygenOtherLink matchgroup=doxygenOther start=+\<link\>+ end=+[\@]\@<=endlink\>+ contained contains=doxygenLinkWord,doxygenContinueComment,doxygenLinkError,doxygenEndlinkSpecial
+  syn region doxygenOtherLink matchgroup=doxygenOther start=+\<link\>+ end=+[\@]\@<=endlink\>+ contained contains=doxygenLinkWord,doxygenContinueCommentWhite,doxygenLinkError,doxygenEndlinkSpecial
   syn match doxygenEndlinkSpecial contained +[\\@]\zeendlink\>+
 
   syn match doxygenLinkWord "[_a-zA-Z:#()][_a-z0-9A-Z:#()]*\>" contained skipnl nextgroup=doxygenLinkRest,doxygenContinueLinkComment
@@ -250,7 +268,7 @@ endif
 
   " Handle section
   syn keyword doxygenOther defgroup section subsection subsubsection weakgroup contained skipwhite nextgroup=doxygenSpecialIdent
-  syn region doxygenSpecialSectionDesc  start=+.\++ end=+$+ contained skipwhite contains=doxygenSmallSpecial,@doxygenHtmlGroup keepend skipwhite skipnl nextgroup=doxygenContinueComment
+  syn region doxygenSpecialSectionDesc  start=+.\++ end=+$+ contained skipwhite contains=doxygenSmallSpecial,@doxygenHtmlGroup keepend skipwhite skipnl nextgroup=doxygenContinueCommentWhite
   syn match doxygenSpecialIdent "\<[a-zA-Z_0-9]\+\>" contained nextgroup=doxygenSpecialSectionDesc
 
   " Does the one-line description for the one-line type identifiers.
@@ -260,8 +278,12 @@ endif
   " Handle the multiline description for the multiline type identifiers.
   " Continue until an 'empty' line (can contain a '*' continuation) or until the
   " next whole-line @ command \ command.
-  syn region doxygenSpecialMultilineDesc  start=+.\++ skip=+^\s*\(\*/\@!\s*\)\=\(\<\|[@\\]\<\([npcbea]\>\|em\>\|ref\|link\>\>\|f\$\|[$\\&<>#]\)\|[^ \t\\@*]\)+ end=+^+ contained contains=doxygenSpecialContinueComment,doxygenSmallSpecial,doxygenHyperLink,doxygenHashLink,@doxygenHtmlGroup,@Spell  skipwhite keepend
-  syn match doxygenSpecialContinueComment contained +^\s*\*/\@!\s*+ nextgroup=doxygenSpecial skipwhite
+  syn region doxygenSpecialMultilineDesc  start=+.\++ skip=+^\s*\(\*/\@!\s*\)\=\(\<\|[@\\]\<\([npcbea]\>\|em\>\|ref\|link\>\>\|f\$\|[$\\&<>#]\)\|[^ \t\\@*]\)+ end=+^+ contained contains=doxygenSpecialContinueCommentWhite,doxygenSmallSpecial,doxygenHyperLink,doxygenHashLink,@doxygenHtmlGroup,@Spell  skipwhite keepend
+
+"  syn match doxygenSpecialContinueComment contained +^\s*\*/\@!\s*+ nextgroup=doxygenSpecial skipwhite
+  syn match doxygenSpecialContinueCommentWhite contained +^\s*\ze\*+ nextgroup=doxygenSpecialContinueComment
+  syn match doxygenSpecialContinueComment contained +\*/\@!+
+
 
   " Handle special cases  'bold' and 'group'
   syn keyword doxygenBold contained bold nextgroup=doxygenSpecialHeading
@@ -288,7 +310,7 @@ endif
 
   " Supported HTML subset.  Not perfect, but okay.
   syn case ignore
-  syn region doxygenHtmlTag contained matchgroup=doxygenHtmlCh start=+\v\</=\ze([biuap]|em|strong|img|br|center|code|dfn|d[ldt]|hr|h[0-3]|li|[ou]l|pre|small|sub|sup|table|tt|var|caption|src|alt|longdesc|name|height|width|usemap|ismap|href|type)>+ skip=+\\<\|\<\k\+=\("[^"]*"\|'[^']*\)+ end=+>+ contains=doxygenHtmlCmd,doxygenContinueComment,doxygenHtmlVar
+  syn region doxygenHtmlTag contained matchgroup=doxygenHtmlCh start=+\v\</=\ze([biuap]|em|strong|img|br|center|code|dfn|d[ldt]|hr|h[0-3]|li|[ou]l|pre|small|sub|sup|table|tt|var|caption|src|alt|longdesc|name|height|width|usemap|ismap|href|type)>+ skip=+\\<\|\<\k\+=\("[^"]*"\|'[^']*\)+ end=+>+ contains=doxygenHtmlCmd,doxygenContinueCommentWhite,doxygenHtmlVar
   syn keyword doxygenHtmlCmd contained b i em strong u img a br p center code dfn dl dd dt hr h1 h2 h3 li ol ul pre small sub sup table tt var caption nextgroup=doxygenHtmlVar skipwhite
   syn keyword doxygenHtmlVar contained src alt longdesc name height width usemap ismap href type nextgroup=doxygenHtmlEqu skipwhite
   syn match doxygenHtmlEqu contained +=+ nextgroup=doxygenHtmlExpr skipwhite
@@ -298,7 +320,7 @@ endif
 
   syn cluster doxygenHtmlGroup contains=doxygenHtmlCode,doxygenHtmlBold,doxygenHtmlUnderline,doxygenHtmlItalic,doxygenHtmlSpecial,doxygenHtmlTag,doxygenHtmlLink
 
-  syn cluster doxygenHtmlTop contains=@Spell,doxygenHtmlSpecial,doxygenHtmlTag,doxygenContinueComment
+  syn cluster doxygenHtmlTop contains=@Spell,doxygenHtmlSpecial,doxygenHtmlTag,doxygenContinueCommentWhite
   " Html Support
   syn region doxygenHtmlLink contained start=+<[aA]\>\s*\(\n\s*\*\s*\)\=\(\(name\|href\)=\("[^"]*"\|'[^']*'\)\)\=\s*>+ end=+</[aA]>+me=e-4 contains=@doxygenHtmlTop
   hi link doxygenHtmlLink Underlined
@@ -343,7 +365,7 @@ endif
   syn cluster rcGroup add=doxygen.*
 
   let s:my_syncolor=0
-  if !exists(':SynColor') 
+  if !exists(':SynColor')
     command -nargs=+ SynColor hi def <args>
     let s:my_syncolor=1
   endif
@@ -469,6 +491,8 @@ endif
 
     call s:Doxygen_Hilights()
 
+    syn match doxygenLeadingWhite +\(^\s*\*\)\@<=\s*+ contained
+
     " This is still a proposal, but won't do any harm.
     aug doxygengroup
     au!
@@ -483,6 +507,7 @@ endif
     SynLink doxygenOtherTODO              Todo
     SynLink doxygenOtherWARN              Todo
     SynLink doxygenOtherBUG               Todo
+    SynLink doxygenLeadingLWhite          doxygenBody
 
     SynLink doxygenErrorSpecial           Error
     SynLink doxygenErrorEnd               Error
@@ -517,7 +542,10 @@ endif
     SynLink doxygenBriefL                 doxygenBrief
     SynLink doxygenBriefLine              doxygenBrief
     SynLink doxygenHeaderLine             doxygenSpecialHeading
-    SynLink doxygenStartSkip              doxygenContinueComment
+    SynLink doxygenCommentWhite           Normal
+    SynLink doxygenCommentWhite2          doxygenCommentWhite
+    SynLink doxygenContinueCommentWhite   doxygenCommentWhite
+    SynLink doxygenStartSkipWhite         doxygenContinueCommentWhite
     SynLink doxygenLinkWord               doxygenParamName
     SynLink doxygenLinkRest               doxygenSpecialMultilineDesc
     SynLink doxygenHyperLink              doxygenLinkWord
@@ -591,5 +619,5 @@ finally
   let &cpo = s:cpo_save
   unlet s:cpo_save
 endtry
-
+let suppress_doxygen=1
 " vim:et sw=2 sts=2