changeset 2596:fae782ef63dd

Runtime file updates.
author Bram Moolenaar <bram@vim.org>
date Thu, 30 Sep 2010 21:47:56 +0200
parents bf9579ab26e5
children c3b5d3fe9404
files runtime/doc/diff.txt runtime/doc/eval.txt runtime/doc/if_cscop.txt runtime/doc/insert.txt runtime/doc/intro.txt runtime/doc/map.txt runtime/doc/netbeans.txt runtime/doc/syntax.txt runtime/doc/tags runtime/doc/todo.txt runtime/doc/undo.txt runtime/doc/various.txt runtime/doc/vi_diff.txt runtime/filetype.vim runtime/ftplugin/falcon.vim runtime/indent/falcon.vim runtime/scripts.vim runtime/syntax/d.vim runtime/syntax/falcon.vim runtime/syntax/nasm.vim
diffstat 20 files changed, 454 insertions(+), 80 deletions(-) [+]
line wrap: on
line diff
--- a/runtime/doc/diff.txt
+++ b/runtime/doc/diff.txt
@@ -1,4 +1,4 @@
-*diff.txt*      For Vim version 7.3.  Last change: 2010 Jul 31
+*diff.txt*      For Vim version 7.3.  Last change: 2010 Sep 30
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -261,10 +261,12 @@ that the buffers will be equal within th
 							*do*
 do		Same as ":diffget" without argument or range.  The "o" stands
 		for "obtain" ("dg" can't be used, it could be the start of
-		"dgg"!).
+		"dgg"!). Note: this doesn't work in Visual mode.
 
 							*dp*
 dp		Same as ":diffput" without argument or range.
+		Note: this doesn't work in Visual mode.
+
 
 When no [range] is given, the diff at the cursor position or just above it is
 affected.  When [range] is used, Vim tries to only put or get the specified
--- a/runtime/doc/eval.txt
+++ b/runtime/doc/eval.txt
@@ -1,4 +1,4 @@
-*eval.txt*	For Vim version 7.3.  Last change: 2010 Sep 14
+*eval.txt*	For Vim version 7.3.  Last change: 2010 Sep 29
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -1115,8 +1115,8 @@ See below |functions|.
 
 
 ==============================================================================
-3. Internal variable				*internal-variables* *E121*
-									*E461*
+3. Internal variable				*internal-variables* *E461*
+
 An internal variable name can be made up of letters, digits and '_'.  But it
 cannot start with a digit.  It's also possible to use curly braces, see
 |curly-braces-names|.
@@ -6741,7 +6741,8 @@ 7. Commands						*expression-commands*
 :let [{name}, ..., ; {lastname}] -= {expr1}
 			Like above, but append/add/subtract the value for each
 			|List| item.
-							*E106*
+
+								*E121*
 :let {var-name}	..	List the value of variable {var-name}.	Multiple
 			variable names may be given.  Special names recognized
 			here:				*E738*
--- a/runtime/doc/if_cscop.txt
+++ b/runtime/doc/if_cscop.txt
@@ -1,4 +1,4 @@
-*if_cscop.txt*  For Vim version 7.3.  Last change: 2009 Mar 18
+*if_cscop.txt*  For Vim version 7.3.  Last change: 2010 Sep 29
 
 
 		  VIM REFERENCE MANUAL    by Andy Kahn
@@ -112,8 +112,7 @@ The available subcommands are:
 	    :cscope add /projects/vim/cscope.out /usr/local/vim
 	    :cscope add cscope.out /usr/local/vim -C
 <
-				      *cscope-find* *cs-find*
-						*E565* *E567*
+				      *cscope-find* *cs-find* *E567*
     find  : Query cscope.  All cscope query options are available
 	    except option #5 ("Change this grep pattern").
 
@@ -198,7 +197,7 @@ The available subcommands are:
 
 	    USAGE   :cs help
 
-						*E260* *E261*
+							*E261*
     kill  : Kill a cscope connection (or kill all cscope connections).
 
 	    USAGE   :cs kill {num|partial_name}
--- a/runtime/doc/insert.txt
+++ b/runtime/doc/insert.txt
@@ -1,4 +1,4 @@
-*insert.txt*    For Vim version 7.3.  Last change: 2010 Sep 15
+*insert.txt*    For Vim version 7.3.  Last change: 2010 Sep 29
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -1766,6 +1766,11 @@ These two commands will keep on asking f
 containing only a ".".  Watch out for lines starting with a backslash, see
 |line-continuation|.
 
+When in Ex mode (see |-e|) a backslash at the end of the line can be used to
+insert a NUL character.  To be able to have a line ending in a backslash use
+two backslashes.  This means that the number of backslashes is halved, but
+only at the end of the line.
+
 NOTE: These commands cannot be used with |:global| or |:vglobal|.
 ":append" and ":insert" don't work properly in between ":if" and
 ":endif", ":for" and ":endfor", ":while" and ":endwhile".
--- a/runtime/doc/intro.txt
+++ b/runtime/doc/intro.txt
@@ -1,4 +1,4 @@
-*intro.txt*     For Vim version 7.3.  Last change: 2010 Jul 20
+*intro.txt*     For Vim version 7.3.  Last change: 2010 Sep 29
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -300,7 +300,7 @@ and <> are part of what you type, the co
 
 []		Characters in square brackets are optional.
 
-						    *count* *[count]* *E489*
+						    *count* *[count]*
 [count]		An optional number that may precede the command to multiply
 		or iterate the command.  If no number is given, a count of one
 		is used, unless otherwise noted.  Note that in this manual the
--- a/runtime/doc/map.txt
+++ b/runtime/doc/map.txt
@@ -1,4 +1,4 @@
-*map.txt*       For Vim version 7.3.  Last change: 2010 Jul 31
+*map.txt*       For Vim version 7.3.  Last change: 2010 Sep 29
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -1203,6 +1203,7 @@ completion can be enabled:
 	-complete=augroup	autocmd groups
 	-complete=buffer	buffer names
 	-complete=command	Ex command (and arguments)
