]> granicus.if.org Git - vim/commitdiff
Updated runtime files.
authorBram Moolenaar <Bram@vim.org>
Sat, 9 Jul 2016 18:21:48 +0000 (20:21 +0200)
committerBram Moolenaar <Bram@vim.org>
Sat, 9 Jul 2016 18:21:48 +0000 (20:21 +0200)
13 files changed:
runtime/doc/channel.txt
runtime/doc/eval.txt
runtime/doc/map.txt
runtime/doc/options.txt
runtime/doc/starting.txt
runtime/doc/tags
runtime/doc/todo.txt
runtime/doc/usr_41.txt
runtime/doc/various.txt
runtime/doc/version8.txt
runtime/syntax/c.vim
runtime/syntax/cpp.vim
runtime/syntax/pf.vim

index 47039e19770e16b40ecfa193e25fad243ecf3754..dd4b8d3a83f35aec0db7f88ce8ae75f1c2f50ce5 100644 (file)
@@ -1,4 +1,4 @@
-*channel.txt*      For Vim version 7.4.  Last change: 2016 Jun 02
+*channel.txt*      For Vim version 7.4.  Last change: 2016 Jul 07
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -495,6 +495,9 @@ time a line is added to the buffer, the last-but-one line will be send to the
 job stdin.  This allows for editing the last line and sending it when pressing
 Enter.
 
+NUL bytes in the text will be passed to the job (internally Vim stores these
+as NL bytes).
+
 
 Reading job output in the close callback ~
                                                        *read-in-close-cb*
@@ -684,7 +687,8 @@ When the buffer written to is displayed in a window and the cursor is in the
 first column of the last line, the cursor will be moved to the newly added
 line and the window is scrolled up to show the cursor if needed.
 
-Undo is synced for every added line.
+Undo is synced for every added line.  NUL bytes are accepted (internally Vim
+stores these as NL bytes).
 
 
 Writing to a file ~
index 438e28eec6aaf1507f46b7f5bde3ae653e6ad084..d8fe9c00e9919cb7d42ef890818576a335d180f9 100644 (file)
@@ -3283,7 +3283,7 @@ execute({command} [, {silent}])                                   *execute()*
                It is not possible to use `:redir` anywhere in {command}.
 
                To get a list of lines use |split()| on the result: >
-                       split(evalcmd('args'), "\n")
+                       split(execute('args'), "\n")
 
 <              When used recursively the output of the recursive call is not
                included in the output of the higher level call.
index 5584460660dbe026d115f50a826cb7d6613ede6b..4b9299bd2d6d4651b5a1432acddd2f37a9aaea48 100644 (file)
@@ -1,4 +1,4 @@
-*map.txt*       For Vim version 7.4.  Last change: 2016 Jun 10
+*map.txt*       For Vim version 7.4.  Last change: 2016 Jul 06
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -1274,6 +1274,7 @@ completion can be enabled:
        -complete=mapping       mapping name
        -complete=menu          menus
        -complete=option        options
+       -complete=packadd       optional package |pack-add| names
        -complete=shellcmd      Shell command
        -complete=sign          |:sign| suboptions
        -complete=syntax        syntax file names |'syntax'|
index 98017eccc6c103bb7af13fbec65b2e093bf64327..f535fcf2604b52cda3679095b0bc2edc2c2d0bca 100644 (file)
@@ -1,4 +1,4 @@
-*options.txt*  For Vim version 7.4.  Last change: 2016 Jul 01
+*options.txt*  For Vim version 7.4.  Last change: 2016 Jul 09
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -8180,10 +8180,10 @@ A jump table for the options with a short description can be found at |Q_op|.
                has been used since the last search command.
                                                        *viminfo-n*
        n       Name of the viminfo file.  The name must immediately follow
-               the 'n'.  Must be the last one!  If the "-i" argument was
-               given when starting Vim, that file name overrides the one
-               given here with 'viminfo'.  Environment variables are expanded
-               when opening the file, not when setting the option.
+               the 'n'.  Must be at the end of the option!  If the "-i"
+               argument was given when starting Vim, that file name overrides
+               the one given here with 'viminfo'.  Environment variables are
+               expanded when opening the file, not when setting the option.
                                                        *viminfo-r*
        r       Removable media.  The argument is a string (up to the next
                ',').  This parameter can be given several times.  Each
