]> granicus.if.org Git - vim/commitdiff
Update runtime files.
authorBram Moolenaar <Bram@vim.org>
Fri, 20 Jan 2012 20:08:56 +0000 (21:08 +0100)
committerBram Moolenaar <Bram@vim.org>
Fri, 20 Jan 2012 20:08:56 +0000 (21:08 +0100)
41 files changed:
runtime/autoload/getscript.vim
runtime/autoload/tar.vim
runtime/autoload/vimball.vim
runtime/autoload/zip.vim
runtime/compiler/erlang.vim [new file with mode: 0644]
runtime/doc/autocmd.txt
runtime/doc/develop.txt
runtime/doc/mlang.txt
runtime/doc/options.txt
runtime/doc/pi_getscript.txt
runtime/doc/pi_tar.txt
runtime/doc/pi_vimball.txt
runtime/doc/pi_zip.txt
runtime/doc/syntax.txt
runtime/doc/tags
runtime/doc/todo.txt
runtime/doc/various.txt
runtime/ftplugin/erlang.vim [new file with mode: 0644]
runtime/ftplugin/logcheck.vim
runtime/ftplugin/postscr.vim
runtime/indent/erlang.vim
runtime/indent/java.vim
runtime/plugin/getscriptPlugin.vim
runtime/plugin/tarPlugin.vim
runtime/plugin/vimballPlugin.vim
runtime/plugin/zipPlugin.vim
runtime/spell/ga/ga_IE.diff
runtime/spell/gd/gd_GB.diff
runtime/spell/sv/sv_SE.diff
runtime/syntax/c.vim
runtime/syntax/d.vim
runtime/syntax/erlang.vim
runtime/syntax/fortran.vim
runtime/syntax/gp.vim
runtime/syntax/groovy.vim
runtime/syntax/idl.vim
runtime/syntax/mail.vim
runtime/syntax/sh.vim
runtime/syntax/tex.vim
runtime/syntax/upstart.vim
runtime/syntax/vim.vim

index 9e2a1964c6ae53e16c762d3d1e997f85aef5ba2f..34f5970c3ed481a9e74d00ab84991b8e7deeaac3 100644 (file)
@@ -1,8 +1,8 @@
 " ---------------------------------------------------------------------
 " getscript.vim
 "  Author:     Charles E. Campbell, Jr.
-"  Date:       May 31, 2011
-"  Version:    33
+"  Date:       Jan 17, 2012
+"  Version:    34
 "  Installing: :help glvs-install
 "  Usage:      :help glvs
 "
@@ -15,7 +15,7 @@
 if exists("g:loaded_getscript")
  finish
 endif
-let g:loaded_getscript= "v33"
+let g:loaded_getscript= "v34"
 if &cp
  echoerr "GetLatestVimScripts is not vi-compatible; not loaded (you need to set nocp)"
  finish
@@ -550,30 +550,42 @@ fun! s:GetOneScript(...)
      " decompress
      if sname =~ '\.bz2$'
 "      call Decho("decompress: attempt to bunzip2 ".sname)
-      exe "silent !bunzip2 ".shellescape(sname)
+      exe "sil !bunzip2 ".shellescape(sname)
       let sname= substitute(sname,'\.bz2$','','')
 "      call Decho("decompress: new sname<".sname."> after bunzip2")
      elseif sname =~ '\.gz$'
 "      call Decho("decompress: attempt to gunzip ".sname)
-      exe "silent !gunzip ".shellescape(sname)
+      exe "sil !gunzip ".shellescape(sname)
       let sname= substitute(sname,'\.gz$','','')
 "      call Decho("decompress: new sname<".sname."> after gunzip")
      elseif sname =~ '\.xz$'
 "      call Decho("decompress: attempt to unxz ".sname)
-      exe "silent !unxz ".shellescape(sname)
+      exe "sil !unxz ".shellescape(sname)
       let sname= substitute(sname,'\.xz$','','')
 "      call Decho("decompress: new sname<".sname."> after unxz")
      else
 "      call Decho("no decompression needed")
      endif
      
-     " distribute archive(.zip, .tar, .vba) contents
+     " distribute archive(.zip, .tar, .vba, ...) contents
      if sname =~ '\.zip$'
 "      call Decho("dearchive: attempt to unzip ".sname)
       exe "silent !unzip -o ".shellescape(sname)
      elseif sname =~ '\.tar$'
 "      call Decho("dearchive: attempt to untar ".sname)
       exe "silent !tar -xvf ".shellescape(sname)
+     elseif sname =~ '\.tgz$'
+"      call Decho("dearchive: attempt to untar+gunzip ".sname)
+      exe "silent !tar -zxvf ".shellescape(sname)
+     elseif sname =~ '\.taz$'
+"      call Decho("dearchive: attempt to untar+uncompress ".sname)
+      exe "silent !tar -Zxvf ".shellescape(sname)
+     elseif sname =~ '\.tbz$'
+"      call Decho("dearchive: attempt to untar+bunzip2 ".sname)
+      exe "silent !tar -jxvf ".shellescape(sname)
+     elseif sname =~ '\.txz$'
+"      call Decho("dearchive: attempt to untar+xz ".sname)
+      exe "silent !tar -Jxvf ".shellescape(sname)
      elseif sname =~ '\.vba$'
 "      call Decho("dearchive: attempt to handle a vimball: ".sname)
       silent 1split
index 6355b71113859f1aef3b207b8f5786d64b564021..d67212934be120d03b9c4e81d2e800204b1960c9 100644 (file)
@@ -1,7 +1,7 @@
 " tar.vim: Handles browsing tarfiles
 "            AUTOLOAD PORTION
-" Date:                        May 31, 2011
-" Version:             27
+" Date:                        Jan 17, 2012
+" Version:             28
 " Maintainer:  Charles E Campbell, Jr <NdrOchip@ScampbellPfamily.AbizM-NOSPAM>
 " License:             Vim License  (see vim's :help license)
 "
@@ -22,7 +22,7 @@
 if &cp || exists("g:loaded_tar")
  finish
 endif
-let g:loaded_tar= "v27"
+let g:loaded_tar= "v28"
 if v:version < 702
  echohl WarningMsg
  echo "***warning*** this version of tar needs vim 7.2"
@@ -143,7 +143,7 @@ fun! tar#Browse(tarfile)
   call setline(lastline+2,'" Browsing tarfile '.a:tarfile)
   call setline(lastline+3,'" Select a file with cursor and press ENTER')
   keepj $put =''
-  keepj 0d
+  keepj sil! 0d
   keepj $
 
   let tarfile= a:tarfile
@@ -158,10 +158,10 @@ fun! tar#Browse(tarfile)
   elseif tarfile =~# '\.lrp'
 "   call Decho("2: exe silent r! cat -- ".shellescape(tarfile,1)."|gzip -d -c -|".g:tar_cmd." -".g:tar_browseoptions." - ")
    exe "sil! r! cat -- ".shellescape(tarfile,1)."|gzip -d -c -|".g:tar_cmd." -".g:tar_browseoptions." - "
-  elseif tarfile =~# '\.bz2$'
+  elseif tarfile =~# '\.\(bz2\|tbz\|tb2\)$'
 "   call Decho("3: exe silent r! bzip2 -d -c -- ".shellescape(tarfile,1)." | ".g:tar_cmd." -".g:tar_browseoptions." - ")
    exe "sil! r! bzip2 -d -c -- ".shellescape(tarfile,1)." | ".g:tar_cmd." -".g:tar_browseoptions." - "
-  elseif tarfile =~# '\.lzma$'
+  elseif tarfile =~# '\.\(lzma\|tlz\)$'
 "   call Decho("3: exe silent r! lzma -d -c -- ".shellescape(tarfile,1)." | ".g:tar_cmd." -".g:tar_browseoptions." - ")
    exe "sil! r! lzma -d -c -- ".shellescape(tarfile,1)." | ".g:tar_cmd." -".g:tar_browseoptions." - "
   elseif tarfile =~# '\.\(xz\|txz\)$'
index b5107782663100913c0f0fdf14302e61e8ba6fd6..9a5a73c3c190c327ca723fd5ff67b3e19bf90846 100644 (file)
@@ -1,7 +1,7 @@
 " vimball.vim : construct a file containing both paths and files
 " Author:      Charles E. Campbell, Jr.
-" Date:                Sep 26, 2011
-" Version:     34
+" Date:                Jan 17, 2012
+" Version:     35
 " GetLatestVimScripts: 1502 1 :AutoInstall: vimball.vim
 " Copyright: (c) 2004-2011 by Charles E. Campbell, Jr.
 "            The VIM LICENSE applies to Vimball.vim, and Vimball.txt
@@ -14,7 +14,7 @@
 if &cp || exists("g:loaded_vimball")
  finish
 endif
-let g:loaded_vimball = "v34"
+let g:loaded_vimball = "v35"
 if v:version < 702
  echohl WarningMsg
  echo "***warning*** this version of vimball needs vim 7.2"
@@ -767,6 +767,9 @@ fun! vimball#RestoreSettings()
 "  call Dret("RestoreSettings")
 endfun
 
+let &cpo = s:keepcpo
+unlet s:keepcpo
+
 " ---------------------------------------------------------------------
 " Modelines: {{{1
 " vim: fdm=marker
index c7b946dea75f5480e7dc15c5ac1d81ce18ef4a2b..ad5cce2ed3a26ddbab5d2a5176d0e41e2dec0ab3 100644 (file)
@@ -1,10 +1,10 @@
 " zip.vim: Handles browsing zipfiles
 "            AUTOLOAD PORTION
-" Date:                May 24, 2011
-" Version:     24
+" Date:                Jan 17, 2012
+" Version:     25
 " Maintainer:  Charles E Campbell, Jr <NdrOchip@ScampbellPfamily.AbizM-NOSPAM>
 " License:     Vim License  (see vim's :help license)
-" Copyright:    Copyright (C) 2005-2011 Charles E. Campbell, Jr. {{{1
+" Copyright:    Copyright (C) 2005-2012 Charles E. Campbell, Jr. {{{1
 "               Permission is hereby granted to use and distribute this code,
 "               with or without modifications, provided that this copyright
 "               notice is copied with it. Like anything else that's free,
@@ -19,7 +19,7 @@
 if &cp || exists("g:loaded_zip")
  finish
 endif
-let g:loaded_zip= "v24"
+let g:loaded_zip= "v25"
 if v:version < 702
  echohl WarningMsg
  echo "***warning*** this version of zip needs vim 7.2"
@@ -104,12 +104,12 @@ fun! zip#Browse(zipfile)
 
   " give header
   call append(0, ['" zip.vim version '.g:loaded_zip,
               \ '" Browsing zipfile '.a:zipfile,
               \ '" Select a file with cursor and press ENTER'])
\                '" Browsing zipfile '.a:zipfile,
\                '" Select a file with cursor and press ENTER'])
   keepj $
 
 "  call Decho("exe silent r! ".g:zip_unzipcmd." -l -- ".s:Escape(a:zipfile,1))
-  exe "silent r! ".g:zip_unzipcmd." -Z -1 -- ".s:Escape(a:zipfile,1)
+  exe "keepj sil! r! ".g:zip_unzipcmd." -Z -1 -- ".s:Escape(a:zipfile,1)
   if v:shell_error != 0
    redraw!
    echohl WarningMsg | echo "***warning*** (zip#Browse) ".fnameescape(a:zipfile)." is not a zip file" | echohl None
diff --git a/runtime/compiler/erlang.vim b/runtime/compiler/erlang.vim
new file mode 100644 (file)
index 0000000..867ba6b
--- /dev/null
@@ -0,0 +1,11 @@
+" Vim compiler file
+" Compiler:    Erlang
+" Maintainer:  none, please volunteer!
+" Last Change: 2012 Jan 20
+
+if exists("current_compiler")
+  finish
+endif
+let current_compiler = "erlang"
+
+" TODO
index 8c7f647151ad4736637b3370b0ea5b9c54e7b7ec..ff0b403eef044d570130eed1961c82fe42627e43 100644 (file)
@@ -1,4 +1,4 @@
-*autocmd.txt*   For Vim version 7.3.  Last change: 2011 Oct 26
+*autocmd.txt*   For Vim version 7.3.  Last change: 2012 Jan 20
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -699,7 +699,8 @@ MenuPopup                   Just before showing the popup menu (under the
 QuickFixCmdPre                 Before a quickfix command is run (|:make|,
                                |:lmake|, |:grep|, |:lgrep|, |:grepadd|,
                                |:lgrepadd|, |:vimgrep|, |:lvimgrep|,
-                               |:vimgrepadd|, |:lvimgrepadd|, |:cscope|).
+                               |:vimgrepadd|, |:lvimgrepadd|, |:cscope|,
+                               |:helpgrep|, |:lhelpgrep|).
                                The pattern is matched against the command
                                being run.  When |:grep| is used but 'grepprg'
                                is set to "internal" it still matches "grep".
index 7cfdd5b221d9bfbc22652b291a27339b0ea5d170..0a4c03af54bb09c3ccb949e5f2e84812e4f1b903 100644 (file)
@@ -1,4 +1,4 @@
-*develop.txt*   For Vim version 7.3.  Last change: 2008 Dec 17
+*develop.txt*   For Vim version 7.3.  Last change: 2012 Jan 10
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -232,6 +232,17 @@ time               shadows global declaration
 new            C++ reserved keyword
 try            Borland C++ doesn't like it to be used as a variable.
 
+clear          Mac curses.h
+echo           Mac curses.h
+instr          Mac curses.h
+meta           Mac curses.h
+newwin         Mac curses.h
+nl             Mac curses.h
+overwrite      Mac curses.h
+refresh                Mac curses.h
+scroll         Mac curses.h
+typeahead      Mac curses.h
+
 basename()     GNU string function
 dirname()      GNU string function
 get_env_value()        Linux system function
index c7b3df07c4429e4e5727a0028bdf0f25395e3cbf..bfb30a8b6b02bc174c612240df4ba4ff6859f5bb 100644 (file)
@@ -1,4 +1,4 @@
-*mlang.txt*     For Vim version 7.3.  Last change: 2010 Dec 11
+*mlang.txt*     For Vim version 7.3.  Last change: 2012 Jan 15
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -59,7 +59,7 @@ use of "-" and "_".
                        system.  Some systems accept aliases like "en" or
                        "en_US", but some only accept the full specification
                        like "en_US.ISO_8859-1".  On Unix systems you can use
-                       the this command to see what locales are supported: >
+                       this command to see what locales are supported: >
                                :!locale -a
 <                      With the "messages" argument the language used for
                        messages is set.  This can be different when you want,
index 5af206f25b551deb96c8308e1a4ce3deb0490653..e7d6f01846b7263898f67f60bb970bb0b3fbd0d9 100644 (file)
@@ -1,4 +1,4 @@
-*options.txt*  For Vim version 7.3.  Last change: 2011 Dec 15
+*options.txt*  For Vim version 7.3.  Last change: 2012 Jan 13
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -301,9 +301,8 @@ You will not get back the 'list' value as it was the last time you edited
                        copying the value.
                        {not in Vi}
 
-:se[t] {option}<       Set the local value of {option} to its global value by
-                       making it empty.  Only makes sense for |global-local|
-                       options.
+:se[t] {option}<       For |global-local| options: Remove the local value of
+                       {option}, so that the global value will be used.
                        {not in Vi}
 
                                                        *:setg* *:setglobal*
index 86e3cdd0ce63cfa99f391524265b1206fe9eab5c..5543573eba2a003ba432614f2e4b61eccd32152d 100644 (file)
@@ -1,15 +1,21 @@
-*pi_getscript.txt*  For Vim version 7.0.  Last change: 2011 May 31
+*pi_getscript.txt*  For Vim version 7.0.  Last change: 2011 Jun 23
 >
                GETSCRIPT REFERENCE MANUAL  by Charles E. Campbell, Jr.
 <
 Authors:  Charles E. Campbell, Jr.  <NdrOchip@ScampbellPfamilyA.Mbiz>
          (remove NOSPAM from the email address)
                                                *GetLatestVimScripts-copyright*
-Copyright: (c) 2004-2010 by Charles E. Campbell, Jr.   *glvs-copyright*
-           The VIM LICENSE applies to getscript.vim and
-           pi_getscript.txt (see |copyright|) except use
-           "getscript" instead of "Vim".  No warranty, express or implied.
-          Use At-Your-Own-Risk.
+Copyright: (c) 2004-2012 by Charles E. Campbell, Jr.   *glvs-copyright*
+       The VIM LICENSE (see |copyright|) applies to the files in this
+       package, including getscriptPlugin.vim, getscript.vim,
+       GetLatestVimScripts.dist, and pi_getscript.txt, except use "getscript"
+       instead of "VIM".  Like anything else that's free, getscript and its
+       associated files are provided *as is* and comes with no warranty of
+       any kind, either expressed or implied.  No guarantees of
+       merchantability.  No guarantees of suitability for any purpose.  By
+       using this plugin, you agree that in no event will the copyright
+       holder be liable for any damages resulting from the use of this
+       software. Use at your own risk!
 
 Getscript is a plugin that simplifies retrieval of the latest versions of the
 scripts that you yourself use!  Typing |:GLVS| will invoke getscript; it will