+	-complete=cscope	|:cscope| suboptions
 	-complete=dir		directory names
 	-complete=environment	environment variable names
 	-complete=event		autocommand events
@@ -1216,6 +1217,7 @@ completion can be enabled:
 	-complete=menu		menus
 	-complete=option	options
 	-complete=shellcmd	Shell command
+	-complete=sign		|:sign| suboptions
 	-complete=syntax	syntax file names |'syntax'|
 	-complete=tag		tags
 	-complete=tag_listfiles	tags, file names are shown when CTRL-D is hit
--- a/runtime/doc/netbeans.txt
+++ b/runtime/doc/netbeans.txt
@@ -1,4 +1,4 @@
-*netbeans.txt*  For Vim version 7.3.  Last change: 2010 Aug 20
+*netbeans.txt*  For Vim version 7.3.  Last change: 2010 Sep 29
 
 
 		  VIM REFERENCE MANUAL    by Gordon Prieur et al.
@@ -820,7 +820,7 @@ These errors occur when a message violat
 ==============================================================================
 7. NetBeans commands					*netbeans-commands*
 
-							*:nbstart* *E511*
+							*:nbstart* *E511* *E838*
 :nbs[tart] {connection}	Start a new Netbeans session with {connection} as the
 			socket connection parameters.  The format of
 			{connection} is described in |netbeans-parameters|.
--- a/runtime/doc/syntax.txt
+++ b/runtime/doc/syntax.txt
@@ -1,4 +1,4 @@
-*syntax.txt*	For Vim version 7.3.  Last change: 2010 Sep 14
+*syntax.txt*	For Vim version 7.3.  Last change: 2010 Sep 23
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -2258,7 +2258,7 @@ For highlighted builtin functions: >
 For highlighted standard exceptions: >
 	:let python_highlight_exceptions = 1
 