index 817703d770ca93d8817151ed9973ed60db0c5734..b613cf0561e750a6d6d076ab087f7f6da189b0cc 100644 (file)
@@ -1,4 +1,4 @@
-*starting.txt*  For Vim version 7.4.  Last change: 2016 Jun 15
+*starting.txt*  For Vim version 7.4.  Last change: 2016 Jul 03
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -1426,6 +1426,7 @@ Now the viminfo will have:
    BBB   - value from session B
    BOTH  - value from session B, value from session A is lost
 
+                                                       *viminfo-timestamp*
 For some items a timestamp is used to keep the last changed version.  Here it
 doesn't matter in which sequence Vim sessions exit, the newest item(s) are
 always kept.  This is used for:
index a35bb7ad7044a6080685b4d2ec2f28d4c38059aa..12ed7337165d4eb741417adb34c8ab1c22cce375 100644 (file)
@@ -2041,6 +2041,8 @@ $VIM_POSIX        vi_diff.txt     /*$VIM_POSIX*
 :cat   eval.txt        /*:cat*
 :catch eval.txt        /*:catch*
 :cb    quickfix.txt    /*:cb*
+:cbo   quickfix.txt    /*:cbo*
+:cbottom       quickfix.txt    /*:cbottom*
 :cbuffer       quickfix.txt    /*:cbuffer*
 :cc    quickfix.txt    /*:cc*
 :ccl   quickfix.txt    /*:ccl*
@@ -2393,6 +2395,8 @@ $VIM_POSIX        vi_diff.txt     /*$VIM_POSIX*
 :lat   undo.txt        /*:lat*
 :later undo.txt        /*:later*
 :lb    quickfix.txt    /*:lb*
+:lbo   quickfix.txt    /*:lbo*
+:lbottom       quickfix.txt    /*:lbottom*
 :lbuffer       quickfix.txt    /*:lbuffer*
 :lc    editing.txt     /*:lc*
 :lcd   editing.txt     /*:lcd*
@@ -4457,6 +4461,7 @@ E927      eval.txt        /*E927*
 E928   eval.txt        /*E928*
 E929   starting.txt    /*E929*
 E93    windows.txt     /*E93*
+E930   eval.txt        /*E930*
 E94    windows.txt     /*E94*
 E95    message.txt     /*E95*
 E96    diff.txt        /*E96*
@@ -4472,6 +4477,7 @@ Ex        intro.txt       /*Ex*
 Ex-mode        intro.txt       /*Ex-mode*
 Exuberant_ctags        tagsrch.txt     /*Exuberant_ctags*
 F      motion.txt      /*F*
+FALSE  eval.txt        /*FALSE*
 FAQ    intro.txt       /*FAQ*
 Farsi  farsi.txt       /*Farsi*
 FileAppendCmd  autocmd.txt     /*FileAppendCmd*
@@ -4686,6 +4692,7 @@ TOhtml-encoding-detect    syntax.txt      /*TOhtml-encoding-detect*
 TOhtml-performance     syntax.txt      /*TOhtml-performance*
 TOhtml-uncopyable-text syntax.txt      /*TOhtml-uncopyable-text*
 TOhtml-wrap-text       syntax.txt      /*TOhtml-wrap-text*
+TRUE   eval.txt        /*TRUE*
 TSQL   ft_sql.txt      /*TSQL*
 TTpro-telnet   syntax.txt      /*TTpro-telnet*
 Tab    intro.txt       /*Tab*
@@ -5746,6 +5753,7 @@ exception-variable        eval.txt        /*exception-variable*
 exclusive      motion.txt      /*exclusive*
 exclusive-linewise     motion.txt      /*exclusive-linewise*
 executable()   eval.txt        /*executable()*
+execute()      eval.txt        /*execute()*
 execute-menus  gui.txt /*execute-menus*
 exepath()      eval.txt        /*exepath()*
 exim   starting.txt    /*exim*
@@ -6373,6 +6381,7 @@ getcmdline()      eval.txt        /*getcmdline()*
 getcmdpos()    eval.txt        /*getcmdpos()*
 getcmdtype()   eval.txt        /*getcmdtype()*
 getcmdwintype()        eval.txt        /*getcmdwintype()*
+getcompletion()        eval.txt        /*getcompletion()*
 getcurpos()    eval.txt        /*getcurpos()*
 getcwd()       eval.txt        /*getcwd()*
 getfontname()  eval.txt        /*getfontname()*
@@ -9051,6 +9060,7 @@ viminfo-r options.txt     /*viminfo-r*
 viminfo-read   starting.txt    /*viminfo-read*
 viminfo-read-write     starting.txt    /*viminfo-read-write*
 viminfo-s      options.txt     /*viminfo-s*
+viminfo-timestamp      starting.txt    /*viminfo-timestamp*
 viminfo-write  starting.txt    /*viminfo-write*
 vimrc  starting.txt    /*vimrc*
 vimrc-filetype usr_05.txt      /*vimrc-filetype*
index 07c4f05907d6f3ad9824009eaa61f620a6908906..88a6ce2859e60b5b6f7c50e998c6a52557ea4f2a 100644 (file)
@@ -1,4 +1,4 @@
-*todo.txt*      For Vim version 7.4.  Last change: 2016 Jul 02
+*todo.txt*      For Vim version 7.4.  Last change: 2016 Jul 09
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -34,14 +34,10 @@ not be repeated below, unless there is extra information.
                                                        *known-bugs*
 -------------------- Known bugs and current work -----------------------
 
-Further implement 'barline' in viminfo:
-- Use timestamp for more items: locations, marks.
-
 Problem with setqflist([]): grep 4 times, ":colder 3", setqflist([]) will
 clear the next list, not the current one.  Ramel Eshed, Jun 8.
 
 +channel:
-- Should write_buf_line() change NL to NUL characters?
 - GUI cursor blinking interrupted when the job output goes to a buffer that is
   in a window. (Ramel Eshed, 2016 Jun 9)
 - GUI cursor blinking interrupted when there is a status line.  (Ramel Eshed,
@@ -61,17 +57,11 @@ Later
     With xterm could use -S{pty}.
 
 Quickfix improvements for background building and grepping:
-  Patch from Yegappan, 2016 Jun 17.
-  Need to reset values when starting a new list.
-- If 'efm' is the same as last time re-use the fmt_first list.
-- Do not clear "dir_stack", "directory" and "file_stack", "currfile" when
-  using ":addexpr".
-  Move multiline, multiignore, multiscan outside of the function.
-- Add :cbottom, if quickfix window is visible scroll to make the last line
-  visible. Use scroll_cursor_bot(0, FALSE);
-- Add a flag/property/option to quickfix commands and functions to keep a file
-  name as a string and not create a buffer for it? To avoid creating lots of
-  buffers. (Ramel Eshed)
+- Add a command modifier ":usefname" to quickfix commands and functions to
+  keep a file name as a string and not create a buffer for it? To avoid
+  creating lots of buffers. (Ramel Eshed)
+  Store the relative file name and set a flag "qf_relative".  Before changing
+  directory turn them into full paths.
 
 Regexp problems:
 - When using automatic engine selection there is a false match.  Forcing
@@ -130,16 +120,18 @@ What if there is an invalid character?
 Should json_encode()/json_decode() restrict recursiveness?
 Or avoid recursiveness.
 
-Patch to support 64 bit ints for Number. (Ken Takata, 2016 Jan 21)
-Update 2016 Apr 24.
-Update 2016 Jun 14, includes some tests.
-
-Patch to support expression argument to sort() instead of a function name.
-Yasuhiro Matsumoto, 2013 May 31.
-Or should we add a more general mechanism, like a lambda() function?
+Add a lambda() function.
 Patch by Yasuhiro Matsumoto, 2014 Sep 16, update 2016 Apr 17.
 Correction for test, Ken Takata, 2016 May 27.
 Merged patch: Ken Takata, 2016 Jun 15.
+Need to separate-out closure and lambda somehow.
+Define lambda directly, not as a string: {v -> v * 8}
+Lambda implementation by Ken Takata, 2016 Jul 7.
+
+Python: Extended funcrefs: use func_T* structure in place of char_u* function
+names.
+(ZyX, 2013 Jul 15, update Sep 22, 24, 28; Update 2013 Dec 15, 2014 Jan 6)
+Also fixes Bug: E685 error for func_unref(). (ZyX, 2010 Aug 5)
 
 Once .exe with updated installer is available: Add remark to download page
 about /S and /D options (Ken Takata, 2016 Apr 13)
@@ -161,7 +153,8 @@ For current Windows build .pdb file is missing. (Gabriele Fava, 2016 May 11)
 5)
 
 'completeopt' noinsert breaks redo register (Shougo, 2016 Jun 18, #874)
-Patch to fix this: #875
+Patch to fix this: #905.
+There also is #875 to fix another problem?
 
 Problem with whitespace in errorformat. (Gerd Wachsmuth, 2016 May 15, #807)
 
@@ -769,11 +762,6 @@ Patch by Thomas Tuegel, also for GTK, 2013 Nov 24
 
 :help gives example for z?, but it does not work.  m? and t? do work.
 
-Python: Extended funcrefs: use func_T* structure in place of char_u* function
-names.
-(ZyX, 2013 Jul 15, update Sep 22, 24, 28; Update 2013 Dec 15, 2014 Jan 6)
-Also fixes Bug: E685 error for func_unref(). (ZyX, 2010 Aug 5)
-
 Patch to add funcref to Lua.  (Luis Carvalho, 2013 Sep 4)
 With tests: Sep 5.
 
index d720344b8fb18fe9707319d53cd0c1dc553ea39b..1eec17e589504238280ef3e8bc208775e048b33e 100644 (file)
@@ -1,4 +1,4 @@
-*usr_41.txt*   For Vim version 7.4.  Last change: 2016 Jun 13
+*usr_41.txt*   For Vim version 7.4.  Last change: 2016 Jul 09
 
                     VIM USER MANUAL - by Bram Moolenaar
 
@@ -611,6 +611,7 @@ String manipulation:                                        *string-functions*
        byteidxcomp()           like byteidx() but count composing characters
        repeat()                repeat a string multiple times
        eval()                  evaluate a string expression
+       execute()               execute an Ex command and get the output
 
 List manipulation:                                     *list-functions*
        get()                   get an item without error for wrong index
@@ -978,6 +979,8 @@ Various:                                    *various-functions*
 
        shiftwidth()            effective value of 'shiftwidth'
 
+       wordcount()             get byte/word/char count of buffer
+
        taglist()               get list of matching tags
        tagfiles()              get a list of tags files
 
@@ -986,7 +989,6 @@ Various:                                    *various-functions*
        perleval()              evaluate Perl expression (|+perl|)
        py3eval()               evaluate Python expression (|+python3|)
        pyeval()                evaluate Python expression (|+python|)
-       wordcount()             get byte/word/char count of buffer
 
 ==============================================================================
 *41.7* Defining a function
index 31f1a1bd7c962e2076f0beff5e64932221fdbeca..01182c79bcbc0019375b0ce54113afcb8a909aa2 100644 (file)
@@ -1,4 +1,4 @@
-*various.txt*   For Vim version 7.4.  Last change: 2016 May 24
+*various.txt*   For Vim version 7.4.  Last change: 2016 Jul 09
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -470,9 +470,12 @@ N  *+X11*          Unix only: can restore window title |X11|
                        shown on the screen.  When [!] is included, an
                        existing file is overwritten.  When [!] is omitted,
                        and {file} exists, this command fails.
+
                        Only one ":redir" can be active at a time.  Calls to
                        ":redir" will close any active redirection before
-                       starting redirection to the new target.
+                       starting redirection to the new target.  For recursive
+                       use check out |execute()|.
+
                        To stop the messages and commands from being echoed to
                        the screen, put the commands in a function and call it
                        with ":silent call Function()".
@@ -512,6 +515,8 @@ N  *+X11*           Unix only: can restore window title |X11|
                        redirection starts, if the variable is removed or
                        locked or the variable type is changed, then further
                        command output messages will cause errors. {not in Vi}
+                       To get the output of one command the |execute()|
+                       function can be used.
 
 :redi[r] =>> {var}     Append messages to an existing variable.  Only string
                        variables can be used. {not in Vi}
index bb8d62d95c9a25eadda3fa5dc6bd560ae057134b..53407339c769e3f9d848a98d3bb7161f2813c793 100644 (file)
@@ -1,4 +1,4 @@
-*version8.txt*  For Vim version 8.0.  Last change: 2016 Jun 04
+*version8.txt*  For Vim version 8.0.  Last change: 2016 Jul 03
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -16,12 +16,12 @@ See |vi_diff.txt| for an overview of differences between Vi and Vim 7.0.
 See |version4.txt|, |version5.txt|, |version6.txt| and |version7.txt| for
 differences between other versions.
 
-INCOMPATIBLE CHANGES                   |incompatible-8|
-
 NEW FEATURES                           |new-8|
 
 Vim script enhancements                        |new-vim-script-8|
 
+INCOMPATIBLE CHANGES                   |incompatible-8|
+
 IMPROVEMENTS                           |improvements-8|
 
 COMPILE TIME CHANGES                   |compile-changes-8|
@@ -29,21 +29,6 @@ COMPILE TIME CHANGES                 |compile-changes-8|
 PATCHES                                        |patches-8|
 
 
-==============================================================================
-INCOMPATIBLE CHANGES                           *incompatible-8*
-
-These changes are incompatible with previous releases.  Check this list if you
-run into a problem when upgrading from Vim 7.4 to 8.0.
-
-The support for MS-DOS has been removed.  It hasn't been working for a while
-and removing it cleans up the code quite a bit.
-
-The support for Windows 16 bit (Windows 95 and older) has been removed.
-
-Minor incompatibilities:
-
-For filetype detection: ...
-
 ==============================================================================
 NEW FEATURES                                           *new-8*
 
@@ -52,14 +37,18 @@ First a list of the bigger new features.  A comprehensive list is below.
 
 Asynchronous I/O support, channels ~
 
-Vim can now exchange messages with another process in the background.  The
-messages are received and handled while Vim is waiting for a character.  See
-|channel-demo| for an example, communicating with a Python server.
+Vim can now exchange messages with other processes in the background.  This
+makes it possible to have servers do work and send back the results to Vim.
+See |channel-demo| for an example, this shows communicating with a Python
+server.
 
 Closely related to channels is JSON support.  JSON is widely supported and can
 easily be used for inter-process communication, allowing for writing a server
 in any language.  The functions to use are |json_encode()| and |json_decode()|.
 
+This makes it possible to build very complex plugins, written in any language
+and running in a separate process.
+
 
 Jobs ~
 
@@ -74,8 +63,8 @@ Timers ~
 Also asynchronous are timers.  They can fire once or repeatedly and invoke a
 function to do any work.  For example: >
        let tempTimer = timer_start(4000, 'CheckTemp')
-This will make a call four seconds (4000 milli seconds) later, like: >
-       call CheckTemp()
+This will call the CheckTemp() function four seconds (4000 milli seconds)
+later.
 
 
 Partials ~
@@ -85,8 +74,7 @@ to a function, and additionally binds arguments and/or a dictionary.  This is
 especially useful for callbacks on channels and timers.  E.g., for the timer
 example above, to pass an argument to the function: >
        let tempTimer = timer_start(4000, function('CheckTemp', ['out']))
-This will a make call four seconds later, like: >
-       call CheckTemp('out')
+This will call CheckTemp('out') four seconds later.
 
 
 Packages ~
@@ -103,26 +91,7 @@ New style tests ~
 This is for Vim developers.  So far writing tests for Vim has not been easy.
 Vim 8 adds assert functions and a framework to run tests.  This makes it a lot
 simpler to write tests and keep them updated.  Also new are several functions
-that are added specifically for testing.
-
-These functions have been added:
-       |assert_equal()|
-       |assert_notequal()|
-       |assert_exception()|
-       |assert_fails()|
-       |assert_false()|
-       |assert_match()|
-       |assert_notmatch()|
-       |assert_true()|
-       |test_alloc_fail()|
-       |test_disable_char_avail()|
-       |test_garbagecollect_now()|
-       |test_null_channel()|
-       |test_null_dict()|
-       |test_null_job()|
-       |test_null_list()|
-       |test_null_partial()|
-       |test_null_string()|
+that are added specifically for testing. See |test-functions|.
 
 
 Window IDs ~
@@ -132,6 +101,13 @@ window would open, close or move that number changes.  Each window now has a
 unique ID, so that they are easy to find.  See |win_getid()| and |win_id2win()|.
 
 
+Viminfo uses timestamps ~
+
+Previously the information stored in viminfo was whatever the last Vim wrote
+there.  Now timestamps are used to always keep the most recent items.
+See |viminfo-timestamp|.
+
+
 Wrapping lines with indent ~
 
 The 'breakindent' option has been added to be able to wrap lines without
@@ -215,6 +191,21 @@ New message translations: ~
 Others: ~
 
 
+==============================================================================
+INCOMPATIBLE CHANGES                           *incompatible-8*
+
+These changes are incompatible with previous releases.  Check this list if you
+run into a problem when upgrading from Vim 7.4 to 8.0.
+
+The support for MS-DOS has been removed.  It hasn't been working for a while
+and removing it cleans up the code quite a bit.
+
+The support for Windows 16 bit (Windows 95 and older) has been removed.
+
+Minor incompatibilities:
+
+For filetype detection: ...
+
 ==============================================================================
 IMPROVEMENTS                                           *improvements-8*
 
index 3fe3256059b4f12656fb9a875596f116733d26c8..57d99ab1e9b2b277ed80b8995231110ab4768741 100644 (file)
@@ -1,7 +1,7 @@
 " Vim syntax file
 " Language:    C
 " Maintainer:  Bram Moolenaar <Bram@vim.org>
-" Last Change: 2016 Apr 10
+" Last Change: 2016 Jul 07
 
 " Quit when a (custom) syntax file was already loaded
 if exists("b:current_syntax")
@@ -295,7 +295,7 @@ if !exists("c_no_ansi") || exists("c_ansi_constants") || exists("c_gnu")
   syn keyword cConstant SCHAR_MIN SINT_MIN SLONG_MIN SSHRT_MIN
   syn keyword cConstant SCHAR_MAX SINT_MAX SLONG_MAX SSHRT_MAX
   if !exists("c_no_c99")
-    syn keyword cConstant __func__
+    syn keyword cConstant __func__ __VA_ARGS__
     syn keyword cConstant LLONG_MIN LLONG_MAX ULLONG_MAX
     syn keyword cConstant INT8_MIN INT16_MIN INT32_MIN INT64_MIN
     syn keyword cConstant INT8_MAX INT16_MAX INT32_MAX INT64_MAX
index c7a68388beb68bc311c6f701aae054616e569595..fefd0ff7b0980330a233dae510867726f8bf1fac 100644 (file)
@@ -2,7 +2,7 @@
 " Language:    C++
 " Current Maintainer:  vim-jp (https://github.com/vim-jp/vim-cpp)
 " Previous Maintainer: Ken Shan <ccshan@post.harvard.edu>
-" Last Change: 2015 Nov 10
+" Last Change: 2016 Jul 07
 
 " For version 5.x: Clear all syntax items
 " For version 6.x: Quit when a syntax file was already loaded
@@ -80,6 +80,7 @@ if version >= 508 || !exists("did_cpp_syntax_inits")
   HiLink cppConstant           Constant
   HiLink cppRawStringDelimiter Delimiter
   HiLink cppRawString          String
+  HiLink cppNumber             Number
   delcommand HiLink
 endif
 
index 1a8f34bbbab0fce6478788689e8bb3ffe8547fa6..81add10e7e985bd49a8dece726223edc57863613 100644 (file)
@@ -2,30 +2,22 @@
 " Language:        OpenBSD packet filter configuration (pf.conf)
 " Original Author: Camiel Dobbelaar <cd@sentia.nl>
 " Maintainer:      Lauri Tirkkonen <lotheac@iki.fi>
-" Last Change:     2013 Apr 02
+" Last Change:     2016 Jul 06
 
-" For version 5.x: Clear all syntax items
-" For version 6.x: Quit when a syntax file was already loaded
-if version < 600
-  syntax clear
-elseif exists("b:current_syntax")
+if exists("b:current_syntax")
   finish
 endif
 
 setlocal foldmethod=syntax
+syn iskeyword @,48-57,_,-,+
 syn sync fromstart
 
 syn cluster    pfNotLS         contains=pfTodo,pfVarAssign
-syn keyword    pfCmd           altq anchor antispoof binat nat pass
-syn keyword    pfCmd           queue rdr scrub table set
-syn keyword    pfService       auth bgp domain finger ftp http https ident
-syn keyword    pfService       imap irc isakmp kerberos mail nameserver nfs
-syn keyword    pfService       nntp ntp pop3 portmap pptp rpcbind rsync smtp
-syn keyword    pfService       snmp snmptrap socks ssh sunrpc syslog telnet
-syn keyword    pfService       tftp www
+syn keyword    pfCmd           anchor antispoof block include match pass queue
+syn keyword    pfCmd           queue set table
+syn match      pfCmd           /^\s*load\sanchor\>/
 syn keyword    pfTodo          TODO XXX contained
 syn keyword    pfWildAddr      all any
-syn match      pfCmd           /block\s/
 syn match      pfComment       /#.*$/ contains=pfTodo
 syn match      pfCont          /\\$/
 syn match      pfErrClose      /}/
@@ -34,43 +26,81 @@ syn match   pfIPv6          /[a-fA-F0-9:]*::[a-fA-F0-9:.]*/
 syn match      pfIPv6          /[a-fA-F0-9:]\+:[a-fA-F0-9:]\+:[a-fA-F0-9:.]\+/
 syn match      pfNetmask       /\/\d\+/
 syn match      pfNum           /[a-zA-Z0-9_:.]\@<!\d\+[a-zA-Z0-9_:.]\@!/