@@ -374,6 +380,8 @@ The AutoInstall process will:
 ==============================================================================
 9. GetLatestVimScripts History         *getscript-history* *glvs-hist* {{{1
 
+v44 Jun 23, 2011 : * handles additional decompression options for tarballs
+                     (tgz taz tbz txz)
 v33 May 31, 2011 : * using fnameescape() instead of escape()
                   * *.xz support
 v32 Jun 19, 2010 : * (Jan Steffens) added support for xz compression
index ab98f4a8cf10b45864e5eb8cb7aae955a74058e6..1ff4d7c4ca3e5feb789d603a2fbbd8e5e869f2fd 100644 (file)
@@ -1,4 +1,4 @@
-*pi_tar.txt*   For Vim version 7.3.  Last change: 2011 May 31
+*pi_tar.txt*   For Vim version 7.3.  Last change: 2012 Jan 17
 
                       +====================+
                       | Tar File Interface |
@@ -6,9 +6,16 @@
 
 Author:  Charles E. Campbell, Jr.  <NdrOchip@ScampbellPfamily.AbizM>
          (remove NOSPAM from Campbell's email first)
-Copyright 2005-2010: The GPL (gnu public license) applies to   *tar-copyright*
-          tar.vim, tarPlugin.vim, and pi_tar.txt.
-          No warranty, express or implied.  Use At-Your-Own-Risk.
+Copyright 2005-2012:                                   *tar-copyright*
+       The VIM LICENSE (see |copyright|) applies to the files in this
+       package, including tarPlugin.vim, tar.vim, and pi_tar.txt.  Like
+       anything else that's except use "tar.vim" instead of "VIM".  Like
+       anything else that's free, tar.vim and its associated files are
+       provided *as is* and comes with no warranty of any kind, either
+       expressed or implied.  No guarantees of merchantability.  No
+       guarantees of suitability for any purpose.  By using this plugin, you
+       agree that in no event will the copyright holder be liable for any
+       damages resulting from the use of this software. Use at your own risk!
 
 ==============================================================================
 1. Contents                                    *tar* *tar-contents*
@@ -83,6 +90,7 @@ Copyright 2005-2010: The GPL (gnu public license) applies to  *tar-copyright*
 4. History                                             *tar-history*
 
 
+   v28 Jun 23, 2011 * a few more decompression options (tbz tb2 txz)
    v27 May 31, 2011 * moved cygwin detection before g:tar_copycmd handling
                    * inserted additional |:keepj| modifiers
                    * changed silent  to  sil!  (|:silent|)
index fd0006df9f39fed85195d4d8a5162b96648f5f63..f961ab118d6d0a3f1de79fb514babeb3d9b6c34a 100644 (file)
@@ -1,4 +1,4 @@
-*pi_vimball.txt*       For Vim version 7.3.  Last change: 2011 Sep 26
+*pi_vimball.txt*       For Vim version 7.3.  Last change: 2012 Jan 17
 
                               ----------------
                               Vimball Archiver
@@ -6,11 +6,16 @@
 
 Author:  Charles E. Campbell, Jr.  <NdrOchip@ScampbellPfamily.AbizM>
          (remove NOSPAM from Campbell's email first)
-Copyright: (c) 2004-2011 by Charles E. Campbell, Jr.   *Vimball-copyright*
-          The VIM LICENSE applies to Vimball.vim, and Vimball.txt
-          (see |copyright|) except use "Vimball" instead of "Vim".
-          No warranty, express or implied.
-          Use At-Your-Own-Risk!
+Copyright: (c) 2004-2012 by Charles E. Campbell, Jr.   *Vimball-copyright*
+       The VIM LICENSE (see |copyright|) applies to the files in this
+       package, including vimballPlugin.vim, vimball.vim, and pi_vimball.txt.
+       except use "vimball" instead of "VIM".  Like anything else that's free,
+       vimball.vim and its associated files are provided *as is* and comes with
+       no warranty of any kind, either expressed or implied.  No guarantees
+       of merchantability.  No guarantees of suitability for any purpose.  By
+       using this plugin, you agree that in no event will the copyright
+       holder be liable for any damages resulting from the use of this
+       software. Use at your own risk!
 
 ==============================================================================
 1. Contents                            *vba* *vimball* *vimball-contents*
index 13c604cfda13f1cda880c4d55519500ab24b0793..d976055ea16f5d1c35e1308fc89cad96a567c3e0 100644 (file)
@@ -1,4 +1,4 @@
-*pi_zip.txt*   For Vim version 7.3.  Last change: 2011 Aug 14
+*pi_zip.txt*   For Vim version 7.3.  Last change: 2012 Jan 17
 
                                +====================+
                                | Zip File Interface |
@@ -7,14 +7,15 @@
 Author:  Charles E. Campbell, Jr.  <NdrOchip@ScampbellPfamily.AbizM>
          (remove NOSPAM from Campbell's email first)
 Copyright: Copyright (C) 2005-2011 Charles E Campbell, Jr *zip-copyright*
-           Permission is hereby granted to use and distribute this code,
-          with or without modifications, provided that this copyright
-          notice is copied with it. Like anything else that's free,
-          zip.vim, zipPlugin.vim, and pi_zip.txt are provided *as is*
-          and it comes with no warranty of any kind, either expressed or
-          implied. By using this plugin, you agree that in no event will
-          the copyright holder be liable for any damages resulting from
-          the use of this software.
+       The VIM LICENSE (see |copyright|) applies to the files in this
+       package, including zipPlugin.vim, zip.vim, and pi_zip.vim.  except use
+       "zip.vim" instead of "VIM".  Like anything else that's free, zip.vim
+       and its associated files are provided *as is* and comes with no
+       warranty of any kind, either expressed or implied.  No guarantees of
+       merchantability.  No guarantees of suitability for any purpose.  By
+       using this plugin, you agree that in no event will the copyright
+       holder be liable for any damages resulting from the use of this
+       software. Use at your own risk!
 
 ==============================================================================
 1. Contents                                            *zip* *zip-contents*
@@ -73,7 +74,7 @@ Copyright: Copyright (C) 2005-2011 Charles E Campbell, Jr *zip-copyright*
 ==============================================================================
 3. Additional Extensions                                       *zip-extension*
 
-   Apparently there are a number of archivers who generate zip files that
+   Apparently there are a number of archivers which generate zip files that
    don't use the .zip extension (.jar, .xpi, etc).  To handle such files,
    place a line in your <.vimrc> file: >
 
@@ -84,6 +85,8 @@ Copyright: Copyright (C) 2005-2011 Charles E Campbell, Jr *zip-copyright*
 
 ==============================================================================
 4. History                                                     *zip-history* {{{1
+   v25 Jun 27, 2011 * using keepj with unzip -Z
+                     (consistent with the -p variant)
    v24 Jun 21, 2010 * (Cédric Bosdonnat) unzip seems to need its filenames
                      fnameescape'd as well as shellquote'd
                    * (Motoya Kurotsu) inserted keepj before 0d to protect
index 772390463d97a8a49d40bb39b68457a10a63a8ae..fa032fc09f3bb309fb557e36b5d9e447c6277afb 100644 (file)
@@ -1,4 +1,4 @@
-*syntax.txt*   For Vim version 7.3.  Last change: 2012 Jan 04
+*syntax.txt*   For Vim version 7.3.  Last change: 2012 Jan 20
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -1161,7 +1161,7 @@ should be appropriate for most users most of the time because Fortran 2008 is
 almost a superset of previous versions (Fortran 2003, 95, 90, and 77). 
 
 Fortran source code form ~
-Fortran 9x code can be in either fixed or free source form.  Note that the
+Fortran code can be in either fixed or free source form.  Note that the
 syntax highlighting will not be correct if the form is incorrectly set.
 
 When you create a new fortran file, the syntax script assumes fixed source
@@ -1242,54 +1242,54 @@ recognized, as will construct names at the end of a do, if, select or forall
 construct.
 
 Non-default fortran dialects ~
-The syntax script supports five Fortran dialects: f95, f90, f77, the Lahey
-subset elf90, and the Imagine1 subset F. However, these dialects are outdated;
-the next version of the syntax script will support only two variants: modern
-Fortran and legacy Fortran.
-
-If you use f77 with extensions, even common ones like do/enddo loops, do/while
-loops and free source form that are supported by most f77 compilers including
-g77 (GNU Fortran), then you will probably find the default highlighting
-satisfactory.  However, if you use strict f77 with no extensions, not even free
-source form or the MIL STD 1753 extensions, then the advantages of setting the
-dialect to f77 are that names such as SUM are recognized as user variable
-names and not highlighted as f9x intrinsic functions, that obsolete constructs
-such as ASSIGN statements are not highlighted as todo items, and that fixed
-source form will be assumed.
-
-If you use elf90 or F, the advantage of setting the dialect appropriately is
-that f90 features excluded from these dialects will be highlighted as todo
-items and that free source form will be assumed as required for these
-dialects.
-
-The dialect can be selected by setting the variable fortran_dialect.  The
-permissible values of fortran_dialect are case-sensitive and must be "f95",
-"f90", "f77", "elf" or "F".  Invalid values of fortran_dialect are ignored.
-
-If all your fortran files use the same dialect, set fortran_dialect in your
-.vimrc prior to your syntax on statement.  If the dialect depends upon the file
-extension, then it is most convenient to set it in a ftplugin file.  For more
-information on ftplugin files, see |ftplugin|.  For example, if all your
-fortran files with an .f90 extension are written in the elf subset, your
-ftplugin file should contain the code >
+The syntax script supports two Fortran dialects: f08 and F. You will probably
+find the default highlighting (f08) satisfactory.  A few legacy constructs
+deleted or declared obsolescent in the 2008 standard are highlighted as todo
+items.
+
+If you use F, the advantage of setting the dialect appropriately is that
+other legacy features excluded from F will be highlighted as todo items and
+that free source form will be assumed. 
+
+The dialect can be selected in various ways.  If all your fortran files use
+the same dialect, set the global variable fortran_dialect in your .vimrc prior
+to your syntax on statement.  The case-sensitive, permissible values of
+fortran_dialect are "f08" or "F".  Invalid values of fortran_dialect are
+ignored.
+
+If the dialect depends upon the file extension, then it is most convenient to
+set a buffer-local variable in a ftplugin file.  For more information on
+ftplugin files, see |ftplugin|.  For example, if all your fortran files with
+an .f90 extension are written in the F subset, your ftplugin file should
+contain the code >
     let s:extfname = expand("%:e")
     if s:extfname ==? "f90"
-       let fortran_dialect="elf"
+       let b:fortran_dialect="F"
     else
-       unlet! fortran_dialect
+       unlet! b:fortran_dialect
     endif
 Note that this will work only if the "filetype plugin indent on" command
 precedes the "syntax on" command in your .vimrc file.
 
 Finer control is necessary if the file extension does not uniquely identify
-the dialect.  You can override the default dialect, on a file-by-file basis, by
-including a comment with the directive "fortran_dialect=xx" (where xx=f77 or
-elf or F or f90 or f95) in one of the first three lines in your file.  For
-example, your older .f files may be written in extended f77 but your newer
-ones may be F codes, and you would identify the latter by including in the
-first three lines of those files a Fortran comment of the form >
+the dialect.  You can override the default dialect, on a file-by-file basis,
+by including a comment with the directive "fortran_dialect=xx" (where xx=F or
+f08) in one of the first three lines in your file.  For example, your older .f
+files may be legacy code but your newer ones may be F codes, and you would
+identify the latter by including in the first three lines of those files a
+Fortran comment of the form >
   ! fortran_dialect=F
-F overrides elf if both directives are present.
+
+For previous versions of the syntax, you may have set fortran_dialect to the
+now-obsolete values "f77", "f90", "f95", or "elf". Such settings will be
+silently handled as "f08". Users of "elf" may wish to experiment with "F"
+instead. 
+
+The syntax/fortran.vim script contains embedded comments that tell you how to
+comment and/or uncomment some lines to (a) activate recognition of some
+non-standard, vendor-supplied intrinsics and (b) to prevent features deleted
+or declared obsolescent in the 2008 standard from being highlighted as todo
+items. 
 
 Limitations ~
 Parenthesis checking does not catch too few closing parentheses.  Hollerith
index e80685a6a4ed65a5ffbf04e87ae664a7648b7ec7..53f4caa8d1682f9f59d816c7c17656009493afa7 100644 (file)
@@ -1243,6 +1243,7 @@ $VIMRUNTIME       starting.txt    /*$VIMRUNTIME*
 +writebackup   various.txt     /*+writebackup*
 +xfontset      various.txt     /*+xfontset*
 +xim   various.txt     /*+xim*
++xpm_w32       various.txt     /*+xpm_w32*
 +xsmp  various.txt     /*+xsmp*
 +xsmp_interact various.txt     /*+xsmp_interact*
 +xterm_clipboard       various.txt     /*+xterm_clipboard*
@@ -4791,6 +4792,7 @@ beval_col-variable        eval.txt        /*beval_col-variable*
 beval_lnum-variable    eval.txt        /*beval_lnum-variable*
 beval_text-variable    eval.txt        /*beval_text-variable*
 beval_winnr-variable   eval.txt        /*beval_winnr-variable*
+bitwise-function       usr_41.txt      /*bitwise-function*
 blockwise-examples     visual.txt      /*blockwise-examples*
 blockwise-operators    visual.txt      /*blockwise-operators*
 blockwise-register     change.txt      /*blockwise-register*
@@ -7041,8 +7043,8 @@ objects   index.txt       /*objects*
 obtaining-exted        netbeans.txt    /*obtaining-exted*
 ocaml.vim      syntax.txt      /*ocaml.vim*
 octal  eval.txt        /*octal*
+octal-nrformats        options.txt     /*octal-nrformats*
 octal-number   eval.txt        /*octal-number*
-octal-number   options.txt     /*octal-number*
 oldfiles-variable      eval.txt        /*oldfiles-variable*
 ole-activation if_ole.txt      /*ole-activation*
 ole-eval       if_ole.txt      /*ole-eval*
@@ -8357,13 +8359,27 @@ vimdev  intro.txt       /*vimdev*
 vimdiff        diff.txt        /*vimdiff*
 vimfiles       options.txt     /*vimfiles*
 viminfo        starting.txt    /*viminfo*
+viminfo-!      options.txt     /*viminfo-!*
+viminfo-%      options.txt     /*viminfo-%*
+viminfo-'      options.txt     /*viminfo-'*
+viminfo-/      options.txt     /*viminfo-\/*
+viminfo-:      options.txt     /*viminfo-:*
+viminfo-<      options.txt     /*viminfo-<*
+viminfo-@      options.txt     /*viminfo-@*
+viminfo-c      options.txt     /*viminfo-c*
 viminfo-encoding       starting.txt    /*viminfo-encoding*
 viminfo-errors starting.txt    /*viminfo-errors*
+viminfo-f      options.txt     /*viminfo-f*
 viminfo-file   starting.txt    /*viminfo-file*
 viminfo-file-marks     starting.txt    /*viminfo-file-marks*
 viminfo-file-name      starting.txt    /*viminfo-file-name*
+viminfo-h      options.txt     /*viminfo-h*
+viminfo-n      options.txt     /*viminfo-n*
+viminfo-quote  options.txt     /*viminfo-quote*
+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-write  starting.txt    /*viminfo-write*
 vimrc  starting.txt    /*vimrc*
 vimrc-filetype usr_05.txt      /*vimrc-filetype*
index 49e245f23a6c458388ad8ca0f1f978b71a3baa4f..4d343ccf35376a3bfff846894456c8aefe7f7657 100644 (file)
@@ -1,4 +1,4 @@
-*todo.txt*      For Vim version 7.3.  Last change: 2012 Jan 10
+*todo.txt*      For Vim version 7.3.  Last change: 2012 Jan 20
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -38,32 +38,35 @@ Go through more coverity reports.
 
 Discussion about canonicalization of Hebrew. (Ron Aaron, 2011 April 10)
 
-Compilation problem on z/OS, POUND is equal to '#', duplicate case.
-(Stephen Bovy, 2011 Dec 16)
-
 Once syntax and other runtime files have been fixed: add "set cp" to
 check.vim.  Use a function to run both with 'cp' and 'nocp'.
 
-Patch to fix regression caused by 7.3.251. (Christian Brabandt, 2012 Jan 5)
-
-Patch to make ":helpgrep" work with non-UTF-8 encoding. (Yasuhiro Matsumoto,
-2011 Nov 28, update later that day)
+Win32: When the taskbar is at the top of the screen creating the tabbar causes
+the window to move unnecessarily. (William E. Skeith III, 2012 Jan 12)
+Patch: 2012 Jan 13
 
-Patch to fix messing up terminal when redrawing too early. (Christian
-Brabandt, 2012 Jan 5)
+Patch for using DBCS encoding in user command. (Yasuhiro Matsumoto, 2012 Jan
+15)  Update Jan 17.
 
-Patch to fix member confusion in Lua interface. (Taro Muraoka, 2012 Jan 8)
-Update Jan 9.
-Carvalho will merge the patch.
+Repeating search history entries. (Edwin Steiner, 2012 Jan 17)
+Jan 18: Caused by patch 7.3.265?
 
-Possible quickfix bug: Audrius Kažukauskas, 2012 Jan 6
+Hang in using VimEnter. (Alex Efros, 2012 Jan 14)
 
-Problem reading german spell file? (Jan Stocker, 2012 Jan 5)
+":cd" doesn't work when current directory path contains wildcards.
+finddir() has the same problem.  (Yukihiro Nakadaira, 2012 Jan 10)
 
 Win32: When a directory name contains an exclamation mark, completion doesn't
 complete the contents of the directory.  No escaping for the "!"? (Jan
 Stocker, 2012 Jan 5)
 
+Patch to add support for Solaris ZFS ACLs. (Danek Duvall, 2012 Jan 13)
+
+Patch to make continued lines work faster. (Yasuhiro Matsumoto, 2012 Jan 11)
+
+Also an idea to make join() faster. (Yasuhiro Matsumoto, 2012 Jan 11)
+Another one from Taro Muraoka, 2012 Jan 12.
+
 ":doau" says it triggers modeline.  Should this only happen for events used
 when loading a buffer?  (Kana Natsuno, 2011 Nov 7)
 
@@ -103,6 +106,10 @@ overwritten. (Felipe G. Nievinski, 2011 Dec 22)
     side effect.
 Patch by Kana Natsuno, 2011 Nov 12.
 
+Patch to fix member confusion in Lua interface. (Taro Muraoka, 2012 Jan 8)
+Update Jan 9.
+Carvalho merged the patch:  New version 2012 Jan 19.
+
 Patch for option in 'cino' to specify more indent for continued conditions.
 (Lech Lorens, 2011 Nov 27)
 Isn't this already possible?
@@ -136,6 +143,8 @@ And one for gui_x11.txt.
 
 Problem with l: dictionary being locked in a function. (ZyX, 2011 Jul 21)
 
+Issue 48: foldopen error can't be caught by try/catch
+
 Patch to sort functions starting with '<' after others.  Omit dict functions,
 they can't be called. (Yasuhiro Matsumoto, 2011 Oct 11)
 
@@ -180,6 +189,9 @@ New feature, requires testing.  Made some remarks.
 Win32: Patch for alpha-blended icons and toolbar height. (Sergiu Dotenco, 2011
 Sep 17)  Asked for feedback from others.
 
+Win32: Cannot cd into a directory that starts with a space. (Andy Wokula, 2012
+Jan 19)
+
 Need to escape $HOME on Windows?  (ZyX, 2011 Jul 21)
 
 "2" in 'formatopions' not working in comments. (Christian Corneliussen, 2011
@@ -803,8 +815,6 @@ the buffer to be unmodified.
 Unfinished patch by Ian Kelling, 2008 Jul 11.  Followup Jul 14, need to have
 another look at it.
 
-Patch for c.vim and cpp.vim syntax files. (Chung-chieh Shan, 2008 Nov 26)
-
 c.vim: XXX in a comment is colored yellow, but not when it's after "#if 0".
 (Ilya Dogolazky, 2009 Aug 7)
 
index ebb10fb3b2dc3376d742e530b78c26ab18a9081e..b039e69d59b7da5af7542e23a8c99478ab01981f 100644 (file)
@@ -1,4 +1,4 @@
-*various.txt*   For Vim version 7.3.  Last change: 2012 Jan 04
+*various.txt*   For Vim version 7.3.  Last change: 2012 Jan 15
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -363,30 +363,30 @@ N  *+multi_lang*          non-English language support |multi-lang|
 m  *+mzscheme*         Mzscheme interface |mzscheme|
 m  *+mzscheme/dyn*     Mzscheme interface |mzscheme-dynamic| |/dyn|
 m  *+netbeans_intg*    |netbeans|
-m  *+ole*              Win32 GUI only: |ole-interface|
-N  *+path_extra*       Up/downwards search in 'path' and 'tags'
+m  *+ole*                      Win32 GUI only: |ole-interface|
+N  *+path_extra*               Up/downwards search in 'path' and 'tags'
 m  *+perl*             Perl interface |perl|
 m  *+perl/dyn*         Perl interface |perl-dynamic| |/dyn|
 N  *+persistent_undo*  Persistent undo |undo-persistence|
-   *+postscript*       |:hardcopy| writes a PostScript file
+   *+postscript*               |:hardcopy| writes a PostScript file
 N  *+printer*          |:hardcopy| command
 H  *+profile*          |:profile| command
 m  *+python*           Python 2 interface |python|
-m  *+python/dyn*       Python 2 interface |python-dynamic| |/dyn|
+m  *+python/dyn*               Python 2 interface |python-dynamic| |/dyn|
 m  *+python3*          Python 3 interface |python|
-m  *+python3/dyn*      Python 3 interface |python-dynamic| |/dyn|
+m  *+python3/dyn*              Python 3 interface |python-dynamic| |/dyn|
 N  *+quickfix*         |:make| and |quickfix| commands
 N  *+reltime*          |reltime()| function, 'hlsearch'/'incsearch' timeout,
                        'redrawtime' option
 B  *+rightleft*                Right to left typing |'rightleft'|
 m  *+ruby*             Ruby interface |ruby|
 m  *+ruby/dyn*         Ruby interface |ruby-dynamic| |/dyn|
-N  *+scrollbind*       |'scrollbind'|
+N  *+scrollbind*               |'scrollbind'|
 B  *+signs*            |:sign|
-N  *+smartindent*      |'smartindent'|
+N  *+smartindent*              |'smartindent'|
 m  *+sniff*            SniFF interface |sniff|
-N  *+startuptime*      |--startuptime| argument
-N  *+statusline*       Options 'statusline', 'rulerformat' and special
+N  *+startuptime*              |--startuptime| argument
+N  *+statusline*               Options 'statusline', 'rulerformat' and special
                        formats of 'titlestring' and 'iconstring'
 m  *+sun_workshop*     |workshop|
 N  *+syntax*           Syntax highlighting |syntax|
diff --git a/runtime/ftplugin/erlang.vim b/runtime/ftplugin/erlang.vim
new file mode 100644 (file)
index 0000000..4899020
--- /dev/null
@@ -0,0 +1,150 @@
+" Vim ftplugin file
+" Language:     Erlang
+" Author:       Oscar Hellström <oscar@oscarh.net>
+" Contributors: Ricardo Catalinas Jiménez <jimenezrick@gmail.com>
+"               Eduardo Lopez (http://github.com/tapichu)
+" License:      Vim license
+" Version:      2011/11/21
+
+if exists('b:did_ftplugin')
+       finish
+else
+       let b:did_ftplugin = 1
+endif
+
+if exists('s:did_function_definitions')
+       call s:SetErlangOptions()
+       finish
+else
+       let s:did_function_definitions = 1
+endif
+
+if !exists('g:erlang_keywordprg')
+       let g:erlang_keywordprg = 'erl -man'
+endif
+
+if !exists('g:erlang_folding')
+       let g:erlang_folding = 0
+endif
+
+" Local settings
+function s:SetErlangOptions()
+       compiler erlang
+       if version >= 700
+               setlocal omnifunc=erlang_complete#Complete
+       endif
+
+       if g:erlang_folding
+               setlocal foldmethod=expr
+               setlocal foldexpr=GetErlangFold(v:lnum)
+               setlocal foldtext=ErlangFoldText()
+       endif
+
+       setlocal comments=:%%%,:%%,:%
+       setlocal commentstring=%%s
+
+       setlocal formatoptions+=ro
+       let &l:keywordprg = g:erlang_keywordprg
+endfunction
+
+" Define folding functions
+if !exists('*GetErlangFold')
+       " Folding params
+       let s:erlang_fun_begin  = '^\a\w*(.*$'
+       let s:erlang_fun_end    = '^[^%]*\.\s*\(%.*\)\?$'
+       let s:erlang_blank_line = '^\s*\(%.*\)\?$'
+
+       " Auxiliary fold functions
+       function s:GetNextNonBlank(lnum)
+               let lnum = nextnonblank(a:lnum + 1)
+               let line = getline(lnum)
+               while line =~ s:erlang_blank_line && 0 != lnum
+                       let lnum = nextnonblank(lnum + 1)
+                       let line = getline(lnum)
+               endwhile
+               return lnum
+       endfunction
+
+       function s:GetFunName(str)
+               return matchstr(a:str, '^\a\w*(\@=')
+       endfunction
+
+       function s:GetFunArgs(str, lnum)
+               let str = a:str
+               let lnum = a:lnum
+               while str !~ '->\s*\(%.*\)\?$'
+                       let lnum = s:GetNextNonBlank(lnum)
+                       if 0 == lnum " EOF
+                               return ''
+                       endif
+                       let str .= getline(lnum)
+               endwhile
+               return matchstr(str, 
+                       \ '\(^(\s*\)\@<=.*\(\s*)\(\s\+when\s\+.*\)\?\s\+->\s*\(%.*\)\?$\)\@=')
+       endfunction
+
+       function s:CountFunArgs(arguments)
+               let pos = 0
+               let ac = 0 " arg count
+               let arguments = a:arguments
+               
+               " Change list / tuples into just one A(rgument)
+               let erlang_tuple = '{\([A-Za-z_,|=\-\[\]]\|\s\)*}'
+               let erlang_list  = '\[\([A-Za-z_,|=\-{}]\|\s\)*\]'
+
+               " FIXME: Use searchpair?
+               while arguments =~ erlang_tuple
+                       let arguments = substitute(arguments, erlang_tuple, 'A', 'g')
+               endwhile
+               " FIXME: Use searchpair?
+               while arguments =~ erlang_list
+                       let arguments = substitute(arguments, erlang_list, 'A', 'g')
+               endwhile
+               
+               let len = strlen(arguments)
+               while pos < len && pos > -1
+                       let ac += 1
+                       let pos = matchend(arguments, ',\s*', pos)
+               endwhile
+               return ac
+       endfunction
+
+       " Main fold function
+       function GetErlangFold(lnum)
+               let lnum = a:lnum
+               let line = getline(lnum)
+
+               if line =~ s:erlang_fun_end
+                       return '<1'
+               endif
+
+               if line =~ s:erlang_fun_begin && foldlevel(lnum - 1) == 1
+                       return '1'
+               endif
+
+               if line =~ s:erlang_fun_begin
+                       return '>1'
+               endif
+
+               return '='
+       endfunction
+
+       " Erlang fold description (foldtext function)
+       function ErlangFoldText()
+               let foldlen = v:foldend - v:foldstart
+               if 1 < foldlen
+                       let lines = 'lines'
+               else
+                       let lines = 'line'
+               endif
+               let line = getline(v:foldstart)
+               let name = s:GetFunName(line)
+               let arguments = s:GetFunArgs(strpart(line, strlen(name)), v:foldstart)
+               let argcount = s:CountFunArgs(arguments)
+               let retval = '+' . v:folddashes . ' ' . name . '/' . argcount
+               let retval .= ' (' . foldlen . ' ' . lines . ')'
+               return retval
+       endfunction
+endif
+
+call s:SetErlangOptions()
index 765f6b471e31124a4969ac4d7f4b73ff9175fcba..7d4671d8754444ae61093863ea869f71a788cb0b 100644 (file)
@@ -1,8 +1,8 @@
 " Vim filetype plugin file
 " Language:    Logcheck
 " Maintainer:  Debian Vim Maintainers <pkg-vim-maintainers@lists.alioth.debian.org>
-" Last Change: 2010 Jul 29
-" License:     GNU GPL, version 2.0
+" Last Change: 2012 Jan 15
+" License:     Vim License
 " URL: http://hg.debian.org/hg/pkg-vim/vim/file/unstable/runtime/ftplugin/logcheck.vim
 
 if exists("b:did_ftplugin")
index 56f4e249cf1f1903eab405cc09fa438133a9c351..f7c96a24ea93d67ebc6b434e3a6be449b8183a90 100644 (file)
@@ -1,7 +1,7 @@
 " Vim filetype plugin file
-" Language:     PostScript
-" Maintainer:   Mike Williams <mrw@eandem.co.uk>
-" Last Change:  27th June 2002
+" Language:    PostScript
+" Maintainer:  Mike Williams <mrw@eandem.co.uk>
+" Last Change:  16th January 2012
 
 " Only do this when not done yet for this buffer
 if exists("b:did_ftplugin")
@@ -11,6 +11,9 @@ endif
 " Don't load another plugin for this buffer
 let b:did_ftplugin = 1
 
+let s:cpo_save = &cpo
+set cpo&vim
+
 " PS comment formatting
 setlocal comments=b:%
 setlocal formatoptions-=t formatoptions+=rol
@@ -21,11 +24,12 @@ if !exists("b:match_words")
   let b:match_words = '<<:>>,\<begin\>:\<end\>,\<save\>:\<restore\>,\<gsave\>:\<grestore\>'
 endif
 
-set cpo-=C
-
 " Define patterns for the browse file filter
 if has("gui_win32") && !exists("b:browsefilter")
   let b:browsefilter = "PostScript Files (*.ps)\t*.ps\n" .
     \ "EPS Files (*.eps)\t*.eps\n" .
     \ "All Files (*.*)\t*.*\n"
 endif
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
index 5ce3f82e0e1139cef2fc40282483db7eca086f13..930f5d13254303c1c4da14af7ee14e96f4eea4df 100644 (file)
 " Vim indent file
 " Language:     Erlang
-" Maintainer:   Csaba Hoch <csaba.hoch@gmail.com>
-" Contributor:  Edwin Fine <efine145_nospam01 at usa dot net>
-" Last Change:  2008 Mar 12
-
-" Only load this indent file when no other was loaded.
+" Author:       Csaba Hoch <csaba.hoch@gmail.com>
+" Contributors: Edwin Fine <efine145_nospam01 at usa dot net>
+"               Pawel 'kTT' Salata <rockplayer.pl@gmail.com>
+"               Ricardo Catalinas Jiménez <jimenezrick@gmail.com>
+" License:      Vim license
+" Version:      2011/09/06
+
+" Only load this indent file when no other was loaded
 if exists("b:did_indent")
-  finish
+    finish
+else
+    let b:did_indent = 1
 endif
-let b:did_indent = 1
 
 setlocal indentexpr=ErlangIndent()
 setlocal indentkeys+==after,=end,=catch,=),=],=}
 
-" Only define the functions once.
+" Only define the functions once
 if exists("*ErlangIndent")
-   finish
+    finish
 endif
 
-" The function go through the whole line, analyses it and sets the indentation
-" (ind variable).
-" l: the number of the line to be examined.
-function s:ErlangIndentAtferLine(l)
-    let i = 0 " the index of the current character in the line
-    let length = strlen(a:l) " the length of the line
+" The function goes through the whole line, analyses it and returns the
+" indentation level.
+"
+" line: the line to be examined
+" return: the indentation level of the examined line
+function s:ErlangIndentAfterLine(line)
+    let linelen = strlen(a:line) " the length of the line
+    let i       = 0 " the index of the current character in the line
     let ind = 0 " how much should be the difference between the indentation of
                 " the current line and the indentation of the next line?
                 " e.g. +1: the indentation of the next line should be equal to
                 " the indentation of the current line plus one shiftwidth
-    let lastFun = 0 " the last token was a 'fun'
-    let lastReceive = 0 " the last token was a 'receive'; needed for 'after'
-    let lastHashMark = 0 " the last token was a 'hashmark'
+    let last_fun      = 0 " the last token was a 'fun'
+    let last_receive  = 0 " the last token was a 'receive'; needed for 'after'
+    let last_hash_sym = 0 " the last token was a '#'
+
+    " Ignore comments
+    if a:line =~# '^\s*%'
+        return 0
+    endif
+
+    " Partial function head where the guard is missing
+    if a:line =~# "\\(^\\l[[:alnum:]_]*\\)\\|\\(^'[^']\\+'\\)(" && a:line !~# '->'
+        return 2
+    endif
 
-    while 0<= i && i < length
+    " The missing guard from the split function head
+    if a:line =~# '^\s*when\s\+.*->'
+        return -1
+    endif
 
+    while 0<=i && i<linelen
         " m: the next value of the i
-        if a:l[i] == '%'
-            break
-        elseif a:l[i] == '"'
-            let m = matchend(a:l,'"\%([^"\\]\|\\.\)*"',i)
-            let lastReceive = 0
-        elseif a:l[i] == "'"
-            let m = matchend(a:l,"'[^']*'",i)
-            let lastReceive = 0
-        elseif a:l[i] =~# "[a-z]"
-            let m = matchend(a:l,".[[:alnum:]_]*",i)
-            if lastFun
+        if a:line[i] == '"'
+            let m = matchend(a:line,'"\%([^"\\]\|\\.\)*"',i)
+            let last_receive = 0
+        elseif a:line[i] == "'"
+            let m = matchend(a:line,"'[^']*'",i)
+            let last_receive = 0
+        elseif a:line[i] =~# "[a-z]"
+            let m = matchend(a:line,".[[:alnum:]_]*",i)
+            if last_fun
                 let ind = ind - 1
-                let lastFun = 0
-                let lastReceive = 0
-            elseif a:l[(i):(m-1)] =~# '^\%(case\|if\|try\)$'
+                let last_fun = 0
+                let last_receive = 0
+            elseif a:line[(i):(m-1)] =~# '^\%(case\|if\|try\)$'
                 let ind = ind + 1
-            elseif a:l[(i):(m-1)] =~# '^receive$'
+            elseif a:line[(i):(m-1)] =~# '^receive$'
                 let ind = ind + 1
-                let lastReceive = 1
-            elseif a:l[(i):(m-1)] =~# '^begin$'
+                let last_receive = 1
+            elseif a:line[(i):(m-1)] =~# '^begin$'
                 let ind = ind + 2
-                let lastReceive = 0
-            elseif a:l[(i):(m-1)] =~# '^end$'
+                let last_receive = 0
+            elseif a:line[(i):(m-1)] =~# '^end$'
                 let ind = ind - 2
-                let lastReceive = 0
-            elseif a:l[(i):(m-1)] =~# '^after$'
-                if lastReceive == 0
+                let last_receive = 0
+            elseif a:line[(i):(m-1)] =~# '^after$'
+                if last_receive == 0
                     let ind = ind - 1
                 else
                     let ind = ind + 0
-                end
-                let lastReceive = 0
-            elseif a:l[(i):(m-1)] =~# '^fun$'
+                endif
+                let last_receive = 0
+            elseif a:line[(i):(m-1)] =~# '^fun$'
                 let ind = ind + 1
-                let lastFun = 1
-                let lastReceive = 0
+                let last_fun = 1
+                let last_receive = 0
             endif
-        elseif a:l[i] =~# "[A-Z_]"
-            let m = matchend(a:l,".[[:alnum:]_]*",i)
-            let lastReceive = 0
-        elseif a:l[i] == '$'
+        elseif a:line[i] =~# "[A-Z_]"
+            let m = matchend(a:line,".[[:alnum:]_]*",i)
+            let last_receive = 0
+        elseif a:line[i] == '$'
             let m = i+2
-            let lastReceive = 0
-        elseif a:l[i] == "." && (i+1>=length || a:l[i+1]!~ "[0-9]")
+            let last_receive = 0
+        elseif a:line[i] == "." && (i+1>=linelen || a:line[i+1]!~ "[0-9]")
             let m = i+1
-            if lastHashMark
-                let lastHashMark = 0
+            if last_hash_sym
+                let last_hash_sym = 0
             else
                 let ind = ind - 1
-            end
-            let lastReceive = 0
-        elseif a:l[i] == '-' && (i+1<length && a:l[i+1]=='>')
+            endif
+            let last_receive = 0
+        elseif a:line[i] == '-' && (i+1<linelen && a:line[i+1]=='>')
             let m = i+2
             let ind = ind + 1
-            let lastReceive = 0
-        elseif a:l[i] == ';'
+            let last_receive = 0
+        elseif a:line[i] == ';' && a:line[(i):(linelen)] !~# '.*->.*'
             let m = i+1
             let ind = ind - 1
-            let lastReceive = 0
-        elseif a:l[i] == '#'
+            let last_receive = 0
+        elseif a:line[i] == '#'
             let m = i+1
-            let lastHashMark = 1
-        elseif a:l[i] =~# '[({[]'
+            let last_hash_sym = 1
+        elseif a:line[i] =~# '[({[]'
             let m = i+1
             let ind = ind + 1
-            let lastFun = 0
-            let lastReceive = 0
-            let lastHashMark = 0
-        elseif a:l[i] =~# '[)}\]]'
+            let last_fun = 0
+            let last_receive = 0
+            let last_hash_sym = 0
+        elseif a:line[i] =~# '[)}\]]'
             let m = i+1
             let ind = ind - 1
-            let lastReceive = 0
+            let last_receive = 0
         else
             let m = i+1
         endif
 
         let i = m
-
     endwhile
 
     return ind
-
 endfunction
 
 function s:FindPrevNonBlankNonComment(lnum)
     let lnum = prevnonblank(a:lnum)
     let line = getline(lnum)
-    " continue to search above if the current line begins with a '%'
+    " Continue to search above if the current line begins with a '%'
     while line =~# '^\s*%.*$'
         let lnum = prevnonblank(lnum - 1)
         if 0 == lnum
@@ -133,12 +149,20 @@ function s:FindPrevNonBlankNonComment(lnum)
     return lnum
 endfunction
 
-function ErlangIndent()
+" The function returns the indentation level of the line adjusted to a mutiple
+" of 'shiftwidth' option.
+"
+" lnum: line number
+" return: the indentation level of the line
+function s:GetLineIndent(lnum)
+    return (indent(a:lnum) / &sw) * &sw
+endfunction
 
-    " Find a non-blank line above the current line.
+function ErlangIndent()
+    " Find a non-blank line above the current line
     let lnum = prevnonblank(v:lnum - 1)
 
-    " Hit the start of the file, use zero indent.
+    " Hit the start of the file, use zero indent
     if lnum == 0
         return 0
     endif
@@ -146,9 +170,14 @@ function ErlangIndent()
     let prevline = getline(lnum)
     let currline = getline(v:lnum)
 
-    let ind = indent(lnum) + &sw * s:ErlangIndentAtferLine(prevline)
+    let ind_after = s:ErlangIndentAfterLine(prevline)
+    if ind_after != 0
+        let ind = s:GetLineIndent(lnum) + ind_after * &sw
+    else
+        let ind = indent(lnum) + ind_after * &sw
+    endif
 
-    " special cases:
+    " Special cases:
     if prevline =~# '^\s*\%(after\|end\)\>'
         let ind = ind + 2*&sw
     endif
@@ -158,8 +187,8 @@ function ErlangIndent()
     if currline =~# '^\s*after\>'
         let plnum = s:FindPrevNonBlankNonComment(v:lnum-1)
         if getline(plnum) =~# '^[^%]*\<receive\>\s*\%(%.*\)\=$'
-            let ind = ind - 1*&sw
             " If the 'receive' is not in the same line as the 'after'
+            let ind = ind - 1*&sw
         else
             let ind = ind - 2*&sw
         endif
@@ -181,26 +210,4 @@ function ErlangIndent()
         let ind = 0
     endif
     return ind
-
 endfunction
-
-" TODO:
-" 
-" f() ->
-"     x("foo
-"         bar")
-"         ,
-"         bad_indent.
-"
-" fun
-"     init/0,
-"     bad_indent
-"
-"     #rec
-"     .field,
-" bad_indent
-"
-" case X of
-"     1 when A; B ->
-"     bad_indent
-
index facbdbf571f3a871f75fa59dadb210dffe478cc1..3c48d3e35faf8c40c24bd4a58c4cf07b4d14170c 100644 (file)
@@ -1,7 +1,12 @@
 " Vim indent file
 " Language:    Java
-" Maintainer:  Toby Allsopp <toby.allsopp@peace.com> (resigned)
-" Last Change: 2005 Mar 28
+" Previous Maintainer: Toby Allsopp <toby.allsopp@peace.com>
+" Current Maintainer: Hong Xu <xuhdev@gmail.com>
+" Last Change: 2012 Jan 20
+" Version: 1.0
+" License: Same as Vim.
+" Copyright (c) 2012 Hong Xu
+" Before 2012, this file is maintained by Toby Allsopp.
 
 " Only load this indent file when no other was loaded.
 if exists("b:did_indent")
@@ -60,6 +65,13 @@ function GetJavaIndent()
 
   " find start of previous line, in case it was a continuation line
   let lnum = SkipJavaBlanksAndComments(v:lnum - 1)
+
+  " If the previous line starts with '@', we should have the same indent as
+  " the previous one
+  if getline(lnum) =~ '^\s*@\S\+\s*$'
+    return indent(lnum)
+  endif
+
   let prev = lnum
   while prev > 1
     let next_prev = SkipJavaBlanksAndComments(prev - 1)
index 1d67382b694e555f06203efe0bd9d4a6c6903b77..2697cdbc33d0b188f6f0192127fdbde26d75cbd1 100644 (file)
@@ -19,7 +19,7 @@ if &cp || exists("g:loaded_getscriptPlugin")
  endif
  finish
 endif
-let g:loaded_getscriptPlugin = "v33"
+let g:loaded_getscriptPlugin = "v34"
 let s:keepcpo                = &cpo
 set cpo&vim
 
index 197ab3564a2c40d26ef49ae95d5e89688bf7e6b2..01ddd48df0c6a5d68e00834503be3fde0f7a0931 100644 (file)
@@ -14,7 +14,7 @@
 if &cp || exists("g:loaded_tarPlugin")
  finish
 endif
-let g:loaded_tarPlugin = "v27"
+let g:loaded_tarPlugin = "v28"
 let s:keepcpo          = &cpo
 set cpo&vim
 
index bdfca0105ec619400342a1138116de33ecdfcd19..59279774cad7e43ff49391682faebb1bb871d2b4 100644 (file)
@@ -16,7 +16,7 @@
 if &cp || exists("g:loaded_vimballPlugin")
  finish
 endif
-let g:loaded_vimballPlugin = "v34"
+let g:loaded_vimballPlugin = "v35"
 let s:keepcpo              = &cpo
 set cpo&vim
 
index a5e1ae458d9c4620f3500222104cbbcd0fd70fb3..ebb6427f539bf2bc89cdd56c667a8a7ebea7b666 100644 (file)
@@ -1,9 +1,9 @@
 " zipPlugin.vim: Handles browsing zipfiles
 "            PLUGIN PORTION
-" Date:                        Oct 05, 2007
+" Date:                        Aug 15, 2011
 " Maintainer:  Charles E Campbell, Jr <NdrOchip@ScampbellPfamily.AbizM-NOSPAM>
 " License:             Vim License  (see vim's :help license)
-" Copyright:    Copyright (C) 2005,2006 Charles E. Campbell, Jr. {{{1
+" Copyright:    Copyright (C) 2005-2011 Charles E. Campbell, Jr. {{{1
 "               Permission is hereby granted to use and distribute this code,
 "               with or without modifications, provided that this copyright
 "               notice is copied with it. Like anything else that's free,
@@ -20,7 +20,7 @@
 if &cp || exists("g:loaded_zipPlugin")
  finish
 endif
-let g:loaded_zipPlugin = "v24"
+let g:loaded_zipPlugin = "v25"
 let s:keepcpo          = &cpo
 set cpo&vim
 
@@ -40,7 +40,7 @@ augroup zip
   au FileWriteCmd zipfile:*/*  call zip#Write(expand("<amatch>"))
  endif
 
- au BufReadCmd   *.zip,*.jar,*.xpi,*.war,*.ear,*.celzip                call zip#Browse(expand("<amatch>"))
+ au BufReadCmd   *.zip,*.jar,*.xpi,*.war,*.ear,*.celzip,*.oxt          call zip#Browse(expand("<amatch>"))
 augroup END
 
 " ---------------------------------------------------------------------
index 3e301b799fe7438044be46c3f7e5abc83cc519a3..2a64d99607897daeb159b1e68dba131c8c551dd0 100644 (file)
@@ -29,7 +29,7 @@
 + # soundslike mapping from Aspell
 + # Aspell phonetics for Irish, by Kevin Scannell <scannell@slu.edu>
 + # Copyright 2002, 2003 Kevin P. Scannell, distributed under GNU GPL
-+ # version 2.0
++ # version 2.0 or the Vim license (attribution by Kevin Scannell, Jan 2012)
 + 
 + SAL followup 0                    # else breaks QU^, e.g.
 + SAL collapse_result 1             # no double letters in resulting strings
index ec4797ca1a8ff637a005e193a49ca2bc634fb75d..36aa12d8f1bac46b9dfe7caaf42df5f4705c35ac 100644 (file)
@@ -25,7 +25,7 @@
 + # soundslike mapping from Aspell
 + # Aspell phonetics for Irish, by Kevin Scannell <scannell@slu.edu>
 + # Copyright 2002, 2003 Kevin P. Scannell, distributed under GNU GPL
-+ # version 2.0
++ # version 2.0 or the Vim license (attribution by Kevin Scannell, Jan 2012)
 + 
 + SAL followup 0                    # else breaks QU^, e.g.
 + SAL collapse_result 1             # no double letters in resulting strings
index 3526175f4a2821cc67f456f435f14cea63739cd9..4089a66d2b703dc2aa748c41147c237356f55f52 100644 (file)
@@ -27,7 +27,7 @@
 + # soundslike mapping from Aspell
 + # swedish_phonet.dat - Swedish phonetic transformation rules for aspell
 + # Copyright (C) 2000  Martin Norbäck  <d95mback@dtek.chalmers.se>
-+ # distributed under GNU GPL
++ # distributed under GNU GPL or the Vim license, at your choice.
 + # version 0.2
 + 
 + SAL &        &
index 7af0067f8acfa2532b3ec973becd02a31c89f332..4553519b099441ab1e3ade7f6e93be1b60a15864 100644 (file)
@@ -1,7 +1,7 @@
 " Vim syntax file
 " Language:    C
 " Maintainer:  Bram Moolenaar <Bram@vim.org>
-" Last Change: 2012 Jan 04
+" Last Change: 2012 Jan 14
 
 " Quit when a (custom) syntax file was already loaded
 if exists("b:current_syntax")
@@ -62,6 +62,25 @@ syn match    cSpecialCharacter display "L\='\\\o\{1,3}'"
 syn match      cSpecialCharacter display "'\\x\x\{1,2}'"
 syn match      cSpecialCharacter display "L'\\x\x\+'"
 
+if !exists("c_no_c11") " ISO C11
+  if exists("c_no_cformat")
+    syn region cString         start=+\%(U\|u8\=\)"+ skip=+\\\\\|\\"+ end=+"+ contains=cSpecial,@Spell
+  else
+    syn region cString         start=+\%(U\|u8\=\)"+ skip=+\\\\\|\\"+ end=+"+ contains=cSpecial,cFormat,@Spell
+  endif
+  syn match    cCharacter      "[Uu]'[^\\]'"
+  syn match    cCharacter      "[Uu]'[^']*'" contains=cSpecial
+  if exists("c_gnu")
+    syn match  cSpecialError   "[Uu]'\\[^'\"?\\abefnrtv]'"
+    syn match  cSpecialCharacter "[Uu]'\\['\"?\\abefnrtv]'"
+  else
+    syn match  cSpecialError   "[Uu]'\\[^'\"?\\abfnrtv]'"
+    syn match  cSpecialCharacter "[Uu]'\\['\"?\\abfnrtv]'"
+  endif
+  syn match    cSpecialCharacter display "[Uu]'\\\o\{1,3}'"
+  syn match    cSpecialCharacter display "[Uu]'\\x\x\+'"
+endif
+
 "when wanted, highlight trailing white space
 if exists("c_space_errors")
   if !exists("c_no_trail_space_error")
@@ -211,6 +230,7 @@ if !exists("c_no_c11")
   syn keyword  cStorageClass   _Noreturn noreturn
   syn keyword  cOperator       _Static_assert static_assert
   syn keyword  cStorageClass   _Thread_local thread_local
+  syn keyword   cType          char16_t char32_t
 endif
 
 if !exists("c_no_ansi") || exists("c_ansi_constants") || exists("c_gnu")
index b7f5ebac82173394fba94450acbac2b8e3fc9915..25318d8c4cedd8efc11809cd44ed260d02b3f85f 100644 (file)
@@ -2,20 +2,21 @@
 "
 " Language:     D
 " Maintainer:   Jesse Phillips <Jesse.K.Phillips+D@gmail.com>
-" Last Change:  2010 Sep 21
-" Version:      0.22
+" Last Change:  2012 Jan 11
+" Version:      0.24
 "
 " Contributors:
 "   - Jason Mills <jasonmills@nf.sympatico.ca>: original Maintainer
-"   - Kirk McDonald: version 0.17 updates, with minor modifications
-"     (http://paste.dprogramming.com/dplmb7qx?view=hidelines)
-"   - Tim Keating: patch to fix a bug in highlighting the `\` literal
-"   - Frank Benoit: Fixed a bug that caused some identifiers and numbers to highlight as octal number errors.
-"   - Shougo Matsushita <Shougo.Matsu@gmail.com>: updates for latest 2.047 highlighting
-"   - Ellery Newcomer: Fixed some highlighting bugs.
-"   - Steven N. Oliver: #! highlighting
+"   - Kirk McDonald
+"   - Tim Keating
+"   - Frank Benoit
+"   - Shougo Matsushita <Shougo.Matsu@gmail.com>
+"   - Ellery Newcomer
+"   - Steven N. Oliver
+"   - Sohgo Takeuchi
 "
-" Please email me with bugs, comments, and suggestions.
+" Please submit bugs/comments/suggestions to the github repo: 
+" https://github.com/he-the-great/d.vim
 "
 " Options:
 "   d_comment_strings - Set to highlight strings and numbers in comments.
 "   d_hl_operator_overload - Set to highlight D's specially named functions
 "   that when overloaded implement unary and binary operators (e.g. opCmp).
 "
-" Todo:
-"   - Determine a better method of sync'ing than simply setting minlines
-"   to a large number.
-"
-"   - Several keywords (e.g., in, out, inout) are both storage class and
-"   statements, depending on their context. Perhaps use pattern matching to
-"   figure out which and highlight appropriately. For now I have made such
-"   keywords storage classes so their highlighting is consistent with other
-"   keywords that are commonly used with them, but are true storage classes,
-"   such as lazy. Similarly, I made some statement keywords (e.g. body) storage
-"   classes.
-"
-"   - Mark contents of the asm statement body as special
-"
-"   - Maybe highlight the 'exit', 'failure', and 'success' parts of the
-"   scope() statement.
-"
-"   - Highlighting DDoc comments.
-"
+"   d_hl_object_types - Set to highlight some common types from object.di.
 
 " Quit when a syntax file was already loaded
 if exists("b:current_syntax")
   finish
 endif
 
+" Support cpoptions
+let s:cpo_save = &cpo
+set cpo&vim
+
+" Set the current syntax to be known as d
+let b:current_syntax = "d"
+
 " Keyword definitions
 "
-syn keyword dExternal              import package module extern
+syn keyword dExternal              import module
 syn keyword dConditional           if else switch
 syn keyword dBranch                goto break continue
 syn keyword dRepeat                while for do foreach foreach_reverse
@@ -77,21 +67,34 @@ if exists("d_hl_operator_overload")
   syn keyword dOpOverload          opCall opSlice opSliceAssign opSliceOpAssign 
   syn keyword dOpOverload          opPos opAdd_r opMul_r opAnd_r opOr_r opXor_r
   syn keyword dOpOverload          opIn opIn_r opPow opDispatch opStar opDot 
-  syn keyword dOpOverload          opApply opApplyReverse
+  syn keyword dOpOverload          opApply opApplyReverse opDollar
   syn keyword dOpOverload          opUnary opIndexUnary opSliceUnary
   syn keyword dOpOverload          opBinary opBinaryRight
 endif
 
-syn keyword dType                  void ushort int uint long ulong float
-syn keyword dType                  byte ubyte double bit char wchar ucent cent
-syn keyword dType                  short bool dchar wstring dstring
-syn keyword dType                  real ireal ifloat idouble
-syn keyword dType                  creal cfloat cdouble
+syn keyword dType                  byte ubyte short ushort int uint long ulong cent ucent
+syn keyword dType                  void bool bit
+syn keyword dType                  float double real
+syn keyword dType                  ushort int uint long ulong float
+syn keyword dType                  char wchar dchar string wstring dstring
+syn keyword dType                  ireal ifloat idouble creal cfloat cdouble
+syn keyword dType                  size_t ptrdiff_t sizediff_t equals_t hash_t
+if exists("d_hl_object_types")
+  syn keyword dType                Object Throwable AssociativeArray Error Exception
+  syn keyword dType                Interface OffsetTypeInfo TypeInfo TypeInfo_Typedef
+  syn keyword dType                TypeInfo_Enum TypeInfo_Pointer TypeInfo_Array
+  syn keyword dType                TypeInfo_StaticArray TypeInfo_AssociativeArray
+  syn keyword dType                TypeInfo_Function TypeInfo_Delegate TypeInfo_Class
+  syn keyword dType                ClassInfo TypeInfo_Interface TypeInfo_Struct
+  syn keyword dType                TypeInfo_Tuple TypeInfo_Const TypeInfo_Invariant
+  syn keyword dType                TypeInfo_Shared TypeInfo_Inout MemberInfo
+  syn keyword dType                MemberInfo_field MemberInfo_function ModuleInfo
+endif
 syn keyword dDebug                 deprecated unittest invariant
 syn keyword dExceptions            throw try catch finally
-syn keyword dScopeDecl             public protected private export
+syn keyword dScopeDecl             public protected private export package 
 syn keyword dStatement             debug return with
-syn keyword dStatement             function delegate __traits mixin macro
+syn keyword dStatement             function delegate __ctfe mixin macro
 syn keyword dStorageClass          in out inout ref lazy body
 syn keyword dStorageClass          pure nothrow
 syn keyword dStorageClass          auto static override final abstract volatile
@@ -100,15 +103,26 @@ syn keyword dStorageClass          synchronized shared immutable const lazy
 syn keyword dPragma                pragma
 syn keyword dIdentifier            _arguments _argptr __vptr __monitor _ctor _dtor
 syn keyword dScopeIdentifier       contained exit success failure
+syn keyword dTraitsIdentifier      contained isAbstractClass isArithmetic isAssociativeArray
+syn keyword dTraitsIdentifier      contained isFinalClass isFloating isIntegral isScalar
+syn keyword dTraitsIdentifier      contained isStaticArray isUnsigned isVirtualFunction
+syn keyword dTraitsIdentifier      contained isAbstractFunction isFinalFunction isStaticFunction
+syn keyword dTraitsIdentifier      contained isRef isOut isLazy hasMember identifier getMember
+syn keyword dTraitsIdentifier      contained getOverloads getVirtualFunctions parent compiles
+syn keyword dTraitsIdentifier      contained classInstanceSize allMembers derivedMembers isSame
+syn keyword dExternIdentifier      contained Windows Pascal Java System D
 syn keyword dAttribute             contained safe trusted system
 syn keyword dAttribute             contained property disable
-syn keyword dVersionIdentifier     contained DigitalMars GNU LDC LLVM
-syn keyword dVersionIdentifier     contained X86 X86_64 Windows Win32 Win64 
-syn keyword dVersionIdentifier     contained linux Posix OSX FreeBSD
-syn keyword dVersionIdentifier     contained LittleEndian BigEndian D_Coverage
-syn keyword dVersionIdentifier     contained D_Ddoc D_InlineAsm_X86
-syn keyword dVersionIdentifier     contained D_InlineAsm_X86_64 D_LP64 D_PIC
-syn keyword dVersionIdentifier     contained unittest D_Version2 none all
+syn keyword dVersionIdentifier     contained DigitalMars GNU LDC SDC D_NET
+syn keyword dVersionIdentifier     contained X86 X86_64 ARM PPC PPC64 IA64 MIPS MIPS64 Alpha
+syn keyword dVersionIdentifier     contained SPARC SPARC64 S390 S390X HPPA HPPA64 SH SH64
+syn keyword dVersionIdentifier     contained linux Posix OSX FreeBSD Windows Win32 Win64
+syn keyword dVersionIdentifier     contained OpenBSD BSD Solaris AIX SkyOS SysV3 SysV4 Hurd
+syn keyword dVersionIdentifier     contained Cygwin MinGW
+syn keyword dVersionIdentifier     contained LittleEndian BigEndian
+syn keyword dVersionIdentifier     contained D_InlineAsm_X86 D_InlineAsm_X86_64
+syn keyword dVersionIdentifier     contained D_Version2 D_Coverage D_Ddoc D_LP64 D_PIC
+syn keyword dVersionIdentifier     contained unittest none all
 
 " Highlight the sharpbang
 syn match dSharpBang "\%^#!.*"     display
@@ -117,23 +131,38 @@ syn match dSharpBang "\%^#!.*"     display
 syn match dAnnotation  "@[_$a-zA-Z][_$a-zA-Z0-9_]*\>" contains=dAttribute
 
 " Version Identifiers
-syn match dVersion   "[^.]version" nextgroup=dVersionInside
-syn match dVersion   "^version" nextgroup=dVersionInside
-syn match dVersionInside  "([_a-zA-Z][_a-zA-Z0-9]*\>" transparent contained contains=dVersionIdentifier
+syn match dVersion   "[^.]\<version\>"hs=s+1 nextgroup=dVersionInside
+syn match dVersion   "^\<version\>" nextgroup=dVersionInside
+syn match dVersionInside  "\s*([_a-zA-Z][_a-zA-Z0-9]*\>" transparent contained contains=dVersionIdentifier
 
 " Scope StorageClass
-syn match dStorageClass   "scope"
+syn match dStorageClass   "\<scope\>"
+
+" Traits Expression
+syn match dStatement    "\<__traits\>"
+
+" Extern Modifier
+syn match dExternal     "\<extern\>"
 
 " Scope Identifiers
-syn match dScope       "scope\s*([_a-zA-Z][_a-zA-Z0-9]*\>"he=s+5 contains=dScopeIdentifier
+syn match dScope       "\<scope\s*([_a-zA-Z][_a-zA-Z0-9]*\>"he=s+5 contains=dScopeIdentifier
+
+" Traits Identifiers
+syn match dTraits       "\<__traits\s*([_a-zA-Z][_a-zA-Z0-9]*\>"he=s+8 contains=dTraitsIdentifier
+
+" Necessary to highlight C++ in extern modifiers.
+syn match dExternIdentifier "C\(++\)\?" contained
+
+" Extern Identifiers
+syn match dExtern       "\<extern\s*([_a-zA-Z][_a-zA-Z0-9\+]*\>"he=s+6 contains=dExternIdentifier
 
 " String is a statement and a module name.
-syn match dType "^string"
-syn match dType "[^.]\s*\<string\>"ms=s+1
+syn match dType "[^.]\<string\>"ms=s+1
+syn match dType "^\<string\>"
 
 " Assert is a statement and a module name.
-syn match dAssert "^assert"
-syn match dAssert "[^.]\s*\<assert\>"ms=s+1
+syn match dAssert "[^.]\<assert\>"ms=s+1
+syn match dAssert "^\<assert\>"
 
 " dTokens is used by the token string highlighting
 syn cluster dTokens contains=dExternal,dConditional,dBranch,dRepeat,dBoolean
@@ -161,12 +190,12 @@ if exists("d_comment_strings")
   syn region dBlockCommentString       contained start=+"+ end=+"+ end=+\*/+me=s-1,he=s-1 contains=dCommentStar,dUnicode,dEscSequence,@Spell
   syn region dNestedCommentString      contained start=+"+ end=+"+ end="+"me=s-1,he=s-1 contains=dCommentPlus,dUnicode,dEscSequence,@Spell
   syn region dLineCommentString                contained start=+"+ end=+$\|"+ contains=dUnicode,dEscSequence,@Spell
-  syn region dBlockComment     start="/\*"  end="\*/" contains=dBlockCommentString,dTodo,@Spell
-  syn region dNestedComment    start="/+"  end="+/" contains=dNestedComment,dNestedCommentString,dTodo,@Spell
+  syn region dBlockComment     start="/\*"  end="\*/" contains=dBlockCommentString,dTodo,@Spell fold
+  syn region dNestedComment    start="/+"  end="+/" contains=dNestedComment,dNestedCommentString,dTodo,@Spell fold
   syn match  dLineComment      "//.*" contains=dLineCommentString,dTodo,@Spell
 else
-  syn region dBlockComment     start="/\*"  end="\*/" contains=dBlockCommentString,dTodo,@Spell
-  syn region dNestedComment    start="/+"  end="+/" contains=dNestedComment,dNestedCommentString,dTodo,@Spell
+  syn region dBlockComment     start="/\*"  end="\*/" contains=dBlockCommentString,dTodo,@Spell fold
+  syn region dNestedComment    start="/+"  end="+/" contains=dNestedComment,dNestedCommentString,dTodo,@Spell fold
   syn match  dLineComment      "//.*" contains=dLineCommentString,dTodo,@Spell
 endif
 
@@ -280,6 +309,10 @@ syn case match
 " TODO: Highlight following Integer and optional Filespec.
 syn region  dPragma start="#\s*\(line\>\)" skip="\\$" end="$"
 
+" Block
+"
+syn region dBlock      start="{" end="}" transparent fold
+
 
 " The default highlighting.
 "
@@ -330,12 +363,14 @@ hi def link dAnnotation          PreProc
 hi def link dSharpBang           PreProc
 hi def link dAttribute           StorageClass
 hi def link dIdentifier          Identifier
-hi def link dVersionIdentifier   Identifier
 hi def link dVersion             dStatement
-hi def link dScopeIdentifier     dStatement
+hi def link dVersionIdentifier   Identifier
 hi def link dScope               dStorageClass
-
-let b:current_syntax = "d"
+hi def link dScopeIdentifier     Identifier
+hi def link dTraits              dStatement
+hi def link dTraitsIdentifier    Identifier
+hi def link dExtern              dExternal
+hi def link dExternIdentifier    Identifier
 
 " Marks contents of the asm statment body as special
 
@@ -464,3 +499,5 @@ syn keyword dAsmOpCode contained    pfnacc  pfpnacc         pfrcp   pfrcpit1        pfrcpit2
 syn keyword dAsmOpCode contained       pfrsqit1        pfrsqrt         pfsub   pfsubr  pi2fd
 syn keyword dAsmOpCode contained       pmulhrw         pswapd
 
+let &cpo = s:cpo_save
+unlet s:cpo_save
index 2f39d61437ccb591d707c24fafd2335523ee1c4b..28bc4a5d350069135f82225deb9975351f9e429f 100644 (file)
 " Vim syntax file
-" Language:    erlang (ERicsson LANGuage)
-"              http://www.erlang.se
-"              http://www.erlang.org
-" Maintainer:  Csaba Hoch <csaba.hoch@gmail.com>
-" Former Maintainer:  Kreąimir Marľić (Kresimir Marzic) <kmarzic@fly.srk.fer.hr>
-" Last update: 12-Mar-2008
-" Filenames:   .erl
-
-
-" There are three sets of highlighting in here:
-" One is "erlang_characters", second is "erlang_functions" and third
-" is "erlang_keywords".
-" If you want to disable keywords highlighting, put in your .vimrc:
-"       let erlang_keywords=1
-" If you want to disable erlang BIF highlighting, put in your .vimrc
-" this:
-"       let erlang_functions=1
-" If you want to disable special characters highlighting, put in
-" your .vimrc:
-"       let erlang_characters=1
-
-
-" 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")
-    finish
+" Language:     Erlang
+" Author:       Oscar Hellström <oscar@oscarh.net> (http://oscar.hellstrom.st)
+" Contributors: Ricardo Catalinas Jiménez <jimenezrick@gmail.com>
+" License:      Vim license
+" Version:      2011/09/11
+
+if exists("b:current_syntax")
+       finish
+else
+       let b:current_syntax = "erlang"
 endif
 
-
-" Case sensitive
-syn case match
-
-
-if ! exists ("erlang_characters")
-
-    " Basic elements
-    syn match   erlangComment          "%.*$" contains=erlangAnnotation,erlangTodo
-    syn match   erlangAnnotation       " \@<=@\%(clear\|docfile\|end\|headerfile\|todo\|TODO\|type\|author\|copyright\|doc\|reference\|see\|since\|title\|version\|deprecated\|hidden\|private\|equiv\|spec\|throws\)" contained
-    syn match   erlangAnnotation       "`[^']*'" contained
-    syn keyword erlangTodo             TODO FIXME XXX contained
-    syn match   erlangModifier         "\~\a\|\\\a\|\\\\" contained
-    syn match   erlangSpecialCharacter ":\|_\|@\|\\\|\"\|\."
-    syn match   erlangSeparator        "(\|)\|{\|}\|\[\|]\||\|||\|;\|,\|?\|->\|#" contained
-    syn region  erlangString           start=+"+ skip=+\\.+ end=+"+ contains=erlangModifier
-    syn region  erlangAtom             start=+'+ skip=+\\'+ end=+'+
-
-    " Operators
-    syn match   erlangOperator         "+\|-\|\*\|\/"
-    syn keyword erlangOperator         div rem or xor bor bxor bsl bsr
-    syn keyword erlangOperator         and band not bnot andalso orelse
-    syn match   erlangOperator         "==\|/=\|=:=\|=/=\|<\|=<\|>\|>="
-    syn match   erlangOperator         "++\|--\|=\|!\|<-"
-
-    " Numbers
-    syn match   erlangNumberInteger    "\d\+" contains=erlangSeparator
-    syn match   erlangNumberFloat1     "\d\+\.\d\+" contains=erlangSeparator
-    syn match   erlangNumberFloat2     "\d\+\(\.\d\+\)\=[eE][+-]\=\d\+\(\.\d\+\)\=" contains=erlangSeparator
-    syn match   erlangNumberFloat3     "\d\+[#]\x\+" contains=erlangSeparator
-    syn match   erlangNumberHex        "$\x\+" contains=erlangSeparator
-
-    " Ignore '_' and '-' in words
-    syn match   erlangWord             "\h\+\w*"
-
-    syn match   erlangChar             /\$./
+if !exists("g:erlang_highlight_bif")
+       let g:erlang_highlight_bif = 1
 endif
 
-if ! exists ("erlang_functions")
-    " Functions call
-    syn match   erlangFCall      "\%(\w\+\s*\.\s*\)*\w\+\s*[:@]\s*\w\+"
-
-    " build-in-functions (BIFs)
-    syn keyword erlangBIF        abs alive apply atom_to_list
-    syn keyword erlangBIF        binary_to_list binary_to_term
-    syn keyword erlangBIF        concat_binary
-    syn keyword erlangBIF        date disconnect_node
-    syn keyword erlangBIF        element erase exit
-    syn keyword erlangBIF        float float_to_list
-    syn keyword erlangBIF        get get_keys group_leader
-    syn keyword erlangBIF        halt hd
-    syn keyword erlangBIF        integer_to_list is_alive
-    syn keyword erlangBIF        length link list_to_atom list_to_binary
-    syn keyword erlangBIF        list_to_float list_to_integer list_to_pid
-    syn keyword erlangBIF        list_to_tuple load_module
-    syn keyword erlangBIF        make_ref monitor_node
-    syn keyword erlangBIF        node nodes now
-    syn keyword erlangBIF        open_port
-    syn keyword erlangBIF        pid_to_list process_flag
-    syn keyword erlangBIF        process_info process put
-    syn keyword erlangBIF        register registered round
-    syn keyword erlangBIF        self setelement size spawn
-    syn keyword erlangBIF        spawn_link split_binary statistics
-    syn keyword erlangBIF        term_to_binary throw time tl trunc
-    syn keyword erlangBIF        tuple_to_list
-    syn keyword erlangBIF        unlink unregister
-    syn keyword erlangBIF        whereis
-
-    " Other BIFs
-    syn keyword erlangBIF        atom binary constant function integer
-    syn keyword erlangBIF        list number pid ports port_close port_info
-    syn keyword erlangBIF        reference record
-
-    " erlang:BIFs
-    syn keyword erlangBIF        check_process_code delete_module
-    syn keyword erlangBIF        get_cookie hash math module_loaded
-    syn keyword erlangBIF        preloaded processes purge_module set_cookie
-    syn keyword erlangBIF        set_node
-
-    " functions of math library
-    syn keyword erlangFunction   acos asin atan atan2 cos cosh exp
-    syn keyword erlangFunction   log log10 pi pow power sin sinh sqrt
-    syn keyword erlangFunction   tan tanh
-
-    " Other functions
-    syn keyword erlangFunction   call module_info parse_transform
-    syn keyword erlangFunction   undefined_function
-
-    " Modules
-    syn keyword erlangModule     error_handler
-endif
-
-if ! exists ("erlang_keywords")
-    " Constants and Directives
-    syn match   erlangDirective  "-behaviour\|-behavior"
-    syn match   erlangDirective  "-compile\|-define\|-else\|-endif\|-export\|-file"
-    syn match   erlangDirective  "-ifdef\|-ifndef\|-import\|-include_lib\|-include"
-    syn match   erlangDirective  "-module\|-record\|-undef"
-
-    syn match   erlangConstant   "-author\|-copyright\|-doc\|-vsn"
-
-    " Keywords
-    syn keyword erlangKeyword    after begin case catch
-    syn keyword erlangKeyword    cond end fun if
-    syn keyword erlangKeyword    let of query receive
-    syn keyword erlangKeyword    when
-    syn keyword erlangKeyword    try
-
-    " Processes
-    syn keyword erlangProcess    creation current_function dictionary
-    syn keyword erlangProcess    group_leader heap_size high initial_call
-    syn keyword erlangProcess    linked low memory_in_use message_queue
-    syn keyword erlangProcess    net_kernel node normal priority
-    syn keyword erlangProcess    reductions registered_name runnable
-    syn keyword erlangProcess    running stack_trace status timer
-    syn keyword erlangProcess    trap_exit waiting
-
-    " Ports
-    syn keyword erlangPort       command count_in count_out creation in
-    syn keyword erlangPort       in_format linked node out owner packeting
-
-    " Nodes
-    syn keyword erlangNode       atom_tables communicating creation
-    syn keyword erlangNode       current_gc current_reductions current_runtime
-    syn keyword erlangNode       current_wall_clock distribution_port
-    syn keyword erlangNode       entry_points error_handler friends
-    syn keyword erlangNode       garbage_collection magic_cookie magic_cookies
-    syn keyword erlangNode       module_table monitored_nodes name next_ref
-    syn keyword erlangNode       ports preloaded processes reductions
-    syn keyword erlangNode       ref_state registry runtime wall_clock
-
-    " Reserved
-    syn keyword erlangReserved   apply_lambda module_info module_lambdas
-    syn keyword erlangReserved   record record_index record_info
-
-    " Extras
-    syn keyword erlangExtra      badarg nocookie false fun true
-
-    " Signals
-    syn keyword erlangSignal     badsig kill killed exit normal
-endif
-
-
+" Erlang is case sensitive
+syn case match
 
-" 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_erlang_inits")
-    if version < 508
-        let did_erlang_inits = 1
-        command -nargs=+ HiLink hi link <args>
-    else
-        command -nargs=+ HiLink hi def link <args>
-    endif
-
-    " erlang_characters
-    HiLink erlangComment Comment
-    HiLink erlangAnnotation Special
-    HiLink erlangTodo Todo
-    HiLink erlangSpecialCharacter Special
-    HiLink erlangSeparator Normal
-    HiLink erlangModifier Special
-    HiLink erlangOperator Operator
-    HiLink erlangString String
-    HiLink erlangAtom Type
-
-    HiLink erlangNumberInteger Number
-    HiLink erlangNumberFloat1 Float
-    HiLink erlangNumberFloat2 Float
-    HiLink erlangNumberFloat3 Float
-    HiLink erlangNumberFloat4 Float
-    HiLink erlangNumberHex Number
-
-    HiLink erlangWord Normal
-
-    " erlang_functions
-    HiLink erlangFCall Function
-    HiLink erlangBIF Function
-    HiLink erlangFunction Function
-    HiLink erlangModuleFunction Function
-
-    " erlang_keywords
-    HiLink erlangDirective Type
-    HiLink erlangConstant Type
-    HiLink erlangKeyword Keyword
-    HiLink erlangProcess Special
-    HiLink erlangPort Special
-    HiLink erlangNode Special
-    HiLink erlangReserved Statement
-    HiLink erlangExtra Statement
-    HiLink erlangSignal Statement
-
-    delcommand HiLink
+" Match groups
+syn match erlangStringModifier               /\\./ contained
+syn match erlangStringModifier               /\~\%(-\?[0-9*]\+\)\?\%(\.[0-9*]\+\..\?\)\?\%(c\|f\|e\|g\|s\|w\|p\|W\|P\|B\|X\|#\|b\|+\|n\|i\)/ contained
+syn match erlangModifier                     /\$\\\?./
+
+syn match erlangInteger                      /\<\%([0-9]\+#[0-9a-fA-F]\+\|[0-9]\+\)\>/
+syn match erlangFloat                        /\<[0-9]\+\.[0-9]\+\%(e-\?[0-9]\+\)\?\>/
+
+syn keyword erlangTodo                       TODO FIXME XXX contained
+syn match   erlangComment                    /%.*$/ contains=@Spell,erlangTodo,erlangAnnotation
+syn match   erlangAnnotation                 /\%(%\s\)\@<=@\%(author\|clear\|copyright\|deprecated\|doc\|docfile\|end\|equiv\|headerfile\|hidden\|private\|reference\|see\|since\|spec\|throws\|title\|todo\|TODO\|type\|version\)/ contained
+syn match   erlangAnnotation                 /`[^']\+'/ contained
+
+syn keyword erlangKeyword                    band bor bnot bsl bsr bxor div rem xor
+syn keyword erlangKeyword                    try catch begin receive after cond fun let query
+
+syn keyword erlangConditional                case if of end
+syn keyword erlangConditional                not and or andalso orelse
+syn keyword erlangConditional                when
+
+syn keyword erlangBoolean                    true false
+
+syn keyword erlangGuard                      is_list is_alive is_atom is_binary is_bitstring is_boolean is_tuple is_number is_integer is_float is_function is_constant is_pid is_port is_reference is_record is_process_alive
+
+syn match erlangOperator                     /\/\|*\|+\|-\|++\|--/
+syn match erlangOperator                     /->\|<-\|||\||\|!\|=/
+syn match erlangOperator                     /=:=\|==\|\/=\|=\/=\|<\|>\|=<\|>=/
+syn keyword erlangOperator                   div rem
+
+syn region erlangString                      start=/"/ end=/"/ skip=/\\/ contains=@Spell,erlangStringModifier
+
+syn match erlangVariable                     /\<[A-Z_]\w*\>/
+syn match erlangAtom                         /\%(\%(^-\)\|#\)\@<!\<[a-z][A-Za-z0-9_]*\>\%(\s*[(:]\)\@!/
+syn match erlangAtom                         /\\\@<!'[^']*\\\@<!'/
+
+syn match erlangRecord                       /#\w\+/
+
+syn match erlangTuple                        /{\|}/
+syn match erlangList                         /\[\|\]/
+
+syn match erlangAttribute                    /^-\%(vsn\|author\|copyright\|compile\|deprecated\|module\|export\|import\|behaviour\|behavior\|export_type\|ignore_xref\|on_load\)\s*(\@=/
+syn match erlangInclude                      /^-include\%(_lib\)\?\s*(\@=/
+syn match erlangRecordDef                    /^-record\s*(\@=/
+syn match erlangDefine                       /^-\%(define\|undef\)\s*(\@=/
+syn match erlangPreCondit                    /^-\%(ifdef\|ifndef\|else\|endif\)\%(\s*(\@=\)\?/
+
+syn match erlangType                         /^-\%(spec\|type\)[( ]\@=/
+
+syn match erlangMacro                        /\%(-define(\)\@<=\w\+/
+syn match erlangMacro                        /?\??\w\+/
+
+syn match erlangBitType                      /\%(\/\|-\)\@<=\%(bits\|bitstring\|binary\|integer\|float\|unit\)\>/
+syn match erlangBitSize                      /:\@<=[0-9]\+/
+
+syn match erlangBinary                      /<<\|>>/
+
+" BIFs
+syn match erlangBIF                          /\%([^:0-9A-Za-z_]\|\<erlang:\)\@<=\%(abs\|apply\|atom_to_binary\|atom_to_list\|binary_part\|binary_to_atom\|binary_to_existing_atom\|binary_to_list\|binary_to_term\|bit_size\|bitstring_to_list\|byte_size\|check_process_code\|date\|delete_module\|demonitor\|disconnect_node\|element\|erase\|exit\|float\|float_to_list\|garbage_collect\|get\|get_keys\|group_leader\|hd\|integer_to_list\|iolist_size\|iolist_to_binary\|is_alive\|is_atom\|is_binary\|is_bitstring\|is_boolean\|is_float\|is_function\|is_integer\|is_list\|is_number\|is_pid\|is_port\|is_process_alive\|is_record\|is_reference\|is_tuple\|length\|link\|list_to_atom\|list_to_binary\|list_to_bitstring\|list_to_existing_atom\|list_to_float\|list_to_integer\|list_to_pid\|list_to_tuple\|load_module\|make_ref\|max\|min\|module_loaded\|monitor\|monitor_node\|node\|nodes\|now\|open_port\|pid_to_list\|port_close\|port_command\|port_connect\|port_control\|pre_loaded\|processes\|process_flag\|process_info\|purge_module\|put\|register\|registered\|round\|self\|setelement\|size\|spawn\|spawn_link\|spawn_monitor\|spawn_opt\|split_binary\|statistics\|term_to_binary\|time\|tl\|trunc\|tuple_size\|tuple_to_list\|unlink\|unregister\|whereis\)\%((\|\/[0-9]\)\@=/
+syn match erlangBIF                          /\<\%(erlang:\)\@<=\%(append_element\|bump_reductions\|cancel_timer\|decode_packet\|display\|function_exported\|fun_info\|fun_to_list\|get_cookie\|get_stacktrace\|hash\|is_builtin\|loaded\|load_nif\|localtime\|localtime_to_universaltime\|make_tuple\|memory\|monitor_node\|phash\|port_call\|port_info\|ports\|port_to_list\|process_display\|read_timer\|ref_to_list\|resume_process\|send\|send_after\|send_nosuspend\|set_cookie\|start_timer\|suspend_process\|system_flag\|system_info\|system_monitor\|system_profile\|trace\|trace_delivered\|trace_info\|trace_pattern\|universaltime\|universaltime_to_localtime\|yield\)(\@=/
+syn match erlangGBIF                         /erlang\%(:\w\)\@=/
+
+" Link Erlang stuff to Vim groups
+hi link erlangTodo           Todo
+hi link erlangString         String
+hi link erlangNoSpellString  String
+hi link erlangModifier       SpecialChar
+hi link erlangStringModifier SpecialChar
+hi link erlangComment        Comment
+hi link erlangAnnotation     Special
+hi link erlangVariable       Identifier
+hi link erlangInclude        Include
+hi link erlangRecordDef      Keyword
+hi link erlangAttribute      Keyword
+hi link erlangKeyword        Keyword
+hi link erlangMacro          Macro
+hi link erlangDefine         Define
+hi link erlangPreCondit      PreCondit
+hi link erlangPreProc        PreProc
+hi link erlangDelimiter      Delimiter
+hi link erlangBitDelimiter   Normal
+hi link erlangOperator       Operator
+hi link erlangConditional    Conditional
+hi link erlangGuard          Conditional
+hi link erlangBoolean        Boolean
+hi link erlangAtom           Constant
+hi link erlangRecord         Structure
+hi link erlangInteger        Number
+hi link erlangFloat          Number
+hi link erlangFloat          Number
+hi link erlangFloat          Number
+hi link erlangFloat          Number
+hi link erlangHex            Number
+hi link erlangFun            Keyword
+hi link erlangList           Delimiter
+hi link erlangTuple          Delimiter
+hi link erlangBinary         Keyword
+hi link erlangBitVariable    Identifier
+hi link erlangBitType        Type
+hi link erlangType           Type
+hi link erlangBitSize        Number
+
+" Optional highlighting
+if g:erlang_highlight_bif
+       hi link erlangBIF    Keyword
+       hi link erlangGBIF   Keyword
 endif
-
-
-let b:current_syntax = "erlang"
-
index 3e5cb220b63ea9b6daaa4e83dce08009fb22c152..6fe42af6f135b8bc425f4936a2b7af9fa6b6a894 100644 (file)
@@ -1,7 +1,7 @@
 " Vim syntax file
-" Language:    Fortran 2008 (and earlier versions including 2003, 95, 90, and 77)
-" Version:     0.91
-" Last Change: 2012 Jan. 02
+" Language:    Fortran 2008 (and earlier versions: 2003, 95, 90, and 77)
+" Version:     0.93
+" Last Change: 2012 Jan. 18
 " Maintainer:  Ajit J. Thakkar (ajit AT unb.ca); <http://www.unb.ca/chem/ajit/>
 " Usage:       For instructions, do :help fortran-syntax from Vim
 " Credits:
 "  Walter Dieudonné, Alexander Wagner, Roman Bertle, Charles Rendleman,
 "  Andrew Griffiths, Joe Krahn, and Hendrik Merx.
 
-" For version 5.x: Clear all syntax items
-" For version 6.x: Quit if a syntax file is already loaded
-if version < 600
-  syntax clear
-elseif exists("b:current_syntax")
+if exists("b:current_syntax")
   finish
 endif
 
 let s:cpo_save = &cpo
 set cpo&vim
 
-" let b:fortran_dialect = fortran_dialect if set correctly by user
-if exists("fortran_dialect")
-  if fortran_dialect =~ '\<\(f\(9[05]\|77\)\|elf\|F\)\>'
-    let b:fortran_dialect = matchstr(fortran_dialect,'\<\(f\(9[05]\|77\)\|elf\|F\)\>')
-  else
-    echohl WarningMsg | echo "Unknown value of fortran_dialect" | echohl None
-    let b:fortran_dialect = "unknown"
+" Choose fortran_dialect using the priority:
+" source file directive > buffer-local value > global value > default
+" try using directive in first three lines of file
+let b:fortran_retype = getline(1)." ".getline(2)." ".getline(3)
+if b:fortran_retype =~? '\<fortran_dialect\s*=\s*F\>'
+  let b:fortran_dialect = "F"
+elseif b:fortran_retype =~? '\<fortran_dialect\s*=\s*f08\>'
+  let b:fortran_dialect = "f08"
+elseif !exists("b:fortran_dialect")
+  if exists("g:fortran_dialect") && g:fortran_dialect =~# '\<F\|f08\>'
+    " try global variable
+    let b:fortran_dialect = g:fortran_dialect
+  else         " nothing found, so use default
+    let b:fortran_dialect = "f08"
   endif
-else
-  let b:fortran_dialect = "unknown"
 endif
-
-" fortran_dialect not set or set incorrectly by user,
-if b:fortran_dialect == "unknown"
-  " set b:fortran_dialect from directive in first three lines of file
-  let b:fortran_retype = getline(1)." ".getline(2)." ".getline(3)
-  if b:fortran_retype =~ '\<fortran_dialect\s*=\s*F\>'
-    let b:fortran_dialect = "F"
-  elseif b:fortran_retype =~ '\<fortran_dialect\s*=\s*elf\>'
-    let b:fortran_dialect = "elf"
-  elseif b:fortran_retype =~ '\<fortran_dialect\s*=\s*f90\>'
-    let b:fortran_dialect = "f90"
-  elseif b:fortran_retype =~ '\<fortran_dialect\s*=\s*f95\>'
-    let b:fortran_dialect = "f95"
-  elseif b:fortran_retype =~ '\<fortran_dialect\s*=\s*f77\>'
-    let b:fortran_dialect = "f77"
-  else
-    " no directive found, so assume f95
-    let b:fortran_dialect = "f95"
-  endif
-  unlet b:fortran_retype
+unlet! b:fortran_retype
+" make sure buffer-local value is not invalid
+if b:fortran_dialect !~# '\<F\|f08\>'
+  let b:fortran_dialect = "f08"
 endif
 
 " Choose between fixed and free source form if this hasn't been done yet
 if !exists("b:fortran_fixed_source")
-  if b:fortran_dialect == "elf" || b:fortran_dialect == "F"
-    " elf and F require free source form
+  if b:fortran_dialect == "F"
+    " F requires free source form
     let b:fortran_fixed_source = 0
-  elseif b:fortran_dialect == "f77"
-    " f77 requires fixed source form
-    let b:fortran_fixed_source = 1
   elseif exists("fortran_free_source")
-    " User guarantees free source form for all f90 and f95 files
+    " User guarantees free source form for all fortran files
     let b:fortran_fixed_source = 0
   elseif exists("fortran_fixed_source")
-    " User guarantees fixed source form for all f90 and f95 files
+    " User guarantees fixed source form for all fortran files
     let b:fortran_fixed_source = 1
   else
-    " f90 and f95 allow both fixed and free source form.
+    " Modern fortran still allows both free and fixed source form.
     " Assume fixed source form unless signs of free source form
     " are detected in the first five columns of the first s:lmax lines.
     " Detection becomes more accurate and time-consuming if more lines
@@ -96,29 +78,18 @@ endif
 
 syn case ignore
 
-if b:fortran_dialect !=? "f77"
-  if version >= 600
-    if b:fortran_fixed_source == 1
-      syn match fortranConstructName   "^\s\{6,}\zs\a\w*\ze\s*:"
-    else
-      syn match fortranConstructName   "^\s*\zs\a\w*\ze\s*:"
-    endif
-    if exists("fortran_more_precise")
-      syn match fortranConstructName "\(\<end\s*do\s\+\)\@<=\a\w*"
-      syn match fortranConstructName "\(\<end\s*if\s\+\)\@<=\a\w*"
-      syn match fortranConstructName "\(\<end\s*select\s\+\)\@<=\a\w*"
-    endif
-  else
-    if b:fortran_fixed_source == 1
-      syn match fortranConstructName   "^\s\{6,}\a\w*\s*:"
-    else
-      syn match fortranConstructName   "^\s*\a\w*\s*:"
-    endif
-  endif
+if b:fortran_fixed_source == 1
+  syn match fortranConstructName       "^\s\{6,}\zs\a\w*\ze\s*:"
+else
+  syn match fortranConstructName       "^\s*\zs\a\w*\ze\s*:"
+endif
+if exists("fortran_more_precise")
+  syn match fortranConstructName "\(\<end\s*do\s\+\)\@<=\a\w*"
+  syn match fortranConstructName "\(\<end\s*if\s\+\)\@<=\a\w*"
+  syn match fortranConstructName "\(\<end\s*select\s\+\)\@<=\a\w*"
 endif
 
-syn match   fortranUnitHeader  "\<end\>"
-
+syn match fortranUnitHeader    "\<end\>"
 syn match fortranType          "\<character\>"
 syn match fortranType          "\<complex\>"
 syn match fortranType          "\<integer\>"
@@ -145,7 +116,7 @@ syn match  fortranParenError   ")"
 syn match fortranOperator      "\.\s*n\=eqv\s*\."
 syn match fortranOperator      "\.\s*\(and\|or\|not\)\s*\."
 syn match fortranOperator      "\(+\|-\|/\|\*\)"
-syn match fortranTypeOb                "\<character\>\@<=\s*\*"
+syn match fortranTypeOb                "\<character\s*\*"
 
 syn match fortranBoolean       "\.\s*\(true\|false\)\s*\."
 
@@ -160,17 +131,17 @@ endif
 
 syn keyword fortranIO          access blank direct exist file fmt form formatted iostat name named nextrec number opened rec recl sequential status unformatted unit
 
-syn keyword fortran66Intrinsic         alog alog10 amax0 amax1 amin0 amin1 amod cabs ccos cexp clog csin csqrt dabs dacos dasin datan datan2 dcos dcosh ddim dexp dint dlog dlog10 dmax1 dmin1 dmod dnint dsign dsin dsinh dsqrt dtan dtanh float iabs idim idint idnint ifix isign max0 max1 min0 min1 sngl
+syn keyword fortranIntrinsicR          alog alog10 amax0 amax1 amin0 amin1 amod cabs ccos cexp clog csin csqrt dabs dacos dasin datan datan2 dcos dcosh ddim dexp dint dlog dlog10 dmax1 dmin1 dmod dnint dsign dsin dsinh dsqrt dtan dtanh float iabs idim idint idnint ifix isign max0 max1 min0 min1 sngl
 
 " Intrinsics provided by some vendors
 syn keyword fortranExtraIntrinsic      algama cdabs cdcos cdexp cdlog cdsin cdsqrt cqabs cqcos cqexp cqlog cqsin cqsqrt dcmplx dconjg derf derfc dfloat dgamma dimag dlgama iqint qabs qacos qasin qatan qatan2 qcmplx qconjg qcos qcosh qdim qerf qerfc qexp qgamma qimag qlgama qlog qlog10 qmax1 qmin1 qmod qnint qsign qsin qsinh qsqrt qtan qtanh
 
-syn keyword fortran77Intrinsic abs acos aimag aint anint asin atan atan2 char cmplx conjg cos cosh exp ichar index int log log10 max min nint sign sin sinh sqrt tan tanh
-syn match fortran77Intrinsic   "\<len\s*[(,]"me=s+3
-syn match fortran77Intrinsic   "\<real\s*("me=s+4
+syn keyword fortranIntrinsic   abs acos aimag aint anint asin atan atan2 char cmplx conjg cos cosh exp ichar index int log log10 max min nint sign sin sinh sqrt tan tanh
+syn match fortranIntrinsic     "\<len\s*[(,]"me=s+3
+syn match fortranIntrinsic     "\<real\s*("me=s+4
 syn match fortranType          "\<implicit\s\+real"
 syn match fortranType          "^\s*real\>"
-syn match fortran90Intrinsic   "\<logical\s*("me=s+7
+syn match fortranIntrinsic     "\<logical\s*("me=s+7
 syn match fortranType          "\<implicit\s\+logical"
 syn match fortranType          "^\s*logical\>"
 
@@ -178,13 +149,13 @@ syn match fortranType             "^\s*logical\>"
 " Integers
 syn match fortranNumber        display "\<\d\+\(_\a\w*\)\=\>"
 " floating point number, without a decimal point
-syn match fortranFloatNoDec    display "\<\d\+[deq][-+]\=\d\+\(_\a\w*\)\=\>"
+syn match fortranFloatIll      display "\<\d\+[deq][-+]\=\d\+\(_\a\w*\)\=\>"
 " floating point number, starting with a decimal point
-syn match fortranFloatIniDec   display "\.\d\+\([deq][-+]\=\d\+\)\=\(_\a\w*\)\=\>"
+syn match fortranFloatIll      display "\.\d\+\([deq][-+]\=\d\+\)\=\(_\a\w*\)\=\>"
 " floating point number, no digits after decimal
-syn match fortranFloatEndDec   display "\<\d\+\.\([deq][-+]\=\d\+\)\=\(_\a\w*\)\=\>"
+syn match fortranFloatIll      display "\<\d\+\.\([deq][-+]\=\d\+\)\=\(_\a\w*\)\=\>"
 " floating point number, D or Q exponents
-syn match fortranFloatDExp     display "\<\d\+\.\d\+\([dq][-+]\=\d\+\)\=\(_\a\w*\)\=\>"
+syn match fortranFloatIll      display "\<\d\+\.\d\+\([dq][-+]\=\d\+\)\=\(_\a\w*\)\=\>"
 " floating point number
 syn match fortranFloat display "\<\d\+\.\d\+\(e[-+]\=\d\+\)\=\(_\a\w*\)\=\>"
 " Numbers in formats
@@ -202,76 +173,73 @@ syn match fortranLabelNumber      display "^  \d\{1,3}\s"ms=s+2,me=e-1
 syn match fortranLabelNumber   display "^   \d\d\=\s"ms=s+3,me=e-1
 syn match fortranLabelNumber   display "^    \d\s"ms=s+4,me=e-1
 
-if version >= 600 && exists("fortran_more_precise")
+if exists("fortran_more_precise")
   " Numbers as targets
   syn match fortranTarget      display "\(\<if\s*(.\+)\s*\)\@<=\(\d\+\s*,\s*\)\{2}\d\+\>"
   syn match fortranTarget      display "\(\<do\s\+\)\@<=\d\+\>"
   syn match fortranTarget      display "\(\<go\s*to\s*(\=\)\@<=\(\d\+\s*,\s*\)*\d\+\>"
 endif
 
-syn keyword fortranTypeEx      external
-syn keyword fortranIOEx                format
-syn match fortranKeywordEx     "\<continue\>"
+syn keyword fortranType      external
+syn keyword fortranIOR         format
+syn match fortranKeyword     "\<continue\>"
 syn match fortranKeyword       "^\s*\d\+\s\+continue\>"
 syn match fortranKeyword       "\<go\s*to\>"
 syn match fortranKeywordDel    "\<go\s*to\ze\s\+.*,\s*(.*$"
 syn match fortranKeywordOb     "\<go\s*to\ze\s*(\d\+.*$"
-syn region fortranStringEx     start=+'+ end=+'+ contains=fortranContinueMark,fortranLeftMargin,fortranSerialNumber
-syn keyword fortran77IntrinsicEx       dim lge lgt lle llt mod
+syn region fortranString     start=+'+ end=+'+ contains=fortranContinueMark,fortranLeftMargin,fortranSerialNumber
+syn keyword fortranIntrinsicR  dim lge lgt lle llt mod
 syn keyword fortranKeywordDel  assign pause
 
-if b:fortran_dialect != "f77"
-
-  syn match fortranType         "\<type\>"
-  syn keyword fortranType      none
-
-  syn keyword fortranStructure private public intent optional
-  syn keyword fortranStructure pointer target allocatable
-  syn keyword fortranStorageClass      in out
-  syn match fortranStorageClass        "\<kind\s*="me=s+4
-  syn match fortranStorageClass        "\<len\s*="me=s+3
-
-  syn match fortranUnitHeader  "\<module\>"
-  syn keyword fortranUnitHeader        use only contains
-  syn keyword fortranUnitHeader        result operator assignment
-  syn match fortranUnitHeader  "\<interface\>"
-  syn match fortranUnitHeader  "\<recursive\>"
-  syn keyword fortranKeyword   allocate deallocate nullify cycle exit
-  syn match fortranConditional "\<select\>"
-  syn keyword fortranConditional       case default where elsewhere
-
-  syn match fortranOperator    "\(\(>\|<\)=\=\|==\|/=\|=\)"
-  syn match fortranOperator    "=>"
-
-  syn region fortranString     start=+"+ end=+"+       contains=fortranLeftMargin,fortranContinueMark,fortranSerialNumber
-  syn keyword fortranIO                pad position action delim readwrite
-  syn keyword fortranIO                eor advance nml
-
-  syn keyword fortran90Intrinsic       adjustl adjustr all allocated any associated bit_size btest ceiling count cshift date_and_time digits dot_product eoshift epsilon exponent floor fraction huge iand ibclr ibits ibset ieor ior ishft ishftc lbound len_trim matmul maxexponent maxloc maxval merge minexponent minloc minval modulo mvbits nearest pack precision present product radix random_number random_seed range repeat reshape rrspacing
-  syn keyword fortran90Intrinsic       scale scan selected_int_kind selected_real_kind set_exponent shape size spacing spread sum system_clock tiny transpose trim ubound unpack verify
-  syn match fortran90Intrinsic         "\<not\>\(\s*\.\)\@!"me=s+3
-  syn match fortran90Intrinsic "\<kind\>\s*[(,]"me=s+4
-
-  syn match  fortranUnitHeader "\<end\s*function"
-  syn match  fortranUnitHeader "\<end\s*interface"
-  syn match  fortranUnitHeader "\<end\s*module"
-  syn match  fortranUnitHeader "\<end\s*program"
-  syn match  fortranUnitHeader "\<end\s*subroutine"
-  syn match  fortranRepeat     "\<end\s*do"
-  syn match  fortranConditional        "\<end\s*where"
-  syn match  fortranConditional        "\<select\s*case"
-  syn match  fortranConditional        "\<end\s*select"
-  syn match  fortranType       "\<end\s*type"
-  syn match  fortranType       "\<in\s*out"
-
-  syn keyword fortranType      procedure
-  syn keyword fortranIOEx              namelist
-  syn keyword fortranConditionalEx     while
-  syn keyword fortran90IntrinsicEx     achar iachar transfer
-
-  syn keyword fortranInclude           include
-  syn keyword fortran90StorageClassR   sequence
-endif
+syn match fortranType           "\<type\>"
+syn keyword fortranType                none
+
+syn keyword fortranStructure   private public intent optional
+syn keyword fortranStructure   pointer target allocatable
+syn keyword fortranStorageClass        in out
+syn match fortranStorageClass  "\<kind\s*="me=s+4
+syn match fortranStorageClass  "\<len\s*="me=s+3
+
+syn match fortranUnitHeader    "\<module\>"
+syn keyword fortranUnitHeader  use only contains
+syn keyword fortranUnitHeader  result operator assignment
+syn match fortranUnitHeader    "\<interface\>"
+syn match fortranUnitHeader    "\<recursive\>"
+syn keyword fortranKeyword     allocate deallocate nullify cycle exit
+syn match fortranConditional   "\<select\>"
+syn keyword fortranConditional case default where elsewhere
+
+syn match fortranOperator      "\(\(>\|<\)=\=\|==\|/=\|=\)"
+syn match fortranOperator      "=>"
+
+syn region fortranString       start=+"+ end=+"+       contains=fortranLeftMargin,fortranContinueMark,fortranSerialNumber
+syn keyword fortranIO          pad position action delim readwrite
+syn keyword fortranIO          eor advance nml
+
+syn keyword fortranIntrinsic   adjustl adjustr all allocated any associated bit_size btest ceiling count cshift date_and_time digits dot_product eoshift epsilon exponent floor fraction huge iand ibclr ibits ibset ieor ior ishft ishftc lbound len_trim matmul maxexponent maxloc maxval merge minexponent minloc minval modulo mvbits nearest pack precision present product radix random_number random_seed range repeat reshape rrspacing
+syn keyword fortranIntrinsic   scale scan selected_int_kind selected_real_kind set_exponent shape size spacing spread sum system_clock tiny transpose trim ubound unpack verify
+syn match fortranIntrinsic             "\<not\>\(\s*\.\)\@!"me=s+3
+syn match fortranIntrinsic     "\<kind\>\s*[(,]"me=s+4
+
+syn match  fortranUnitHeader   "\<end\s*function"
+syn match  fortranUnitHeader   "\<end\s*interface"
+syn match  fortranUnitHeader   "\<end\s*module"
+syn match  fortranUnitHeader   "\<end\s*program"
+syn match  fortranUnitHeader   "\<end\s*subroutine"
+syn match  fortranRepeat       "\<end\s*do"
+syn match  fortranConditional  "\<end\s*where"
+syn match  fortranConditional  "\<select\s*case"
+syn match  fortranConditional  "\<end\s*select"
+syn match  fortranType "\<end\s*type"
+syn match  fortranType "\<in\s*out"
+
+syn keyword fortranType        procedure
+syn keyword fortranIOR         namelist
+syn keyword fortranConditionalR        while
+syn keyword fortranIntrinsicR  achar iachar transfer
+
+syn keyword fortranInclude             include
+syn keyword fortranStorageClassR       sequence
 
 syn match   fortranConditional "\<end\s*if"
 syn match   fortranIO          contains=fortranOperator "\<e\(nd\|rr\)\s*=\s*\d\+"
@@ -282,55 +250,53 @@ syn match fortranTypeR            display "double\s\+precision"
 syn match fortranTypeR         display "double\s\+complex"
 syn match fortranUnitHeaderR   display "block\s\+data"
 syn keyword fortranStorageClassR       common equivalence data
-syn keyword fortran77IntrinsicR        dble dprod
-syn match   fortran77OperatorR "\.\s*[gl][et]\s*\."
-syn match   fortran77OperatorR "\.\s*\(eq\|ne\)\s*\."
-
-if b:fortran_dialect == "f95" || b:fortran_dialect == "F"
-  syn keyword fortranRepeat            forall
-  syn match fortranRepeat              "\<end\s*forall"
-  syn keyword fortran95Intrinsic       null cpu_time
-  syn match fortranType                        "\<elemental\>"
-  syn match fortranType                        "\<pure\>"
-  if exists("fortran_more_precise")
-    syn match fortranConstructName "\(\<end\s*forall\s\+\)\@<=\a\w*\>"
-  endif
+syn keyword fortranIntrinsicR  dble dprod
+syn match   fortranOperatorR   "\.\s*[gl][et]\s*\."
+syn match   fortranOperatorR   "\.\s*\(eq\|ne\)\s*\."
+
+syn keyword fortranRepeat              forall
+syn match fortranRepeat                "\<end\s*forall"
+syn keyword fortranIntrinsic   null cpu_time
+syn match fortranType                  "\<elemental\>"
+syn match fortranType                  "\<pure\>"
+if exists("fortran_more_precise")
+  syn match fortranConstructName "\(\<end\s*forall\s\+\)\@<=\a\w*\>"
 endif
 
-if b:fortran_dialect == "f95"
+if b:fortran_dialect == "f08"
   " F2003
-  syn keyword fortran03Intrinsic        command_argument_count get_command get_command_argument get_environment_variable is_iostat_end is_iostat_eor move_alloc new_line selected_char_kind same_type_as extends_type_of
+  syn keyword fortranIntrinsic        command_argument_count get_command get_command_argument get_environment_variable is_iostat_end is_iostat_eor move_alloc new_line selected_char_kind same_type_as extends_type_of
   " ISO_C_binding
-  syn keyword fortran03Constant         c_null_char c_alert c_backspace c_form_feed c_new_line c_carriage_return c_horizontal_tab c_vertical_tab
-  syn keyword fortran03Constant         c_int c_short c_long c_long_long c_signed_char c_size_t c_int8_t c_int16_t c_int32_t c_int64_t c_int_least8_t c_int_least16_t c_int_least32_t c_int_least64_t c_int_fast8_t c_int_fast16_t c_int_fast32_t c_int_fast64_t c_intmax_t C_intptr_t c_float c_double c_long_double c_float_complex c_double_complex c_long_double_complex c_bool c_char c_null_ptr c_null_funptr
-  syn keyword fortran03Intrinsic        iso_c_binding c_loc c_funloc c_associated  c_f_pointer c_f_procpointer
-  syn keyword fortran03Type             c_ptr c_funptr
+  syn keyword fortranConstant         c_null_char c_alert c_backspace c_form_feed c_new_line c_carriage_return c_horizontal_tab c_vertical_tab
+  syn keyword fortranConstant         c_int c_short c_long c_long_long c_signed_char c_size_t c_int8_t c_int16_t c_int32_t c_int64_t c_int_least8_t c_int_least16_t c_int_least32_t c_int_least64_t c_int_fast8_t c_int_fast16_t c_int_fast32_t c_int_fast64_t c_intmax_t C_intptr_t c_float c_double c_long_double c_float_complex c_double_complex c_long_double_complex c_bool c_char c_null_ptr c_null_funptr
+  syn keyword fortranIntrinsic        iso_c_binding c_loc c_funloc c_associated  c_f_pointer c_f_procpointer
+  syn keyword fortranType             c_ptr c_funptr
   " ISO_Fortran_env
-  syn keyword fortran03Constant         iso_fortran_env character_storage_size error_unit file_storage_size input_unit iostat_end iostat_eor numeric_storage_size output_unit
+  syn keyword fortranConstant         iso_fortran_env character_storage_size error_unit file_storage_size input_unit iostat_end iostat_eor numeric_storage_size output_unit
   " IEEE_arithmetic
-  syn keyword fortran03Intrinsic        ieee_arithmetic ieee_support_underflow_control ieee_get_underflow_mode ieee_set_underflow_mode
-
-  syn keyword fortran03ReadWrite       flush wait
-  syn keyword fortran03IO              decimal round iomsg
-  syn keyword fortran03Type             asynchronous nopass non_overridable pass protected volatile abstract extends import
-  syn keyword fortran03Type             non_intrinsic value bind deferred generic final enumerator
-  syn match fortran03Type               "\<class\>"
-  syn match fortran03Type               "\<associate\>"
-  syn match fortran03Type               "\<end\s*associate"
-  syn match fortran03Type               "\<enum\s*,\s*bind\s*(\s*c\s*)"
-  syn match fortran03Type               "\<end\s*enum"
-  syn match fortran03Conditional       "\<select\s*type"
-  syn match fortran03Conditional        "\<type\s*is\>"
-  syn match fortran03Conditional        "\<class\s*is\>"
-  syn match fortran03UnitHeader         "\<abstract\s*interface\>"
-  syn match fortran03Operator           "\([\|]\)"
+  syn keyword fortranIntrinsic        ieee_arithmetic ieee_support_underflow_control ieee_get_underflow_mode ieee_set_underflow_mode
+
+  syn keyword fortranReadWrite flush wait
+  syn keyword fortranIO              decimal round iomsg
+  syn keyword fortranType             asynchronous nopass non_overridable pass protected volatile abstract extends import
+  syn keyword fortranType             non_intrinsic value bind deferred generic final enumerator
+  syn match fortranType               "\<class\>"
+  syn match fortranType               "\<associate\>"
+  syn match fortranType               "\<end\s*associate"
+  syn match fortranType               "\<enum\s*,\s*bind\s*(\s*c\s*)"
+  syn match fortranType               "\<end\s*enum"
+  syn match fortranConditional "\<select\s*type"
+  syn match fortranConditional        "\<type\s*is\>"
+  syn match fortranConditional        "\<class\s*is\>"
+  syn match fortranUnitHeader         "\<abstract\s*interface\>"
+  syn match fortranOperator           "\([\|]\)"
 
   " F2008
-  syn keyword fortran08Intrinsic        acosh asinh atanh bessel_j0 bessel_j1 bessel_jn bessel_y0 bessel_y1 bessel_yn erf erfc erfc_scaled gamma log_gamma hypot norm2
-  syn keyword fortran08Intrinsic        atomic_define atomic_ref execute_command_line leadz trailz storage_size merge_bits
-  syn keyword fortran08Intrinsic        bge bgt ble blt dshiftl dshiftr findloc iall iany iparity image_index lcobound ucobound maskl maskr num_images parity popcnt poppar shifta shiftl shiftr this_image
-  syn keyword fortran08IO               newunit
-  syn keyword fortran08Type             contiguous
+  syn keyword fortranIntrinsic        acosh asinh atanh bessel_j0 bessel_j1 bessel_jn bessel_y0 bessel_y1 bessel_yn erf erfc erfc_scaled gamma log_gamma hypot norm2
+  syn keyword fortranIntrinsic        atomic_define atomic_ref execute_command_line leadz trailz storage_size merge_bits
+  syn keyword fortranIntrinsic        bge bgt ble blt dshiftl dshiftr findloc iall iany iparity image_index lcobound ucobound maskl maskr num_images parity popcnt poppar shifta shiftl shiftr this_image
+  syn keyword fortranIO               newunit
+  syn keyword fortranType             contiguous
 endif
 
 syn cluster fortranCommentGroup contains=fortranTodo
@@ -350,9 +316,7 @@ else
   syn match fortranContinueMark                display "&"
 endif
 
-if b:fortran_dialect != "f77"
-  syn match fortranComment     excludenl "!.*$" contains=@fortranCommentGroup,@spell
-endif
+syn match fortranComment       excludenl "!.*$" contains=@fortranCommentGroup,@spell
 
 "cpp is often used with Fortran
 syn match      cPreProc                "^\s*#\s*\(define\|ifdef\)\>.*"
@@ -372,7 +336,7 @@ else
   syn sync minlines=30
 endif
 
-if version >= 600 && exists("fortran_fold")
+if exists("fortran_fold")
 
   if (b:fortran_fixed_source == 1)
     syn region fortranProgram transparent fold keepend start="^\s*program\s\+\z(\a\w*\)" skip="^\([!c*]\|\s*#\).*$" excludenl end="\<end\s*\(program\(\s\+\z1\>\)\=\|$\)" contains=ALLBUT,fortranModule
@@ -416,148 +380,93 @@ if version >= 600 && exists("fortran_fold")
 endif
 
 " 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_fortran_syn_inits")
-  if version < 508
-    let did_fortran_syn_inits = 1
-    command -nargs=+ HiLink hi link <args>
-  else
-    command -nargs=+ HiLink hi def link <args>
-  endif
-
-  " The default highlighting differs for each dialect.
-  " Transparent groups:
-  " fortranParen, fortranLeftMargin
-  " fortranProgram, fortranModule, fortranSubroutine, fortranFunction,
-  " fortranBlockData
-  " fortran77Loop, fortran90Loop, fortranIfBlock, fortranCase
-  " fortranMultiCommentLines
-  HiLink fortranKeyword        Keyword
-  HiLink fortranConstructName  Identifier
-  HiLink fortran03Conditional  fortranConditional
-  HiLink fortranConditional    Conditional
-  HiLink fortranRepeat         Repeat
-  HiLink fortranTodo           Todo
-  if (b:fortran_fixed_source == 1)
-    HiLink fortranContinueMark Todo
-  else
-    HiLink fortranContinueMark Keyword
-  endif
-  HiLink fortranString         String
-  HiLink fortranNumber         Number
-  HiLink fortran03Operator     fortranOperator
-  HiLink fortranOperator       Operator
-  HiLink fortranBoolean                Boolean
-  HiLink fortranLabelError     Error
-  HiLink fortranObsolete       Todo
-  HiLink fortran03Type         fortranType
-  HiLink fortran08Type         fortranType
-  HiLink fortranType           Type
-  HiLink fortranStructure      Type
-  HiLink fortranStorageClass   StorageClass
-  HiLink fortranCall           Function
-  HiLink fortran03UnitHeader   fortranUnitHeader
-  HiLink fortranUnitHeader     fortranPreCondit
-  HiLink fortran03ReadWrite    fortranReadWrite
-  HiLink fortranReadWrite      Keyword
-  HiLink fortran03IO           fortranIO
-  HiLink fortran08IO           fortranIO
-  HiLink fortranIO             Keyword
-  HiLink fortran95Intrinsic    fortran90Intrinsic
-  HiLink fortran77Intrinsic    fortran90Intrinsic
-  HiLink fortran90Intrinsic    Function
-  HiLink fortran03Intrinsic    Function
-  HiLink fortran08Intrinsic    Function
-  HiLink fortran03Constant     Function
-
-  if b:fortran_dialect != "f77"
-    HiLink fortranUnitHeaderOb    Todo
-    HiLink fortranKeywordOb       Todo
-    HiLink fortranConditionalOb   Todo
-    HiLink fortranTypeOb          Todo
-    HiLink fortranKeywordDel      Todo
-  else
-    HiLink fortranUnitHeaderOb    fortranUnitHeader
-    HiLink fortranKeywordOb       fortranKeyword
-    HiLink fortranConditionalOb   fortranConditional
-    HiLink fortranTypeOb          fortranType
-    HiLink fortranKeywordDel      fortranKeyword
-  endif
-
-  if ( b:fortran_dialect == "elf" || b:fortran_dialect == "F" )
-    HiLink fortranKeywordOb    fortranObsolete
-    HiLink fortran66Intrinsic  fortranObsolete
-    HiLink fortran77IntrinsicR fortranObsolete
-    HiLink fortranUnitHeaderR  fortranObsolete
-    HiLink fortranTypeR                fortranObsolete
-    HiLink fortranStorageClassR        fortranObsolete
-    HiLink fortran90StorageClassR      fortranObsolete
-    HiLink fortran77OperatorR  fortranObsolete
-    HiLink fortranInclude      fortranObsolete
-  else
-    HiLink fortranKeywordOb    fortranKeyword
-    HiLink fortran66Intrinsic  fortran90Intrinsic
-    HiLink fortran77IntrinsicR fortran90Intrinsic
-    HiLink fortranUnitHeaderR  fortranPreCondit
-    HiLink fortranTypeR                fortranType
-    HiLink fortranStorageClassR        fortranStorageClass
-    HiLink fortran77OperatorR  fortranOperator
-    HiLink fortranInclude      Include
-    HiLink fortran90StorageClassR      fortranStorageClass
-  endif
-
-  if ( b:fortran_dialect == "F" )
-    HiLink fortranLabelNumber  fortranObsolete
-    HiLink fortranTarget       fortranObsolete
-    HiLink fortranFormatSpec   fortranObsolete
-    HiLink fortranFloatDExp    fortranObsolete
-    HiLink fortranFloatNoDec   fortranObsolete
-    HiLink fortranFloatIniDec  fortranObsolete
-    HiLink fortranFloatEndDec  fortranObsolete
-    HiLink fortranTypeEx       fortranObsolete
-    HiLink fortranIOEx         fortranObsolete
-    HiLink fortranKeywordEx    fortranObsolete
-    HiLink fortranStringEx     fortranObsolete
-    HiLink fortran77IntrinsicEx        fortranObsolete
-    HiLink fortranUnitHeaderEx fortranObsolete
-    HiLink fortranConditionalEx        fortranObsolete
-    HiLink fortran90IntrinsicEx        fortranObsolete
-  else
-    HiLink fortranLabelNumber  Special
-    HiLink fortranTarget       Special
-    HiLink fortranFormatSpec   Identifier
-    HiLink fortranFloatDExp    fortranFloat
-    HiLink fortranFloatNoDec   fortranFloat
-    HiLink fortranFloatIniDec  fortranFloat
-    HiLink fortranFloatEndDec  fortranFloat
-    HiLink fortranTypeEx       fortranType
-    HiLink fortranIOEx         fortranIO
-    HiLink fortranKeywordEx    fortranKeyword
-    HiLink fortranStringEx     fortranString
-    HiLink fortran77IntrinsicEx        fortran90Intrinsic
-    HiLink fortranUnitHeaderEx fortranUnitHeader
-    HiLink fortranConditionalEx        fortranConditional
-    HiLink fortran90IntrinsicEx        fortran90Intrinsic
-  endif
-
-  HiLink fortranFloat          Float
-  HiLink fortranPreCondit      PreCondit
-  HiLink fortranInclude                Include
-  HiLink cIncluded             fortranString
-  HiLink cInclude              Include
-  HiLink cPreProc              PreProc
-  HiLink cPreCondit            PreCondit
-  HiLink fortranParenError     Error
-  HiLink fortranComment                Comment
-  HiLink fortranSerialNumber   Todo
-  HiLink fortranTab            Error
-  " Vendor extensions
-  HiLink fortranExtraIntrinsic Function
-
-  delcommand HiLink
+" The default highlighting differs for each dialect.
+" Transparent groups:
+" fortranParen, fortranLeftMargin
+" fortranProgram, fortranModule, fortranSubroutine, fortranFunction,
+" fortranBlockData
+" fortran77Loop, fortran90Loop, fortranIfBlock, fortranCase
+" fortranMultiCommentLines
+hi def link fortranKeyword     Keyword
+hi def link fortranConstructName       Identifier
+hi def link fortranConditional Conditional
+hi def link fortranRepeat      Repeat
+hi def link fortranTodo                Todo
+hi def link fortranContinueMark        Special
+hi def link fortranString      String
+hi def link fortranNumber      Number
+hi def link fortranOperator    Operator
+hi def link fortranBoolean     Boolean
+hi def link fortranLabelError  Error
+hi def link fortranObsolete    Todo
+hi def link fortranType                Type
+hi def link fortranStructure   Type
+hi def link fortranStorageClass        StorageClass
+hi def link fortranCall                Function
+hi def link fortranUnitHeader  fortranPreCondit
+hi def link fortranReadWrite   Keyword
+hi def link fortranIO          Keyword
+hi def link fortranIntrinsic   Function
+hi def link fortranConstant    Constant
+
+" To stop deleted & obsolescent features being highlighted as Todo items,
+" comment out the next 5 lines and uncomment the 5 lines after that
+hi def link fortranUnitHeaderOb    fortranObsolete
+hi def link fortranKeywordOb       fortranObsolete
+hi def link fortranConditionalOb   fortranObsolete
+hi def link fortranTypeOb          fortranObsolete
+hi def link fortranKeywordDel      fortranObsolete
+"hi def link fortranUnitHeaderOb    fortranUnitHeader
+"hi def link fortranKeywordOb       fortranKeyword
+"hi def link fortranConditionalOb   fortranConditional
+"hi def link fortranTypeOb          fortranType
+"hi def link fortranKeywordDel      fortranKeyword
+
+if b:fortran_dialect == "F"
+  hi! def link fortranIntrinsicR       fortranObsolete
+  hi! def link fortranUnitHeaderR      fortranObsolete
+  hi! def link fortranTypeR            fortranObsolete
+  hi! def link fortranStorageClassR    fortranObsolete
+  hi! def link fortranOperatorR        fortranObsolete
+  hi! def link fortranInclude          fortranObsolete
+  hi! def link fortranLabelNumber      fortranObsolete
+  hi! def link fortranTarget           fortranObsolete
+  hi! def link fortranFloatIll         fortranObsolete
+  hi! def link fortranIOR              fortranObsolete
+  hi! def link fortranKeywordR         fortranObsolete
+  hi! def link fortranStringR          fortranObsolete
+  hi! def link fortranConditionalR     fortranObsolete
+else
+  hi! def link fortranIntrinsicR       fortranIntrinsic
+  hi! def link fortranUnitHeaderR      fortranPreCondit
+  hi! def link fortranTypeR            fortranType
+  hi! def link fortranStorageClassR    fortranStorageClass
+  hi! def link fortranOperatorR                fortranOperator
+  hi! def link fortranInclude          Include
+  hi! def link fortranLabelNumber      Special
+  hi! def link fortranTarget           Special
+  hi! def link fortranFloatIll         fortranFloat
+  hi! def link fortranIOR              fortranIO
+  hi! def link fortranKeywordR         fortranKeyword
+  hi! def link fortranStringR          fortranString
+  hi! def link fortranConditionalR     fortranConditional
 endif
 
+hi def link fortranFormatSpec  Identifier
+hi def link fortranFloat       Float
+hi def link fortranPreCondit   PreCondit
+hi def link cIncluded          fortranString
+hi def link cInclude           Include
+hi def link cPreProc           PreProc
+hi def link cPreCondit         PreCondit
+hi def link fortranParenError  Error
+hi def link fortranComment     Comment
+hi def link fortranSerialNumber        Todo
+hi def link fortranTab         Error
+
+" Uncomment the next line if you use extra intrinsics provided by vendors
+"hi def link fortranExtraIntrinsic     Function
+
 let b:current_syntax = "fortran"
 
 let &cpo = s:cpo_save
index 2793aa4ed848ed82cc80c378c815626fb1b8f41b..f46a465215a7895e207e5e11a2f3e98de3c67906 100644 (file)
@@ -1,7 +1,7 @@
 " Vim syntax file
-" Language:    gp (version 2.4)
+" Language:    gp (version 2.5)
 " Maintainer:  Karim Belabas <Karim.Belabas@math.u-bordeaux.fr>
-" Last change: 2007 Oct 1
+" Last change: 2012 Jan 08
 " URL:         http://pari.math.u-bordeaux.fr
 
 if version < 600
@@ -10,21 +10,30 @@ elseif exists("b:current_syntax")
   finish
 endif
 
+let s:cpo_save = &cpo
+set cpo&vim
+
 " control statements
 syntax keyword gpStatement     break return next
 syntax keyword gpConditional   if
-syntax keyword gpRepeat                until while for fordiv forprime forstep forvec
+syntax keyword gpRepeat                until while for fordiv forell forprime 
+syntax keyword gpRepeat                forsubgroup forstep forvec
 " storage class
 syntax keyword gpScope         my local global
 " defaults
-syntax keyword gpInterfaceKey  colors compatible datadir debug debugfiles
-syntax keyword gpInterfaceKey  debugmem echo factor_add_primes format help
-syntax keyword gpInterfaceKey  histsize lines log logfile new_galois_format
+syntax keyword gpInterfaceKey  breakloop colors compatible
+syntax keyword gpInterfaceKey  datadir debug debugfiles debugmem 
+syntax keyword gpInterfaceKey  echo factor_add_primes factor_proven format 
+syntax keyword gpInterfaceKey  graphcolormap graphcolors
+syntax keyword gpInterfaceKey  help histfile histsize 
+syntax keyword gpInterfaceKey  lines linewrap log logfile new_galois_format
 syntax keyword gpInterfaceKey  output parisize path prettyprinter primelimit
-syntax keyword gpInterfaceKey  prompt prompt_cont psfile realprecision secure
-syntax keyword gpInterfaceKey  seriesprecision simplify strictmatch TeXstyle timer
+syntax keyword gpInterfaceKey  prompt prompt_cont psfile 
+syntax keyword gpInterfaceKey  readline realprecision recover 
+syntax keyword gpInterfaceKey  secure seriesprecision simplify strictmatch
+syntax keyword gpInterfaceKey  TeXstyle timer
 
-syntax match   gpInterface     "^\s*\\[a-z].*"
+syntax match gpInterface       "^\s*\\[a-z].*"
 syntax keyword gpInterface     default
 syntax keyword gpInput         read input
 
@@ -79,4 +88,6 @@ if version >= 508 || !exists("did_gp_syn_inits")
 endif
 
 let b:current_syntax = "gp"
+let &cpo = s:cpo_save
+unlet s:cpo_save
 " vim: ts=8
index 721692267e1167ee9db9ca45bf62678286c2450c..5b256f39893b724d56599ec73e2faedc295ec2aa 100644 (file)
@@ -2,15 +2,15 @@
 " Language:    Groovy
 " Original Author:     Alessio Pace <billy.corgan@tiscali.it>
 " Maintainer:  Tobias Rapp <yahuxo@gmx.de>
-" Version:     0.1.10
-" URL:   http://www.vim.org/scripts/script.php?script_id=945   
-" Last Change: 2010 Nov 29
+" Version:     0.1.11
+" URL:   http://www.vim.org/scripts/script.php?script_id=945
+" Last Change: 2012 Jan 08
 
 " THE ORIGINAL AUTHOR'S NOTES:
 "
 " This is my very first vim script, I hope to have
 " done it the right way.
-" 
+"
 " I must directly or indirectly thank the author of java.vim and ruby.vim:
 " I copied from them most of the stuff :-)
 "
@@ -22,7 +22,7 @@
 " HOWTO USE IT (INSTALL) when not part of the distribution:
 "
 " 1) copy the file in the (global or user's $HOME/.vim/syntax/) syntax folder
-" 
+"
 " 2) add this line to recognize groovy files by filename extension:
 "
 " au BufNewFile,BufRead *.groovy  setf groovy
@@ -38,7 +38,7 @@
 "  endif
 "
 "  in the global scripts.vim file or in $HOME/.vim/scripts.vim
-" 
+"
 " 4) open/write a .groovy file or a groovy script :-)
 "
 " Let me know if you like it or send me patches, so that I can improve it
@@ -55,6 +55,9 @@ if !exists("main_syntax")
   let main_syntax='groovy'
 endif
 
+let s:cpo_save = &cpo
+set cpo&vim
+
 " don't use standard HiLink, it will not work with included syntax files
 if version < 508
   command! -nargs=+ GroovyHiLink hi link <args>
@@ -101,11 +104,11 @@ syn keyword groovyScopeDecl       public protected private abstract
 if exists("groovy_highlight_groovy_lang_ids") || exists("groovy_highlight_groovy_lang") || exists("groovy_highlight_all")
   " groovy.lang.*
   syn keyword groovyLangClass  Closure MetaMethod GroovyObject
-  
+
   syn match groovyJavaLangClass "\<System\>"
   syn keyword groovyJavaLangClass  Cloneable Comparable Runnable Serializable Boolean Byte Class Object
   syn keyword groovyJavaLangClass  Character CharSequence ClassLoader Compiler
-  " syn keyword groovyJavaLangClass  Integer Double Float Long 
+  " syn keyword groovyJavaLangClass  Integer Double Float Long
   syn keyword groovyJavaLangClass  InheritableThreadLocal Math Number Object Package Process
   syn keyword groovyJavaLangClass  Runtime RuntimePermission InheritableThreadLocal
   syn keyword groovyJavaLangClass  SecurityManager Short StrictMath StackTraceElement
@@ -159,18 +162,18 @@ syn match groovyExceptions        "\<Exception\>\|\<[A-Z]\{1,}[a-zA-Z0-9]*Except
 
 " Groovy JDK stuff
 syn keyword groovyJDKBuiltin    as def in
-syn keyword groovyJDKOperOverl  div minus plus abs round power multiply 
-syn keyword groovyJDKMethods   each call inject sort print println 
+syn keyword groovyJDKOperOverl  div minus plus abs round power multiply
+syn keyword groovyJDKMethods   each call inject sort print println
 syn keyword groovyJDKMethods    getAt putAt size push pop toList getText writeLine eachLine readLines
-syn keyword groovyJDKMethods    withReader withStream withWriter withPrintWriter write read leftShift 
+syn keyword groovyJDKMethods    withReader withStream withWriter withPrintWriter write read leftShift
 syn keyword groovyJDKMethods    withWriterAppend readBytes splitEachLine
-syn keyword groovyJDKMethods    newInputStream newOutputStream newPrintWriter newReader newWriter 
-syn keyword groovyJDKMethods    compareTo next previous isCase 
+syn keyword groovyJDKMethods    newInputStream newOutputStream newPrintWriter newReader newWriter
+syn keyword groovyJDKMethods    compareTo next previous isCase
 syn keyword groovyJDKMethods    times step toInteger upto any collect dump every find findAll grep
-syn keyword groovyJDKMethods    inspect invokeMethods join 
+syn keyword groovyJDKMethods    inspect invokeMethods join
 syn keyword groovyJDKMethods    getErr getIn getOut waitForOrKill
 syn keyword groovyJDKMethods    count tokenize asList flatten immutable intersect reverse reverseEach
-syn keyword groovyJDKMethods    subMap append asWritable eachByte eachLine eachFile 
+syn keyword groovyJDKMethods    subMap append asWritable eachByte eachLine eachFile
 syn cluster groovyTop add=groovyJDKBuiltin,groovyJDKOperOverl,groovyJDKMethods
 
 " no useful I think, so I comment it..
@@ -331,7 +334,7 @@ if exists("groovy_highlight_debug")
     GroovyHiLink groovyDebugSpecialCharacter DebugSpecial
     GroovyHiLink groovyDebugCharacter        DebugString
     GroovyHiLink groovyDebugParen            Debug
-  
+
     GroovyHiLink DebugString               String
     GroovyHiLink DebugSpecial              Special
     GroovyHiLink DebugBoolean              Boolean
@@ -339,7 +342,7 @@ if exists("groovy_highlight_debug")
   endif
 endif
 
-" Match all Exception classes 
+" Match all Exception classes
 syn match groovyExceptions        "\<Exception\>\|\<[A-Z]\{1,}[a-zA-Z0-9]*Exception\>"
 
 
@@ -349,7 +352,7 @@ endif
 exec "syn sync ccomment groovyComment minlines=" . groovy_minlines
 
 
-" ################### 
+" ###################
 " Groovy stuff
 " syn match groovyOperator             "|[ ,a-zA-Z0-9_*]\+|"
 
@@ -425,15 +428,15 @@ if version >= 508 || !exists("did_groovy_syn_inits")
   GroovyHiLink groovyConstant          Constant
   GroovyHiLink groovyTypedef           Typedef
   GroovyHiLink groovyTodo              Todo
-  
+
   GroovyHiLink groovyCommentTitle      SpecialComment
   GroovyHiLink groovyDocTags           Special
   GroovyHiLink groovyDocParam          Function
   GroovyHiLink groovyCommentStar       groovyComment
-  
+
   GroovyHiLink groovyType              Type
   GroovyHiLink groovyExternal          Include
-  
+
   GroovyHiLink htmlComment             Special
   GroovyHiLink htmlCommentPart         Special
   GroovyHiLink groovySpaceError                Error
@@ -452,4 +455,7 @@ endif
 
 let b:spell_options="contained"
 
+let &cpo = s:cpo_save
+unlet s:cpo_save
+
 " vim: ts=8
index 39041fcac278f015a87eca14745a3f2c4af9229c..c51850b13ad70d3919393c5acedad600ea9fb54e 100644 (file)
@@ -2,7 +2,7 @@
 " Language:    IDL (Interface Description Language)
 " Created By:  Jody Goldberg
 " Maintainer:  Michael Geddes <vim@frog.wheelycreek.net>
-" Last Change:  Thu Apr 13 2006
+" Last Change:  2012 Jan 11
 
 
 " This is an experiment.  IDL's structure is simple enough to permit a full
 " History:
 " 2.0: Michael's new version
 " 2.1: Support for Vim 7 spell (Anduin Withers)
-"      
+"
 
 if exists("b:current_syntax")
   finish
 endif
 
-if exists("idlsyntax_showerror")
-  syn match idlError +\S+ skipwhite skipempty nextgroup=idlError
-endif
+let s:cpo_save = &cpo
+try
+  set cpo&vim
 
-syn region idlCppQuote start='\<cpp_quote\s*(' end=')' contains=idlString
-
-" Misc basic
-syn match   idlId          contained "[a-zA-Z][a-zA-Z0-9_]*" skipwhite skipempty nextgroup=idlEnumComma,idlEnumNumber
-syn match   idlEnumComma   contained ","
-syn match   idlEnumNumber  contained "=" skipwhite skipempty nextgroup=idlString,idlLiteral
-syn match   idlSemiColon   contained ";"
-syn match   idlCommaArg    contained ","                      skipempty skipwhite nextgroup=idlSimpDecl
-syn region  idlArraySize1  contained start=:\[: end=:\]:      skipempty skipwhite nextgroup=idlArraySize1,idlError,idlSemiColon,idlCommaArg contains=idlArraySize1,idlLiteral
-syn match   idlSimpDecl    contained "[a-zA-Z][a-zA-Z0-9_]*"  skipempty skipwhite nextgroup=idlError,idlSemiColon,idlCommaArg,idlArraySize1
-syn region  idlString      contained start=+"+  skip=+\\\(\\\\\)*"+  end=+"+ contains=@Spell
-syn match   idlLiteral     contained "[1-9]\d*\(\.\d*\)\="
-syn match   idlLiteral     contained "0"
-syn match   idlLiteral     contained "\.\d\+"
-syn match   idlLiteral     contained "0x[0-9A-Fa-f]\+"
-syn match   idlLiteral     contained "0[0-7]\+"
-syn keyword idlLiteral     contained TRUE FALSE
-
-" Comments
-syn keyword idlTodo        contained TODO FIXME XXX
-syn region idlComment      start="/\*"  end="\*/" contains=idlTodo,@Spell
-syn match  idlComment      "//.*" contains=idlTodo,@Spell
-syn match  idlCommentError "\*/"
-
-" C style Preprocessor
-syn region idlIncluded    contained start=+"+  skip=+\\\(\\\\\)*"+  end=+"+
-syn match  idlIncluded    contained "<[^>]*>"
-syn match  idlInclude     "^[ \t]*#[ \t]*include\>[ \t]*["<]" contains=idlIncluded,idlString
-syn region idlPreCondit   start="^[ \t]*#[ \t]*\(if\>\|ifdef\>\|ifndef\>\|elif\>\|else\>\|endif\>\)"  skip="\\$"  end="$" contains=idlComment,idlCommentError
-syn region idlDefine      start="^[ \t]*#[ \t]*\(define\>\|undef\>\)" skip="\\$" end="$" contains=idlLiteral,idlString
-
-" Constants
-syn keyword idlConst    const                             skipempty skipwhite nextgroup=idlBaseType,idlBaseTypeInt
-
-" Attribute
-syn keyword idlROAttr   readonly                          skipempty skipwhite nextgroup=idlAttr
-syn keyword idlAttr     attribute                         skipempty skipwhite nextgroup=idlBaseTypeInt,idlBaseType
-
-" Types
-syn region  idlD4          contained start="<" end=">"    skipempty skipwhite nextgroup=idlSimpDecl contains=idlSeqType,idlBaseTypeInt,idlBaseType,idlLiteral
-syn keyword idlSeqType     contained sequence             skipempty skipwhite nextgroup=idlD4
-syn keyword idlBaseType    contained float double char boolean octet any skipempty skipwhite nextgroup=idlSimpDecl
-syn keyword idlBaseTypeInt contained short long           skipempty skipwhite nextgroup=idlSimpDecl
-syn keyword idlBaseType    contained unsigned             skipempty skipwhite nextgroup=idlBaseTypeInt
-syn region  idlD1          contained start="<" end=">"    skipempty skipwhite nextgroup=idlSimpDecl contains=idlString,idlLiteral
-syn keyword idlBaseType    contained string               skipempty skipwhite nextgroup=idlD1,idlSimpDecl
-syn match   idlBaseType    contained "[a-zA-Z0-9_]\+[ \t]*\(::[ \t]*[a-zA-Z0-9_]\+\)*"  skipempty skipwhite nextgroup=idlSimpDecl
-
-" Modules
-syn region  idlModuleContent contained start="{" end="}"  skipempty skipwhite nextgroup=idlError,idlSemiColon contains=idlUnion,idlStruct,idlEnum,idlInterface,idlComment,idlTypedef,idlConst,idlException,idlModule
-syn match   idlModuleName  contained "[a-zA-Z0-9_]\+"     skipempty skipwhite nextgroup=idlModuleContent,idlError,idlSemiColon
-syn keyword idlModule      module                         skipempty skipwhite nextgroup=idlModuleName
-
-" Interfaces
-syn cluster idlCommentable contains=idlComment
-syn cluster idlContentCluster contains=idlUnion,idlStruct,idlEnum,idlROAttr,idlAttr,idlOp,idlOneWayOp,idlException,idlConst,idlTypedef,idlAttributes,idlErrorSquareBracket,idlErrorBracket,idlInterfaceSections
-
-syn region  idlInterfaceContent contained start="{" end="}"   skipempty skipwhite nextgroup=idlError,idlSemiColon contains=@idlContentCluster,@idlCommentable
-syn match   idlInheritFrom2 contained ","                     skipempty skipwhite nextgroup=idlInheritFrom
-syn match   idlInheritFrom contained "[a-zA-Z0-9_]\+[ \t]*\(::[ \t]*[a-zA-Z0-9_]\+\)*" skipempty skipwhite nextgroup=idlInheritFrom2,idlInterfaceContent
-syn match   idlInherit contained ":"                            skipempty skipwhite nextgroup=idlInheritFrom
-syn match   idlInterfaceName contained "[a-zA-Z0-9_]\+"       skipempty skipwhite nextgroup=idlInterfaceContent,idlInherit,idlError,idlSemiColon
-syn keyword idlInterface     interface dispinterface          skipempty skipwhite nextgroup=idlInterfaceName
-syn keyword idlInterfaceSections contained properties methods skipempty skipwhite nextgroup=idlSectionColon,idlError
-syn match   idlSectionColon contained ":"
-
-
-syn match   idlLibraryName  contained  "[a-zA-Z0-9_]\+"       skipempty skipwhite nextgroup=idlLibraryContent,idlError,idlSemiColon
-syn keyword idlLibrary      library                           skipempty skipwhite nextgroup=idlLibraryName
-syn region  idlLibraryContent contained start="{" end="}"     skipempty skipwhite nextgroup=idlError,idlSemiColon contains=@idlCommentable,idlAttributes,idlErrorSquareBracket,idlErrorBracket,idlImportlib,idlCoclass,idlTypedef,idlInterface
-
-syn keyword idlImportlib contained importlib                  skipempty skipwhite nextgroup=idlStringArg
-syn region idlStringArg contained start="(" end=")"           contains=idlString nextgroup=idlError,idlSemiColon,idlErrorBrace,idlErrorSquareBracket
-
-syn keyword idlCoclass coclass contained                      skipempty skipwhite nextgroup=idlCoclassName
-syn match   idlCoclassName "[a-zA-Z0-9_]\+" contained         skipempty skipwhite nextgroup=idlCoclassDefinition,idlError,idlSemiColon
-
-syn region idlCoclassDefinition contained start="{" end="}"   contains=idlCoclassAttributes,idlInterface,idlErrorBracket,idlErrorSquareBracket skipempty skipwhite nextgroup=idlError,idlSemiColon
-syn region idlCoclassAttributes contained start=+\[+ end=+]+  skipempty skipwhite nextgroup=idlInterface contains=idlErrorBracket,idlErrorBrace,idlCoclassAttribute
-syn keyword idlCoclassAttribute contained default source
-"syn keyword idlInterface       interface                      skipempty skipwhite nextgroup=idlInterfaceStubName
-
-syn match idlImportString       +"\f\+"+                      skipempty skipwhite nextgroup=idlError,idlSemiColon
-syn keyword idlImport           import                        skipempty skipwhite nextgroup=idlImportString
-
-syn region  idlAttributes start="\[" end="\]"                 contains=idlAttribute,idlAttributeParam,idlErrorBracket,idlErrorBrace,idlComment
-syn keyword idlAttribute contained propput propget propputref id helpstring object uuid pointer_default
-if !exists('idl_no_ms_extensions')
-syn keyword idlAttribute contained nonextensible dual version aggregatable restricted hidden noncreatable oleautomation
-endif
-syn region idlAttributeParam contained start="(" end=")"      contains=idlString,idlUuid,idlLiteral,idlErrorBrace,idlErrorSquareBracket
-" skipwhite nextgroup=idlArraySize,idlParmList contains=idlArraySize,idlLiteral
-syn match idlErrorBrace contained "}"
-syn match idlErrorBracket contained ")"
-syn match idlErrorSquareBracket contained "\]"
-
-syn match idlUuid         contained +[0-9a-zA-Z]\{8}-\([0-9a-zA-Z]\{4}-\)\{3}[0-9a-zA-Z]\{12}+
-
-" Raises
-syn keyword idlRaises     contained raises               skipempty skipwhite nextgroup=idlRaises,idlContext,idlError,idlSemiColon
-
-" Context
-syn keyword idlContext    contained context              skipempty skipwhite nextgroup=idlRaises,idlContext,idlError,idlSemiColon
-
-" Operation
-syn match   idlParmList   contained ","                  skipempty skipwhite nextgroup=idlOpParms
-syn region  idlArraySize  contained start="\[" end="\]"  skipempty skipwhite nextgroup=idlArraySize,idlParmList contains=idlArraySize,idlLiteral
-syn match   idlParmName   contained "[a-zA-Z0-9_]\+"     skipempty skipwhite nextgroup=idlParmList,idlArraySize
-syn keyword idlParmInt    contained short long           skipempty skipwhite nextgroup=idlParmName
-syn keyword idlParmType   contained unsigned             skipempty skipwhite nextgroup=idlParmInt
-syn region  idlD3         contained start="<" end=">"    skipempty skipwhite nextgroup=idlParmName contains=idlString,idlLiteral
-syn keyword idlParmType   contained string               skipempty skipwhite nextgroup=idlD3,idlParmName
-syn keyword idlParmType   contained void float double char boolean octet any    skipempty skipwhite nextgroup=idlParmName
-syn match   idlParmType   contained "[a-zA-Z0-9_]\+[ \t]*\(::[ \t]*[a-zA-Z0-9_]\+\)*" skipempty skipwhite nextgroup=idlParmName
-syn keyword idlOpParms    contained in out inout         skipempty skipwhite nextgroup=idlParmType
-
-if !exists('idl_no_ms_extensions')
-syn keyword idlOpParms    contained retval optional      skipempty skipwhite nextgroup=idlParmType
-  syn match idlOpParms contained +\<\(iid_is\|defaultvalue\)\s*([^)]*)+ skipempty skipwhite nextgroup=idlParamType
-
-  syn keyword idlVariantType  contained BSTR VARIANT VARIANT_BOOL long short unsigned double CURRENCY DATE
-  syn region idlSafeArray contained matchgroup=idlVariantType start=+SAFEARRAY(\s*+ end=+)+ contains=idlVariantType
-endif
+  if exists("idlsyntax_showerror")
+    syn match idlError +\S+ skipwhite skipempty nextgroup=idlError
+  endif
 
-syn region  idlOpContents contained start="(" end=")"    skipempty skipwhite nextgroup=idlRaises,idlContext,idlError,idlSemiColon contains=idlOpParms,idlSafeArray,idlVariantType,@idlCommentable
-syn match   idlOpName   contained "[a-zA-Z0-9_]\+"       skipempty skipwhite nextgroup=idlOpContents
-syn keyword idlOpInt    contained short long             skipempty skipwhite nextgroup=idlOpName
-syn region  idlD2       contained start="<" end=">"      skipempty skipwhite nextgroup=idlOpName contains=idlString,idlLiteral
-syn keyword idlOp       contained unsigned               skipempty skipwhite nextgroup=idlOpInt
-syn keyword idlOp       contained string                 skipempty skipwhite nextgroup=idlD2,idlOpName
-syn keyword idlOp       contained void float double char boolean octet any  skipempty skipwhite nextgroup=idlOpName
-syn match   idlOp       contained "[a-zA-Z0-9_]\+[ \t]*\(::[ \t]*[a-zA-Z0-9_]\+\)*" skipempty skipwhite nextgroup=idlOpName
-syn keyword idlOp       contained void                   skipempty skipwhite nextgroup=idlOpName
-syn keyword idlOneWayOp contained oneway                 skipempty skipwhite nextgroup=idOp
-
-" Enum
-syn region  idlEnumContents contained start="{" end="}"  skipempty skipwhite nextgroup=idlError,idlSemiColon,idlSimpDecl contains=idlId,idlAttributes,@idlCommentable
-syn match   idlEnumName contained "[a-zA-Z0-9_]\+"       skipempty skipwhite nextgroup=idlEnumContents
-syn keyword idlEnum     enum                             skipempty skipwhite nextgroup=idlEnumName,idlEnumContents
-
-" Typedef
-syn keyword idlTypedef typedef                          skipempty skipwhite nextgroup=idlTypedefOtherTypeQualifier,idlDefBaseType,idlDefBaseTypeInt,idlDefSeqType,idlDefv1Enum,idlDefEnum,idlDefOtherType,idlDefAttributes,idlError
-
-if !exists('idl_no_extensions')
-  syn keyword idlTypedefOtherTypeQualifier contained struct enum interface nextgroup=idlDefBaseType,idlDefBaseTypeInt,idlDefSeqType,idlDefv1Enum,idlDefEnum,idlDefOtherType,idlDefAttributes,idlError skipwhite
-
-  syn region  idlDefAttributes        contained start="\[" end="\]" contains=idlAttribute,idlAttributeParam,idlErrorBracket,idlErrorBrace skipempty skipwhite nextgroup=idlDefBaseType,idlDefBaseTypeInt,idlDefSeqType,idlDefv1Enum,idlDefEnum,idlDefOtherType,idlError
-
-  syn keyword idlDefBaseType      contained float double char boolean octet any  skipempty skipwhite nextgroup=idlTypedefDecl,idlError
-  syn keyword idlDefBaseTypeInt   contained short long                           skipempty skipwhite nextgroup=idlTypedefDecl,idlError
-  syn match idlDefOtherType       contained +\<\k\+\>+ skipempty                 nextgroup=idlTypedefDecl,idlError
-  " syn keyword idlDefSeqType     contained sequence                             skipempty skipwhite nextgroup=idlD4
-
-  " Enum typedef
-  syn keyword idlDefEnum          contained enum skipempty                       skipwhite nextgroup=idlDefEnumName,idlDefEnumContents
-  syn match   idlDefEnumName      contained "[a-zA-Z0-9_]\+"                     skipempty skipwhite nextgroup=idlDefEnumContents,idlTypedefDecl
-  syn region  idlDefEnumContents  contained start="{" end="}"                    skipempty skipwhite nextgroup=idlError,idlTypedefDecl contains=idlId,idlAttributes
-
-  syn match   idlTypedefDecl      contained "[a-zA-Z0-9_]\+"                     skipempty skipwhite nextgroup=idlError,idlSemiColon
-endif
+  syn region idlCppQuote start='\<cpp_quote\s*(' end=')' contains=idlString
+
+  " Misc basic
+  syn match   idlId          contained "[a-zA-Z][a-zA-Z0-9_]*" skipwhite skipempty nextgroup=idlEnumComma,idlEnumNumber
+  syn match   idlEnumComma   contained ","
+  syn match   idlEnumNumber  contained "=" skipwhite skipempty nextgroup=idlString,idlLiteral
+  syn match   idlSemiColon   contained ";"
+  syn match   idlCommaArg    contained ","                      skipempty skipwhite nextgroup=idlSimpDecl
+  syn region  idlArraySize1  contained start=:\[: end=:\]:      skipempty skipwhite nextgroup=idlArraySize1,idlError,idlSemiColon,idlCommaArg contains=idlArraySize1,idlLiteral
+  syn match   idlSimpDecl    contained "[a-zA-Z][a-zA-Z0-9_]*"  skipempty skipwhite nextgroup=idlError,idlSemiColon,idlCommaArg,idlArraySize1
+  syn region  idlString      contained start=+"+  skip=+\\\(\\\\\)*"+  end=+"+ contains=@Spell
+  syn match   idlLiteral     contained "[1-9]\d*\(\.\d*\)\="
+  syn match   idlLiteral     contained "0"
+  syn match   idlLiteral     contained "\.\d\+"
+  syn match   idlLiteral     contained "0x[0-9A-Fa-f]\+"
+  syn match   idlLiteral     contained "0[0-7]\+"
+  syn keyword idlLiteral     contained TRUE FALSE
+
+  " Comments
+  syn keyword idlTodo        contained TODO FIXME XXX
+  syn region idlComment      start="/\*"  end="\*/" contains=idlTodo,@Spell
+  syn match  idlComment      "//.*" contains=idlTodo,@Spell
+  syn match  idlCommentError "\*/"
+
+  " C style Preprocessor
+  syn region idlIncluded    contained start=+"+  skip=+\\\(\\\\\)*"+  end=+"+
+  syn match  idlIncluded    contained "<[^>]*>"
+  syn match  idlInclude     "^[ \t]*#[ \t]*include\>[ \t]*["<]" contains=idlIncluded,idlString
+  syn region idlPreCondit   start="^[ \t]*#[ \t]*\(if\>\|ifdef\>\|ifndef\>\|elif\>\|else\>\|endif\>\)"  skip="\\$"  end="$" contains=idlComment,idlCommentError
+  syn region idlDefine      start="^[ \t]*#[ \t]*\(define\>\|undef\>\)" skip="\\$" end="$" contains=idlLiteral,idlString
+
+  " Constants
+  syn keyword idlConst    const                             skipempty skipwhite nextgroup=idlBaseType,idlBaseTypeInt
+
+  " Attribute
+  syn keyword idlROAttr   readonly                          skipempty skipwhite nextgroup=idlAttr
+  syn keyword idlAttr     attribute                         skipempty skipwhite nextgroup=idlBaseTypeInt,idlBaseType
+
+  " Types
+  syn region  idlD4          contained start="<" end=">"    skipempty skipwhite nextgroup=idlSimpDecl contains=idlSeqType,idlBaseTypeInt,idlBaseType,idlLiteral
+  syn keyword idlSeqType     contained sequence             skipempty skipwhite nextgroup=idlD4
+  syn keyword idlBaseType    contained float double char boolean octet any skipempty skipwhite nextgroup=idlSimpDecl
+  syn keyword idlBaseTypeInt contained short long           skipempty skipwhite nextgroup=idlSimpDecl
+  syn keyword idlBaseType    contained unsigned             skipempty skipwhite nextgroup=idlBaseTypeInt
+  syn region  idlD1          contained start="<" end=">"    skipempty skipwhite nextgroup=idlSimpDecl contains=idlString,idlLiteral
+  syn keyword idlBaseType    contained string               skipempty skipwhite nextgroup=idlD1,idlSimpDecl
+  syn match   idlBaseType    contained "[a-zA-Z0-9_]\+[ \t]*\(::[ \t]*[a-zA-Z0-9_]\+\)*"  skipempty skipwhite nextgroup=idlSimpDecl
+
+  " Modules
+  syn region  idlModuleContent contained start="{" end="}"  skipempty skipwhite nextgroup=idlError,idlSemiColon contains=idlUnion,idlStruct,idlEnum,idlInterface,idlComment,idlTypedef,idlConst,idlException,idlModule
+  syn match   idlModuleName  contained "[a-zA-Z0-9_]\+"     skipempty skipwhite nextgroup=idlModuleContent,idlError,idlSemiColon
+  syn keyword idlModule      module                         skipempty skipwhite nextgroup=idlModuleName
+
+  " Interfaces
+  syn cluster idlCommentable contains=idlComment
+  syn cluster idlContentCluster contains=idlUnion,idlStruct,idlEnum,idlROAttr,idlAttr,idlOp,idlOneWayOp,idlException,idlConst,idlTypedef,idlAttributes,idlErrorSquareBracket,idlErrorBracket,idlInterfaceSections
+
+  syn region  idlInterfaceContent contained start="{" end="}"   skipempty skipwhite nextgroup=idlError,idlSemiColon contains=@idlContentCluster,@idlCommentable
+  syn match   idlInheritFrom2 contained ","                     skipempty skipwhite nextgroup=idlInheritFrom
+  syn match   idlInheritFrom contained "[a-zA-Z0-9_]\+[ \t]*\(::[ \t]*[a-zA-Z0-9_]\+\)*" skipempty skipwhite nextgroup=idlInheritFrom2,idlInterfaceContent
+  syn match   idlInherit contained ":"                            skipempty skipwhite nextgroup=idlInheritFrom
+  syn match   idlInterfaceName contained "[a-zA-Z0-9_]\+"       skipempty skipwhite nextgroup=idlInterfaceContent,idlInherit,idlError,idlSemiColon
+  syn keyword idlInterface     interface dispinterface          skipempty skipwhite nextgroup=idlInterfaceName
+  syn keyword idlInterfaceSections contained properties methods skipempty skipwhite nextgroup=idlSectionColon,idlError
+  syn match   idlSectionColon contained ":"
+
+
+  syn match   idlLibraryName  contained  "[a-zA-Z0-9_]\+"       skipempty skipwhite nextgroup=idlLibraryContent,idlError,idlSemiColon
+  syn keyword idlLibrary      library                           skipempty skipwhite nextgroup=idlLibraryName
+  syn region  idlLibraryContent contained start="{" end="}"     skipempty skipwhite nextgroup=idlError,idlSemiColon contains=@idlCommentable,idlAttributes,idlErrorSquareBracket,idlErrorBracket,idlImportlib,idlCoclass,idlTypedef,idlInterface
+
+  syn keyword idlImportlib contained importlib                  skipempty skipwhite nextgroup=idlStringArg
+  syn region idlStringArg contained start="(" end=")"           contains=idlString nextgroup=idlError,idlSemiColon,idlErrorBrace,idlErrorSquareBracket
+
+  syn keyword idlCoclass coclass contained                      skipempty skipwhite nextgroup=idlCoclassName
+  syn match   idlCoclassName "[a-zA-Z0-9_]\+" contained         skipempty skipwhite nextgroup=idlCoclassDefinition,idlError,idlSemiColon
+
+  syn region idlCoclassDefinition contained start="{" end="}"   contains=idlCoclassAttributes,idlInterface,idlErrorBracket,idlErrorSquareBracket skipempty skipwhite nextgroup=idlError,idlSemiColon
+  syn region idlCoclassAttributes contained start=+\[+ end=+]+  skipempty skipwhite nextgroup=idlInterface contains=idlErrorBracket,idlErrorBrace,idlCoclassAttribute
+  syn keyword idlCoclassAttribute contained default source
+  "syn keyword idlInterface       interface                      skipempty skipwhite nextgroup=idlInterfaceStubName
+
+  syn match idlImportString       +"\f\+"+                      skipempty skipwhite nextgroup=idlError,idlSemiColon
+  syn keyword idlImport           import                        skipempty skipwhite nextgroup=idlImportString
+
+  syn region  idlAttributes start="\[" end="\]"                 contains=idlAttribute,idlAttributeParam,idlErrorBracket,idlErrorBrace,idlComment
+  syn keyword idlAttribute contained propput propget propputref id helpstring object uuid pointer_default
+  if !exists('idl_no_ms_extensions')
+  syn keyword idlAttribute contained nonextensible dual version aggregatable restricted hidden noncreatable oleautomation
+  endif
+  syn region idlAttributeParam contained start="(" end=")"      contains=idlString,idlUuid,idlLiteral,idlErrorBrace,idlErrorSquareBracket
+  " skipwhite nextgroup=idlArraySize,idlParmList contains=idlArraySize,idlLiteral
+  syn match idlErrorBrace contained "}"
+  syn match idlErrorBracket contained ")"
+  syn match idlErrorSquareBracket contained "\]"
+
+  syn match idlUuid         contained +[0-9a-zA-Z]\{8}-\([0-9a-zA-Z]\{4}-\)\{3}[0-9a-zA-Z]\{12}+
+
+  " Raises
+  syn keyword idlRaises     contained raises               skipempty skipwhite nextgroup=idlRaises,idlContext,idlError,idlSemiColon
+
+  " Context
+  syn keyword idlContext    contained context              skipempty skipwhite nextgroup=idlRaises,idlContext,idlError,idlSemiColon
+
+  " Operation
+  syn match   idlParmList   contained ","                  skipempty skipwhite nextgroup=idlOpParms
+  syn region  idlArraySize  contained start="\[" end="\]"  skipempty skipwhite nextgroup=idlArraySize,idlParmList contains=idlArraySize,idlLiteral
+  syn match   idlParmName   contained "[a-zA-Z0-9_]\+"     skipempty skipwhite nextgroup=idlParmList,idlArraySize
+  syn keyword idlParmInt    contained short long           skipempty skipwhite nextgroup=idlParmName
+  syn keyword idlParmType   contained unsigned             skipempty skipwhite nextgroup=idlParmInt
+  syn region  idlD3         contained start="<" end=">"    skipempty skipwhite nextgroup=idlParmName contains=idlString,idlLiteral
+  syn keyword idlParmType   contained string               skipempty skipwhite nextgroup=idlD3,idlParmName
+  syn keyword idlParmType   contained void float double char boolean octet any    skipempty skipwhite nextgroup=idlParmName
+  syn match   idlParmType   contained "[a-zA-Z0-9_]\+[ \t]*\(::[ \t]*[a-zA-Z0-9_]\+\)*" skipempty skipwhite nextgroup=idlParmName
+  syn keyword idlOpParms    contained in out inout         skipempty skipwhite nextgroup=idlParmType
+
+  if !exists('idl_no_ms_extensions')
+  syn keyword idlOpParms    contained retval optional      skipempty skipwhite nextgroup=idlParmType
+    syn match idlOpParms contained +\<\(iid_is\|defaultvalue\)\s*([^)]*)+ skipempty skipwhite nextgroup=idlParamType
+
+    syn keyword idlVariantType  contained BSTR VARIANT VARIANT_BOOL long short unsigned double CURRENCY DATE
+    syn region idlSafeArray contained matchgroup=idlVariantType start=+SAFEARRAY(\s*+ end=+)+ contains=idlVariantType
+  endif
 
-" Struct
-syn region  idlStructContent   contained start="{" end="}"   skipempty skipwhite nextgroup=idlError,idlSemiColon,idlSimpDecl contains=idlBaseType,idlBaseTypeInt,idlSeqType,@idlCommentable,idlEnum,idlUnion
-syn match   idlStructName      contained "[a-zA-Z0-9_]\+"    skipempty skipwhite nextgroup=idlStructContent
-syn keyword idlStruct          struct                        skipempty skipwhite nextgroup=idlStructName
-
-" Exception
-syn keyword idlException       exception                     skipempty skipwhite nextgroup=idlStructName
-
-" Union
-syn match   idlColon            contained ":"                skipempty skipwhite nextgroup=idlCase,idlSeqType,idlBaseType,idlBaseTypeInt
-syn region  idlCaseLabel        contained start="" skip="::" end=":"me=e-1 skipempty skipwhite nextgroup=idlColon contains=idlLiteral,idlString
-syn keyword idlCase             contained case               skipempty skipwhite nextgroup=idlCaseLabel
-syn keyword idlCase             contained default            skipempty skipwhite nextgroup=idlColon
-syn region  idlUnionContent     contained start="{" end="}"  skipempty skipwhite nextgroup=idlError,idlSemiColon,idlSimpDecl contains=idlCase
-syn region  idlSwitchType       contained start="(" end=")"  skipempty skipwhite nextgroup=idlUnionContent
-syn keyword idlUnionSwitch      contained switch             skipempty skipwhite nextgroup=idlSwitchType
-syn match   idlUnionName        contained "[a-zA-Z0-9_]\+"   skipempty skipwhite nextgroup=idlUnionSwitch
-syn keyword idlUnion            union                        skipempty skipwhite nextgroup=idlUnionName
-
-if !exists('idl_no_extensions')
-  syn sync match  idlInterfaceSync grouphere idlInterfaceContent "\<\(disp\)\=interface\>\s\+\k\+\s*:\s*\k\+\_s*{" skipempty skipwhite nextgroup=idlError,idlSemiColon contains=@idlContentCluster,@idlCommentable
-  syn sync maxlines=1000 minlines=100
-else
-  syn sync lines=200
-endif
-" syn sync fromstart
-
-if !exists("did_idl_syntax_inits")
-  let did_idl_syntax_inits = 1
-  " The default methods for highlighting.  Can be overridden later
-  command -nargs=+ HiLink hi def link <args>
-
-  HiLink idlInclude             Include
-  HiLink idlPreProc             PreProc
-  HiLink idlPreCondit           PreCondit
-  HiLink idlDefine              Macro
-  HiLink idlIncluded            String
-  HiLink idlString              String
-  HiLink idlComment             Comment
-  HiLink idlTodo                Todo
-  HiLink idlLiteral             Number
-  HiLink idlUuid                Number
-  HiLink idlType                Type
-  HiLink idlVariantType         idlType
-
-  HiLink idlModule              Keyword
-  HiLink idlInterface           Keyword
-  HiLink idlEnum                Keyword
-  HiLink idlStruct              Keyword
-  HiLink idlUnion               Keyword
-  HiLink idlTypedef             Keyword
-  HiLink idlException           Keyword
-  HiLink idlTypedefOtherTypeQualifier keyword
-
-  HiLink idlModuleName          Typedef
-  HiLink idlInterfaceName       Typedef
-  HiLink idlEnumName            Typedef
-  HiLink idlStructName          Typedef
-  HiLink idlUnionName           Typedef
-
-  HiLink idlBaseTypeInt         idlType
-  HiLink idlBaseType            idlType
-  HiLink idlSeqType             idlType
-  HiLink idlD1                  Paren
-  HiLink idlD2                  Paren
-  HiLink idlD3                  Paren
-  HiLink idlD4                  Paren
-  "HiLink idlArraySize          Paren
-  "HiLink idlArraySize1         Paren
-  HiLink idlModuleContent       Paren
-  HiLink idlUnionContent        Paren
-  HiLink idlStructContent       Paren
-  HiLink idlEnumContents        Paren
-  HiLink idlInterfaceContent    Paren
-
-  HiLink idlSimpDecl            Identifier
-  HiLink idlROAttr              StorageClass
-  HiLink idlAttr                Keyword
-  HiLink idlConst               StorageClass
-
-  HiLink idlOneWayOp            StorageClass
-  HiLink idlOp                  idlType
-  HiLink idlParmType            idlType
-  HiLink idlOpName              Function
-  HiLink idlOpParms             SpecialComment
-  HiLink idlParmName            Identifier
-  HiLink idlInheritFrom         Identifier
-  HiLink idlAttribute           SpecialComment
-
-  HiLink idlId                  Constant
-  "HiLink idlCase               Keyword
-  HiLink idlCaseLabel           Constant
-
-  HiLink idlErrorBracket        Error
-  HiLink idlErrorBrace          Error
-  HiLink idlErrorSquareBracket  Error
-
-  HiLink idlImport              Keyword
-  HiLink idlImportString        idlString
-  HiLink idlCoclassAttribute    StorageClass
-  HiLink idlLibrary             Keyword
-  HiLink idlImportlib           Keyword
-  HiLink idlCoclass             Keyword
-  HiLink idlLibraryName         Typedef
-  HiLink idlCoclassName         Typedef
-  " hi idlLibraryContent guifg=red
-  HiLink idlTypedefDecl         Typedef
-  HiLink idlDefEnum             Keyword
-  HiLink idlDefv1Enum           Keyword
-  HiLink idlDefEnumName         Typedef
-  HiLink idlDefEnumContents     Paren
-  HiLink idlDefBaseTypeInt      idlType
-  HiLink idlDefBaseType         idlType
-  HiLink idlDefSeqType          idlType
-  HiLink idlInterfaceSections   Label
+  syn region  idlOpContents contained start="(" end=")"    skipempty skipwhite nextgroup=idlRaises,idlContext,idlError,idlSemiColon contains=idlOpParms,idlSafeArray,idlVariantType,@idlCommentable
+  syn match   idlOpName   contained "[a-zA-Z0-9_]\+"       skipempty skipwhite nextgroup=idlOpContents
+  syn keyword idlOpInt    contained short long             skipempty skipwhite nextgroup=idlOpName
+  syn region  idlD2       contained start="<" end=">"      skipempty skipwhite nextgroup=idlOpName contains=idlString,idlLiteral
+  syn keyword idlOp       contained unsigned               skipempty skipwhite nextgroup=idlOpInt
+  syn keyword idlOp       contained string                 skipempty skipwhite nextgroup=idlD2,idlOpName
+  syn keyword idlOp       contained void float double char boolean octet any  skipempty skipwhite nextgroup=idlOpName
+  syn match   idlOp       contained "[a-zA-Z0-9_]\+[ \t]*\(::[ \t]*[a-zA-Z0-9_]\+\)*" skipempty skipwhite nextgroup=idlOpName
+  syn keyword idlOp       contained void                   skipempty skipwhite nextgroup=idlOpName
+  syn keyword idlOneWayOp contained oneway                 skipempty skipwhite nextgroup=idOp
+
+  " Enum
+  syn region  idlEnumContents contained start="{" end="}"  skipempty skipwhite nextgroup=idlError,idlSemiColon,idlSimpDecl contains=idlId,idlAttributes,@idlCommentable
+  syn match   idlEnumName contained "[a-zA-Z0-9_]\+"       skipempty skipwhite nextgroup=idlEnumContents
+  syn keyword idlEnum     enum                             skipempty skipwhite nextgroup=idlEnumName,idlEnumContents
+
+  " Typedef
+  syn keyword idlTypedef typedef                          skipempty skipwhite nextgroup=idlTypedefOtherTypeQualifier,idlDefBaseType,idlDefBaseTypeInt,idlDefSeqType,idlDefv1Enum,idlDefEnum,idlDefOtherType,idlDefAttributes,idlError
+
+  if !exists('idl_no_extensions')
+    syn keyword idlTypedefOtherTypeQualifier contained struct enum interface nextgroup=idlDefBaseType,idlDefBaseTypeInt,idlDefSeqType,idlDefv1Enum,idlDefEnum,idlDefOtherType,idlDefAttributes,idlError skipwhite
+
+    syn region  idlDefAttributes        contained start="\[" end="\]" contains=idlAttribute,idlAttributeParam,idlErrorBracket,idlErrorBrace skipempty skipwhite nextgroup=idlDefBaseType,idlDefBaseTypeInt,idlDefSeqType,idlDefv1Enum,idlDefEnum,idlDefOtherType,idlError
+
+    syn keyword idlDefBaseType      contained float double char boolean octet any  skipempty skipwhite nextgroup=idlTypedefDecl,idlError
+    syn keyword idlDefBaseTypeInt   contained short long                           skipempty skipwhite nextgroup=idlTypedefDecl,idlError
+    syn match idlDefOtherType       contained +\<\k\+\>+ skipempty                 nextgroup=idlTypedefDecl,idlError
+    " syn keyword idlDefSeqType     contained sequence                             skipempty skipwhite nextgroup=idlD4
+
+    " Enum typedef
+    syn keyword idlDefEnum          contained enum skipempty                       skipwhite nextgroup=idlDefEnumName,idlDefEnumContents
+    syn match   idlDefEnumName      contained "[a-zA-Z0-9_]\+"                     skipempty skipwhite nextgroup=idlDefEnumContents,idlTypedefDecl
+    syn region  idlDefEnumContents  contained start="{" end="}"                    skipempty skipwhite nextgroup=idlError,idlTypedefDecl contains=idlId,idlAttributes
+
+    syn match   idlTypedefDecl      contained "[a-zA-Z0-9_]\+"                     skipempty skipwhite nextgroup=idlError,idlSemiColon
+  endif
 
-  if exists("idlsyntax_showerror")
-    if exists("idlsyntax_showerror_soft")
-      hi default idlError guibg=#d0ffd0
-    else
-      HiLink idlError Error
+  " Struct
+  syn region  idlStructContent   contained start="{" end="}"   skipempty skipwhite nextgroup=idlError,idlSemiColon,idlSimpDecl contains=idlBaseType,idlBaseTypeInt,idlSeqType,@idlCommentable,idlEnum,idlUnion
+  syn match   idlStructName      contained "[a-zA-Z0-9_]\+"    skipempty skipwhite nextgroup=idlStructContent
+  syn keyword idlStruct          struct                        skipempty skipwhite nextgroup=idlStructName
+
+  " Exception
+  syn keyword idlException       exception                     skipempty skipwhite nextgroup=idlStructName
+
+  " Union
+  syn match   idlColon            contained ":"                skipempty skipwhite nextgroup=idlCase,idlSeqType,idlBaseType,idlBaseTypeInt
+  syn region  idlCaseLabel        contained start="" skip="::" end=":"me=e-1 skipempty skipwhite nextgroup=idlColon contains=idlLiteral,idlString
+  syn keyword idlCase             contained case               skipempty skipwhite nextgroup=idlCaseLabel
+  syn keyword idlCase             contained default            skipempty skipwhite nextgroup=idlColon
+  syn region  idlUnionContent     contained start="{" end="}"  skipempty skipwhite nextgroup=idlError,idlSemiColon,idlSimpDecl contains=idlCase
+  syn region  idlSwitchType       contained start="(" end=")"  skipempty skipwhite nextgroup=idlUnionContent
+  syn keyword idlUnionSwitch      contained switch             skipempty skipwhite nextgroup=idlSwitchType
+  syn match   idlUnionName        contained "[a-zA-Z0-9_]\+"   skipempty skipwhite nextgroup=idlUnionSwitch
+  syn keyword idlUnion            union                        skipempty skipwhite nextgroup=idlUnionName
+
+  if !exists('idl_no_extensions')
+    syn sync match  idlInterfaceSync grouphere idlInterfaceContent "\<\(disp\)\=interface\>\s\+\k\+\s*:\s*\k\+\_s*{" skipempty skipwhite nextgroup=idlError,idlSemiColon contains=@idlContentCluster,@idlCommentable
+    syn sync maxlines=1000 minlines=100
+  else
+    syn sync lines=200
+  endif
+  " syn sync fromstart
+
+  if !exists("did_idl_syntax_inits")
+    let did_idl_syntax_inits = 1
+    " The default methods for highlighting.  Can be overridden later
+    command -nargs=+ HiLink hi def link <args>
+
+    HiLink idlInclude             Include
+    HiLink idlPreProc             PreProc
+    HiLink idlPreCondit           PreCondit
+    HiLink idlDefine              Macro
+    HiLink idlIncluded            String
+    HiLink idlString              String
+    HiLink idlComment             Comment
+    HiLink idlTodo                Todo
+    HiLink idlLiteral             Number
+    HiLink idlUuid                Number
+    HiLink idlType                Type
+    HiLink idlVariantType         idlType
+
+    HiLink idlModule              Keyword
+    HiLink idlInterface           Keyword
+    HiLink idlEnum                Keyword
+    HiLink idlStruct              Keyword
+    HiLink idlUnion               Keyword
+    HiLink idlTypedef             Keyword
+    HiLink idlException           Keyword
+    HiLink idlTypedefOtherTypeQualifier keyword
+
+    HiLink idlModuleName          Typedef
+    HiLink idlInterfaceName       Typedef
+    HiLink idlEnumName            Typedef
+    HiLink idlStructName          Typedef
+    HiLink idlUnionName           Typedef
+
+    HiLink idlBaseTypeInt         idlType
+    HiLink idlBaseType            idlType
+    HiLink idlSeqType             idlType
+    HiLink idlD1                  Paren
+    HiLink idlD2                  Paren
+    HiLink idlD3                  Paren
+    HiLink idlD4                  Paren
+    "HiLink idlArraySize          Paren
+    "HiLink idlArraySize1         Paren
+    HiLink idlModuleContent       Paren
+    HiLink idlUnionContent        Paren
+    HiLink idlStructContent       Paren
+    HiLink idlEnumContents        Paren
+    HiLink idlInterfaceContent    Paren
+
+    HiLink idlSimpDecl            Identifier
+    HiLink idlROAttr              StorageClass
+    HiLink idlAttr                Keyword
+    HiLink idlConst               StorageClass
+
+    HiLink idlOneWayOp            StorageClass
+    HiLink idlOp                  idlType
+    HiLink idlParmType            idlType
+    HiLink idlOpName              Function
+    HiLink idlOpParms             SpecialComment
+    HiLink idlParmName            Identifier
+    HiLink idlInheritFrom         Identifier
+    HiLink idlAttribute           SpecialComment
+
+    HiLink idlId                  Constant
+    "HiLink idlCase               Keyword
+    HiLink idlCaseLabel           Constant
+
+    HiLink idlErrorBracket        Error
+    HiLink idlErrorBrace          Error
+    HiLink idlErrorSquareBracket  Error
+
+    HiLink idlImport              Keyword
+    HiLink idlImportString        idlString
+    HiLink idlCoclassAttribute    StorageClass
+    HiLink idlLibrary             Keyword
+    HiLink idlImportlib           Keyword
+    HiLink idlCoclass             Keyword
+    HiLink idlLibraryName         Typedef
+    HiLink idlCoclassName         Typedef
+    " hi idlLibraryContent guifg=red
+    HiLink idlTypedefDecl         Typedef
+    HiLink idlDefEnum             Keyword
+    HiLink idlDefv1Enum           Keyword
+    HiLink idlDefEnumName         Typedef
+    HiLink idlDefEnumContents     Paren
+    HiLink idlDefBaseTypeInt      idlType
+    HiLink idlDefBaseType         idlType
+    HiLink idlDefSeqType          idlType
+    HiLink idlInterfaceSections   Label
+
+    if exists("idlsyntax_showerror")
+      if exists("idlsyntax_showerror_soft")
+        hi default idlError guibg=#d0ffd0
+      else
+        HiLink idlError Error
+      endif
     endif
+    delcommand HiLink
   endif
-  delcommand HiLink
-endif
-
-let b:current_syntax = "idl"
 
+  let b:current_syntax = "idl"
+finally
+  let &cpo = s:cpo_save
+  unlet s:cpo_save
+endtry
 " vim: sw=2 et
index ed7ca216da965030876d957d3d1ad3adc698994b..cf4a2c69d504dc85e1ea9b0dc7f4281d494c303a 100644 (file)
@@ -40,7 +40,7 @@ syn match     mailHeaderKey   contained contains=mailHeaderEmail,mailEmail,@NoSpell "\
 syn region     mailHeaderKey   contained contains=mailHeaderEmail,mailEmail,@mailQuoteExps,@NoSpell start="\v(^(\> ?)*)@<=(to|b?cc):" skip=",$" end="$"
 syn match      mailHeaderKey   contained contains=mailHeaderEmail,mailEmail,@NoSpell "\v(^(\> ?)*)@<=(from|reply-to):.*$" fold
 syn match      mailHeaderKey   contained contains=@NoSpell "\v(^(\> ?)*)@<=date:"
-syn match      mailSubject     contained "\v^subject:.*$" fold
+syn match      mailSubject     contained contains=@NoSpell "\v^subject:.*$" fold
 syn match      mailSubject     contained contains=@NoSpell "\v(^(\> ?)+)@<=subject:.*$"
 
 " Anything in the header between < and > is an email address
index 73eebc38881b9f27818f046bbff34385be224087..1497499c598afd808e6c80390f28d15f36b0638f 100644 (file)
@@ -2,8 +2,8 @@
 " Language:            shell (sh) Korn shell (ksh) bash (sh)
 " Maintainer:          Dr. Charles E. Campbell, Jr.  <NdrOchipS@PcampbellAfamily.Mbiz>
 " Previous Maintainer: Lennart Schultz <Lennart.Schultz@ecmwf.int>
-" Last Change:         Aug 16, 2011
-" Version:             118
+" Last Change:         Dec 09, 2011
+" Version:             121
 " URL:         http://mysite.verizon.net/astronaut/vim/index.html#vimlinks_syntax
 " For options and settings, please use:      :help ft-sh-syntax
 " This file includes many ideas from ?ric Brunet (eric.brunet@ens.fr)
@@ -101,7 +101,7 @@ syn cluster shArithParenList        contains=shArithmetic,shCaseEsac,shDeref,shDerefSim
 syn cluster shArithList        contains=@shArithParenList,shParenError
 syn cluster shCaseEsacList     contains=shCaseStart,shCase,shCaseBar,shCaseIn,shComment,shDeref,shDerefSimple,shCaseCommandSub,shCaseExSingleQuote,shCaseSingleQuote,shCaseDoubleQuote,shCtrlSeq,@shErrorList,shStringSpecial,shCaseRange
 syn cluster shCaseList contains=@shCommandSubList,shCaseEsac,shColon,shCommandSub,shComment,shDo,shEcho,shExpr,shFor,shHereDoc,shIf,shRedir,shSetList,shSource,shStatement,shVariable,shCtrlSeq
-syn cluster shColonList        contains=@shCaseList
+"syn cluster shColonList       contains=@shCaseList
 syn cluster shCommandSubList   contains=shArithmetic,shDeref,shDerefSimple,shEscape,shNumber,shOperator,shPosnParm,shExSingleQuote,shSingleQuote,shExDoubleQuote,shDoubleQuote,shStatement,shVariable,shSubSh,shAlias,shTest,shCtrlSeq,shSpecial
 syn cluster shCurlyList        contains=shNumber,shComma,shDeref,shDerefSimple,shDerefSpecial
 syn cluster shDblQuoteList     contains=shCommandSub,shDeref,shDerefSimple,shPosnParm,shCtrlSeq,shSpecial
@@ -119,10 +119,10 @@ syn cluster shHereBeginList       contains=@shCommandSubList
 syn cluster shHereList contains=shBeginHere,shHerePayload
 syn cluster shHereListDQ       contains=shBeginHere,@shDblQuoteList,shHerePayload
 syn cluster shIdList   contains=shCommandSub,shWrapLineOperator,shSetOption,shDeref,shDerefSimple,shRedir,shExSingleQuote,shExDoubleQuote,shSingleQuote,shDoubleQuote,shExpr,shCtrlSeq,shStringSpecial
-syn cluster shLoopList contains=@shCaseList,shTestOpr,shExpr,shDblBrace,shConditional,shCaseEsac,shTest,@shErrorList,shSet
+syn cluster shIfList   contains=@shLoopList,shDblBrace,shDblParen,shFunctionKey,shFunctionOne,shFunctionTwo
+syn cluster shLoopList contains=@shCaseList,shTestOpr,shExpr,shDblBrace,shConditional,shCaseEsac,shTest,@shErrorList,shSet,shOption
 syn cluster shSubShList        contains=@shCommandSubList,shCaseEsac,shColon,shCommandSub,shComment,shDo,shEcho,shExpr,shFor,shIf,shRedir,shSetList,shSource,shStatement,shVariable,shCtrlSeq,shOperator
 syn cluster shTestList contains=shCharClass,shComment,shCommandSub,shDeref,shDerefSimple,shExDoubleQuote,shDoubleQuote,shExpr,shNumber,shOperator,shExSingleQuote,shSingleQuote,shTestOpr,shTest,shCtrlSeq
-
 " Echo: {{{1
 " ====
 " This one is needed INSIDE a CommandSub, so that `echo bla` be correct
@@ -143,18 +143,20 @@ endif
 
 " Error Codes: {{{1
 " ============
-syn match   shDoError "\<done\>"
-syn match   shIfError "\<fi\>"
-syn match   shInError "\<in\>"
-syn match   shCaseError ";;"
-syn match   shEsacError "\<esac\>"
-syn match   shCurlyError "}"
-syn match   shParenError ")"
-syn match   shOK       '\.\(done\|fi\|in\|esac\)'
-if exists("b:is_kornshell")
- syn match     shDTestError "]]"
+if !exists("g:sh_no_error")
+ syn match   shDoError "\<done\>"
+ syn match   shIfError "\<fi\>"
+ syn match   shInError "\<in\>"
+ syn match   shCaseError ";;"
+ syn match   shEsacError "\<esac\>"
+ syn match   shCurlyError "}"
+ syn match   shParenError ")"
+ syn match   shOK      '\.\(done\|fi\|in\|esac\)'
+ if exists("b:is_kornshell")
+  syn match     shDTestError "]]"
+ endif
+ syn match     shTestError "]"
 endif
-syn match     shTestError "]"
 
 " Options: {{{1
 " ====================
@@ -204,11 +206,11 @@ syn match   shCharClass   contained       "\[:\(backspace\|escape\|return\|xdigit\|alnum
 " ======
 if (g:sh_fold_enabled % (s:sh_fold_ifdofor * 2))/s:sh_fold_ifdofor
  syn region shDo       fold transparent matchgroup=shConditional start="\<do\>" matchgroup=shConditional end="\<done\>" contains=@shLoopList
- syn region shIf       fold transparent matchgroup=shConditional start="\<if\_s" matchgroup=shConditional end="\<;\_s*then\>" end="\<fi\>"   contains=@shLoopList,shDblBrace,shDblParen,shFunctionKey,shFunctionOne,shFunctionTwo
+ syn region shIf       fold transparent matchgroup=shConditional start="\<if\_s" matchgroup=shConditional skip=+-fi\>+ end="\<;\_s*then\>" end="\<fi\>"   contains=@shIfList
  syn region shFor      fold matchgroup=shLoop start="\<for\_s" end="\<in\_s" end="\<do\>"me=e-2        contains=@shLoopList,shDblParen skipwhite nextgroup=shCurlyIn
 else
  syn region shDo       transparent matchgroup=shConditional start="\<do\>" matchgroup=shConditional end="\<done\>" contains=@shLoopList
- syn region shIf       transparent matchgroup=shConditional start="\<if\_s" matchgroup=shConditional end="\<;\_s*then\>" end="\<fi\>"   contains=@shLoopList,shDblBrace,shDblParen,shFunctionKey,shFunctionOne,shFunctionTwo
+ syn region shIf       transparent matchgroup=shConditional start="\<if\_s" matchgroup=shConditional skip=+-fi\>+ end="\<;\_s*then\>" end="\<fi\>"   contains=@shIfList
  syn region shFor      matchgroup=shLoop start="\<for\_s" end="\<in\>" end="\<do\>"me=e-2      contains=@shLoopList,shDblParen skipwhite nextgroup=shCurlyIn
 endif
 if exists("b:is_kornshell") || exists("b:is_bash")
@@ -238,7 +240,7 @@ endif
 syn keyword shCaseIn   contained skipwhite skipnl in                   nextgroup=shCase,shCaseStart,shCaseBar,shComment,shCaseExSingleQuote,shCaseSingleQuote,shCaseDoubleQuote
 if exists("b:is_bash")
  syn region  shCaseExSingleQuote       matchgroup=shQuote start=+\$'+ skip=+\\\\\|\\.+ end=+'+ contains=shStringSpecial,shSpecial      skipwhite skipnl nextgroup=shCaseBar    contained
-else
+elseif !exists("g:sh_no_error")
  syn region  shCaseExSingleQuote       matchgroup=Error start=+\$'+ skip=+\\\\\|\\.+ end=+'+   contains=shStringSpecial        skipwhite skipnl nextgroup=shCaseBar    contained
 endif
 syn region  shCaseSingleQuote  matchgroup=shQuote start=+'+ end=+'+            contains=shStringSpecial                skipwhite skipnl nextgroup=shCaseBar    contained
@@ -262,7 +264,7 @@ if exists("b:is_kornshell") || exists("b:is_bash")
  syn region shCommandSub matchgroup=shCmdSubRegion start="\$("  skip='\\\\\|\\.' end=")"  contains=@shCommandSubList
  syn region shArithmetic matchgroup=shArithRegion  start="\$((" skip='\\\\\|\\.' end="))" contains=@shArithList
  syn match  shSkipInitWS contained     "^\s\+"
-else
+elseif !exists("g:sh_no_error")
  syn region shCommandSub matchgroup=Error start="\$(" end=")" contains=@shCommandSubList
 endif
 
@@ -284,7 +286,8 @@ endif
 syn match   shSource   "^\.\s"
 syn match   shSource   "\s\.\s"
 "syn region  shColon   start="^\s*:" end="$" end="\s#"me=e-2 contains=@shColonList
-syn region  shColon    start="^\s*\zs:" end="$" end="\s#"me=e-2
+"syn region  shColon   start="^\s*\zs:" end="$" end="\s#"me=e-2
+syn match   shColon    '^\s*\zs:'
 
 " String And Character Constants: {{{1
 "================================
@@ -296,7 +299,7 @@ endif
 if exists("b:is_bash")
  syn region  shExSingleQuote   matchgroup=shQuote start=+\$'+ skip=+\\\\\|\\.+ end=+'+ contains=shStringSpecial,shSpecial
  syn region  shExDoubleQuote   matchgroup=shQuote start=+\$"+ skip=+\\\\\|\\.\|\\"+ end=+"+    contains=@shDblQuoteList,shStringSpecial,shSpecial
-else
+elseif !exists("g:sh_no_error")
  syn region  shExSingleQuote   matchGroup=Error start=+\$'+ skip=+\\\\\|\\.+ end=+'+   contains=shStringSpecial
  syn region  shExDoubleQuote   matchGroup=Error start=+\$"+ skip=+\\\\\|\\.+ end=+"+   contains=shStringSpecial
 endif
@@ -407,7 +410,9 @@ endif
 " ========================
 syn match  shDerefSimple       "\$\%(\h\w*\|\d\)"
 syn region shDeref     matchgroup=PreProc start="\${" end="}"  contains=@shDerefList,shDerefVarArray
-syn match  shDerefWordError    "[^}$[]"        contained
+if !exists("g:sh_no_error")
+ syn match  shDerefWordError   "[^}$[]"        contained
+endif
 syn match  shDerefSimple       "\$[-#*@!?]"
 syn match  shDerefSimple       "\$\$"
 if exists("b:is_bash") || exists("b:is_kornshell")
@@ -443,7 +448,9 @@ syn region  shDerefVarArray   contained     matchgroup=shDeref start="\[" end="]"   co
 "        bash : ${parameter,pattern}  Case modification
 "        bash : ${parameter,,pattern} Case modification
 syn cluster shDerefPatternList contains=shDerefPattern,shDerefString
-syn match shDerefOpError       contained       ":[[:punct:]]"
+if !exists("g:sh_no_error")
+ syn match shDerefOpError      contained       ":[[:punct:]]"
+endif
 syn match  shDerefOp   contained       ":\=[-=?]"      nextgroup=@shDerefPatternList
 syn match  shDerefOp   contained       ":\=+"  nextgroup=@shDerefPatternList
 if exists("b:is_bash") || exists("b:is_kornshell")
@@ -480,7 +487,9 @@ syn region shParen matchgroup=shArithRegion start='(\%(\ze[^(]\|$\)' end=')' con
 " ===================
 syn keyword shStatement break cd chdir continue eval exec exit kill newgrp pwd read readonly return shift test trap ulimit umask wait
 syn keyword shConditional contained elif else then
-syn keyword shCondError elif else then
+if !exists("g:sh_no_error")
+ syn keyword shCondError elif else then
+endif
 
 " Useful ksh Keywords: {{{1
 " ====================
@@ -589,20 +598,22 @@ if exists("b:is_kornshell")
   hi def link shFunctionParen          Delimiter
 endif
 
-hi def link shCaseError                Error
-hi def link shCondError                Error
-hi def link shCurlyError               Error
-hi def link shDerefError               Error
-hi def link shDerefOpError             Error
-hi def link shDerefWordError           Error
-hi def link shDoError          Error
-hi def link shEsacError                Error
-hi def link shIfError          Error
-hi def link shInError          Error
-hi def link shParenError               Error
-hi def link shTestError                Error
-if exists("b:is_kornshell")
-  hi def link shDTestError             Error
+if !exists("g:sh_no_error")
+ hi def link shCaseError               Error
+ hi def link shCondError               Error
+ hi def link shCurlyError              Error
+ hi def link shDerefError              Error
+ hi def link shDerefOpError            Error
+ hi def link shDerefWordError          Error
+ hi def link shDoError         Error
+ hi def link shEsacError               Error
+ hi def link shIfError         Error
+ hi def link shInError         Error
+ hi def link shParenError              Error
+ hi def link shTestError               Error
+ if exists("b:is_kornshell")
+   hi def link shDTestError            Error
+ endif
 endif
 
 hi def link shArithmetic               Special
index a2b98251b7d192619a8bec16f942d1d32e7f0236..a324304f9fe113ce899b4fa83782200438c25cb8 100644 (file)
@@ -1,8 +1,8 @@
 " Vim syntax file
 " Language:    TeX
 " Maintainer:  Dr. Charles E. Campbell, Jr. <NdrchipO@ScampbellPfamily.AbizM>
-" Last Change: Oct 12, 2011 
-" Version:     69
+" Last Change: Jan 10, 2012
+" Version:     72
 " URL:         http://mysite.verizon.net/astronaut/vim/index.html#vimlinks_syntax
 "
 " Notes: {{{1
@@ -603,6 +603,7 @@ if has("conceal") && &enc == 'utf-8'
   let s:texMathList=[
     \ ['|'             , '‖'],
     \ ['aleph'         , 'ℵ'],
+    \ ['amalg'         , '∐'],
     \ ['angle'         , '∠'],
     \ ['approx'                , '≈'],
     \ ['ast'           , '∗'],
@@ -614,20 +615,24 @@ if has("conceal") && &enc == 'utf-8'
     \ ['because'       , '∵'],
     \ ['between'       , '≬'],
     \ ['bigcap'                , '∩'],
+    \ ['bigcirc'       , '○'],
     \ ['bigcup'                , '∪'],
     \ ['bigodot'       , '⊙'],
     \ ['bigoplus'      , '⊕'],
     \ ['bigotimes'     , '⊗'],
     \ ['bigsqcup'      , '⊔'],
     \ ['bigtriangledown', '∇'],
+    \ ['bigtriangleup' , '∆'],
     \ ['bigvee'                , '⋁'],
     \ ['bigwedge'      , '⋀'],
     \ ['blacksquare'   , '∎'],
     \ ['bot'           , '⊥'],
+    \ ['bowtie'                , '⋈'],
     \ ['boxdot'                , '⊡'],
     \ ['boxminus'      , '⊟'],
     \ ['boxplus'       , '⊞'],
     \ ['boxtimes'      , '⊠'],
+    \ ['bullet'                , '•'],
     \ ['bumpeq'                , '≏'],
     \ ['Bumpeq'                , '≎'],
     \ ['cap'           , '∩'],
@@ -651,36 +656,41 @@ if has("conceal") && &enc == 'utf-8'
     \ ['curlyeqsucc'   , '⋟'],
     \ ['curlyvee'      , '⋎'],
     \ ['curlywedge'    , '⋏'],
+    \ ['dagger'                , '†'],
     \ ['dashv'         , '⊣'],
+    \ ['ddagger'       , '‡'],
+    \ ['ddots'         , '⋱'],
     \ ['diamond'       , '⋄'],
     \ ['diamondsuit'   , '♢'],
     \ ['div'           , '÷'],
     \ ['doteq'         , '≐'],
     \ ['doteqdot'      , '≑'],
     \ ['dotplus'       , '∔'],
+    \ ['dots'          , '…'],
     \ ['dotsb'         , '⋯'],
     \ ['dotsc'         , '…'],
-    \ ['dots'          , '…'],
     \ ['dotsi'         , '⋯'],
     \ ['dotso'         , '…'],
     \ ['doublebarwedge'        , '⩞'],
     \ ['downarrow'     , '↓'],
     \ ['Downarrow'     , '⇓'],
+    \ ['ell'           , 'ℓ'],
     \ ['emptyset'      , '∅'],
     \ ['eqcirc'                , '≖'],
     \ ['eqsim'         , '≂'],
     \ ['eqslantgtr'    , '⪖'],
     \ ['eqslantless'   , '⪕'],
     \ ['equiv'         , '≡'],
-    \ ['ell'           , 'ℓ'],
     \ ['exists'                , '∃'],
     \ ['fallingdotseq' , '≒'],
     \ ['flat'          , '♭'],
     \ ['forall'                , '∀'],
+    \ ['frown'         , '⁔'],
     \ ['ge'            , '≥'],
     \ ['geq'           , '≥'],
     \ ['geqq'          , '≧'],
     \ ['gets'          , '←'],
+    \ ['gg'            , '⟫'],
     \ ['gneqq'         , '≩'],
     \ ['gtrdot'                , '⋗'],
     \ ['gtreqless'     , '⋛'],
@@ -700,33 +710,40 @@ if has("conceal") && &enc == 'utf-8'
     \ ['lceil'         , '⌈'],
     \ ['ldots'         , '…'],
     \ ['le'            , '≤'],
-    \ ['leftarrow'     , '⟵'],
-    \ ['Leftarrow'     , '⟸'],
-    \ ['leftarrowtail' , '↢'],
+    \ ['leadsto'       , '↝'],
     \ ['left('         , '('],
     \ ['left\['                , '['],
     \ ['left\\{'       , '{'],
+    \ ['leftarrow'     , '⟵'],
+    \ ['Leftarrow'     , '⟸'],
+    \ ['leftarrowtail' , '↢'],
+    \ ['leftharpoondown', '↽'],
+    \ ['leftharpoonup' , '↼'],
     \ ['leftrightarrow'        , '⇔'],
+    \ ['Leftrightarrow'        , '⇔'],
     \ ['leftrightsquigarrow', '↭'],
     \ ['leftthreetimes'        , '⋋'],
     \ ['leq'           , '≤'],
+    \ ['leq'           , '≤'],
     \ ['leqq'          , '≦'],
     \ ['lessdot'       , '⋖'],
     \ ['lesseqgtr'     , '⋚'],
     \ ['lesssim'       , '≲'],
     \ ['lfloor'                , '⌊'],
+    \ ['ll'            , '≪'],
     \ ['lmoustache'     , '╭'],
     \ ['lneqq'         , '≨'],
     \ ['ltimes'                , '⋉'],
     \ ['mapsto'                , '↦'],
     \ ['measuredangle' , '∡'],
     \ ['mid'           , '∣'],
+    \ ['models'                , '╞'],
     \ ['mp'            , '∓'],
     \ ['nabla'         , '∇'],
     \ ['natural'       , '♮'],
     \ ['ncong'         , '≇'],
-    \ ['nearrow'       , '↗'],
     \ ['ne'            , '≠'],
+    \ ['nearrow'       , '↗'],
     \ ['neg'           , '¬'],
     \ ['neq'           , '≠'],
     \ ['nexists'       , '∄'],
@@ -763,12 +780,13 @@ if has("conceal") && &enc == 'utf-8'
     \ ['otimes'                , '⊗'],
     \ ['owns'          , '∋'],
     \ ['P'             , '¶'],
+    \ ['parallel'      , '║'],
     \ ['partial'       , '∂'],
     \ ['perp'          , '⊥'],
     \ ['pitchfork'     , '⋔'],
     \ ['pm'            , '±'],
-    \ ['precapprox'    , '⪷'],
     \ ['prec'          , '≺'],
+    \ ['precapprox'    , '⪷'],
     \ ['preccurlyeq'   , '≼'],
     \ ['preceq'                , '⪯'],
     \ ['precnapprox'   , '⪹'],
@@ -780,12 +798,13 @@ if has("conceal") && &enc == 'utf-8'
     \ ['rceil'         , '⌉'],
     \ ['Re'            , 'ℜ'],
     \ ['rfloor'                , '⌋'],
-    \ ['rightarrow'    , '⟶'],
-    \ ['Rightarrow'    , '⟹'],
-    \ ['rightarrowtail'        , '↣'],
     \ ['right)'                , ')'],
     \ ['right]'                , ']'],
     \ ['right\\}'      , '}'],
+    \ ['rightarrow'    , '⟶'],
+    \ ['Rightarrow'    , '⟹'],
+    \ ['rightarrowtail'        , '↣'],
+    \ ['rightleftharpoons', '⇌'],
     \ ['rightsquigarrow', '↝'],
     \ ['rightthreetimes', '⋌'],
     \ ['risingdotseq'  , '≓'],
@@ -796,6 +815,8 @@ if has("conceal") && &enc == 'utf-8'
     \ ['setminus'      , '∖'],
     \ ['sharp'         , '♯'],
     \ ['sim'           , '∼'],
+    \ ['simeq'         , '⋍'],
+    \ ['smile'         , '‿'],
     \ ['spadesuit'     , '♠'],
     \ ['sphericalangle'        , '∢'],
     \ ['sqcap'         , '⊓'],
@@ -804,20 +825,22 @@ if has("conceal") && &enc == 'utf-8'
     \ ['sqsubseteq'    , '⊑'],
     \ ['sqsupset'      , '⊐'],
     \ ['sqsupseteq'    , '⊒'],
+    \ ['star'          , '✫'],
     \ ['subset'                , '⊂'],
     \ ['Subset'                , '⋐'],
     \ ['subseteq'      , '⊆'],
     \ ['subseteqq'     , '⫅'],
     \ ['subsetneq'     , '⊊'],
     \ ['subsetneqq'    , '⫋'],
-    \ ['succapprox'    , '⪸'],
     \ ['succ'          , '≻'],
+    \ ['succapprox'    , '⪸'],
     \ ['succcurlyeq'   , '≽'],
     \ ['succeq'                , '⪰'],
     \ ['succnapprox'   , '⪺'],
     \ ['succneqq'      , '⪶'],
     \ ['succsim'       , '≿'],
     \ ['sum'           , '∑'],
+    \ ['supset'                , '⊃'],
     \ ['Supset'                , '⋑'],
     \ ['supseteq'      , '⊇'],
     \ ['supseteqq'     , '⫆'],
@@ -847,12 +870,15 @@ if has("conceal") && &enc == 'utf-8'
     \ ['vDash'         , '⊨'],
     \ ['Vdash'         , '⊩'],
     \ ['vdots'         , '⋮'],
-    \ ['veebar'                , '⊻'],
     \ ['vee'           , '∨'],
+    \ ['veebar'                , '⊻'],
     \ ['Vvdash'                , '⊪'],
     \ ['wedge'         , '∧'],
     \ ['wp'            , '℘'],
     \ ['wr'            , '≀']]
+"    \ ['jmath'                , 'X']
+"    \ ['uminus'       , 'X']
+"    \ ['uplus'                , 'X']
   for texmath in s:texMathList
    if texmath[0] =~ '\w$'
     exe "syn match texMathSymbol '\\\\".texmath[0]."\\>' contained conceal cchar=".texmath[1]
@@ -999,6 +1025,9 @@ if has("conceal") && &enc == 'utf-8'
   call s:SuperSub('texSuperscript','\^','T','ᵀ')
   call s:SuperSub('texSuperscript','\^','U','ᵁ')
   call s:SuperSub('texSuperscript','\^','W','ᵂ')
+  call s:SuperSub('texSuperscript','\^',',','︐')
+  call s:SuperSub('texSuperscript','\^',':','︓')
+  call s:SuperSub('texSuperscript','\^',';','︔')
   call s:SuperSub('texSuperscript','\^','+','⁺')
   call s:SuperSub('texSuperscript','\^','-','⁻')
   call s:SuperSub('texSuperscript','\^','<','˂')
@@ -1023,6 +1052,7 @@ if has("conceal") && &enc == 'utf-8'
   call s:SuperSub('texSubscript','_','i','ᵢ')
   call s:SuperSub('texSubscript','_','o','ₒ')
   call s:SuperSub('texSubscript','_','u','ᵤ')
+  call s:SuperSub('texSubscript','_',',','︐')
   call s:SuperSub('texSubscript','_','+','₊')
   call s:SuperSub('texSubscript','_','-','₋')
   call s:SuperSub('texSubscript','_','/','ˏ')
@@ -1175,6 +1205,8 @@ if did_tex_syntax_inits == 1
    HiLink texGreek             texStatement
    HiLink texSuperscript       texStatement
    HiLink texSubscript         texStatement
+   HiLink texSuperscripts      texSuperscript
+   HiLink texSubscripts        texSubscript
    HiLink texMathSymbol                texStatement
    HiLink texMathZoneV         texMath
    HiLink texMathZoneW         texMath
index 9db8bcbd416a8a865a79d294bb80f8ba99ecfa6b..b3f2b9e6374a3a5c027a11faac43ac17ee208a30 100644 (file)
@@ -2,8 +2,8 @@
 " Language:    Upstart job files
 " Maintainer:  Michael Biebl <biebl@debian.org>
 "              James Hunt <james.hunt@ubuntu.com>
-" Last Change: 2011 Mar 22
-" License:     GPL v2
+" Last Change: 2012 Jan 16
+" License:     The Vim license
 " Version:     0.4
 " Remark:      Syntax highlighting for Upstart (init(8)) job files.
 "
index a439fb015850478c0a67dd4b6b4f2e584a3f1347..eafd18b8ba1f1fe4829c6705b86ecea6b2472324 100644 (file)
@@ -1,14 +1,16 @@
 " Vim syntax file
 " Language:    Vim 7.3 script
 " Maintainer:  Dr. Charles E. Campbell, Jr. <NdrOchipS@PcampbellAfamily.Mbiz>
-" Last Change: Jul 18, 2011
-" Version:     7.3-08
+" Last Change: Jan 11, 2012
+" Version:     7.3-13
 " Automatically generated keyword lists: {{{1
 
 " Quit when a syntax file was already loaded {{{2
 if exists("b:current_syntax")
   finish
 endif
+let s:keepcpo= &cpo
+set cpo&vim
 
 " vimTodo: contains common special-notices for comments {{{2
 " Use the vimCommentGroup cluster to add your own.
@@ -118,14 +120,14 @@ syn region vimInsert      matchgroup=vimCommand start="^[: \t]*\(\d\+\(,\d\+\)\=\)\=i
 " =======
 syn match   vimBehave  "\<be\%[have]\>" skipwhite nextgroup=vimBehaveModel,vimBehaveError
 syn keyword vimBehaveModel contained   mswin   xterm
-if !exists("g:vimsyn_noerror")
+if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_nobehaveerror")
  syn match   vimBehaveError contained  "[^ ]\+"
 endif
 
 " Filetypes {{{2
 " =========
 syn match   vimFiletype        "\<filet\%[ype]\(\s\+\I\i*\)*"  skipwhite contains=vimFTCmd,vimFTOption,vimFTError
-if !exists("g:vimsyn_noerror")
+if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_vimFTError")
  syn match   vimFTError  contained     "\I\i*"
 endif
 syn keyword vimFTCmd    contained      filet[ype]
@@ -140,7 +142,7 @@ else
  syn region  vimAugroup        start="\<aug\%[roup]\>\s\+\K\k*" end="\<aug\%[roup]\>\s\+[eE][nN][dD]\>"        contains=vimAugroupKey,vimAutoCmd,@vimAugroupList keepend
 endif
 syn match   vimAugroup "aug\%[roup]!" contains=vimAugroupKey
-if !exists("g:vimsyn_noerror")
+if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_noaugrouperror")
  syn match   vimAugroupError   "\<aug\%[roup]\>\s\+[eE][nN][dD]\>"
 endif
 syn keyword vimAugroupKey contained    aug[roup]
@@ -152,7 +154,7 @@ syn match   vimOper "\(==\|!=\|>=\|<=\|=\~\|!\~\|>\|<\|=\)[?#]\{0,2}"       skipwhite ne
 syn match      vimOper "||\|&&\|[-+.]" skipwhite nextgroup=vimString,vimSpecFile
 syn region     vimOperParen    oneline matchgroup=vimParenSep  start="(" end=")" contains=@vimOperGroup
 syn region     vimOperParen    oneline matchgroup=vimSep       start="{" end="}" contains=@vimOperGroup nextgroup=vimVar,vimFuncVar
-if !exists("g:vimsyn_noerror")
+if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_noopererror")
  syn match     vimOperError    ")"
 endif
 
@@ -196,7 +198,7 @@ syn match   vimUserAttrb    contained       "-cou\%[nt]=\d\+"       contains=vimNumber,vimOper,vi
 syn match      vimUserAttrb    contained       "-bang\=\>"     contains=vimOper,vimUserAttrbKey
 syn match      vimUserAttrb    contained       "-bar\>"        contains=vimOper,vimUserAttrbKey
 syn match      vimUserAttrb    contained       "-re\%[gister]\>"       contains=vimOper,vimUserAttrbKey
-if !exists("g:vimsyn_noerror")
+if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_nousercmderror")
  syn match     vimUserCmdError contained       "\S\+\>"
 endif
 syn case ignore
@@ -269,7 +271,7 @@ syn match   vimMark "\<norm\%[al]\s\zs'[a-zA-Z0-9]" nextgroup=vimOper,vimMarkNumbe
 syn match      vimMarkNumber   "[-+]\d\+"              nextgroup=vimSubst contained contains=vimOper
 syn match      vimPlainMark contained  "'[a-zA-Z0-9]"
 
-syn match      vimRegister     '[^,;[{]\zs"[a-zA-Z0-9.%#:_\-/]\ze[^a-zA-Z_":]'
+syn match      vimRegister     '[^,;[{]\zs"[a-zA-Z0-9.%#:_\-/]\ze[^a-zA-Z_":0-9]'
 syn match      vimRegister     '\<norm\s\+\zs"[a-zA-Z0-9]'
 syn match      vimRegister     '\<normal\s\+\zs"[a-zA-Z0-9]'
 syn match      vimRegister     '@"'
@@ -282,8 +284,8 @@ syn match   vimFilter contained     "^!.\{-}\(|\|$\)"               contains=vimSpecFile
 syn match      vimFilter contained     "\A!.\{-}\(|\|$\)"ms=s+1        contains=vimSpecFile,vimFunction,vimFuncName,vimOperParen
 
 " Complex repeats (:h complex-repeat) {{{2
-syn match      vimCmplxRepeat  '[^a-zA-Z_/\\()]q[0-9a-zA-Z"]'lc=1
-syn match      vimCmplxRepeat  '@[0-9a-z".=@:]\ze\($\|[^a-zA-Z]\)'
+syn match      vimCmplxRepeat  '[^a-zA-Z_/\\()]q[0-9a-zA-Z"]\>'lc=1
+syn match      vimCmplxRepeat  '@[0-9a-z".=@:]\ze\($\|[^a-zA-Z]\>\)'
 
 " Set command and associated set-options (vimOptions) with comment {{{2
 syn region     vimSet          matchgroup=vimCommand start="\<\%(setl\%[ocal]\|setg\%[lobal]\|se\%[t]\)\>" skip="\%(\\\\\)*\\." end="$" matchgroup=vimNotation end="<[cC][rR]>" keepend oneline contains=vimSetEqual,vimOption,vimErrSetting,vimComment,vimSetString,vimSetMod
@@ -364,7 +366,7 @@ syn match vimNotFunc        "\<if\>\|\<el\%[seif]\>\|\<return\>\|\<while\>"
 
 " Errors And Warnings: {{{2
 " ====================
-if !exists("g:vimsyn_noerror")
+if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_novimfunctionerror")
  syn match     vimFunctionError        "\s\zs[a-z0-9]\i\{-}\ze\s*("                    contained contains=vimFuncKey,vimFuncBlank
 " syn match    vimFunctionError        "\s\zs\%(<[sS][iI][dD]>\|[sSgGbBwWtTlL]:\)[0-9]\i\{-}\ze\s*("   contained contains=vimFuncKey,vimFuncBlank
  syn match     vimElseIfErr    "\<else\s\+if\>"
@@ -381,7 +383,7 @@ syn match   vimNormCmds contained   ".*$"
 syn match      vimGroupList    contained       "@\=[^ \t,]*"   contains=vimGroupSpecial,vimPatSep
 syn match      vimGroupList    contained       "@\=[^ \t,]*,"  nextgroup=vimGroupList contains=vimGroupSpecial,vimPatSep
 syn keyword    vimGroupSpecial contained       ALL     ALLBUT  CONTAINED       TOP
-if !exists("g:vimsyn_noerror")
+if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_novimsynerror")
  syn match     vimSynError     contained       "\i\+"
  syn match     vimSynError     contained       "\i\+=" nextgroup=vimGroupList
 endif
@@ -395,7 +397,7 @@ syn cluster vimFuncBodyList add=vimSyntax
 
 " Syntax: case {{{2
 syn keyword    vimSynType      contained       case    skipwhite nextgroup=vimSynCase,vimSynCaseError
-if !exists("g:vimsyn_noerror")
+if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_novimsyncaseerror")
  syn match     vimSynCaseError contained       "\i\+"
 endif
 syn keyword    vimSynCase      contained       ignore  match
@@ -456,7 +458,7 @@ syn cluster vimFuncBodyList add=vimSynType
 " Syntax: sync {{{2
 " ============
 syn keyword vimSynType contained       sync    skipwhite       nextgroup=vimSyncC,vimSyncLines,vimSyncMatch,vimSyncError,vimSyncLinebreak,vimSyncLinecont,vimSyncRegion
-if !exists("g:vimsyn_noerror")
+if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_novimsyncerror")
  syn match     vimSyncError    contained       "\i\+"
 endif
 syn keyword    vimSyncC        contained       ccomment        clear   fromstart
@@ -477,6 +479,9 @@ syn match   vimIsCommand    "<Bar>\s*\a\+"  transparent contains=vimCommand,vimNotatio
 " Highlighting {{{2
 " ============
 syn cluster    vimHighlightCluster             contains=vimHiLink,vimHiClear,vimHiKeyList,vimComment
+if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_novimhictermerror")
+ syn match     vimHiCtermError contained       "[^0-9]\i*"
+endif
 syn match      vimHighlight    "\<hi\%[ghlight]\>"     skipwhite nextgroup=vimHiBang,@vimHighlightCluster
 syn match      vimHiBang       contained       "!"     skipwhite nextgroup=@vimHighlightCluster
 
@@ -488,20 +493,18 @@ syn case match
 syn match      vimHiAttribList contained       "\i\+"  contains=vimHiAttrib
 syn match      vimHiAttribList contained       "\i\+,"he=e-1   contains=vimHiAttrib nextgroup=vimHiAttribList
 syn case ignore
-syn keyword    vimHiCtermColor contained       black blue brown cyan darkBlue darkcyan darkgray darkgreen darkgrey darkmagenta darkred darkyellow gray green grey lightblue lightcyan lightgray lightgreen lightgrey lightmagenta lightred magenta red white yellow
+syn keyword    vimHiCtermColor contained       black blue brown cyan darkblue darkcyan darkgray darkgreen darkgrey darkmagenta darkred darkyellow gray green grey lightblue lightcyan lightgray lightgreen lightgrey lightmagenta lightred magenta red white yellow
+syn match      vimHiCtermColor contained       "\<color\d\{1,3}\>"
 
 syn case match
 syn match      vimHiFontname   contained       "[a-zA-Z\-*]\+"
 syn match      vimHiGuiFontname        contained       "'[a-zA-Z\-* ]\+'"
 syn match      vimHiGuiRgb     contained       "#\x\{6}"
-if !exists("g:vimsyn_noerror")
- syn match     vimHiCtermError contained       "[^0-9]\i*"
-endif
 
 " Highlighting: hi group key=arg ... {{{2
 syn cluster    vimHiCluster contains=vimGroup,vimHiGroup,vimHiTerm,vimHiCTerm,vimHiStartStop,vimHiCtermFgBg,vimHiGui,vimHiGuiFont,vimHiGuiFgBg,vimHiKeyError,vimNotation
 syn region     vimHiKeyList    contained oneline start="\i\+" skip="\\\\\|\\|" end="$\||"      contains=@vimHiCluster
-if !exists("g:vimsyn_noerror")
+if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_vimhikeyerror")
  syn match     vimHiKeyError   contained       "\i\+="he=e-1
 endif
 syn match      vimHiTerm       contained       "\cterm="he=e-1         nextgroup=vimHiAttribList
@@ -757,7 +760,9 @@ hi def link vimFTCmd        vimCommand
 hi def link vimFTOption        vimSynType
 hi def link vimFuncKey vimCommand
 hi def link vimGroupAdd        vimSynOption
+hi def link vimGroupName       vimGroup
 hi def link vimGroupRem        vimSynOption
+hi def link vimHiClear vimHighlight
 hi def link vimHiCtermFgBg     vimHiTerm
 hi def link vimHiCTerm vimHiTerm
 hi def link vimHighlight       vimCommand
@@ -872,8 +877,14 @@ hi def link vimTodo        Todo
 hi def link vimUserAttrbCmpltFunc      Special
 hi def link vimUserCmdError    Error
 hi def link vimUserFunc        Normal
+hi def link vimVar     Identifier
 hi def link vimWarn    WarningMsg
 
 " Current Syntax Variable: {{{2
 let b:current_syntax = "vim"
+
+" ---------------------------------------------------------------------
+" Cleanup: {{{1
+let &cpo = s:keepcpo
+unlet s:keepcpo
 " vim:ts=18  fdm=marker