summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2012-01-20 21:08:56 +0100
committerBram Moolenaar <Bram@vim.org>2012-01-20 21:08:56 +0100
commit6be7f8733f34333ed75f6e39425d73a6b2644379 (patch)
tree59ae0f289e6bfaaf3ed2e8ac5dcedb69e5656c01
parent90b280059fd51790105ff2e433303be58d58c430 (diff)
downloadvim-git-6be7f8733f34333ed75f6e39425d73a6b2644379.tar.gz
Update runtime files.
-rw-r--r--runtime/autoload/getscript.vim26
-rw-r--r--runtime/autoload/tar.vim12
-rw-r--r--runtime/autoload/vimball.vim9
-rw-r--r--runtime/autoload/zip.vim14
-rw-r--r--runtime/compiler/erlang.vim11
-rw-r--r--runtime/doc/autocmd.txt5
-rw-r--r--runtime/doc/develop.txt13
-rw-r--r--runtime/doc/mlang.txt4
-rw-r--r--runtime/doc/options.txt7
-rw-r--r--runtime/doc/pi_getscript.txt20
-rw-r--r--runtime/doc/pi_tar.txt16
-rw-r--r--runtime/doc/pi_vimball.txt17
-rw-r--r--runtime/doc/pi_zip.txt23
-rw-r--r--runtime/doc/syntax.txt82
-rw-r--r--runtime/doc/tags18
-rw-r--r--runtime/doc/todo.txt44
-rw-r--r--runtime/doc/various.txt20
-rw-r--r--runtime/ftplugin/erlang.vim150
-rw-r--r--runtime/ftplugin/logcheck.vim4
-rw-r--r--runtime/ftplugin/postscr.vim14
-rw-r--r--runtime/indent/erlang.vim205
-rw-r--r--runtime/indent/java.vim16
-rw-r--r--runtime/plugin/getscriptPlugin.vim2
-rw-r--r--runtime/plugin/tarPlugin.vim2
-rw-r--r--runtime/plugin/vimballPlugin.vim2
-rw-r--r--runtime/plugin/zipPlugin.vim8
-rw-r--r--runtime/spell/ga/ga_IE.diff2
-rw-r--r--runtime/spell/gd/gd_GB.diff2
-rw-r--r--runtime/spell/sv/sv_SE.diff2
-rw-r--r--runtime/syntax/c.vim22
-rw-r--r--runtime/syntax/d.vim161
-rw-r--r--runtime/syntax/erlang.vim341
-rw-r--r--runtime/syntax/fortran.vim547
-rw-r--r--runtime/syntax/gp.vim29
-rw-r--r--runtime/syntax/groovy.vim48
-rw-r--r--runtime/syntax/idl.vim583
-rw-r--r--runtime/syntax/mail.vim2
-rw-r--r--runtime/syntax/sh.vim89
-rw-r--r--runtime/syntax/tex.vim60
-rw-r--r--runtime/syntax/upstart.vim4
-rw-r--r--runtime/syntax/vim.vim49
41 files changed, 1443 insertions, 1242 deletions
diff --git a/runtime/autoload/getscript.vim b/runtime/autoload/getscript.vim
index 9e2a1964c..34f5970c3 100644
--- a/runtime/autoload/getscript.vim
+++ b/runtime/autoload/getscript.vim
@@ -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
diff --git a/runtime/autoload/tar.vim b/runtime/autoload/tar.vim
index 6355b7111..d67212934 100644
--- a/runtime/autoload/tar.vim
+++ b/runtime/autoload/tar.vim
@@ -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\)$'
diff --git a/runtime/autoload/vimball.vim b/runtime/autoload/vimball.vim
index b51077826..9a5a73c3c 100644
--- a/runtime/autoload/vimball.vim
+++ b/runtime/autoload/vimball.vim
@@ -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
diff --git a/runtime/autoload/zip.vim b/runtime/autoload/zip.vim
index c7b946dea..ad5cce2ed 100644
--- a/runtime/autoload/zip.vim
+++ b/runtime/autoload/zip.vim
@@ -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
index 000000000..867ba6b50
--- /dev/null
+++ b/runtime/compiler/erlang.vim
@@ -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
diff --git a/runtime/doc/autocmd.txt b/runtime/doc/autocmd.txt
index 8c7f64715..ff0b403ee 100644
--- a/runtime/doc/autocmd.txt
+++ b/runtime/doc/autocmd.txt
@@ -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".
diff --git a/runtime/doc/develop.txt b/runtime/doc/develop.txt
index 7cfdd5b22..0a4c03af5 100644
--- a/runtime/doc/develop.txt
+++ b/runtime/doc/develop.txt
@@ -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
diff --git a/runtime/doc/mlang.txt b/runtime/doc/mlang.txt
index c7b3df07c..bfb30a8b6 100644
--- a/runtime/doc/mlang.txt
+++ b/runtime/doc/mlang.txt
@@ -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,
diff --git a/runtime/doc/options.txt b/runtime/doc/options.txt
index 5af206f25..e7d6f0184 100644
--- a/runtime/doc/options.txt
+++ b/runtime/doc/options.txt
@@ -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*
diff --git a/runtime/doc/pi_getscript.txt b/runtime/doc/pi_getscript.txt
index 86e3cdd0c..5543573eb 100644
--- a/runtime/doc/pi_getscript.txt
+++ b/runtime/doc/pi_getscript.txt
@@ -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
diff --git a/runtime/doc/pi_tar.txt b/runtime/doc/pi_tar.txt
index ab98f4a8c..1ff4d7c4c 100644
--- a/runtime/doc/pi_tar.txt
+++ b/runtime/doc/pi_tar.txt
@@ -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|)
diff --git a/runtime/doc/pi_vimball.txt b/runtime/doc/pi_vimball.txt
index fd0006df9..f961ab118 100644
--- a/runtime/doc/pi_vimball.txt
+++ b/runtime/doc/pi_vimball.txt
@@ -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*
diff --git a/runtime/doc/pi_zip.txt b/runtime/doc/pi_zip.txt
index 13c604cfd..d976055ea 100644
--- a/runtime/doc/pi_zip.txt
+++ b/runtime/doc/pi_zip.txt
@@ -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
diff --git a/runtime/doc/syntax.txt b/runtime/doc/syntax.txt
index 772390463..fa032fc09 100644
--- a/runtime/doc/syntax.txt
+++ b/runtime/doc/syntax.txt
@@ -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
diff --git a/runtime/doc/tags b/runtime/doc/tags
index e80685a6a..53f4caa8d 100644
--- a/runtime/doc/tags
+++ b/runtime/doc/tags
@@ -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*
diff --git a/runtime/doc/todo.txt b/runtime/doc/todo.txt
index 49e245f23..4d343ccf3 100644
--- a/runtime/doc/todo.txt
+++ b/runtime/doc/todo.txt
@@ -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)
diff --git a/runtime/doc/various.txt b/runtime/doc/various.txt
index ebb10fb3b..b039e69d5 100644
--- a/runtime/doc/various.txt
+++ b/runtime/doc/various.txt
@@ -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
index 000000000..4899020f8
--- /dev/null
+++ b/runtime/ftplugin/erlang.vim
@@ -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()
diff --git a/runtime/ftplugin/logcheck.vim b/runtime/ftplugin/logcheck.vim
index 765f6b471..7d4671d87 100644
--- a/runtime/ftplugin/logcheck.vim
+++ b/runtime/ftplugin/logcheck.vim
@@ -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")
diff --git a/runtime/ftplugin/postscr.vim b/runtime/ftplugin/postscr.vim
index 56f4e249c..f7c96a24e 100644
--- a/runtime/ftplugin/postscr.vim
+++ b/runtime/ftplugin/postscr.vim
@@ -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
diff --git a/runtime/indent/erlang.vim b/runtime/indent/erlang.vim
index 5ce3f82e0..930f5d132 100644
--- a/runtime/indent/erlang.vim
+++ b/runtime/indent/erlang.vim
@@ -1,128 +1,144 @@
" 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
-
diff --git a/runtime/indent/java.vim b/runtime/indent/java.vim
index facbdbf57..3c48d3e35 100644
--- a/runtime/indent/java.vim
+++ b/runtime/indent/java.vim
@@ -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)
diff --git a/runtime/plugin/getscriptPlugin.vim b/runtime/plugin/getscriptPlugin.vim
index 1d67382b6..2697cdbc3 100644
--- a/runtime/plugin/getscriptPlugin.vim
+++ b/runtime/plugin/getscriptPlugin.vim
@@ -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
diff --git a/runtime/plugin/tarPlugin.vim b/runtime/plugin/tarPlugin.vim
index 197ab3564..01ddd48df 100644
--- a/runtime/plugin/tarPlugin.vim
+++ b/runtime/plugin/tarPlugin.vim
@@ -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
diff --git a/runtime/plugin/vimballPlugin.vim b/runtime/plugin/vimballPlugin.vim
index bdfca0105..59279774c 100644
--- a/runtime/plugin/vimballPlugin.vim
+++ b/runtime/plugin/vimballPlugin.vim
@@ -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
diff --git a/runtime/plugin/zipPlugin.vim b/runtime/plugin/zipPlugin.vim
index a5e1ae458..ebb6427f5 100644
--- a/runtime/plugin/zipPlugin.vim
+++ b/runtime/plugin/zipPlugin.vim
@@ -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
" ---------------------------------------------------------------------
diff --git a/runtime/spell/ga/ga_IE.diff b/runtime/spell/ga/ga_IE.diff
index 3e301b799..2a64d9960 100644
--- a/runtime/spell/ga/ga_IE.diff
+++ b/runtime/spell/ga/ga_IE.diff
@@ -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
diff --git a/runtime/spell/gd/gd_GB.diff b/runtime/spell/gd/gd_GB.diff
index ec4797ca1..36aa12d8f 100644
--- a/runtime/spell/gd/gd_GB.diff
+++ b/runtime/spell/gd/gd_GB.diff
@@ -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
diff --git a/runtime/spell/sv/sv_SE.diff b/runtime/spell/sv/sv_SE.diff
index 3526175f4..4089a66d2 100644
--- a/runtime/spell/sv/sv_SE.diff
+++ b/runtime/spell/sv/sv_SE.diff
@@ -27,7 +27,7 @@
+ # soundslike mapping from Aspell
+ # swedish_phonet.dat - Swedish phonetic transformation rules for aspell
+ # Copyright (C) 2000 Martin Norbck <d95mback@dtek.chalmers.se>
-+ # distributed under GNU GPL
++ # distributed under GNU GPL or the Vim license, at your choice.
+ # version 0.2
+
+ SAL & &
diff --git a/runtime/syntax/c.vim b/runtime/syntax/c.vim
index 7af0067f8..4553519b0 100644
--- a/runtime/syntax/c.vim
+++ b/runtime/syntax/c.vim
@@ -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")
diff --git a/runtime/syntax/d.vim b/runtime/syntax/d.vim
index b7f5ebac8..25318d8c4 100644
--- a/runtime/syntax/d.vim
+++ b/runtime/syntax/d.vim
@@ -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.
@@ -23,34 +24,23 @@
" 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
diff --git a/runtime/syntax/erlang.vim b/runtime/syntax/erlang.vim
index 2f39d6143..28bc4a5d3 100644
--- a/runtime/syntax/erlang.vim
+++ b/runtime/syntax/erlang.vim
@@ -1,229 +1,126 @@
" 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 Hellstrm <oscar@oscarh.net> (http://oscar.hellstrom.st)
+" Contributors: Ricardo Catalinas Jimnez <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"
-
diff --git a/runtime/syntax/fortran.vim b/runtime/syntax/fortran.vim
index 3e5cb220b..6fe42af6f 100644
--- a/runtime/syntax/fortran.vim
+++ b/runtime/syntax/fortran.vim
@@ -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:
@@ -11,66 +11,48 @@
" 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 fortranTypeR external
+syn keyword fortranIOR format
+syn match fortranKeywordR "\<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 fortranStringR 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
diff --git a/runtime/syntax/gp.vim b/runtime/syntax/gp.vim
index 2793aa4ed..f46a46521 100644
--- a/runtime/syntax/gp.vim
+++ b/runtime/syntax/gp.vim
@@ -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
diff --git a/runtime/syntax/groovy.vim b/runtime/syntax/groovy.vim
index 721692267..5b256f398 100644
--- a/runtime/syntax/groovy.vim
+++ b/runtime/syntax/groovy.vim
@@ -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
diff --git a/runtime/syntax/idl.vim b/runtime/syntax/idl.vim
index 39041fcac..c51850b13 100644
--- a/runtime/syntax/idl.vim
+++ b/runtime/syntax/idl.vim
@@ -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
@@ -17,303 +17,310 @@
" 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
diff --git a/runtime/syntax/mail.vim b/runtime/syntax/mail.vim
index ed7ca216d..cf4a2c69d 100644
--- a/runtime/syntax/mail.vim
+++ b/runtime/syntax/mail.vim
@@ -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
diff --git a/runtime/syntax/sh.vim b/runtime/syntax/sh.vim
index 73eebc388..1497499c5 100644
--- a/runtime/syntax/sh.vim
+++ b/runtime/syntax/sh.vim
@@ -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
diff --git a/runtime/syntax/tex.vim b/runtime/syntax/tex.vim
index a2b98251b..a324304f9 100644
--- a/runtime/syntax/tex.vim
+++ b/runtime/syntax/tex.vim
@@ -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
diff --git a/runtime/syntax/upstart.vim b/runtime/syntax/upstart.vim
index 9db8bcbd4..b3f2b9e63 100644
--- a/runtime/syntax/upstart.vim
+++ b/runtime/syntax/upstart.vim
@@ -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.
"
diff --git a/runtime/syntax/vim.vim b/runtime/syntax/vim.vim
index a439fb015..eafd18b8b 100644
--- a/runtime/syntax/vim.vim
+++ b/runtime/syntax/vim.vim
@@ -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