-syn match      pfTable         /<\s*[a-zA-Z][a-zA-Z0-9_]*\s*>/
+syn match      pfTable         /<\s*[a-zA-Z0-9_:][a-zA-Z0-9_:.-]*\s*>/
 syn match      pfVar           /$[a-zA-Z][a-zA-Z0-9_]*/
 syn match      pfVarAssign     /^\s*[a-zA-Z][a-zA-Z0-9_]*\s*=/me=e-1
 syn region     pfFold1         start=/^#\{1}>/ end=/^#\{1,3}>/me=s-1 transparent fold
 syn region     pfFold2         start=/^#\{2}>/ end=/^#\{2,3}>/me=s-1 transparent fold
 syn region     pfFold3         start=/^#\{3}>/ end=/^#\{3}>/me=s-1 transparent fold
 syn region     pfList          start=/{/ end=/}/ transparent contains=ALLBUT,pfErrClose,@pfNotLS
-syn region     pfString        start=/"/ end=/"/ transparent contains=ALLBUT,pfString,@pfNotLS
-syn region     pfString        start=/'/ end=/'/ transparent contains=ALLBUT,pfString,@pfNotLS
+syn region     pfString        start=/"/ skip=/\\"/ end=/"/ contains=pfIPv4,pfIPv6,pfNetmask,pfTable,pfVar
+syn region     pfString        start=/'/ skip=/\\'/ end=/'/ contains=pfIPv4,pfIPv6,pfNetmask,pfTable,pfVar
 