-For highlighted trailing whitespace and mix of spaces and tabs:
+For highlighted trailing whitespace and mix of spaces and tabs: >
 	:let python_highlight_space_errors = 1
 
 If you want all possible Python highlighting (the same as setting the
--- a/runtime/doc/tags
+++ b/runtime/doc/tags
@@ -3420,7 +3420,6 @@ E102	diff.txt	/*E102*
 E103	diff.txt	/*E103*
 E104	digraph.txt	/*E104*
 E105	mbyte.txt	/*E105*
-E106	eval.txt	/*E106*
 E107	eval.txt	/*E107*
 E108	eval.txt	/*E108*
 E109	eval.txt	/*E109*
@@ -3587,7 +3586,6 @@ E257	if_cscop.txt	/*E257*
 E258	remote.txt	/*E258*
 E259	if_cscop.txt	/*E259*
 E26	rileft.txt	/*E26*
-E260	if_cscop.txt	/*E260*
 E261	if_cscop.txt	/*E261*
 E262	if_cscop.txt	/*E262*
 E263	if_pyth.txt	/*E263*
@@ -3836,7 +3834,6 @@ E485	message.txt	/*E485*
 E486	pattern.txt	/*E486*
 E487	options.txt	/*E487*
 E488	message.txt	/*E488*
-E489	intro.txt	/*E489*
 E49	message.txt	/*E49*
 E490	fold.txt	/*E490*
 E492	message.txt	/*E492*
@@ -3919,7 +3916,6 @@ E561	if_cscop.txt	/*E561*
 E562	if_cscop.txt	/*E562*
 E563	if_cscop.txt	/*E563*
 E564	if_cscop.txt	/*E564*
-E565	if_cscop.txt	/*E565*
 E566	if_cscop.txt	/*E566*
 E567	if_cscop.txt	/*E567*
 E568	if_cscop.txt	/*E568*
@@ -4219,6 +4215,7 @@ E834	options.txt	/*E834*
 E835	options.txt	/*E835*
 E836	if_pyth.txt	/*E836*
 E837	if_pyth.txt	/*E837*
+E838	netbeans.txt	/*E838*
 E84	windows.txt	/*E84*
 E85	options.txt	/*E85*
 E86	windows.txt	/*E86*
--- a/runtime/doc/todo.txt
+++ b/runtime/doc/todo.txt
@@ -1,4 +1,4 @@
-*todo.txt*      For Vim version 7.3.  Last change: 2010 Sep 21
+*todo.txt*      For Vim version 7.3.  Last change: 2010 Sep 29
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -30,32 +30,18 @@ be worked on, but only if you sponsor Vi
 							*known-bugs*
 -------------------- Known bugs and current work -----------------------
 
-Patch for Mingw build file (Jon, 2010 Aug 22)
-Patch for loading different Ruby versions. (Jon, 2010 Aug 23)
-
-Document cscope and sign completion for user commands. (Peter Odding, 2010 Aug
-19)
-
-Problem with \NL in Ex script. (Ray Frish, 2010 Aug 10)
-
-":e ~br<Tab>" does not complete to ":e /home/bram/".  Crash too?
-
-Runtime file for Falcon. (Steven Oliver, 2010 Sep 14)
-
-Patch to fix error tags in help files. (Dominique Pelle, 2010 Aug 25)
-
-Patch to fix :nbstart silently failing. (Xavier de Gaye, 2010 Aug 20)
-Another one for when Athena has netbeans support.
-
-patch for 3 bugs reported by smatch. (Dominique Pelle, 2010 Aug 23)
+Cursor position wrong when 'formatoptions' contains "a". (Moshe Kamensky, 2010
+Sep 7, Gary Johnson, 2010 Sep 14)
+Formatoptions cause cursor to jump. (ZyX, 2010 Aug 22)
+Caused by revision 2294, "Make joining a range of lines much faster. (Milan
+Vancura)" ?
+Patch by Carlo Teubner, 2010 Sep 25.  Test Sep 26.
 
 'cursorline' is displayed too short when there are concealed characters and
 'list' is set, 'listchars' at default value. (Dennis Preiser, 2010 Aug 15)
 
 Hang on slave PTY on Mac.  Patch from Nikola Knezevic, 2010 Aug 29.
 
-Patch to support netbeans under Athena. (Xavier de Gaye, 2010 Aug 20)
-
 Patch to fix sign type negative and memory not freed. (Xavier de Gaye, 2010
 Aug 20)
 
@@ -69,8 +55,19 @@ 21, Ben Fritz, 2010 Sep 14)
 Patch for :mksession not escaping file name properly. (Peter Odding, 2010 Sep
 19)
 
+Patch for CTRL-] in help file doing wrong escaping. (Carlo Teubner, 2010 Sep
+25)
+
+Patch to support List and Dict in .viminfo. (Christian Brabandt, 2010 Sep 24)
+Sep 26 with a test.
+
 Patch for :grep docs. (Britton Kerin, 2010 Aug 31)
 
+Patch for dynamic loading Ruby on Unix. (Jon, 2010 Aug 23)
+Included, but also need a change to configure.
+
+Replacement R syntax file. (Jakson A. Aquino, 2010 Sep 29)
+
 Windows keys not set properly on Windows 7?  (cncyber, 2010 Aug 26)
 
 maparg() doesn't return the flags, such as <buffer>, <script>, <silent>.
@@ -88,6 +85,8 @@ 18)
 
 Patch for 2html to support 'fileencoding'. (Benjamin Fritz, 2010 Sep 10)
 
+Patch to use 'previewheight' for popup menu. (Benjamin Haskell, 2010 Sep 29)
+
 CTRL-] on help tag |/[\n]| doesn't jump to the right place. (Tony Mechelynck,
 2010 Aug 8)
 
@@ -106,8 +105,12 @@ Beckett Aug 23)
 GTK: drawing a double-width combining character over single-width characters
 doesn't look right. (Dominique Pelle, 2010 Aug 8)
 
-copy/paste between Vim and Google chrome doesn't work well for multi-byte
+Copy/paste between Vim and Google chrome doesn't work well for multi-byte
 characters. (Ben Haskell, 2010 Sep 17)
+When putting text in the cut buffer (when exiting) and conversion doesn't work
+properly, Prepend "ENC==={value of 'enc'}:" to the text and don't convert?
+Then it should at least work from Vim to Vim and in other applications it's
+clear why it doesn't work.
 
 Editing a file with a ^M with 'ff' set to "mac", opening a help file, then the
 ^M is displayed as ^J sometimes.  Getting 'ff' value from wrong window/buffer?
@@ -231,12 +234,18 @@ Disable updating folds while completion 
 In command line window ":close" doesn't work properly. (Tony Mechelynck, 2009
 Jun 1)
 
+Cannot use getchar() inside :normal and using an expression mapping.  Is this
+supposed to work?  (XyX, 2010 Sep 22)
+
 When a:base in 'completefunc' starts with a number it's passed as a number,
 not a string. (Sean Ma)  Need to add flag to call_func_retlist() to force a
 string value.
 
 There is no command line completion for ":lmap".
 
+":e ~br<Tab>" does not complete to ":e /home/bram/".  Would need to use
+getpwent() to find all the matches.
+
 Invalid read error in Farsi mode. (Dominique Pelle, 2009 Aug 2)
 
 For running gvim on an USB stick: avoid the OLE registration.  Use a command
@@ -245,12 +254,6 @@ line argument -noregister.
 When a mapping exists both for insert mode and lang-insert mode, the last one
 doesn't work. (Tyru, 2010 May 6)  Or is this intended?
 
-Cursor position wrong when 'formatoptions' contains "a". (Moshe Kamensky, 2010
-Sep 7, Gary Johnson, 2010 Sep 14)
-Formatoptions cause cursor to jump. (ZyX, 2010 Aug 22)
-Caused by revision 2294, "Make joining a range of lines much faster. (Milan
-Vancura)" ?
-
 Still a problem with ":make" in the wrong directory.  Caused by ":bufdo".
 (Ajit Thakkar, 2009 Jul 1) More information Jul 9, Jul 15.
 Caused by "doautoall syntaxset BufEnter *" in syntax/nosyntax.vim ?
--- a/runtime/doc/undo.txt
+++ b/runtime/doc/undo.txt
@@ -1,4 +1,4 @@
-*undo.txt*      For Vim version 7.3.  Last change: 2010 Sep 14
+*undo.txt*      For Vim version 7.3.  Last change: 2010 Sep 30
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -137,7 +137,7 @@ This is explained in the user manual: |u
 			The "time" column is the time this change was made.
 			The "saved" column specifies, if this change was
 			written to disk and which file write it was. This can
-			be used with the |later| and |earlier| commands.
+			be used with the |:later| and |:earlier| commands.
 			For more details use the |undotree()| function.
 
 							*g-*
--- a/runtime/doc/various.txt
+++ b/runtime/doc/various.txt
@@ -1,4 +1,4 @@
-*various.txt*   For Vim version 7.3.  Last change: 2010 Sep 14
+*various.txt*   For Vim version 7.3.  Last change: 2010 Sep 23
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -167,8 +167,8 @@ 8g8			Find an illegal UTF-8 byte sequenc
 :norm[al][!] {commands}					*:norm* *:normal*
 			Execute Normal mode commands {commands}.  This makes
 			it possible to execute Normal mode commands typed on
-			the command-line.  {commands} is executed like it is
-			typed.  For undo all commands are undone together.
+			the command-line.  {commands} are executed like they
+			are typed.  For undo all commands are undone together.
 			Execution stops when an error is encountered.
 			If the [!] is given, mappings will not be used.
 			{commands} should be a complete command.  If
--- a/runtime/doc/vi_diff.txt
+++ b/runtime/doc/vi_diff.txt
@@ -1,4 +1,4 @@
-*vi_diff.txt*   For Vim version 7.3.  Last change: 2010 Jul 20
+*vi_diff.txt*   For Vim version 7.3.  Last change: 2010 Sep 25
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -90,6 +90,7 @@ Maximum lhs of a mapping   50 characters
 Number of different highlighting types: over 30000
 Range of a Number variable:  -2147483648 to 2147483647 (more on 64 bit
 			   systems)
+Maximum length of a line in a tags file: 512 bytes.
 
 Information for undo and text in registers is kept in memory, thus when making
 (big) changes the amount of (virtual) memory available limits the number of
--- a/runtime/filetype.vim
+++ b/runtime/filetype.vim
@@ -1,7 +1,7 @@
 " Vim support file to detect file types
 "
 " Maintainer:	Bram Moolenaar <Bram@vim.org>
-" Last Change:	2010 Jul 30
+" Last Change:	2010 Sep 29
 
 " Listen very carefully, I will say this only once
 if exists("did_load_filetypes")
@@ -677,6 +677,9 @@ au BufNewFile,BufRead *.exp			setf expec
 " Exports
 au BufNewFile,BufRead exports			setf exports
 
+" Falcon
+au BufNewFile,BufRead *.fal 			setf falcon
+
 " Fantom
 au BufNewFile,BufRead *.fan,*.fwt		setf fan
 
new file mode 100644
--- /dev/null
+++ b/runtime/ftplugin/falcon.vim
@@ -0,0 +1,43 @@
+" Vim filetype plugin file
+" Language:     Falcon
+" Author:       Steven Oliver <oliver.steven@gmail.com>
+" Copyright:    Copyright (c) 2009, 2010 Steven Oliver
+" License:      You may redistribute this under the same terms as Vim itself
+" --------------------------------------------------------------------------
+" GetLatestVimScripts: 2762 1 :AutoInstall: falcon.vim
+
+" Only do this when not done yet for this buffer
+if (exists("b:did_ftplugin"))
+  finish
+endif
+let b:did_ftplugin = 1
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+setlocal tabstop=4 shiftwidth=4 expandtab fileencoding=utf-8
+setlocal suffixesadd=.fal
+
+" Matchit support
+if exists("loaded_matchit") && !exists("b:match_words")
+  let b:match_ignorecase = 0
+
+  let b:match_words =
+	\ '\<\%(if\|case\|while\|until\|for\|do\|class\)\>=\@!' .
+	\ ':' .
+	\ '\<\%(else\|elsif\|when\)\>' .
+	\ ':' .
+	\ '\<end\>' .
+	\ ',{:},\[:\],(:)'
+endif
+
+" Set comments to include dashed lines
+setlocal comments=sO:*\ -,mO:*\ \ ,exO:*/,s1:/*,mb:*,ex:*/,://
+
+" Windows allows you to filter the open file dialog
+if has("gui_win32") && !exists("b:browsefilter")
+  let b:browsefilter = "Falcon Source Files (*.fal)\t*.fal\n" .
+                     \ "All Files (*.*)\t*.*\n"
+endif
+
+" vim: set sw=4 sts=4 et tw=80 :
new file mode 100644
--- /dev/null
+++ b/runtime/indent/falcon.vim
@@ -0,0 +1,156 @@
+" Vim indent file
+" Language: Falcon
+" Maintainer: Steven Oliver <oliver.steven@gmail.com>
+" Website: https://steveno@github.com/steveno/falconpl-vim.git
+" Credits: Thanks to the ruby.vim authors, I borrow a lot!
+" Previous Maintainer: Brent A. Fulgham <bfulgham@debian.org>
+" -----------------------------------------------------------
+" GetLatestVimScripts: 2752 1 :AutoInstall: falcon.vim
+
+"======================================
+"       SETUP
+"======================================
+
+" Only load this indent file when no other was loaded.
+if exists("b:did_indent")
+    finish
+endif
+let b:did_indent = 1
+
+setlocal nosmartindent
+
+" Setup indent function and when to use it
+setlocal indentexpr=FalconGetIndent()
+setlocal indentkeys=0{,0},0),0],!^F,o,O,e
+setlocal indentkeys+==~case,=~catch,=~default,=~elif,=~else,=~end,=~\"
+
+" Define the appropriate indent function but only once
+if exists("*FalconGetIndent")
+    finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+"======================================
+"       VARIABLES
+"======================================
+
+" Regex of syntax group names that are strings AND comments
+let s:syng_strcom = '\<falcon\%(String\|StringEscape\|Comment\)\>'
+
+" Regex of syntax group names that are strings
+let s:syng_string = '\<falcon\%(String\|StringEscape\)\>'
+
+" Keywords to indent on
+let s:falcon_indent_keywords = '^\s*\(case\|catch\|class\|enum\|default\|elif\|else' .
+    \ '\|for\|function\|if.*"[^"]*:.*"\|if \(\(:\)\@!.\)*$\|loop\|object\|select' .
+    \ '\|switch\|try\|while\|\w*\s*=\s*\w*([$\)'
+
+" Keywords to deindent on
+let s:falcon_deindent_keywords = '^\s*\(case\|catch\|default\|elif\|else\|end\)'
+
+"======================================
+"       FUNCTIONS
+"======================================
+
+" Check if the character at lnum:col is inside a string
+function s:IsInStringOrComment(lnum, col)
+    return synIDattr(synID(a:lnum, a:col, 1), 'name') =~ s:syng_strcom
+endfunction
+
+"======================================
+"       INDENT ROUTINE
+"======================================
+
+function FalconGetIndent()
+    " Get the line to be indented
+    let cline = getline(v:lnum)
+
+    " Don't reindent comments on first column
+    if cline =~ '^\/\/'
+        return 0
+    endif
+
+    " Find the previous non-blank line
+    let lnum = prevnonblank(v:lnum - 1)
+
+    " Use zero indent at the top of the file
+    if lnum == 0
+        return 0
+    endif
+
+    let prevline=getline(lnum)
+    let ind = indent(lnum)
+    let chg = 0
+
+    " If we are in a multi-line string or line-comment, don't do anything
+    if s:IsInStringOrComment(v:lnum, matchend(cline, '^\s*') + 1 )
+        return indent('.')
+    endif
+
+    " If the start of the line equals a double quote, then indent to the
+    " previous lines first double quote
+    if cline =~? '^\s*"'
+        let chg = chg + &sw
+    endif
+
+    " If previous line started with a double quote and this one
+    " doesn't, unindent
+    if prevline =~? '^\s*"' && cline =~? '^\s*'
+        let chg = chg - &sw
+    endif
+
+    " Indent if proper keyword
+    if prevline =~? s:falcon_indent_keywords
+        let chg = &sw
+    " If previous line opened a parenthesis, and did not close it, indent
+    elseif prevline =~ '^.*(\s*[^)]*\((.*)\)*[^)]*$'
+        " Make sure this isn't just a function split between two lines
+        if prevline =~ ',\s*$'
+            return indent(prevnonblank(v:lnum - 1)) + &sw
+        else
+            return match(prevline, '(.*\((.*)\|[^)]\)*.*$') + 1
+        endif
+    elseif prevline =~ '^[^(]*)\s*$'
+        " This line closes a parenthesis. Finds opening.
+        let curr_line = prevnonblank(lnum - 1)
+        while curr_line >= 0
+            let str = getline(curr_line)
+            if str !~ '^.*(\s*[^)]*\((.*)\)*[^)]*$'
+                let curr_line = prevnonblank(curr_line - 1)
+            else
+                break
+            endif
+        endwhile
+        if curr_line < 0
+            return -1
+        endif
+        let ind = indent(curr_line)
+    endif
+
+    " If previous line ends in a semi-colon reset indent to previous
+    " lines setting
+    if prevline =~? ';\s*$' && prevnonblank(prevline) =~? ',\s*$'
+        return chg = chg - (2 * &sw)
+    endif
+
+    " If previous line ended in a comma, indent again
+    if prevline =~? ',\s*$'
+        let chg = chg + &sw
+    endif
+
+    " If previous line ended in a =>, indent again
+    if prevline =~? '=>\s*$'
+        let chg = chg + &sw
+    endif
+
+    " Deindent on proper keywords
+    if cline =~? s:falcon_deindent_keywords
+        let chg = chg - &sw
+    endif
+
+    return ind + chg
+endfunction
+
+" vim: set sw=4 sts=4 et tw=80 :
--- a/runtime/scripts.vim
+++ b/runtime/scripts.vim
@@ -1,7 +1,7 @@
 " Vim support file to detect file types in scripts
 "
 " Maintainer:	Bram Moolenaar <Bram@vim.org>
