changeset 4780:2b11ac90d9e9

Updated runtime files.
author Bram Moolenaar <bram@vim.org>
date Thu, 06 Jun 2013 21:36:40 +0200
parents 5df5676c880f
children c02c7df9bdc9
files runtime/compiler/haml.vim runtime/compiler/sass.vim runtime/doc/if_pyth.txt runtime/doc/index.txt runtime/doc/options.txt runtime/doc/pattern.txt runtime/doc/syntax.txt runtime/doc/tags runtime/doc/todo.txt runtime/indent/erlang.vim runtime/lang/menu_ru_ru.koi8-r.vim runtime/lang/menu_ru_ru.vim runtime/scripts.vim runtime/syntax/c.vim runtime/syntax/erlang.vim runtime/syntax/falcon.vim runtime/syntax/help.vim runtime/syntax/r.vim runtime/syntax/rst.vim
diffstat 19 files changed, 560 insertions(+), 311 deletions(-) [+]
line wrap: on
line diff
--- a/runtime/compiler/haml.vim
+++ b/runtime/compiler/haml.vim
@@ -1,3 +1,8 @@
+" Vim compiler file
+" Compiler:	Haml
+" Maintainer:	Tim Pope <vimNOSPAM@tpope.org>
+" Last Change:	2013 May 30
+
 if exists("current_compiler")
   finish
 endif
--- a/runtime/compiler/sass.vim
+++ b/runtime/compiler/sass.vim
@@ -1,3 +1,8 @@
+" Vim compiler file
+" Compiler:	Sass
+" Maintainer:	Tim Pope <vimNOSPAM@tpope.org>
+" Last Change:	2013 May 30
+
 if exists("current_compiler")
   finish
 endif
--- a/runtime/doc/if_pyth.txt
+++ b/runtime/doc/if_pyth.txt
@@ -1,4 +1,4 @@
-*if_pyth.txt*   For Vim version 7.3.  Last change: 2013 May 25
+*if_pyth.txt*   For Vim version 7.3.  Last change: 2013 Jun 02
 
 
 		  VIM REFERENCE MANUAL    by Paul Moore
@@ -340,7 +340,7 @@ The buffer object attributes are:
 			|BufFilePost| autocommands are launched.
 	b.number	Buffer number. Can be used as |python-buffers| key.
 			Read-only.
-	b.valid		True or False. Buffer object becames invalid when 
+	b.valid		True or False. Buffer object becomes invalid when 
 			corresponding buffer is wiped out.
 
 The buffer object methods are:
@@ -446,7 +446,7 @@ Window attributes are:
 	row, col (read-only)	On-screen window position in display cells.
 				First position is zero.
 	tabpage (read-only)	Window tab page.
-	valid (read-write)	True or False. Window object becames invalid 
+	valid (read-write)	True or False. Window object becomes invalid 
 				when corresponding window is closed.
 
 The height attribute is writable only if the screen is split horizontally.
@@ -471,7 +471,7 @@ Tab page attributes are:
 	windows		Like |python-windows|, but for current tab page.
 	vars		The tab page |t:| variables.
 	window		Current tabpage window.
-	valid		True or False. Tab page object becames invalid when 
+	valid		True or False. Tab page object becomes invalid when 
 			corresponding tab page is closed.
 
 TabPage object type is available using "TabPage" attribute of vim module.
--- a/runtime/doc/index.txt
+++ b/runtime/doc/index.txt
@@ -1,4 +1,4 @@
-*index.txt*     For Vim version 7.3.  Last change: 2013 May 17
+*index.txt*     For Vim version 7.3.  Last change: 2013 Jun 06
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -1510,6 +1510,7 @@ tag	      command	      action ~
 |:sview|	:sv[iew]	split window and edit file read-only
 |:swapname|	:sw[apname]	show the name of the current swap file
 |:syntax|	:sy[ntax]	syntax highlighting
+|:syntime|	:synti[me]	measure syntax highlighting speed
 |:syncbind|	:sync[bind]	sync scroll binding
 |:t|		:t		same as ":copy"
 |:tNext|	:tN[ext]	jump to previous matching tag
--- a/runtime/doc/options.txt
+++ b/runtime/doc/options.txt
@@ -1,4 +1,4 @@
-*options.txt*	For Vim version 7.3.  Last change: 2013 May 23
+*options.txt*	For Vim version 7.3.  Last change: 2013 Jun 04
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -5132,7 +5132,18 @@ A jump table for the options with a shor
 	characters are put before the number.
 	See |hl-LineNr|  and |hl-CursorLineNr| for the highlighting used for
 	the number.
-	When setting this option, 'relativenumber' is reset.
+						*number_relativenumber*
+	The 'relativenumber' option changes the displayed number to be
+	relative to the cursor.  Together with 'number' there are these
+	four combinations (cursor in line 3):
+
+              	'nonu'          'nu'            'nonu'          'nu'
+		'nornu'         'nornu'         'rnu'           'rnu'
+
+	    |apple          |  1 apple      |  2 apple      |  2 apple
+	    |pear           |  2 pear       |  1 pear       |  1 pear
+	    |nobody         |  3 nobody     |  0 nobody     |3   nobody
+	    |there          |  4 there      |  1 there      |  1 there
 
 						*'numberwidth'* *'nuw'*
 'numberwidth' 'nuw'	number	(Vim default: 4  Vi default: 8)
@@ -5547,7 +5558,10 @@ A jump table for the options with a shor
 	characters are put before the number.
 	See |hl-LineNr|  and |hl-CursorLineNr| for the highlighting used for
 	the number.
-	When setting this option, 'number' is reset.
+	
+	The number in front of the cursor line also depends on the value of
+	'number', see |number_relativenumber| for all combinations of the two
+	options.
 
 						*'remap'* *'noremap'*
 'remap'			boolean	(default on)
--- a/runtime/doc/pattern.txt
+++ b/runtime/doc/pattern.txt
@@ -1,4 +1,4 @@
-*pattern.txt*   For Vim version 7.3.  Last change: 2013 May 29
+*pattern.txt*   For Vim version 7.3.  Last change: 2013 Jun 02
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -1232,7 +1232,7 @@ Suppose B is a base character and x and 
 	Bxy		Byx		yes (order ignored)
 	Bxy		By		no (x missing)
 	Bxy		Bx		no (y missing)
-	Bx		Bx		yes (perfect mach)
+	Bx		Bx		yes (perfect match)
 	Bx		By		no (x missing)
 	Bx		Bxy		yes (extra y ignored)
 	Bx		Byx		yes (extra y ignored)
--- a/runtime/doc/syntax.txt
+++ b/runtime/doc/syntax.txt
@@ -1,4 +1,4 @@
-*syntax.txt*	For Vim version 7.3.  Last change: 2013 May 31
+*syntax.txt*	For Vim version 7.3.  Last change: 2013 Jun 06
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -3957,7 +3957,7 @@ External matches					*:syn-ext-match*
 
 These extra regular expression items are available in region patterns:
 