-" Define the default highlighting.
-" For version 5.7 and earlier: only when not done already
-" For version 5.8 and later: only when an item doesn't have highlighting yet
-if version >= 508 || !exists("did_c_syn_inits")
-  if version < 508
-    let did_c_syn_inits = 1
-    command -nargs=+ HiLink hi link <args>
-  else
-    command -nargs=+ HiLink hi def link <args>
-  endif
+syn keyword    pfService       802-11-iapp Microsoft-SQL-Monitor
+syn keyword    pfService       Microsoft-SQL-Server NeXTStep NextStep
+syn keyword    pfService       afpovertcp afs3-bos afs3-callback afs3-errors
+syn keyword    pfService       afs3-fileserver afs3-kaserver afs3-prserver
+syn keyword    pfService       afs3-rmtsys afs3-update afs3-vlserver
+syn keyword    pfService       afs3-volser amt-redir-tcp amt-redir-tls
+syn keyword    pfService       amt-soap-http amt-soap-https asf-rmcp at-echo
+syn keyword    pfService       at-nbp at-rtmp at-zis auth authentication
+syn keyword    pfService       bfd-control bfd-echo bftp bgp bgpd biff bootpc
+syn keyword    pfService       bootps canna cddb cddbp chargen chat cmd
+syn keyword    pfService       cmip-agent cmip-man comsat conference
+syn keyword    pfService       conserver courier csnet-ns cso-ns cvspserver
+syn keyword    pfService       daap datametrics daytime dhcpd-sync
+syn keyword    pfService       dhcpv6-client dhcpv6-server discard domain
+syn keyword    pfService       echo efs eklogin ekshell ekshell2 epmap eppc
+syn keyword    pfService       exec finger ftp ftp-data git gopher hostname
+syn keyword    pfService       hostnames hprop http https hunt hylafax iapp
+syn keyword    pfService       icb ident imap imap2 imap3 imaps ingreslock
+syn keyword    pfService       ipp iprop ipsec-msft ipsec-nat-t ipx irc
+syn keyword    pfService       isakmp iscsi isisd iso-tsap kauth kdc kerberos
+syn keyword    pfService       kerberos-adm kerberos-iv kerberos-sec
+syn keyword    pfService       kerberos_master kf kip klogin kpasswd kpop
+syn keyword    pfService       krb524 krb_prop krbupdate krcmd kreg kshell kx
+syn keyword    pfService       l2tp ldap ldaps ldp link login mail mdns
+syn keyword    pfService       mdnsresponder microsoft-ds ms-sql-m ms-sql-s
+syn keyword    pfService       msa msp mtp mysql name nameserver netbios-dgm
+syn keyword    pfService       netbios-ns netbios-ssn netnews netplan netrjs
+syn keyword    pfService       netstat netwall newdate nextstep nfs nfsd
+syn keyword    pfService       nicname nnsp nntp ntalk ntp null openwebnet
+syn keyword    pfService       ospf6d ospfapi ospfd photuris pop2 pop3 pop3pw
+syn keyword    pfService       pop3s poppassd portmap postgresql postoffice
+syn keyword    pfService       pptp presence printer prospero prospero-np
+syn keyword    pfService       puppet pwdgen qotd quote radacct radius
+syn keyword    pfService       radius-acct rdp readnews remotefs resource rfb
+syn keyword    pfService       rfe rfs rfs_server ripd ripng rje rkinit rlp
+syn keyword    pfService       routed router rpc rpcbind rsync rtelnet rtsp
+syn keyword    pfService       sa-msg-port sane-port sftp shell sieve silc
+syn keyword    pfService       sink sip smtp smtps smux snmp snmp-trap
+syn keyword    pfService       snmptrap snpp socks source spamd spamd-cfg
+syn keyword    pfService       spamd-sync spooler spop3 ssdp ssh submission
+syn keyword    pfService       sunrpc supdup supfiledbg supfilesrv support
+syn keyword    pfService       svn svrloc swat syslog syslog-tls systat
+syn keyword    pfService       tacacs tacas+ talk tap tcpmux telnet tempo
+syn keyword    pfService       tftp time timed timeserver timserver tsap
+syn keyword    pfService       ttylink ttytst ub-dns-control ulistserv untp
+syn keyword    pfService       usenet users uucp uucp-path uucpd vnc vxlan
+syn keyword    pfService       wais webster who whod whois www x400 x400-snd
+syn keyword    pfService       xcept xdmcp xmpp-bosh xmpp-client xmpp-server
+syn keyword    pfService       z3950 zabbix-agent zabbix-trapper zebra
+syn keyword    pfService       zebrasrv
 
-  HiLink pfCmd         Statement
-  HiLink pfComment     Comment
-  HiLink pfCont                Statement
-  HiLink pfErrClose    Error
-  HiLink pfIPv4                Type
-  HiLink pfIPv6                Type
-  HiLink pfNetmask     Constant
-  HiLink pfNum         Constant
-  HiLink pfService     Constant
-  HiLink pfTable       Identifier
-  HiLink pfTodo                Todo
-  HiLink pfVar         Identifier
-  HiLink pfVarAssign   Identifier
-  HiLink pfWildAddr    Type
-
-  delcommand HiLink
-endif
+hi def link pfCmd      Statement
+hi def link pfComment  Comment
+hi def link pfCont     Statement
+hi def link pfErrClose Error
+hi def link pfIPv4     Type
+hi def link pfIPv6     Type
+hi def link pfNetmask  Constant
+hi def link pfNum      Constant
+hi def link pfService  Constant
+hi def link pfString   String
+hi def link pfTable    Identifier
+hi def link pfTodo     Todo
+hi def link pfVar      Identifier
+hi def link pfVarAssign        Identifier
+hi def link pfWildAddr Type
 
 let b:current_syntax = "pf"