-" Last change:	2010 Jul 29
+" Last change:	2010 Sep 22
 
 " This file is called by an autocommand for every file that has just been
 " loaded into a buffer.  It checks if the type of file can be recognized by
@@ -168,7 +168,8 @@ else
     call SetFileTypeSH(s:line1)	" defined in filetype.vim
 
     " Z shell scripts
-  elseif s:line1 =~ '^#compdef\>' || s:line1 =~ '^#autoload\>'
+  elseif s:line1 =~ '^#compdef\>' || s:line1 =~ '^#autoload\>' ||
+        \ "\n".s:line1."\n".s:line2."\n".s:line3."\n".s:line4."\n".s:line5 =~ '\n\s*emulate\s\+\%(-[LR]\s\+\)\=[ckz]\=sh\>'
     set ft=zsh
 
   " ELM Mail files
--- a/runtime/syntax/d.vim
+++ b/runtime/syntax/d.vim
@@ -2,8 +2,8 @@
 "
 " Language:     D
 " Maintainer:   Jesse Phillips <Jesse.K.Phillips+D@gmail.com>
-" Last Change:  2010 Sep 9
-" Version:      0.21
+" Last Change:  2010 Sep 21
+" Version:      0.22
 "
 " Contributors:
 "   - Jason Mills <jasonmills@nf.sympatico.ca>: original Maintainer