-						*/\z(* */\z(\)* *E50* *E52*
+					*/\z(* */\z(\)* *E50* *E52* *E879*
     \z(\)	Marks the sub-expression as "external", meaning that it can be
 		accessed from another pattern match.  Currently only usable in
 		defining a syntax region start pattern.
@@ -5097,6 +5097,9 @@ If your syntax causes redrawing to be sl
 faster.  To see slowness switch on some features that usually interfere, such
 as 'relativenumber' and |folding|.
 
+Note: this is only available when compiled with the |+profile| feature.
+You many need to build Vim with "huge" features.
+
 To find out what patterns are consuming most time, get an overview with this
 sequence: >
 	:syntime on
--- a/runtime/doc/tags
+++ b/runtime/doc/tags
@@ -2876,6 +2876,7 @@ 90.5	usr_90.txt	/*90.5*
 :syntax-enable	syntax.txt	/*:syntax-enable*
 :syntax-on	syntax.txt	/*:syntax-on*
 :syntax-reset	syntax.txt	/*:syntax-reset*
+:syntime	syntax.txt	/*:syntime*
 :t	change.txt	/*:t*
 :tN	tagsrch.txt	/*:tN*
 :tNext	tagsrch.txt	/*:tNext*
@@ -4281,6 +4282,7 @@ E875	pattern.txt	/*E875*
 E876	pattern.txt	/*E876*
 E877	pattern.txt	/*E877*
 E878	pattern.txt	/*E878*
+E879	syntax.txt	/*E879*
 E88	windows.txt	/*E88*
 E89	message.txt	/*E89*
 E90	message.txt	/*E90*
@@ -7159,6 +7161,7 @@ notation	intro.txt	/*notation*
 notepad	gui_w32.txt	/*notepad*
 nr2char()	eval.txt	/*nr2char()*
 nroff.vim	syntax.txt	/*nroff.vim*
+number_relativenumber	options.txt	/*number_relativenumber*
 numbered-function	eval.txt	/*numbered-function*
 o	insert.txt	/*o*
 o_CTRL-V	motion.txt	/*o_CTRL-V*
@@ -7353,6 +7356,7 @@ python-bindeval	if_pyth.txt	/*python-bin
 python-bindeval-objects	if_pyth.txt	/*python-bindeval-objects*
 python-buffer	if_pyth.txt	/*python-buffer*
 python-buffers	if_pyth.txt	/*python-buffers*
+python-chdir	if_pyth.txt	/*python-chdir*
 python-command	if_pyth.txt	/*python-command*
 python-commands	if_pyth.txt	/*python-commands*
 python-current	if_pyth.txt	/*python-current*
@@ -7360,11 +7364,13 @@ python-dynamic	if_pyth.txt	/*python-dyna
 python-error	if_pyth.txt	/*python-error*
 python-eval	if_pyth.txt	/*python-eval*
 python-examples	if_pyth.txt	/*python-examples*
+python-fchdir	if_pyth.txt	/*python-fchdir*
 python-input	if_pyth.txt	/*python-input*
 python-options	if_pyth.txt	/*python-options*
 python-output	if_pyth.txt	/*python-output*
 python-pyeval	if_pyth.txt	/*python-pyeval*
 python-range	if_pyth.txt	/*python-range*
+python-strwidth	if_pyth.txt	/*python-strwidth*
 python-tabpage	if_pyth.txt	/*python-tabpage*
 python-tabpages	if_pyth.txt	/*python-tabpages*
 python-vars	if_pyth.txt	/*python-vars*
--- a/runtime/doc/todo.txt
+++ b/runtime/doc/todo.txt
@@ -1,4 +1,4 @@
-*todo.txt*      For Vim version 7.3.  Last change: 2013 Jun 01
+*todo.txt*      For Vim version 7.3.  Last change: 2013 Jun 06
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -34,34 +34,18 @@ not be repeated below, unless there is e
 							*known-bugs*
 -------------------- Known bugs and current work -----------------------
 
+Make it possible to test the status line: add screenchar(col, row).
+Use screen_getbytes().
+Could also add screenattr(col, row), but value is unpredictable.
+Functions to read the actual contents of the screen, so that things like
+conceal can be tested. (Nazri Ramliy, 2013 Feb 18)
+
+function() does not work like before. (lilydjwg, 2013 Jun 4)
+I guess this is caused by patch 7.3.1058:
+"Call of funcref does not succeed in other script."
+
 --- Python interface
 
-Patch from ZyX, May 30: Fix some possible memory problems
-
-Check: docs for .valid  patch by ZyX, May 30
-Correction by Roland Eggner, May 31.
-
-Tests are disabled because they fail.
-
-Configure doesn't find Python 3 on Ubuntu 13.04. (Ken Takata, Apr 13)
-
-Python SystemExit exception is not handled properly.  Patch to catch the
-exception and give an error. (Yasuhiro Matsumoto)
-Does not work, tests fail.
-
-Patch to complete after :py3. (Taro Muraoka, 2013 May 31)
-
-":python os.chdir('/tmp')" makes short buffer names invalid. (Xavier de Gaye)
-Patch to make os.chdir() handle side effects. (Xavier de Gaye, 2013 May 17)
-Update May 19, also for os.fchdir().
-Adds a $VIMRUNTIME/python directory.
-ZyX: OK to add python and python3 directory.
-
-Mac: OS/X 10.4 with Python 2.5 installed: configure finds an extra argument
-that breaks the build. (Brian Victor, 2008 Sep 1)
-
-Patch to access screen under Python. (Marko Mahni, 2010 Jul 18)
-
 Python: ":py raw_input('prompt')" doesn't work. (Manu Hack)
 
 Win32: The Python interface only works with one version of Python, selected at
@@ -71,8 +55,19 @@ Python: Be able to define a Python funct
 Vim script.  Requires converting the arguments and return value, like with
 vim.bindeval().
 
+Python SystemExit exception is not handled properly.  Patch to catch the
+exception and give an error. (Yasuhiro Matsumoto)
+Does not work, tests fail.
+
+Python: crash in test 86 because of int/size_t mixup? (Jun Takimoto, 2013 Jun
+6)
+
+Add a $VIMRUNTIME/python and $VIMRUNTIME/python3 directories?
+
 --- runtime files
 
+Alternate html indent file by Andy Wokula, script 2075.
+
 Syntax file for protocol buffers. (Feng Xiao, 2013 May 9)
 Has an ugly copyright notice.
 Add statement that it does not conflict with Vim license.
@@ -80,32 +75,22 @@ Add statement that it does not conflict 
 Patch for JavaScript syntax. (Kevin Locke, 2013 May 9)
 Claudio didn't respond yet.
 
---- Fast regexp engine
-
-Error in HTML highlighting. (Hiroshi Shirosaki)
-
-Tests for \{-} : Requires trying to start at every position?
-If so, rename nfa_has_backref to nfa_dup_states and re-use it for this.
-
-Allow "^*" as a literal "*".
-
-Need more testing for \1 back references.
+upstream_dat, usserver_log et al. syntax files. (Rob Owens, 2013 Jun 5)
+
+--- New regexp engine
+
+Does not work (yet) with NFA:
+- \%u, \%x, \%o, \%d followed by a composing character
+
+Don't call nfa_regmatch() recursively if the "out" state is not going to be
+added anyway.  In run log:
+    > Not adding state 6 to list 4. char -971: NFA_SKIP
 
 Profiling:
+    ./vim -s ~/vim/test/alsa.vim
+    ./vim -s ~/vim/test/todo.vim
     ./vim -s ~/vim/test/loop.vim
-    ./vim -s ~/vim/test/xml.vim  (Fix: Uses the old engine, see
-				bt_regexp_debug.log)
-	Need \@<=
-	NFA engine could not handle "[<]\@<=[^ /!?<>"']\+"
-	NFA engine could not handle "<!--\_.\{-}-->"
-
-setting cpo_lit and cpo_bsl can be slow.  Make them global.
-
-Get example files for many languages. Compare syntax highlighting with old and
-new regexp, find regexp constructs where NFA does not work correctly.
-source ~/vim/regexp/runold.vim  to update the "old" files.
-source ~/vim/regexp/runnew.vim  to update the "new" files
-source ~/vim/regexp/diff.vim    to find differences
+    ./vim -s ~/vim/test/xml.vim
 
 More test files from the src/pkg/regexp/testdata directory in the Go repo.
 
@@ -127,18 +112,14 @@ Performance tests:
 - When lists are empty in nfa_regmatch() and match is true, it keeps looping
   without doing anything.
 
-Does not work (yet) with NFA:
-- \z() \z1 .. "\z9": Previously matched text in syn HL.
-- ~: previous substitute pattern. Requires recursive compilation?
-- \%u, \%x, \%o, \%d followed by a composing character
-- \%V Visual
-- \%[abc]
-- \%'  mark
-- \@<  match before zero-width
-- \@>  match whole pattern
+BT engine: After \@> match and failing submatches are not cleared.
+See test64.
 
 --- bug fixes
 
+:wviminfo does not write old history entries. (Roland Eggner, 2013 Jun 5)
+Another message Jun 6.
+
 Patch to avoid wrong error message for 1.0[0]. (Yasuhiro Matsumoto, 2013 May
 1)
 
@@ -190,6 +171,9 @@ Patch by Christian Brabandt, Feb 16.
 Issue 134: pasting in visual selection in empty buffer.
 Patch by Christian Brabandt, 2013 May 22.
 
+Patch to fix "gn" on single character matches. (Christian Brabandt, 2013 Jun
+2)
+
 'cursorline' is drawn incorrectly in diff mode. Patch by Christian Brabandt,
 2012 Apr 2.
 
@@ -202,6 +186,12 @@ line.
 ":diffoff" does not restore options from before starting diff mode.
 Patch by Christian Brabandt, 2013 May 26.
 
+Can't use multi-byte fill character in custom status line.
+Patch by Christian Wellenbrock, 2013 Jun 2.  Update Jun 3 (second one).
+
+Patch to fix glob() and globpath() with escaped special characters.
+(Adnan Zafar, 2013 Jun 2, tests Jun 3)
+
 --- slightly incompatible changes
 
 Patch to load ~/.vim/vimrc when ~/.vimrc isn't found. (Lech Lorens, 2013 Apr
@@ -264,6 +254,9 @@ Patch to view coverage of the tests. (Na
 Patch to invert characters differently in GTK. (Yukihiro Nakadaira, 2013 May
 5)
 
+Bug with 'cursorline' in diff mode.  Line being scrolled into view gets
+highlighted as the cursor line.  (Alessandro Ivaldi, 2013 Jun 4)
+
 Patch to add the bufferlist() function. (Yegappan Lakshmanan, 2013 May 5)
 May 17: with winlist() and tabpagelist().
 May 19: with local variables.
@@ -356,6 +349,9 @@ Szamotulski, 2012 Nov 8)
 Crash in autocmd that unloads buffers in a BufUnload event. (Andrew Pimlott,
 2012 Aug 11)  Disallow :new when BufUnload is being handled?
 
+Patch to add ":ldo" and ":cdo", execute commands over quickfix list and
+location list. (Yegappan Lakshmanan, 2013 Jun 2)
+
 MS-Windows resizing problems:
 - Windows window on screen positioning: Patch by Yukihiro Nakadaira, 2012 Jun
   20.  Uses getWindowRect() instead of GetWindowPlacement()
@@ -549,6 +545,8 @@ Patch to make "z=" work when 'spell' is 
 effects?  (Christian Brabandt, 2012 Aug 5)
 Would also need to do this for spellbadword() and spellsuggest().
 
+Patch for variable tabstops.
+
 On 64 bit MS-Windows "long" is only 32 bits, but we sometimes need to store a
 64 bits value.  Change all number options to use nropt_T and define it to the
 right type.
@@ -657,9 +655,6 @@ New esperanto spell file can't be proces
 "L'Italie" noted as a spell error at start of the sentence. (Dominique Pelle,
 2011 Feb 27)
 
-Functions to read the actual contents of the screen, so that things like
-conceal can be tested. (Nazri Ramliy, 2013 Feb 18)
-
 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
@@ -4336,7 +4331,7 @@ More advanced repeating commands:
 -   Add "." command for visual mode: redo last visual command (e.g. ":fmt").
 7   Repeating "d:{cmd}" with "." doesn't work. (Benji Fisher)  Somehow remember
     the command line so that it can be repeated?
--   Add "gn": repeat last movement command.  Including count.
+-   Add command to repeat last movement.  Including count.
 -   Add "." command after operator: repeat last command of same operator.  E.g.
     "c." will repeat last change, also when "x" used since then (Webb).
     "y." will repeat last yank.
--- a/runtime/indent/erlang.vim
+++ b/runtime/indent/erlang.vim
@@ -4,7 +4,7 @@
 " Contributors: Edwin Fine <efine145_nospam01 at usa dot net>
 "               Pawel 'kTT' Salata <rockplayer.pl@gmail.com>
 "               Ricardo Catalinas Jiménez <jimenezrick@gmail.com>
-" Last Update:  2013-Mar-05
+" Last Update:  2013-Jun-01
 " License:      Vim license
 " URL:          https://github.com/hcs42/vim-erlang
 
@@ -1086,62 +1086,74 @@ function! s:ErlangCalcIndent2(lnum, stac
           endif
         endif
 
-      elseif token == 'end'
-        let [lnum_new, col_new] = s:SearchEndPair(lnum, curr_col)
+      elseif index(['end', ')', ']', '}', '>>'], token) != -1
+
+        " If we can be sure that there is synchronization in the Erlang
+        " syntax, we use searchpair to make the script quicker. Otherwise we
+        " just push the token onto the stack and keep parsing.
+    
+        " No synchronization -> no searchpair optimization
+        if !exists('b:erlang_syntax_synced')
+          call s:Push(stack, token)
+
+        " We don't have searchpair optimization for '>>'
+        elseif token == '>>'
+          call s:Push(stack, token)
 
-        if lnum_new == 0
-          return s:IndentError('Matching token for "end" not found',
-                              \token, stack)
-        else
-          if lnum_new != lnum
-            call s:Log('    Tokenize for "end" <<<<')
-            let [lnum, indtokens] = s:TokenizeLine(lnum_new, 'up')
-            call s:Log('    >>>> Tokenize for "end"')
+        elseif token == 'end'
+          let [lnum_new, col_new] = s:SearchEndPair(lnum, curr_col)
+
+          if lnum_new == 0
+            return s:IndentError('Matching token for "end" not found',
+                                \token, stack)
+          else
+            if lnum_new != lnum
+              call s:Log('    Tokenize for "end" <<<<')
+              let [lnum, indtokens] = s:TokenizeLine(lnum_new, 'up')
+              call s:Log('    >>>> Tokenize for "end"')
+            endif
+
+            let [success, i] = s:GetIndtokenAtCol(indtokens, col_new)
+            if !success | return i | endif
+            let [token, curr_vcol, curr_col] = indtokens[i]
+            call s:Log('    Match for "end" in line ' . lnum_new . ': ' .
+                      \string(indtokens[i]))
           endif
 
-          let [success, i] = s:GetIndtokenAtCol(indtokens, col_new)
-          if !success | return i | endif
-          let [token, curr_vcol, curr_col] = indtokens[i]
-          call s:Log('    Match for "end" in line ' . lnum_new . ': ' .
-                    \string(indtokens[i]))
-        endif
+        else " token is one of the following: ')', ']', '}'
 
-      elseif index([')', ']', '}'], token) != -1
+          call s:Push(stack, token)
 
-        call s:Push(stack, token)
+          " We have to escape '[', because this string will be interpreted as a
+          " regexp
+          let open_paren = (token == ')' ? '(' :
+                           \token == ']' ? '\[' :
+                           \               '{')
 
-        " We have to escape '[', because this string will be interpreted as a
-        " regexp
-        let open_paren = (token == ')' ? '(' :
-                         \token == ']' ? '\[' :
-                         \               '{')
-
-        let [lnum_new, col_new] = s:SearchPair(lnum, curr_col,
-                                              \open_paren, '', token)
+          let [lnum_new, col_new] = s:SearchPair(lnum, curr_col,
+                                                \open_paren, '', token)
 
-        if lnum_new == 0
-          return s:IndentError('Matching token not found',
-                              \token, stack)
-        else
-          if lnum_new != lnum
-            call s:Log('    Tokenize the opening paren <<<<')
-            let [lnum, indtokens] = s:TokenizeLine(lnum_new, 'up')
-            call s:Log('    >>>>')
-          endif
+          if lnum_new == 0
+            return s:IndentError('Matching token not found',
+                                \token, stack)
+          else
+            if lnum_new != lnum
+              call s:Log('    Tokenize the opening paren <<<<')
+              let [lnum, indtokens] = s:TokenizeLine(lnum_new, 'up')
+              call s:Log('    >>>>')
+            endif
 
-          let [success, i] = s:GetIndtokenAtCol(indtokens, col_new)
-          if !success | return i | endif
-          let [token, curr_vcol, curr_col] = indtokens[i]
-          call s:Log('    Match in line ' . lnum_new . ': ' .
-                    \string(indtokens[i]))
+            let [success, i] = s:GetIndtokenAtCol(indtokens, col_new)
+            if !success | return i | endif
+            let [token, curr_vcol, curr_col] = indtokens[i]
+            call s:Log('    Match in line ' . lnum_new . ': ' .
+                      \string(indtokens[i]))
 
-          " Go back to the beginning of the loop and handle the opening paren
-          continue
+            " Go back to the beginning of the loop and handle the opening paren
+            continue
+          endif
         endif
 
-      elseif token == '>>'
-        call s:Push(stack, token)
-
       elseif token == ';'
 
         if empty(stack)
@@ -1323,7 +1335,10 @@ function! ErlangIndent()
 
     let curr_col = len(ml[1])
 
-    if ml[2] == 'end'
+    " If we can be sure that there is synchronization in the Erlang
+    " syntax, we use searchpair to make the script quicker.
+    if ml[2] == 'end' && exists('b:erlang_syntax_synced')
+
       let [lnum, col] = s:SearchEndPair(v:lnum, curr_col)
 
       if lnum == 0
--- a/runtime/lang/menu_ru_ru.koi8-r.vim
+++ b/runtime/lang/menu_ru_ru.koi8-r.vim
@@ -1,9 +1,10 @@
 " Menu Translations:	Russian
-" Maintainer:		vassily ragosin <vrr[at]users.sourceforge.net>
-" Last Change:		26 Apr 2004
+" Maintainer:		Sergey Alyoshin <alyoshin.s@gmail.com>
+" Previous Maintainer:	vassily ragosin <vrr[at]users.sourceforge.net>
+" Last Change:		29 May 2013
 " URL:			cvs://cvs.sf.net:/cvsroot/ruvim/extras/menu/menu_ru_ru.vim
 "
-" $Id: menu_ru_ru.koi8-r.vim,v 1.2 2004/06/16 11:19:21 vimboss Exp $
+" $Id: menu_ru_ru.vim,v 1.1 2004/06/13 16:09:10 vimboss Exp $
 "
 " Adopted for RuVim project by Vassily Ragosin.
 " First translation: Tim Alexeevsky <realtim [at] mail.ru>,
@@ -50,6 +51,7 @@ menutrans &About			&
 " File menu
 menutrans &Open\.\.\.<Tab>:e		&\.\.\.<Tab>:e
 menutrans Sp&lit-Open\.\.\.<Tab>:sp	&\ \.\.\.<Tab>:sp
+menutrans Open\ Tab\.\.\.<Tab>:tabnew	\ &\.\.\.<Tab>:tabnew
 menutrans &New<Tab>:enew		&<Tab>:enew
 menutrans &Close<Tab>:close		&<Tab>:close
 "--------------------
@@ -77,51 +79,57 @@ menutrans Put\ &After<Tab>]p		\ &<Tab>]p
 menutrans &Delete<Tab>x			&<Tab>x
 menutrans &Select\ All<Tab>ggVG		&\ ӣ<Tab>ggVG
 "--------------------
+" Athena GUI only
+menutrans &Find<Tab>/			&<Tab>/
+menutrans Find\ and\ Rep&lace<Tab>:%s	\ \ &<Tab>:%s
+" End Athena GUI only
 menutrans &Find\.\.\.<Tab>/		&\.\.\.<Tab>/
 menutrans Find\ and\ Rep&lace\.\.\.	\ \ &\.\.\.
 menutrans Find\ and\ Rep&lace\.\.\.<Tab>:%s	\ \ &\.\.\.<Tab>:%s
-menutrans Find\ and\ Rep&lace\.\.\.<Tab>:s     \ \ &\.\.\.<Tab>:s
+menutrans Find\ and\ Rep&lace\.\.\.<Tab>:s	\ \ &\.\.\.<Tab>:s
 "--------------------
 menutrans Settings\ &Window		\ \ &
+menutrans Startup\ &Settings		\ &
 menutrans &Global\ Settings		&\ 
 menutrans F&ile\ Settings		\ &
 menutrans C&olor\ Scheme		&\ 
 menutrans &Keymap			\ &
 menutrans Select\ Fo&nt\.\.\.		\ &\.\.\.
 ">>>----------------- Edit/Global settings
-menutrans Toggle\ Pattern\ &Highlight<Tab>:set\ hls!	 \ &\ <Tab>:set\ hls!
-menutrans Toggle\ &Ignore-case<Tab>:set\ ic!		 &\ <Tab>:set\ ic!
-menutrans Toggle\ &Showmatch<Tab>:set\ sm!		 \ \ &<Tab>:set\ sm!
-menutrans &Context\ lines				 &\ \ 
-menutrans &Virtual\ Edit				 &\ 
-menutrans Toggle\ Insert\ &Mode<Tab>:set\ im!		 \ &<Tab>:set\ im!
-menutrans Toggle\ Vi\ C&ompatible<Tab>:set\ cp!		 &\ \ Vi<Tab>:set\ cp!
-menutrans Search\ &Path\.\.\.				 &\ \ \ \.\.\.
-menutrans Ta&g\ Files\.\.\.				 \ &\.\.\.
+menutrans Toggle\ Pattern\ &Highlight<Tab>:set\ hls!	\ &\ <Tab>:set\ hls!
+menutrans Toggle\ &Ignore-case<Tab>:set\ ic!		&\ <Tab>:set\ ic!
+menutrans Toggle\ &Showmatch<Tab>:set\ sm!		\ \ &<Tab>:set\ sm!
+menutrans &Context\ lines				&\ \ 
+menutrans &Virtual\ Edit				&\ 
+menutrans Toggle\ Insert\ &Mode<Tab>:set\ im!		\ &<Tab>:set\ im!
+menutrans Toggle\ Vi\ C&ompatible<Tab>:set\ cp!		&\ \ Vi<Tab>:set\ cp!
+menutrans Search\ &Path\.\.\.				&\ \ \ \.\.\.
+menutrans Ta&g\ Files\.\.\.				\ &\.\.\.
 "
-menutrans Toggle\ &Toolbar				 &\ 
-menutrans Toggle\ &Bottom\ Scrollbar			 \ \ &
-menutrans Toggle\ &Left\ Scrollbar			 \ \ &
-menutrans Toggle\ &Right\ Scrollbar			 \ \ &
+menutrans Toggle\ &Toolbar				&\ 
+menutrans Toggle\ &Bottom\ Scrollbar			\ \ &
+menutrans Toggle\ &Left\ Scrollbar			\ \ &
+menutrans Toggle\ &Right\ Scrollbar			\ \ &
 ">>>->>>------------- Edit/Global settings/Virtual edit
-menutrans Never						 
-menutrans Block\ Selection				 \ \ 
-menutrans Insert\ mode					 \ \ 
-menutrans Block\ and\ Insert				 \ \ \ \ \ \ 
-menutrans Always					 \ 
+menutrans Never						
+menutrans Block\ Selection				\ \ 
+menutrans Insert\ mode					\ \ 
+menutrans Block\ and\ Insert				\ \ \ \ \ \ 
+menutrans Always					\ 
 ">>>----------------- Edit/File settings
-menutrans Toggle\ Line\ &Numbering<Tab>:set\ nu!	 &\ <Tab>:set\ nu!
-menutrans Toggle\ &List\ Mode<Tab>:set\ list!		 &\ \ <Tab>:set\ list!
-menutrans Toggle\ Line\ &Wrap<Tab>:set\ wrap!		 &\ \ <Tab>:set\ wrap!
-menutrans Toggle\ W&rap\ at\ word<Tab>:set\ lbr!	 \ &\ <Tab>:set\ lbr!
-menutrans Toggle\ &expand-tab<Tab>:set\ et!		 &\ \ <Tab>:set\ et!
-menutrans Toggle\ &auto-indent<Tab>:set\ ai!		 \ \ &<Tab>:set\ ai!
-menutrans Toggle\ &C-indenting<Tab>:set\ cin!		 \ \ \ &\ C<Tab>:set\ cin!
+menutrans Toggle\ Line\ &Numbering<Tab>:set\ nu!	&\ <Tab>:set\ nu!
+menutrans Toggle\ relati&ve\ Line\ Numbering<Tab>:set\ rnu!	&\ \ <Tab>:set\ nru!
+menutrans Toggle\ &List\ Mode<Tab>:set\ list!		&\ \ <Tab>:set\ list!
+menutrans Toggle\ Line\ &Wrap<Tab>:set\ wrap!		&\ \ <Tab>:set\ wrap!
+menutrans Toggle\ W&rap\ at\ word<Tab>:set\ lbr!	\ &\ <Tab>:set\ lbr!
+menutrans Toggle\ &expand-tab<Tab>:set\ et!		&\ \ <Tab>:set\ et!
+menutrans Toggle\ &auto-indent<Tab>:set\ ai!		\ \ &<Tab>:set\ ai!
+menutrans Toggle\ &C-indenting<Tab>:set\ cin!		\ \ \ &\ C<Tab>:set\ cin!
 ">>>---
-menutrans &Shiftwidth					 &\ 
-menutrans Soft\ &Tabstop				 \ &
-menutrans Te&xt\ Width\.\.\.				 &\ \.\.\.
-menutrans &File\ Format\.\.\.				 &\ \.\.\.
+menutrans &Shiftwidth					&\ 
+menutrans Soft\ &Tabstop				\ &
+menutrans Te&xt\ Width\.\.\.				&\ \.\.\.
+menutrans &File\ Format\.\.\.				&\ \.\.\.
 "
 "
 "
@@ -131,6 +139,7 @@ menutrans Jump\ &back<Tab>^T				&\ <Tab>^T
 menutrans Build\ &Tags\ File				\ &\ 
 "-------------------
 menutrans &Folding					\ \ &
+menutrans &Spelling					&
 menutrans &Diff						&\ (diff)
 "-------------------
 menutrans &Make<Tab>:make				&<Tab>:make
@@ -141,10 +150,26 @@ menutrans &Previous\ Error<Tab>:cp			&\ <Tab>:cp
 menutrans &Older\ List<Tab>:cold			\ &\ \ <Tab>:cold
 menutrans N&ewer\ List<Tab>:cnew			\ &\ \ <Tab>:cnew
 menutrans Error\ &Window				&\ 
-menutrans &Set\ Compiler				\ &
+menutrans Se&T\ Compiler				\ &
 "-------------------
 menutrans &Convert\ to\ HEX<Tab>:%!xxd			&\ \ HEX<Tab>:%!xxd
 menutrans Conve&rt\ back<Tab>:%!xxd\ -r			\ &\ HEX<Tab>:%!xxd\ -r
+">>>---------------- Tools/Spelling
+menutrans &Spell\ Check\ On				&\ \ 
+menutrans Spell\ Check\ &Off				&\ \ 
+menutrans To\ &Next\ error<Tab>]s			&\ 
+menutrans To\ &Previous\ error<Tab>[s			&\ 
+menutrans Suggest\ &Corrections<Tab>z=			\ &
+menutrans &Repeat\ correction<Tab>:spellrepall		&\ \ \ 
+"-------------------
+menutrans Set\ language\ to\ "en"			\ \ "en"
+menutrans Set\ language\ to\ "en_au"			\ \ "en_au"
+menutrans Set\ language\ to\ "en_ca"			\ \ "en_ca"
+menutrans Set\ language\ to\ "en_gb"			\ \ "en_gb"
+menutrans Set\ language\ to\ "en_nz"			\ \ "en_nz"
+menutrans Set\ language\ to\ "en_us"			\ \ "en_us"
+menutrans &Find\ More\ Languages			&\ \ 
+let g:menutrans_set_lang_to =				' '
 ">>>---------------- Folds
 menutrans &Enable/Disable\ folds<Tab>zi			/\ &<Tab>zi
 menutrans &View\ Cursor\ Line<Tab>zv			\ \ \ &<Tab>zv
@@ -219,7 +244,7 @@ menutrans M&in\ Height<Tab>^W1_				\ &<Tab>^W1_
 menutrans Max\ &Width<Tab>^W\|				\ &<Tab>^W\|
 menutrans Min\ Widt&h<Tab>^W1\|				&\ <Tab>^W1\|
 ">>>----------------- Window/Move To
-menutrans &Top<Tab>^WK					&<Tab>^WK
+menutrans &Top<Tab>^WK					&<Tab>^WK
 menutrans &Bottom<Tab>^WJ				&<Tab>^WJ
 menutrans &Left\ side<Tab>^WH				&<Tab>^WH
 menutrans &Right\ side<Tab>^WL				&<Tab>^WL
--- a/runtime/lang/menu_ru_ru.vim
+++ b/runtime/lang/menu_ru_ru.vim
@@ -1,6 +1,7 @@
 " Menu Translations:	Russian
-" Maintainer:		vassily ragosin <vrr[at]users.sourceforge.net>
-" Last Change:		26 Apr 2004
+" Maintainer:		Sergey Alyoshin <alyoshin.s@gmail.com>
+" Previous Maintainer:	vassily ragosin <vrr[at]users.sourceforge.net>
+" Last Change:		29 May 2013
 " URL:			cvs://cvs.sf.net:/cvsroot/ruvim/extras/menu/menu_ru_ru.vim
 "
 " $Id: menu_ru_ru.vim,v 1.1 2004/06/13 16:09:10 vimboss Exp $
@@ -50,6 +51,7 @@ menutrans &About			&Заставка
 " File menu
 menutrans &Open\.\.\.<Tab>:e		&Открыть\.\.\.<Tab>:e
 menutrans Sp&lit-Open\.\.\.<Tab>:sp	По&делить\ окно\.\.\.<Tab>:sp
+menutrans Open\ Tab\.\.\.<Tab>:tabnew	Открыть\ в&кладку\.\.\.<Tab>:tabnew
 menutrans &New<Tab>:enew		&Новый<Tab>:enew
 menutrans &Close<Tab>:close		&Закрыть<Tab>:close
 "--------------------
@@ -77,51 +79,57 @@ menutrans Put\ &After<Tab>]p		Вклеить\ по&сле<Tab>]p
 menutrans &Delete<Tab>x			&Удалить<Tab>x
 menutrans &Select\ All<Tab>ggVG		В&ыделить\ всё<Tab>ggVG
 "--------------------
+" Athena GUI only
+menutrans &Find<Tab>/			&Поиск<Tab>/
+menutrans Find\ and\ Rep&lace<Tab>:%s	Поиск\ и\ &замена<Tab>:%s
+" End Athena GUI only
 menutrans &Find\.\.\.<Tab>/		&Поиск\.\.\.<Tab>/
-menutrans Find\ and\ Rep&lace\.\.\.     Поиск\ и\ &замена\.\.\.
-menutrans Find\ and\ Rep&lace\.\.\.<Tab>:%s     Поиск\ и\ &замена\.\.\.<Tab>:%s
-menutrans Find\ and\ Rep&lace\.\.\.<Tab>:s     Поиск\ и\ &замена\.\.\.<Tab>:s
+menutrans Find\ and\ Rep&lace\.\.\.	Поиск\ и\ &замена\.\.\.
+menutrans Find\ and\ Rep&lace\.\.\.<Tab>:%s	Поиск\ и\ &замена\.\.\.<Tab>:%s
+menutrans Find\ and\ Rep&lace\.\.\.<Tab>:s	Поиск\ и\ &замена\.\.\.<Tab>:s
 "--------------------
 menutrans Settings\ &Window		Окно\ настройки\ &опций
+menutrans Startup\ &Settings		Настройки\ запус&ка
 menutrans &Global\ Settings		&Глобальные\ настройки
 menutrans F&ile\ Settings		Настройки\ &файлов
 menutrans C&olor\ Scheme		&Цветовая\ схема
 menutrans &Keymap			Раскладка\ кл&авиатуры
 menutrans Select\ Fo&nt\.\.\.		Выбор\ &шрифта\.\.\.
 ">>>----------------- Edit/Global settings
-menutrans Toggle\ Pattern\ &Highlight<Tab>:set\ hls!     Подсветка\ &найденных\ соответствий<Tab>:set\ hls!
-menutrans Toggle\ &Ignore-case<Tab>:set\ ic!		 &Регистронезависимый\ поиск<Tab>:set\ ic!
-menutrans Toggle\ &Showmatch<Tab>:set\ sm!		 Показывать\ парные\ &элементы<Tab>:set\ sm!
-menutrans &Context\ lines				 Стр&ок\ вокруг\ курсора
-menutrans &Virtual\ Edit				 Вир&туальное\ редактирование
-menutrans Toggle\ Insert\ &Mode<Tab>:set\ im!		 Режим\ &Вставки<Tab>:set\ im!
-menutrans Toggle\ Vi\ C&ompatible<Tab>:set\ cp!		 &Совместимость\ с\ Vi<Tab>:set\ cp!
-menutrans Search\ &Path\.\.\.				 &Путь\ для\ поиска\ файлов\.\.\.
-menutrans Ta&g\ Files\.\.\.				 Файлы\ &меток\.\.\.
+menutrans Toggle\ Pattern\ &Highlight<Tab>:set\ hls!	Подсветка\ &найденных\ соответствий<Tab>:set\ hls!
+menutrans Toggle\ &Ignore-case<Tab>:set\ ic!		&Регистронезависимый\ поиск<Tab>:set\ ic!
+menutrans Toggle\ &Showmatch<Tab>:set\ sm!		Показывать\ парные\ &элементы<Tab>:set\ sm!
+menutrans &Context\ lines				Стр&ок\ вокруг\ курсора
+menutrans &Virtual\ Edit				Вир&туальное\ редактирование
+menutrans Toggle\ Insert\ &Mode<Tab>:set\ im!		Режим\ &Вставки<Tab>:set\ im!
+menutrans Toggle\ Vi\ C&ompatible<Tab>:set\ cp!		&Совместимость\ с\ Vi<Tab>:set\ cp!
+menutrans Search\ &Path\.\.\.				&Путь\ для\ поиска\ файлов\.\.\.
+menutrans Ta&g\ Files\.\.\.				Файлы\ &меток\.\.\.
 "
-menutrans Toggle\ &Toolbar				 &Инструментальная\ панель
-menutrans Toggle\ &Bottom\ Scrollbar			 Полоса\ прокрутки\ вни&зу
-menutrans Toggle\ &Left\ Scrollbar			 Полоса\ прокрутки\ с&лева
-menutrans Toggle\ &Right\ Scrollbar			 Полоса\ прокрутки\ спр&ава
+menutrans Toggle\ &Toolbar				&Инструментальная\ панель
+menutrans Toggle\ &Bottom\ Scrollbar			Полоса\ прокрутки\ вни&зу
+menutrans Toggle\ &Left\ Scrollbar			Полоса\ прокрутки\ с&лева
+menutrans Toggle\ &Right\ Scrollbar			Полоса\ прокрутки\ спр&ава
 ">>>->>>------------- Edit/Global settings/Virtual edit
-menutrans Never						 Выключено
-menutrans Block\ Selection				 При\ выделении\ блока
-menutrans Insert\ mode					 В\ режиме\ Вставки
-menutrans Block\ and\ Insert				 При\ выделении\ блока\ и\ в\ режиме\ Вставки
-menutrans Always					 Включено\ всегда
+menutrans Never						Выключено
+menutrans Block\ Selection				При\ выделении\ блока
+menutrans Insert\ mode					В\ режиме\ Вставки
+menutrans Block\ and\ Insert				При\ выделении\ блока\ и\ в\ режиме\ Вставки
+menutrans Always					Включено\ всегда
 ">>>----------------- Edit/File settings
-menutrans Toggle\ Line\ &Numbering<Tab>:set\ nu!	 &Нумерация\ строк<Tab>:set\ nu!
-menutrans Toggle\ &List\ Mode<Tab>:set\ list!		 Отобра&жение\ невидимых\ символов<Tab>:set\ list!
-menutrans Toggle\ Line\ &Wrap<Tab>:set\ wrap!		 &Перенос\ длинных\ строк<Tab>:set\ wrap!
-menutrans Toggle\ W&rap\ at\ word<Tab>:set\ lbr!	 Перенос\ &целых\ слов<Tab>:set\ lbr!
-menutrans Toggle\ &expand-tab<Tab>:set\ et!		 Про&белы\ вместо\ табуляции<Tab>:set\ et!
-menutrans Toggle\ &auto-indent<Tab>:set\ ai!		 Автоматическое\ форматирование\ &отступов<Tab>:set\ ai!
-menutrans Toggle\ &C-indenting<Tab>:set\ cin!		 Форматирование\ отступов\ в\ &стиле\ C<Tab>:set\ cin!
+menutrans Toggle\ Line\ &Numbering<Tab>:set\ nu!	&Нумерация\ строк<Tab>:set\ nu!
+menutrans Toggle\ relati&ve\ Line\ Numbering<Tab>:set\ rnu!	Относите&льная\ нумерация\ строк<Tab>:set\ nru!
+menutrans Toggle\ &List\ Mode<Tab>:set\ list!		Отобра&жение\ невидимых\ символов<Tab>:set\ list!
+menutrans Toggle\ Line\ &Wrap<Tab>:set\ wrap!		&Перенос\ длинных\ строк<Tab>:set\ wrap!
+menutrans Toggle\ W&rap\ at\ word<Tab>:set\ lbr!	Перенос\ &целых\ слов<Tab>:set\ lbr!
+menutrans Toggle\ &expand-tab<Tab>:set\ et!		Про&белы\ вместо\ табуляции<Tab>:set\ et!
+menutrans Toggle\ &auto-indent<Tab>:set\ ai!		Автоматическое\ форматирование\ &отступов<Tab>:set\ ai!
+menutrans Toggle\ &C-indenting<Tab>:set\ cin!		Форматирование\ отступов\ в\ &стиле\ C<Tab>:set\ cin!
 ">>>---
-menutrans &Shiftwidth					 Вели&чина\ отступа
-menutrans Soft\ &Tabstop				 Ширина\ &табуляции
-menutrans Te&xt\ Width\.\.\.				 &Ширина\ текста\.\.\.
-menutrans &File\ Format\.\.\.				 &Формат\ файла\.\.\.
+menutrans &Shiftwidth					Вели&чина\ отступа
+menutrans Soft\ &Tabstop				Ширина\ &табуляции
+menutrans Te&xt\ Width\.\.\.				&Ширина\ текста\.\.\.
+menutrans &File\ Format\.\.\.				&Формат\ файла\.\.\.
 "
 "
 "
@@ -131,6 +139,7 @@ menutrans Jump\ &back<Tab>^T				&Вернуться\ назад<Tab>^T
 menutrans Build\ &Tags\ File				Создать\ &файл\ меток
 "-------------------
 menutrans &Folding					Работа\ со\ &складками
+menutrans &Spelling					Пр&авописание
 menutrans &Diff						&Отличия\ (diff)
 "-------------------
 menutrans &Make<Tab>:make				Ко&мпиляция<Tab>:make
@@ -141,10 +150,26 @@ menutrans &Previous\ Error<Tab>:cp			П&редыдущая\ ошибка<Tab>:cp
 menutrans &Older\ List<Tab>:cold			Более\ стар&ый\ список\ ошибок<Tab>:cold
 menutrans N&ewer\ List<Tab>:cnew			Более\ све&жий\ список\ ошибок<Tab>:cnew
 menutrans Error\ &Window				Ок&но\ ошибок
-menutrans &Set\ Compiler				Выбор\ &компилятора
+menutrans Se&T\ Compiler				Выбор\ &компилятора
 "-------------------
 menutrans &Convert\ to\ HEX<Tab>:%!xxd			П&еревести\ в\ HEX<Tab>:%!xxd
 menutrans Conve&rt\ back<Tab>:%!xxd\ -r			Перевести\ и&з\ HEX<Tab>:%!xxd\ -r
+">>>---------------- Tools/Spelling
+menutrans &Spell\ Check\ On				&Вкл\ проверку\ правописания
+menutrans Spell\ Check\ &Off				Вы&кл\ проверку\ правописания
+menutrans To\ &Next\ error<Tab>]s			&Следующая\ ошибка
+menutrans To\ &Previous\ error<Tab>[s			&Предыдущая\ ошибка
+menutrans Suggest\ &Corrections<Tab>z=			Предложить\ исп&равления
+menutrans &Repeat\ correction<Tab>:spellrepall		Пов&торить\ исправление\ для\ всех
+"-------------------
+menutrans Set\ language\ to\ "en"			Установить\ язык\ "en"
+menutrans Set\ language\ to\ "en_au"			Установить\ язык\ "en_au"
+menutrans Set\ language\ to\ "en_ca"			Установить\ язык\ "en_ca"
+menutrans Set\ language\ to\ "en_gb"			Установить\ язык\ "en_gb"
+menutrans Set\ language\ to\ "en_nz"			Установить\ язык\ "en_nz"
+menutrans Set\ language\ to\ "en_us"			Установить\ язык\ "en_us"
+menutrans &Find\ More\ Languages			&Найти\ больше\ языков
+let g:menutrans_set_lang_to =				'Установить язык'
 ">>>---------------- Folds
 menutrans &Enable/Disable\ folds<Tab>zi			Вкл/выкл\ &складки<Tab>zi
 menutrans &View\ Cursor\ Line<Tab>zv			Открыть\ строку\ с\ &курсором<Tab>zv
@@ -219,7 +244,7 @@ menutrans M&in\ Height<Tab>^W1_				Минимальная\ высо&та<Tab>^W1_
 menutrans Max\ &Width<Tab>^W\|				Максимальная\ &ширина<Tab>^W\|
 menutrans Min\ Widt&h<Tab>^W1\|				Минимал&ьная\ ширина<Tab>^W1\|
 ">>>----------------- Window/Move To
-menutrans &Top<Tab>^WK					На&верх<Tab>^WK
+menutrans &Top<Tab>^WK					В&верх<Tab>^WK
 menutrans &Bottom<Tab>^WJ				В&низ<Tab>^WJ
 menutrans &Left\ side<Tab>^WH				В&лево<Tab>^WH
 menutrans &Right\ side<Tab>^WL				В&право<Tab>^WL
--- a/runtime/scripts.vim
+++ b/runtime/scripts.vim
@@ -152,6 +152,10 @@ if s:line1 =~ "^#!"
   elseif s:name =~ 'cfengine'
     set ft=cfengine
 
+    " Erlang scripts
+  elseif s:name =~ 'escript'
+    set ft=erlang
+
   endif
   unlet s:name
 
@@ -333,6 +337,11 @@ else
      \ && s:line3 =~ '^Each sample counts as .* seconds.$'
      set ft=gprof
 
+  " Erlang terms
+  " (See also: http://www.gnu.org/software/emacs/manual/html_node/emacs/Choosing-Modes.html#Choosing-Modes)
+  elseif s:line1 =~? '-\*-.*erlang.*-\*-'
+    set ft=erlang
+
   " CVS diff
   else
     let s:lnum = 1
--- 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:	2013 Mar 13
+" Last Change:	2013 Jun 06
 
 " Quit when a (custom) syntax file was already loaded
 if exists("b:current_syntax")
--- a/runtime/syntax/erlang.vim
+++ b/runtime/syntax/erlang.vim
@@ -1,23 +1,32 @@
 " Vim syntax file
 " Language:     Erlang (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:  2013-Mar-07
+" Last Update:  2013-Jun-01
 " License:      Vim license
 " URL:          https://github.com/hcs42/vim-erlang
 
+" Acknowledgements: This script was originally created by Kresimir Marzic [1].
+" The script was then revamped by Csaba Hoch [2]. During the revamp, the new
+" highlighting style and some code was taken from the Erlang syntax script
+" that is part of vimerl [3], created by Oscar Hellström [4] and improved by
+" Ricardo Catalinas Jiménez [5].
+
+" [1]: Kreąimir Marľić (Kresimir Marzic) <kmarzic@fly.srk.fer.hr>
+" [2]: Csaba Hoch <csaba.hoch@gmail.com>
+" [3]: https://github.com/jimenezrick/vimerl
+" [4]: Oscar Hellström <oscar@oscarh.net> (http://oscar.hellstrom.st)
+" [5]: Ricardo Catalinas Jiménez <jimenezrick@gmail.com>
+
 " Customization:
 "
-" There are two optional sets of highlighting:
+" To use the old highlighting style, add this to your .vimrc:
 "
-" 1. The BIFs (built-in functions) are highlighted by default. To disable
-"    this, put the following line in your vimrc:
+"     let g:erlang_old_style_highlight = 1
 "
-"      let g:erlang_highlight_bifs = 0
+" To highlight further module attributes, add them to
+" ~/.vim/after/syntax/erlang.vim:
 "
-" 2. To enable highlighting some special atoms, put this in your vimrc:
-"
-"      let g:erlang_highlight_special_atoms = 1
+"     syn keyword erlangAttribute myattr1 myattr2 contained
 
 " For version 5.x: Clear all syntax items
 " For version 6.x: Quit when a syntax file was already loaded
@@ -35,94 +44,108 @@ if version >= 600
 endif
 
 " Comments
-syn match erlangComment             '%.*$' contains=erlangCommentAnnotation,erlangTodo
-syn match erlangCommentAnnotation   ' \@<=@\%(clear\|docfile\|end\|headerfile\|todo\|TODO\|type\|author\|copyright\|doc\|reference\|see\|since\|title\|version\|deprecated\|hidden\|private\|equiv\|spec\|throws\)' contained
-syn match erlangCommentAnnotation   /`[^']*'/ contained
-syn keyword erlangTodo              TODO FIXME XXX contained
+syn match erlangComment           '%.*$' contains=erlangCommentAnnotation,erlangTodo
+syn match erlangCommentAnnotation ' \@<=@\%(clear\|docfile\|end\|headerfile\|todo\|TODO\|type\|author\|copyright\|doc\|reference\|see\|since\|title\|version\|deprecated\|hidden\|private\|equiv\|spec\|throws\)' contained
+syn match erlangCommentAnnotation /`[^']*'/ contained
+syn keyword erlangTodo            TODO FIXME XXX contained
+syn match erlangShebang           '^#!.*'
 
 " Numbers (minimum base is 2, maximum is 36.)
-syn match   erlangNumberInteger     '\<\d\+\>'
-syn match   erlangNumberInteger     '\<\%([2-9]\|[12]\d\|3[0-6]\)\+#[[:alnum:]]\+\>'
-syn match   erlangNumberFloat       '\<\d\+\.\d\+\%([eE][+-]\=\d\+\)\=\>'
+syn match erlangNumberInteger '\<\d\+\>'
+syn match erlangNumberInteger '\<\%([2-9]\|[12]\d\|3[0-6]\)\+#[[:alnum:]]\+\>'
+syn match erlangNumberFloat   '\<\d\+\.\d\+\%([eE][+-]\=\d\+\)\=\>'
 
 " Strings, atoms, characters
-syn region  erlangString            start=/"/ end=/"/ contains=erlangStringModifier
-syn region  erlangQuotedAtom        start=/'/ end=/'/ contains=erlangQuotedAtomModifier
-syn match   erlangStringModifier     '\~\a\|\\\%(\o\{1,3}\|x\x\x\|x{\x\+}\|\^.\|.\)' contained
-syn match   erlangQuotedAtomModifier '\~\a\|\\\%(\o\{1,3}\|x\x\x\|x{\x\+}\|\^.\|.\)' contained
-syn match   erlangModifier           '\$\%([^\\]\|\\\%(\o\{1,3}\|x\x\x\|x{\x\+}\|\^.\|.\)\)'
+syn region erlangString            start=/"/ end=/"/ contains=erlangStringModifier
+syn region erlangQuotedAtom        start=/'/ end=/'/ contains=erlangQuotedAtomModifier
+syn match erlangStringModifier     '\~\a\|\\\%(\o\{1,3}\|x\x\x\|x{\x\+}\|\^.\|.\)' contained
+syn match erlangQuotedAtomModifier '\~\a\|\\\%(\o\{1,3}\|x\x\x\|x{\x\+}\|\^.\|.\)' contained
+syn match erlangModifier           '\$\%([^\\]\|\\\%(\o\{1,3}\|x\x\x\|x{\x\+}\|\^.\|.\)\)'
+
+" Operators, separators
+syn match erlangOperator   '==\|=:=\|/=\|=/=\|<\|=<\|>\|>=\|++\|--\|=\|!\|<-\|+\|-\|\*\|\/'
+syn keyword erlangOperator div rem or xor bor bxor bsl bsr and band not bnot andalso orelse
+syn match erlangBracket    '{\|}\|\[\|]\||\|||'
+syn match erlangPipe       '|'
+syn match erlangRightArrow '->'
 
-" Operators
-syn match   erlangOperator          '==\|=:=\|/=\|=/=\|<\|=<\|>\|>=\|++\|--\|=\|!\|<-\|+\|-\|\*\|\/'
-syn keyword erlangOperator          div rem or xor bor bxor bsl bsr and band not bnot andalso orelse
+" Atoms, function calls (order is important)
+syn match erlangAtom           '\<\l[[:alnum:]_@]*' contains=erlangBoolean
+syn keyword erlangBoolean      true false contained
+syn match erlangLocalFuncCall  '\<\a[[:alnum:]_@]*\>\%(\%(\s\|\n\|%.*\n\)*(\)\@=' contains=erlangBIF
+syn match erlangLocalFuncRef   '\<\a[[:alnum:]_@]*\>\%(\%(\s\|\n\|%.*\n\)*/\)\@='
+syn match erlangGlobalFuncCall '\<\%(\a[[:alnum:]_@]*\%(\s\|\n\|%.*\n\)*\.\%(\s\|\n\|%.*\n\)*\)*\a[[:alnum:]_@]*\%(\s\|\n\|%.*\n\)*:\%(\s\|\n\|%.*\n\)*\a[[:alnum:]_@]*\>\%(\%(\s\|\n\|%.*\n\)*(\)\@=' contains=erlangComment
+syn match erlangGlobalFuncRef  '\<\%(\a[[:alnum:]_@]*\%(\s\|\n\|%.*\n\)*\.\%(\s\|\n\|%.*\n\)*\)*\a[[:alnum:]_@]*\%(\s\|\n\|%.*\n\)*:\%(\s\|\n\|%.*\n\)*\a[[:alnum:]_@]*\>\%(\%(\s\|\n\|%.*\n\)*/\)\@=' contains=erlangComment
 
-" Separators
-syn match erlangSeparator           '(\|)\|{\|}\|\[\|]\||\|||\|;\|,\|?\|#'
-syn match erlangRightArrow          '->'
+" Variables, macros, records
+syn match erlangVariable '\<[A-Z_][[:alnum:]_@]*'
+syn match erlangMacro    '??\=[[:alnum:]_@]\+'
+syn match erlangMacro    '\%(-define(\)\@<=[[:alnum:]_@]\+'
+syn match erlangRecord   '#\s*\l[[:alnum:]_@]*'
 
-" Functions call
-syn match   erlangFCall             '\<\%(\a[[:alnum:]@]*\s*\.\s*\)*\a[[:alnum:]@]*\s*:\s*\a[[:alnum:]@]*\>'
+" Bitstrings
+syn match erlangBitType '\%(\/\%(\s\|\n\|%.*\n\)*\)\@<=\%(integer\|float\|binary\|bytes\|bitstring\|bits\|binary\|utf8\|utf16\|utf32\|signed\|unsigned\|big\|little\|native\|unit\)\%(\%(\s\|\n\|%.*\n\)*-\%(\s\|\n\|%.*\n\)*\%(integer\|float\|binary\|bytes\|bitstring\|bits\|binary\|utf8\|utf16\|utf32\|signed\|unsigned\|big\|little\|native\|unit\)\)*' contains=erlangComment
 
 " Constants and Directives
-syn match   erlangDirective         '-\%(behaviour\|behavior\|compile\|define\|else\|endif\|export\|file\|ifdef\|ifndef\|import\|include_lib\|include\|module\|record\|undef\|author\|copyright\|doc\|vsn\|on_load\|export_type\)\>'
+syn match erlangUnknownAttribute '-\%(\s\|\n\|%.*\n\)*\l[[:alnum:]_@]*' contains=erlangComment
+syn match erlangAttribute '-\%(\s\|\n\|%.*\n\)*\%(behaviou\=r\|compile\|export\|file\|import\|module\|author\|copyright\|doc\|vsn\|on_load\|export_type\)' contains=erlangComment
+syn match erlangInclude   '-\%(\s\|\n\|%.*\n\)*\%(include\|include_lib\)\>' contains=erlangComment
+syn match erlangRecordDef '-\%(\s\|\n\|%.*\n\)*record\>' contains=erlangComment
+syn match erlangDefine    '-\%(\s\|\n\|%.*\n\)*\%(define\|undef\)\>' contains=erlangComment
+syn match erlangPreCondit '-\%(\s\|\n\|%.*\n\)*\%(ifdef\|ifndef\|else\|endif\)\>' contains=erlangComment
+syn match erlangType      '-\%(\s\|\n\|%.*\n\)*\%(spec\|type\|opaque\|callback\)\>' contains=erlangComment
 
 " Keywords
-syn keyword erlangKeyword           after begin case catch cond end fun if let of query receive when try
-syn keyword erlangExtra             true false
-
-
-if !exists("g:erlang_highlight_bifs") || g:erlang_highlight_bifs == 1
-
-  " build-in-functions (BIFs)
-  syn keyword erlangBIF        abs alive apply atom_to_binary atom_to_list binary_part binary_to_atom binary_to_existing_atom binary_to_float binary_to_integer bitstring_to_list binary_to_list binary_to_term bit_size byte_size check_old_code check_process_code concat_binary date delete_module demonitor disconnect_node element erase error exit float float_to_binary float_to_list garbage_collect get get_keys group_leader halt hd integer_to_binary integer_to_list iolist_to_binary iolist_size 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 pre_loaded process_flag process_flag process_info process purge_module put register registered round self setelement size spawn spawn_link spawn_monitor spawn_opt split_binary statistics term_to_binary throw time tl trunc tuple_size tuple_to_list unlink unregister whereis
-
-endif
-
-
-if exists("g:erlang_highlight_special_atoms") && g:erlang_highlight_special_atoms == 1
-
-  " 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
+syn keyword erlangKeyword after begin case catch cond end fun if let of query
+syn keyword erlangKeyword receive when try
 
-  " 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
-
-  " Signals
-  syn keyword erlangSignal     badsig kill killed exit normal
-endif
+" Build-in-functions (BIFs)
+syn keyword erlangBIF abs alive apply atom_to_binary atom_to_list contained
+syn keyword erlangBIF binary_part binary_to_atom contained
+syn keyword erlangBIF binary_to_existing_atom binary_to_float contained
+syn keyword erlangBIF binary_to_integer bitstring_to_list contained
+syn keyword erlangBIF binary_to_list binary_to_term bit_size contained
+syn keyword erlangBIF byte_size check_old_code check_process_code contained
+syn keyword erlangBIF concat_binary date delete_module demonitor contained
+syn keyword erlangBIF disconnect_node element erase error exit contained
+syn keyword erlangBIF float float_to_binary float_to_list contained
+syn keyword erlangBIF garbage_collect get get_keys group_leader contained
+syn keyword erlangBIF halt hd integer_to_binary integer_to_list contained
+syn keyword erlangBIF iolist_to_binary iolist_size is_alive contained
+syn keyword erlangBIF is_atom is_binary is_bitstring is_boolean contained
+syn keyword erlangBIF is_float is_function is_integer is_list contained
+syn keyword erlangBIF is_number is_pid is_port is_process_alive contained
+syn keyword erlangBIF is_record is_reference is_tuple length link contained
+syn keyword erlangBIF list_to_atom list_to_binary contained
+syn keyword erlangBIF list_to_bitstring list_to_existing_atom contained
+syn keyword erlangBIF list_to_float list_to_integer list_to_pid contained
+syn keyword erlangBIF list_to_tuple load_module make_ref max min contained
+syn keyword erlangBIF module_loaded monitor monitor_node node contained
+syn keyword erlangBIF nodes now open_port pid_to_list port_close contained
+syn keyword erlangBIF port_command port_connect pre_loaded contained
+syn keyword erlangBIF process_flag process_flag process_info contained
+syn keyword erlangBIF process purge_module put register registered contained
+syn keyword erlangBIF round self setelement size spawn spawn_link contained
+syn keyword erlangBIF spawn_monitor spawn_opt split_binary contained
+syn keyword erlangBIF statistics term_to_binary throw time tl contained
+syn keyword erlangBIF trunc tuple_size tuple_to_list unlink contained
+syn keyword erlangBIF unregister whereis contained
 
 " Sync at the beginning of functions: if this is not used, multiline string
-" are not always recognized
+" are not always recognized, and the indentation script cannot use the
+" "searchpair" (because it would not always skip strings and comments when
+" looking for keywords and opening parens/brackets).
 syn sync match erlangSync grouphere NONE "^[a-z]\s*("
+let b:erlang_syntax_synced = 1
 
-" Define the default highlighting.
+" Define the default highlighting. See ":help group-name" for the groups and
+" their colors.
+
+let s:old_style = (exists("g:erlang_old_style_highlight") && g:erlang_old_style_highlight == 1)
+
 " 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 || !exists("did_erlang_inits")
   if version < 508
     let did_erlang_inits = 1
     command -nargs=+ HiLink hi link <args>
@@ -130,46 +153,106 @@ if version >= 508 || !exists ("did_erlan
     command -nargs=+ HiLink hi def link <args>
   endif
 
-  " erlang_characters
+  " Comments
   HiLink erlangComment Comment
   HiLink erlangCommentAnnotation Special
   HiLink erlangTodo Todo
-  HiLink erlangSeparator Normal
-  HiLink erlangOperator Operator
-  HiLink erlangRightArrow Operator
+  HiLink erlangShebang Comment
 
-  HiLink erlangStartString String
-  HiLink erlangString String
-  HiLink erlangStringModifier Special
-
-  HiLink erlangStartQuotedAtom Type
-  HiLink erlangQuotedAtom Type
-  HiLink erlangQuotedAtomModifier Special
-
+  " Numbers
   HiLink erlangNumberInteger Number
   HiLink erlangNumberFloat Float
-  HiLink erlangNumberHex Number
+
+  " Strings, atoms, characters
+  HiLink erlangString String
 
+  if s:old_style
+    HiLink erlangQuotedAtom Type
+  else
+    HiLink erlangQuotedAtom String
+  endif
+
+  HiLink erlangStringModifier Special
+  HiLink erlangQuotedAtomModifier Special
   HiLink erlangModifier Special
 
-  " erlang_functions
-  HiLink erlangFCall Function
+  " Operators, separators
+  HiLink erlangOperator Operator
+  HiLink erlangRightArrow Operator
+  if s:old_style
+    HiLink erlangBracket Normal
+    HiLink erlangPipe Normal
+  else
+    HiLink erlangBracket Delimiter
+    HiLink erlangPipe Delimiter
+  endif
+
+  " Atoms, functions, variables, macros
+  if s:old_style
+    HiLink erlangAtom Normal
+    HiLink erlangLocalFuncCall Normal
+    HiLink erlangLocalFuncRef Normal
+    HiLink erlangGlobalFuncCall Function
+    HiLink erlangGlobalFuncRef Function
+    HiLink erlangVariable Normal
+    HiLink erlangMacro Normal
+    HiLink erlangRecord Normal
+  else
+    HiLink erlangAtom String
+    HiLink erlangLocalFuncCall Normal
+    HiLink erlangLocalFuncRef Normal
+    HiLink erlangGlobalFuncCall Normal
+    HiLink erlangGlobalFuncRef Normal
+    HiLink erlangVariable Identifier
+    HiLink erlangMacro Macro
+    HiLink erlangRecord Structure
+  endif
+
+  " Bitstrings
+  if !s:old_style
+    HiLink erlangBitType Type
+  endif
+
+  " Constants and Directives
+  if s:old_style
+    HiLink erlangAttribute Type
+    HiLink erlangMacroDef Type
+    HiLink erlangUnknownAttribute Normal
+    HiLink erlangInclude Type
+    HiLink erlangRecordDef Type
+    HiLink erlangDefine Type
+    HiLink erlangPreCondit Type
+    HiLink erlangType Type
+  else
+    HiLink erlangAttribute Keyword
+    HiLink erlangMacroDef Macro
+    HiLink erlangUnknownAttribute Normal
+    HiLink erlangInclude Include
+    HiLink erlangRecordDef Keyword
+    HiLink erlangDefine Define
+    HiLink erlangPreCondit PreCondit
+    HiLink erlangType Type
+  endif
+
+  " Keywords
+  HiLink erlangKeyword Keyword
+
+  " Build-in-functions (BIFs)
   HiLink erlangBIF Function
 
-  " erlang_keywords
-  HiLink erlangDirective Type
-  HiLink erlangKeyword Keyword
-  HiLink erlangProcess Special
-  HiLink erlangPort Special
-  HiLink erlangNode Special
-  HiLink erlangReserved Statement
-  HiLink erlangExtra Statement
-  HiLink erlangSignal Statement
+  if s:old_style
+    HiLink erlangBoolean Statement
+    HiLink erlangExtra Statement
+    HiLink erlangSignal Statement
+  else
+    HiLink erlangBoolean Boolean
+    HiLink erlangExtra Statement
+    HiLink erlangSignal Statement
+  endif
 
   delcommand HiLink
 endif
 
-
 let b:current_syntax = "erlang"
 
 " vim: sw=2 et
--- a/runtime/syntax/falcon.vim
+++ b/runtime/syntax/falcon.vim
@@ -3,8 +3,8 @@
 " 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!
+"               Thanks to the lisp authors for the rainbow code!
 " -------------------------------------------------------------------------------
-" GetLatestVimScripts: 2745 1 :AutoInstall: falcon.vim
 
 " When wanted, highlight the trailing whitespace.
 if exists("c_space_errors")
@@ -56,6 +56,7 @@ syn keyword falconBool true false
 
 " Constants
 syn keyword falconConst PI E nil
+syn match   falconConstant  "\%(\%([.@$]\@<!\.\)\@<!\<\|::\)\_s*\zs\u\w*\%(\>\|::\)\@=\%(\s*(\)\@!"
 
 " Comments
 syn match falconCommentSkip contained "^\s*\*\($\|\s\+\)"
@@ -116,6 +117,47 @@ syn region falconString start=+\%(\%(cla
 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
 
+" Falcon rainbox to highlight parens in varying colors
+if exists("g:falcon_rainbow") && g:falcon_rainbow != 0
+    syn region falconParen0           matchgroup=hlLevel0 start="`\=(" end=")" skip="|.\{-}|" contains=@falconListCluster,falconParen1
+    syn region falconParen1 contained matchgroup=hlLevel1 start="`\=(" end=")" skip="|.\{-}|" contains=@falconListCluster,falconParen2
+    syn region falconParen2 contained matchgroup=hlLevel2 start="`\=(" end=")" skip="|.\{-}|" contains=@falconListCluster,falconParen3
+    syn region falconParen3 contained matchgroup=hlLevel3 start="`\=(" end=")" skip="|.\{-}|" contains=@falconListCluster,falconParen4
+    syn region falconParen4 contained matchgroup=hlLevel4 start="`\=(" end=")" skip="|.\{-}|" contains=@falconListCluster,falconParen5
+    syn region falconParen5 contained matchgroup=hlLevel5 start="`\=(" end=")" skip="|.\{-}|" contains=@falconListCluster,falconParen6
+    syn region falconParen6 contained matchgroup=hlLevel6 start="`\=(" end=")" skip="|.\{-}|" contains=@falconListCluster,falconParen7
+    syn region falconParen7 contained matchgroup=hlLevel7 start="`\=(" end=")" skip="|.\{-}|" contains=@falconListCluster,falconParen8
+    syn region falconParen8 contained matchgroup=hlLevel8 start="`\=(" end=")" skip="|.\{-}|" contains=@falconListCluster,falconParen9
+    syn region falconParen9 contained matchgroup=hlLevel9 start="`\=(" end=")" skip="|.\{-}|" contains=@falconListCluster,falconParen0
+endif
+
+" Setup the colors for the rainbox
+if exists("g:falcon_rainbow") && g:falcon_rainbow != 0
+    if &bg == "dark"
+        hi def hlLevel0 ctermfg=red         guifg=red1
+        hi def hlLevel1 ctermfg=yellow      guifg=orange1
+        hi def hlLevel2 ctermfg=green       guifg=yellow1
+        hi def hlLevel3 ctermfg=cyan        guifg=greenyellow
+        hi def hlLevel4 ctermfg=magenta     guifg=green1
+        hi def hlLevel5 ctermfg=red         guifg=springgreen1
+        hi def hlLevel6 ctermfg=yellow      guifg=cyan1
+        hi def hlLevel7 ctermfg=green       guifg=slateblue1
+        hi def hlLevel8 ctermfg=cyan        guifg=magenta1
+        hi def hlLevel9 ctermfg=magenta     guifg=purple1
+    else
+        hi def hlLevel0 ctermfg=red         guifg=red3
+        hi def hlLevel1 ctermfg=darkyellow  guifg=orangered3
+        hi def hlLevel2 ctermfg=darkgreen   guifg=orange2
+        hi def hlLevel3 ctermfg=blue        guifg=yellow3
+        hi def hlLevel4 ctermfg=darkmagenta guifg=olivedrab4
+        hi def hlLevel5 ctermfg=red         guifg=green4
+        hi def hlLevel6 ctermfg=darkyellow  guifg=paleturquoise3
+        hi def hlLevel7 ctermfg=darkgreen   guifg=deepskyblue4
+        hi def hlLevel8 ctermfg=blue        guifg=darkslateblue
+        hi def hlLevel9 ctermfg=darkmagenta guifg=darkviolet
+    endif
+endif
+
 " Syntax Synchronizing
 syn sync minlines=10 maxlines=100
 
@@ -132,6 +174,7 @@ if !exists("did_falcon_syn_inits")
     HiLink falconComment          Comment
     HiLink falconCommentL         Comment
     HiLink falconConst            Constant
+    HiLink falconConstants        Constant
     HiLink falconOperator         Operator
     HiLink falconSymbol           Normal
     HiLink falconSpaceError       Error
@@ -153,3 +196,4 @@ endif
 let b:current_syntax = "falcon"
 
 " vim: set sw=4 sts=4 et tw=80 :
+
--- a/runtime/syntax/help.vim
+++ b/runtime/syntax/help.vim
@@ -1,7 +1,7 @@
 " Vim syntax file
 " Language:	Vim help file
 " Maintainer:	Bram Moolenaar (Bram@vim.org)
-" Last Change:	2013 Apr 07
+" Last Change:	2013 Jun 02
 
 " Quit when a (custom) syntax file was already loaded
 if exists("b:current_syntax")
--- a/runtime/syntax/r.vim
+++ b/runtime/syntax/r.vim
@@ -3,7 +3,7 @@
 " Maintainer:	      Jakson Aquino <jalvesaq@gmail.com>
 " Former Maintainers: Vaidotas Zemlys <zemlys@gmail.com>
 " 		      Tom Payne <tom@tompayne.org>
-" Last Change:	      Sun Feb 20, 2011  12:06PM
+" Last Change:	      Sun May 19, 2013  05:59PM
 " Filenames:	      *.R *.r *.Rhistory *.Rt
 " 
 " NOTE: The highlighting of R functions is defined in the
@@ -30,7 +30,16 @@ endif
 syn case match
 
 " Comment
-syn match rComment contains=@Spell "\#.*"
+syn match rComment contains=@Spell "#.*"
+
+" Roxygen
+syn match rOKeyword contained "@\(param\|return\|name\|rdname\|examples\|include\|docType\)"
+syn match rOKeyword contained "@\(S3method\|TODO\|aliases\|alias\|assignee\|author\|callGraphDepth\|callGraph\)"
+syn match rOKeyword contained "@\(callGraphPrimitives\|concept\|exportClass\|exportMethod\|exportPattern\|export\|formals\)"
+syn match rOKeyword contained "@\(format\|importClassesFrom\|importFrom\|importMethodsFrom\|import\|keywords\)"
+syn match rOKeyword contained "@\(method\|nord\|note\|references\|seealso\|setClass\|slot\|source\|title\|usage\)"
+syn match rOComment contains=@Spell,rOKeyword "#'.*"
+
 
 if &filetype == "rhelp"
   " string enclosed in double quotes
@@ -65,7 +74,7 @@ syn keyword rConditional if else
 syn keyword rRepeat      for in repeat while
 
 " Constant (not really)
-syn keyword rConstant T F LETTERS letters month.ab month.name pi
+syn keyword rConstant T F LETTERS letters month.abb month.name pi
 syn keyword rConstant R.version.string
 
 syn keyword rNumber   NA_integer_ NA_real_ NA_complex_ NA_character_ 
@@ -105,8 +114,13 @@ syn match rOperator    '-'
 syn match rOperator    '\*'
 syn match rOperator    '+'
 syn match rOperator    '='
-syn match rOperator    "[|!<>^~`/:@]"
-syn match rOperator    "%\{2}\|%\*%\|%\/%\|%in%\|%o%\|%x%"
+if &filetype != "rmd" && &filetype != "rrst"
+  syn match rOperator    "[|!<>^~/:]"
+else
+  syn match rOperator    "[|!<>^~`/:]"
+endif
+syn match rOperator    "%\{2}\|%\S*%"
+syn match rOpError  '\*\{3}'
 syn match rOpError  '//'
 syn match rOpError  '&&&'
 syn match rOpError  '|||'
@@ -140,9 +154,11 @@ syn match rParenError "[\]}]" contained
 runtime r-plugin/functions.vim
 
 syn match rDollar display contained "\$"
+syn match rDollar display contained "@"
 
 " List elements will not be highlighted as functions:
 syn match rLstElmt "\$[a-zA-Z0-9\\._]*" contains=rDollar
+syn match rLstElmt "@[a-zA-Z0-9\\._]*" contains=rDollar
 
 " Functions that may add new objects
 syn keyword rPreProc     library require attach detach source
@@ -156,7 +172,9 @@ endif
 syn keyword rType array category character complex double function integer list logical matrix numeric vector data.frame 
 
 " Name of object with spaces
-syn region rNameWSpace start="`" end="`"
+if &filetype != "rmd" && &filetype != "rrst"
+  syn region rNameWSpace start="`" end="`"
+endif
 
 if &filetype == "rhelp"
   syn match rhPreProc "^#ifdef.*" 
@@ -169,6 +187,7 @@ hi def link rArrow       Statement
 hi def link rBoolean     Boolean
 hi def link rBraceError  Error
 hi def link rComment     Comment
+hi def link rOComment    Comment
 hi def link rComplex     Number
 hi def link rConditional Conditional
 hi def link rConstant    Constant
@@ -195,6 +214,7 @@ hi def link rStatement   Statement
 hi def link rString      String
 hi def link rStrError    Error
 hi def link rType        Type
+hi def link rOKeyword    Title
 
 let b:current_syntax="r"
 
--- a/runtime/syntax/rst.vim
+++ b/runtime/syntax/rst.vim
@@ -1,7 +1,7 @@
 " Vim syntax file
 " Language:         reStructuredText documentation format
 " Maintainer:       Nikolai Weibull <now@bitwi.se>
-" Latest Revision:  2012-11-01
+" Latest Revision:  2013-06-03
 
 if exists("b:current_syntax")
   finish
@@ -135,10 +135,6 @@ execute 'syn match rstHyperlinkReference
 syn match   rstStandaloneHyperlink  contains=@NoSpell
       \ "\<\%(\%(\%(https\=\|file\|ftp\|gopher\)://\|\%(mailto\|news\):\)[^[:space:]'\"<>]\+\|www[[:alnum:]_-]*\.[[:alnum:]_-]\+\.[^[:space:]'\"<>]\+\)[[:alnum:]/]"
 
-" TODO: Use better syncing.  I don’t know the specifics of syncing well enough,
-" though.
-syn sync minlines=50 linebreaks=1
-
 syn region rstCodeBlock contained matchgroup=rstDirective
       \ start=+\%(sourcecode\|code\%(-block\)\=\)::\s+
       \ skip=+^$+
@@ -160,6 +156,9 @@ for code in g:rst_syntax_code_list
     exe 'syn cluster rstDirectives add=rstDirective'.code
 endfor
 
+" TODO: Use better syncing.
+syn sync minlines=50 linebreaks=2
+
 hi def link rstTodo                         Todo
 hi def link rstComment                      Comment
 hi def link rstSections                     Title