From a2a80162deb1e96e16b097dfe48b61b6eb0824bf Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Tue, 21 Nov 2017 23:09:50 +0100 Subject: Update runtime files. --- runtime/doc/debugger.txt | 10 ++-- runtime/doc/editing.txt | 7 ++- runtime/doc/eval.txt | 4 +- runtime/doc/quickref.txt | 5 +- runtime/doc/remote.txt | 5 +- runtime/doc/starting.txt | 12 +++-- runtime/doc/tags | 8 +++ runtime/doc/todo.txt | 75 ++++++++++++++++++++------ runtime/doc/usr_41.txt | 3 +- runtime/doc/various.txt | 11 ++-- runtime/filetype.vim | 6 +-- runtime/optwin.vim | 14 +++-- runtime/syntax/doxygen.vim | 128 +++++++++++++++++++++++++++------------------ 13 files changed, 194 insertions(+), 94 deletions(-) (limited to 'runtime') diff --git a/runtime/doc/debugger.txt b/runtime/doc/debugger.txt index 51a9cc9fc..7976395e4 100644 --- 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 resources (XmNballoonEvalFontList, 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 diff --git a/runtime/doc/editing.txt b/runtime/doc/editing.txt index 714bc65ad..4ade4aa7c 100644 --- 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, you are not able to write any file. *: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 and you want to try again later with ":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 diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt index d753924df..884f2e851 100644 --- 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. diff --git a/runtime/doc/quickref.txt b/runtime/doc/quickref.txt index c900ff5d0..06ae663bf 100644 --- 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: *option-list* '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 diff --git a/runtime/doc/remote.txt b/runtime/doc/remote.txt index dfae64eff..6b0d9dd41 100644 --- 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 the root window. 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. diff --git a/runtime/doc/starting.txt b/runtime/doc/starting.txt index 26d2fa24b..6ac684a13 100644 --- 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 first one will be the current 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 "-/R" readonly. *--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 diff --git a/runtime/doc/tags b/runtime/doc/tags index 5019bcd31..253a55fae 100644 --- a/runtime/doc/tags +++ b/runtime/doc/tags @@ -74,12 +74,14 @@ $VIM_POSIX vi_diff.txt /*$VIM_POSIX* '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 @@ $VIM_POSIX vi_diff.txt /*$VIM_POSIX* '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 @@ $VIM_POSIX vi_diff.txt /*$VIM_POSIX* +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-extension* 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* diff --git a/runtime/doc/todo.txt b/runtime/doc/todo.txt index 44d002bd3..dbd138f2f 100644 --- 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, unless there is extra information. *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 comment highlighting isn't removed. 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, 2014 Oct 12) 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 OS X 10.6. (Rainer, 2011 Jan 24) "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) diff --git a/runtime/doc/usr_41.txt b/runtime/doc/usr_41.txt index c13a0cb54..bafdc5491 100644 --- 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 diff --git a/runtime/doc/various.txt b/runtime/doc/various.txt index 07ec3b194..232ccda37 100644 --- 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 @@ g8 Print the hex values of the bytes used in the 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| diff --git a/runtime/filetype.vim b/runtime/filetype.vim index d176cf12c..ed1ef278f 100644 --- a/runtime/filetype.vim +++ b/runtime/filetype.vim @@ -1,7 +1,7 @@ " Vim support file to detect file types " " Maintainer: Bram Moolenaar -" 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 diff --git a/runtime/optwin.vim b/runtime/optwin.vim index 127232f26..74ebc9fd9 100644 --- a/runtime/optwin.vim +++ b/runtime/optwin.vim @@ -1,7 +1,7 @@ " These commands create the option window. " " Maintainer: Bram Moolenaar -" 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 BinOptionG("beval", &beval) + if has("balloon_eval") + call append("$", "ballooneval\tuse balloon evaluation in the GUI") + call BinOptionG("beval", &beval) + endif + if has("balloon_eval_term") + call append("$", "balloonevalterm\tuse balloon evaluation in the terminal") + call BinOptionG("bevalterm", &beval) + endif if has("eval") call append("$", "balloonexpr\texpression to show in balloon eval") call append("$", " \tset bexpr=" . &bexpr) diff --git a/runtime/syntax/doxygen.vim b/runtime/syntax/doxygen.vim index 6bd372627..adc0c41dd 100644 --- 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 " 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*\)\@\|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*\)\@\|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 + + + +" 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 - 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 " 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=+\(/\*[*!]\)\@+ 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]\{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=+\+ matchgroup=doxygenOther end=+[\\@]\@<=\+ contains=doxygenCodeRegionSpecial,doxygenContinueComment,doxygenErrorComment,@NoSpell + syn region doxygenCodeRegion contained matchgroup=doxygenOther start=+\+ matchgroup=doxygenOther end=+[\\@]\@<=\+ contains=doxygenCodeRegionSpecial,doxygenContinueCommentWhite,doxygenErrorComment,@NoSpell syn match doxygenCodeRegionSpecial contained +[\\@]\(endcode\>\)\@=+ - syn region doxygenVerbatimRegion contained matchgroup=doxygenOther start=+\+ matchgroup=doxygenOther end=+[\\@]\@<=\+ contains=doxygenVerbatimRegionSpecial,doxygenContinueComment,doxygenErrorComment,@NoSpell + syn region doxygenVerbatimRegion contained matchgroup=doxygenOther start=+\+ matchgroup=doxygenOther end=+[\\@]\@<=\+ 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=+\+ matchgroup=doxygenOther end=+[\\@]\@<=\+ contains=doxygenDotRegionSpecial,doxygenErrorComment,doxygenContinueComment,@NoSpell,@Dotx + syn region doxygenDotRegion contained matchgroup=doxygenOther start=+\+ matchgroup=doxygenOther end=+[\\@]\@<=\+ 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=+\+ end=+[\@]\@<=endlink\>+ contained contains=doxygenLinkWord,doxygenContinueComment,doxygenLinkError,doxygenEndlinkSpecial + syn region doxygenOtherLink matchgroup=doxygenOther start=+\+ 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\+ skip=+\\<\|\<\k\+=\("[^"]*"\|'[^']*\)+ end=+>+ contains=doxygenHtmlCmd,doxygenContinueComment,doxygenHtmlVar + syn region doxygenHtmlTag contained matchgroup=doxygenHtmlCh start=+\v\+ 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=++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 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 -- cgit v1.2.1