@@ -117,9 +117,9 @@ syn match dSharpBang "\%^#!.*"     displ
 syn match dAnnotation	"@[_$a-zA-Z][_$a-zA-Z0-9_]*\>" contains=dAttribute
 
 " Version Identifiers
-syn match dVersion	"version\s*([_a-zA-Z][_a-zA-Z0-9]*\>"he=s+7 contains=dVersionIdentifier
-syn match dVersion	"[^.]\s*\<version\>"
-syn match dVersion	"^\<version\>"
+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
 
 " Scope StorageClass
 syn match dStorageClass   "scope"
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/falcon.vim
@@ -0,0 +1,155 @@
+" Vim syntax file
+" Language:     Falcon
+" Maintainer:   Steven Oliver <oliver.steven@gmail.com>
+" Website:      http://github.com/steveno/vim-files/blob/master/syntax/falcon.vim
+" Credits:      Thanks the ruby.vim authors, I borrowed a lot!
+" -------------------------------------------------------------------------------
+" GetLatestVimScripts: 2745 1 :AutoInstall: falcon.vim
+
+" When wanted, highlight the trailing whitespace.
+if exists("c_space_errors")
+    if !exists("c_no_trail_space_error")
+        syn match falconSpaceError "\s\+$"
+    endif
+
+    if !exists("c_no_tab_space_error")
+        syn match falconSpaceError " \+\t"me=e-1
+    endif
+endif
+
+" Symbols
+syn match falconSymbol "\(;\|,\|\.\)"
+syn match falconSymbolOther "\(#\|@\)" display
+
+" Operators
+syn match falconOperator "\(+\|-\|\*\|/\|=\|<\|>\|\*\*\|!=\|\~=\)"
+syn match falconOperator "\(<=\|>=\|=>\|\.\.\|<<\|>>\|\"\)"
+
+" Clusters
+syn region falconSymbol start="[]})\"':]\@<!:\"" end="\"" skip="\\\\\|\\\"" contains=@falconStringSpecial fold
+syn case match
+
+" Keywords
+syn keyword falconKeyword all allp any anyp as attributes brigade cascade catch choice class const
+syn keyword falconKeyword continue def directive do list dropping enum eq eval exit export from function
+syn keyword falconKeyword give global has hasnt in init innerfunc lambda launch launch len List list
+syn keyword falconKeyword load notin object pass print printl provides raise return self sender static to
+syn keyword falconKeyword try xamp
+
+" Error Type Keywords
+syn keyword falconKeyword CloneError CodeError Error InterruprtedError IoError MathError
+syn keyword falconKeyword ParamError RangeError SyntaxError TraceStep TypeError
+
+" Todo
+syn keyword falconTodo DEBUG FIXME NOTE TODO XXX
+
+" Conditionals
+syn keyword falconConditional and case default else end if iff
+syn keyword falconConditional elif or not switch select
+syn match   falconConditional "end\s\if"
+
+" Loops
+syn keyword falconRepeat break for loop forfirst forlast formiddle while
+
+" Booleans
+syn keyword falconBool true false
+
+" Constants
+syn keyword falconConst PI E nil
+
+" Comments
+syn match falconCommentSkip contained "^\s*\*\($\|\s\+\)"
+syn region falconComment start="/\*" end="\*/" contains=@falconCommentGroup,falconSpaceError,falconTodo
+syn region falconCommentL start="//" end="$" keepend contains=@falconCommentGroup,falconSpaceError,falconTodo
+syn match falconSharpBang "\%^#!.*" display
+syn sync ccomment falconComment
+
+" Numbers
+syn match falconNumbers transparent "\<[+-]\=\d\|[+-]\=\.\d" contains=falconIntLiteral,falconFloatLiteral,falconHexadecimal,falconOctal
+syn match falconNumbersCom contained transparent "\<[+-]\=\d\|[+-]\=\.\d" contains=falconIntLiteral,falconFloatLiteral,falconHexadecimal,falconOctal
+syn match falconHexadecimal contained "\<0x\x\+\>"
+syn match falconOctal contained "\<0\o\+\>"
+syn match falconIntLiteral contained "[+-]\<d\+\(\d\+\)\?\>"
+syn match falconFloatLiteral contained "[+-]\=\d\+\.\d*"
+syn match falconFloatLiteral contained "[+-]\=\d*\.\d*"
+
+" Includes
+syn keyword falconInclude load import
+
+" Expression Substitution and Backslash Notation
+syn match falconStringEscape "\\\\\|\\[abefnrstv]\|\\\o\{1,3}\|\\x\x\{1,2}" contained display
+syn match falconStringEscape "\%(\\M-\\C-\|\\C-\\M-\|\\M-\\c\|\\c\\M-\|\\c\|\\C-\|\\M-\)\%(\\\o\{1,3}\|\\x\x\{1,2}\|\\\=\S\)" contained display
+syn region falconSymbol start="[]})\"':]\@<!:\"" end="\"" skip="\\\\\|\\\"" contains=falconStringEscape fold
+
+" Normal String and Shell Command Output
+syn region falconString matchgroup=falconStringDelimiter start="\"" end="\"" skip="\\\\\|\\\"" contains=falconStringEscape fold
+syn region falconString matchgroup=falconStringDelimiter start="'" end="'" skip="\\\\\|\\'" fold
+syn region falconString matchgroup=falconStringDelimiter start="`" end="`" skip="\\\\\|\\`" contains=falconStringEscape fold
+
+" Generalized Single Quoted String, Symbol and Array of Strings
+syn region falconString matchgroup=falconStringDelimiter start="%[qw]\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)"  end="\z1" skip="\\\\\|\\\z1" fold
+syn region falconString matchgroup=falconStringDelimiter start="%[qw]{" end="}" skip="\\\\\|\\}" fold contains=falconDelimEscape
+syn region falconString matchgroup=falconStringDelimiter start="%[qw]<" end=">" skip="\\\\\|\\>" fold contains=falconDelimEscape
+syn region falconString matchgroup=falconStringDelimiter start="%[qw]\[" end="\]" skip="\\\\\|\\\]" fold contains=falconDelimEscape
+syn region falconString matchgroup=falconStringDelimiter start="%[qw](" end=")" skip="\\\\\|\\)" fold contains=falconDelimEscape
+syn region falconSymbol matchgroup=falconSymbolDelimiter start="%[s]\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" fold
+syn region falconSymbol matchgroup=falconSymbolDelimiter start="%[s]{" end="}" skip="\\\\\|\\}" fold contains=falconDelimEscape
+syn region falconSymbol matchgroup=falconSymbolDelimiter start="%[s]<" end=">" skip="\\\\\|\\>" fold contains=falconDelimEscape
+syn region falconSymbol matchgroup=falconSymbolDelimiter start="%[s]\[" end="\]" skip="\\\\\|\\\]" fold contains=falconDelimEscape
+syn region falconSymbol matchgroup=falconSymbolDelimiter start="%[s](" end=")" skip="\\\\\|\\)" fold contains=falconDelimEscape
+
+" Generalized Double Quoted String and Array of Strings and Shell Command Output
+syn region falconString matchgroup=falconStringDelimiter start="%\z([~`!@#$%^&*_\-+|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" contains=falconStringEscape fold
+syn region falconString matchgroup=falconStringDelimiter start="%[QWx]\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" contains=falconStringEscape fold
+syn region falconString matchgroup=falconStringDelimiter start="%[QWx]\={" end="}" skip="\\\\\|\\}" contains=falconStringEscape,falconDelimEscape fold
+syn region falconString matchgroup=falconStringDelimiter start="%[QWx]\=<" end=">" skip="\\\\\|\\>" contains=falconStringEscape,falconDelimEscape fold
+syn region falconString matchgroup=falconStringDelimiter start="%[QWx]\=\[" end="\]" skip="\\\\\|\\\]" contains=falconStringEscape,falconDelimEscape fold
+syn region falconString matchgroup=falconStringDelimiter start="%[QWx]\=(" end=")" skip="\\\\\|\\)" contains=falconStringEscape,falconDelimEscape fold
+
+syn region falconString start=+\%(\%(class\s*\|\%([]})"'.]\|::\)\)\_s*\|\w\)\@<!<<\z(\h\w*\)\ze+hs=s+2 matchgroup=falconStringDelimiter end=+^\z1$+ contains=falconStringEscape fold keepend
+syn region falconString start=+\%(\%(class\s*\|\%([]})"'.]\|::\)\)\_s*\|\w\)\@<!<<"\z([^"]*\)"\ze+hs=s+2  matchgroup=falconStringDelimiter end=+^\z1$+ contains=falconStringEscape fold keepend
+syn region falconString start=+\%(\%(class\s*\|\%([]})"'.]\|::\)\)\_s*\|\w\)\@<!<<'\z([^']*\)'\ze+hs=s+2  matchgroup=falconStringDelimiter end=+^\z1$+ fold keepend
+syn region falconString start=+\%(\%(class\s*\|\%([]})"'.]\|::\)\)\_s*\|\w\)\@<!<<`\z([^`]*\)`\ze+hs=s+2  matchgroup=falconStringDelimiter end=+^\z1$+ contains=falconStringEscape fold keepend
+
+syn region falconString start=+\%(\%(class\s*\|\%([]}).]\|::\)\)\_s*\|\w\)\@<!<<-\z(\h\w*\)\ze+hs=s+3 matchgroup=falconStringDelimiter end=+^\s*\zs\z1$+ contains=falconStringEscape fold keepend
+syn region falconString start=+\%(\%(class\s*\|\%([]}).]\|::\)\)\_s*\|\w\)\@<!<<-"\z([^"]*\)"\ze+hs=s+3  matchgroup=falconStringDelimiter end=+^\s*\zs\z1$+ contains=falconStringEscape fold keepend
+syn region falconString start=+\%(\%(class\s*\|\%([]}).]\|::\)\)\_s*\|\w\)\@<!<<-'\z([^']*\)'\ze+hs=s+3  matchgroup=falconStringDelimiter end=+^\s*\zs\z1$+ fold keepend
+syn region falconString start=+\%(\%(class\s*\|\%([]}).]\|::\)\)\_s*\|\w\)\@<!<<-`\z([^`]*\)`\ze+hs=s+3  matchgroup=falconStringDelimiter end=+^\s*\zs\z1$+ contains=falconStringEscape fold keepend
+
+" Syntax Synchronizing
+syn sync minlines=10 maxlines=100
+
+" Define the default highlighting
+if !exists("did_falcon_syn_inits")
+    command -nargs=+ HiLink hi def link <args>
+
+    HiLink falconKeyword          Keyword
+    HiLink falconCommentString    String
+    HiLink falconTodo             Todo
+    HiLink falconConditional      Keyword
+    HiLink falconRepeat           Repeat
+    HiLink falconcommentSkip      Comment
+    HiLink falconComment          Comment
+    HiLink falconCommentL         Comment
+    HiLink falconConst            Constant
+    HiLink falconOperator         Operator
+    HiLink falconSymbol           Normal
+    HiLink falconSpaceError       Error
+    HiLink falconHexadecimal      Number
+    HiLink falconOctal            Number
+    HiLink falconIntLiteral       Number
+    HiLink falconFloatLiteral     Float
+    HiLink falconStringEscape     Special
+    HiLink falconStringDelimiter  Delimiter
+    HiLink falconString           String
+    HiLink falconBool             Constant
+    HiLink falconSharpBang        PreProc
+    HiLink falconInclude          Include
+    HiLink falconSymbol           Constant
+    HiLink falconSymbolOther      Delimiter
+    delcommand HiLink
+endif
+
+let b:current_syntax = "falcon"
+
+" vim: set sw=4 sts=4 et tw=80 :
--- a/runtime/syntax/nasm.vim
+++ b/runtime/syntax/nasm.vim
@@ -1,9 +1,10 @@
 " Vim syntax file
 " Language:	NASM - The Netwide Assembler (v0.98)
-" Maintainer:	Manuel M.H. Stol	<mmh.stol@gmx.net>
-" Last Change:	2003 May 11
-" Vim URL:	http://www.vim.org/lang.html
-" NASM Home:	http://www.cryogen.com/Nasm/
+" Maintainer:	Andriy Sokolov	<andriy145@gmail.com>
+" Original Author:	Manuel M.H. Stol	<Manuel.Stol@allieddata.nl>
+" Former Maintainer:	Manuel M.H. Stol	<Manuel.Stol@allieddata.nl>
+" Last Change:	2010 Sep 24
+" NASM Home:	http://www.nasm.us/
 
 
 
@@ -160,6 +161,7 @@ syn region  nasmInMacStrucDef	contained 
 "syn region  nasmInMacStrucDef	contained transparent matchgroup=nasmStructure keepend start="^\s*UNION\>"hs=e-4 end="^\s*ENDUNION\>"re=e-8 contains=@nasmGrpCntnMacro
 "syn region  nasmInMacStrucDef	contained transparent matchgroup=nasmStructure keepend start="\<IUNION\>" end="\<IEND\(UNION\)\=\>" contains=@nasmGrpCntnMacro,nasmInStructure
 syn region  nasmInMacPreConDef	contained transparent matchgroup=nasmInMacPreCondit start="^\s*%ifnidni\>"hs=e-7 start="^\s*%if\(idni\|n\(ctx\|def\|idn\|num\|str\)\)\>"hs=e-6 start="^\s*%if\(ctx\|def\|idn\|nid\|num\|str\)\>"hs=e-5 start="^\s*%ifid\>"hs=e-4 start="^\s*%if\>"hs=e-2 end="%endif\>" contains=@nasmGrpCntnMacro,nasmInMacPreCondit,nasmInPreCondit
+" Todo: allow STRUC/ISTRUC to be used inside preprocessor conditional block
 syn match   nasmInMacPreCondit	contained transparent "ctx\s"lc=3 skipwhite nextgroup=@nasmGrpNxtCtx
 syn match   nasmInMacPreCondit	contained "^\s*%elifctx\>"hs=e-7 skipwhite nextgroup=@nasmGrpNxtCtx
 syn match   nasmInMacPreCondit	contained "^\s*%elifnctx\>"hs=e-8 skipwhite nextgroup=@nasmGrpNxtCtx
@@ -210,15 +212,17 @@ syn cluster nasmGrpInPreCondits	contains
 syn cluster nasmGrpPreCondits	contains=nasmPreConditDef,@nasmGrpInPreCondits,nasmCtxPreProc,nasmCtxLocLabel
 
 "  Other pre-processor statements
-syn match   nasmPreProc		"^\s*%rep\>"hs=e-3
+syn match   nasmPreProc		"^\s*%\(rep\|use\)\>"hs=e-3
 syn match   nasmPreProc		"^\s*%line\>"hs=e-4
-syn match   nasmPreProc		"^\s*%\(clear\|error\)\>"hs=e-5
-syn match   nasmPreProc		"^\s*%endrep\>"hs=e-6
-syn match   nasmPreProc		"^\s*%exitrep\>"hs=e-7
+syn match   nasmPreProc		"^\s*%\(clear\|error\|fatal\)\>"hs=e-5
+syn match   nasmPreProc		"^\s*%\(endrep\|strlen\|substr\)\>"hs=e-6
+syn match   nasmPreProc		"^\s*%\(exitrep\|warning\)\>"hs=e-7
 syn match   nasmDefine		"^\s*%undef\>"hs=e-5
 syn match   nasmDefine		"^\s*%\(assign\|define\)\>"hs=e-6
 syn match   nasmDefine		"^\s*%i\(assign\|define\)\>"hs=e-7
+syn match   nasmDefine		"^\s*%unmacro\>"hs=e-7
 syn match   nasmInclude		"^\s*%include\>"hs=e-7
+" Todo: Treat the line tail after %fatal, %error, %warning as text
 
 "  Multiple pre-processor instructions on single line detection (obsolete)
 "syn match   nasmPreProcError	+^\s*\([^\t "%';][^"%';]*\|[^\t "';][^"%';]\+\)%\a\+\>+
@@ -231,6 +235,7 @@ syn cluster nasmGrpPreProcs	contains=nas
 syn match   nasmGen08Register	"\<[A-D][HL]\>"
 syn match   nasmGen16Register	"\<\([A-D]X\|[DS]I\|[BS]P\)\>"
 syn match   nasmGen32Register	"\<E\([A-D]X\|[DS]I\|[BS]P\)\>"
+syn match   nasmGen64Register	"\<R\([A-D]X\|[DS]I\|[BS]P\|[89]\|1[0-5]\|[89][WD]\|1[0-5][WD]\)\>"
 syn match   nasmSegRegister	"\<[C-GS]S\>"
 syn match   nasmSpcRegister	"\<E\=IP\>"
 syn match   nasmFpuRegister	"\<ST\o\>"
@@ -298,20 +303,21 @@ syn match   nasmStdInstruction	"\<\(CMOV
 syn match   nasmStdInstruction	"\<POP\>"
 syn keyword nasmStdInstruction	AAA AAD AAM AAS ADC ADD AND
 syn keyword nasmStdInstruction	BOUND BSF BSR BSWAP BT[C] BTR BTS
-syn keyword nasmStdInstruction	CALL CBW CDQ CLC CLD CMC CMP CMPSB CMPSD CMPSW
-syn keyword nasmStdInstruction	CMPXCHG CMPXCHG8B CPUID CWD[E]
+syn keyword nasmStdInstruction	CALL CBW CDQ CLC CLD CMC CMP CMPSB CMPSD CMPSW CMPSQ
+syn keyword nasmStdInstruction	CMPXCHG CMPXCHG8B CPUID CWD[E] CQO
 syn keyword nasmStdInstruction	DAA DAS DEC DIV ENTER
-syn keyword nasmStdInstruction	IDIV IMUL INC INT[O] IRET[D] IRETW
+syn keyword nasmStdInstruction	IDIV IMUL INC INT[O] IRET[D] IRETW IRETQ
 syn keyword nasmStdInstruction	JCXZ JECXZ JMP
-syn keyword nasmStdInstruction	LAHF LDS LEA LEAVE LES LFS LGS LODSB LODSD
+syn keyword nasmStdInstruction	LAHF LDS LEA LEAVE LES LFS LGS LODSB LODSD LODSQ
 syn keyword nasmStdInstruction	LODSW LOOP[E] LOOPNE LOOPNZ LOOPZ LSS
-syn keyword nasmStdInstruction	MOVSB MOVSD MOVSW MOVSX MOVZX MUL NEG NOP NOT
-syn keyword nasmStdInstruction	OR POPA[D] POPAW POPF[D] POPFW
-syn keyword nasmStdInstruction	PUSH[AD] PUSHAW PUSHF[D] PUSHFW
+syn keyword nasmStdInstruction	MOVSB MOVSD MOVSW MOVSX MOVSQ MOVZX MUL NEG NOP NOT
+syn keyword nasmStdInstruction	OR POPA[D] POPAW POPF[D] POPFW POPFQ
+syn keyword nasmStdInstruction	PUSH[AD] PUSHAW PUSHF[D] PUSHFW PUSHFQ
 syn keyword nasmStdInstruction	RCL RCR RETF RET[N] ROL ROR
 syn keyword nasmStdInstruction	SAHF SAL SAR SBB SCASB SCASD SCASW
-syn keyword nasmStdInstruction	SHL[D] SHR[D] STC STD STOSB STOSD STOSW SUB
+syn keyword nasmStdInstruction	SHL[D] SHR[D] STC STD STOSB STOSD STOSW STOSQ SUB
 syn keyword nasmStdInstruction	TEST XADD XCHG XLATB XOR
+syn keyword nasmStdInstruction	LFENCE MFENCE SFENCE
 
 
 " System Instructions: (usually privileged)