changeset 9975:03fa8a51e9dc

commit https://github.com/vim/vim/commit/e4a3bcf28d92d0bde9ca227ccb40d401038185e5 Author: Bram Moolenaar <Bram@vim.org> Date: Fri Aug 26 19:52:37 2016 +0200 Updated runtime files. Add Scala files.
author Christian Brabandt <cb@256bit.org>
date Fri, 26 Aug 2016 20:00:12 +0200
parents cb480e05fb5f
children e448370630b2
files runtime/doc/eval.txt runtime/doc/gui_x11.txt runtime/doc/index.txt runtime/doc/options.txt runtime/doc/quickref.txt runtime/doc/tags runtime/doc/tagsrch.txt runtime/doc/todo.txt runtime/doc/version8.txt runtime/doc/vim.man runtime/doc/windows.txt runtime/filetype.vim runtime/ftplugin/rmd.vim runtime/ftplugin/scala.vim runtime/indent/fortran.vim runtime/indent/javascript.vim runtime/indent/rnoweb.vim runtime/indent/scala.vim runtime/keymap/pinyin.vim runtime/optwin.vim runtime/pack/dist/opt/matchit/plugin/matchit.vim runtime/syntax/fortran.vim runtime/syntax/muttrc.vim runtime/syntax/python.vim runtime/syntax/r.vim runtime/syntax/rhelp.vim runtime/syntax/rmd.vim runtime/syntax/rrst.vim runtime/syntax/scala.vim runtime/syntax/sh.vim runtime/syntax/vim.vim runtime/tutor/tutor.es runtime/tutor/tutor.es.utf-8 src/po/fi.po
diffstat 34 files changed, 3642 insertions(+), 2236 deletions(-) [+]
line wrap: on
line diff
--- a/runtime/doc/eval.txt
+++ b/runtime/doc/eval.txt
@@ -1,4 +1,4 @@
-*eval.txt*	For Vim version 7.4.  Last change: 2016 Aug 18
+*eval.txt*	For Vim version 7.4.  Last change: 2016 Aug 21
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -7305,7 +7305,7 @@ strwidth({expr})					*strwidth()*
 		Ambiguous, this function's return value depends on 'ambiwidth'.
 		Also see |strlen()|, |strdisplaywidth()| and |strchars()|.
 
-submatch({nr}[, {list}])				*submatch()*
+submatch({nr}[, {list}])			*submatch()* *E935*
 		Only for an expression in a |:substitute| command or
 		substitute() function.
 		Returns the {nr}'th submatch of the matched text.  When {nr}
--- a/runtime/doc/gui_x11.txt
+++ b/runtime/doc/gui_x11.txt
@@ -1,4 +1,4 @@
-*gui_x11.txt*   For Vim version 7.4.  Last change: 2016 Apr 08
+*gui_x11.txt*   For Vim version 7.4.  Last change: 2016 Aug 21
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -421,6 +421,9 @@ These are the different looks:
 GNOME is compiled with if it was found by configure and the
 --enable-gnome-check argument was used.
 
+Note: Avoid use of --enable-gnome-check with GTK+ 3 GUI build.  The
+functionality mentioned above is consolidated in GTK+ 3.
+
 
 GNOME session support			*gui-gnome-session* *gnome-session*
 
@@ -457,20 +460,37 @@ continues on Yzis: https://github.com/ch
 ==============================================================================
 8. Compiling						*gui-x11-compiling*
 
-If using X11, Vim's Makefile will by default first try to find the necessary
-GTK+ files on your system.  If the GTK+ files cannot be found, then the Motif
-files will be searched for.  Finally, if this fails, the Athena files will be
-searched for.  If all three fail, the GUI will be disabled.
+If using X11, Vim's configure will by default first try to find the necessary
+GTK+ files on your system.  When both GTK+ 2 and GTK+ 3 are available, GTK+ 2
+will be chosen unless --enable-gui=gtk3 is passed explicitly to configure.
+
+If the GTK+ files cannot be found, then the Motif files will be searched for.
+Finally, if this fails, the Athena files will be searched for.  If all three
+fail, the GUI will be disabled.
+
+For GTK+, Vim's configuration process uses pkg-config(1) to check if the
+GTK+ required for a specified build is properly installed and usable.
+Accordingly, it is a good idea to make sure before running configure that
+your system has a working pkg-config together with the .pc file of the
+required GTK+.  For that, say, run the following on the command line to see if
+your pkg-config works with your GTK+ 2: >
 
-For GTK+, Vim's configuration process requires that GTK+ be properly
-installed.  That is, the shell script 'gtk-config' must be in your PATH, and
-you can already successful compile, build, and execute a GTK+ program.  The
-reason for this is that the compiler flags (CFLAGS) and link flags (LDFLAGS)
-are obtained through the 'gtk-config' shell script.
+    $ pkgconfig --modversion gtk+-2.0
+
+Replace gtk+-2.0 with gtk+-3.0 for GTK+ 3. If you get the correct version
+number of your GTK+, you can proceed; if not, you probably need to do some
+system administration chores to set up pkg-config and GTK+ correctly.
 
-If you want to build with GTK+ 2 support pass the --enable-gtk2-check argument
-to ./configure.  Optionally, support for GNOME 2 will be compiled if the
---enable-gnome-check option is also given.
+The GTK+ 2 GUI is built by default.  Therefore, you usually don't need to pass
+any options such as --enable-gui=gtk2 to configure and build that.
+
+Optionally, the GTK+ 2 GUI can consolidate the GNOME 2 support.  This support
+is enabled by passing --enable-gnome-check to configure.
+
+If you want to build the GTK+ 3 GUI, you have to pass --enable-gui=gtk3
+explicitly to configure, and avoid passing --enable-gnome-check to that, as
+the functionality of the GNOME 2 support has already been consolidated in
+GTK+ 3.
 
 Otherwise, if you are using Motif or Athena, when you have the Motif or Athena
 files in a directory where configure doesn't look, edit the Makefile to enter
@@ -478,18 +498,14 @@ the names of the directories.  Search fo
 the Motif directories, "CONF_OPT_X" for Athena.
 
 							*gui-x11-gtk*
-At the time of this writing, GTK+ version 1.0.6 and 1.2 are outdated.  It
-is suggested that you use GTK 2.  The GTK 1 support will most likely be
-dropped soon.
+Currently, Vim supports both GTK+ 2 and GTK+ 3.
+
+The GTK+ 2 GUI requires GTK+ 2.2 or later.
 
-For the GTK+ 2 GUI, using the latest release of the GTK+ 2.0 or GTK+ 2.2
-series is recommended.
-
-Lastly, although GTK+ has supposedly been ported to the Win32 platform, this
-has not been tested with Vim and is also unsupported.  Also, it's unlikely to
-even compile since GTK+ GUI uses parts of the generic X11 code.  This might
-change in distant future; particularly because getting rid of the X11 centric
-code parts is also required for GTK+ framebuffer support.
+Although the GTK+ 3 GUI is written in such a way that the source code can be
+compiled against all versions of the 3.x series, we recommend GTK+ 3.10 or
+later because of its substantial implementation changes in redraw done at
+that version.
 
 							*gui-x11-motif*
 For Motif, you need at least Motif version 1.2 and/or X11R5.  Motif 2.0 and
--- a/runtime/doc/index.txt
+++ b/runtime/doc/index.txt
@@ -1,4 +1,4 @@
-*index.txt*     For Vim version 7.4.  Last change: 2016 Aug 16
+*index.txt*     For Vim version 7.4.  Last change: 2016 Aug 24
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -1239,6 +1239,7 @@ tag	      command	      action ~
 |:file|		:f[ile]		show or set the current file name
 |:files|	:files		list all files in the buffer list
 |:filetype|	:filet[ype]	switch file type detection on/off
+|:filter|	:filt[er]	filter output of following command
 |:find|		:fin[d]		find file in 'path' and edit it
 |:finally|	:fina[lly]	part of a :try command
 |:finish|	:fini[sh]	quit sourcing a Vim script
--- a/runtime/doc/options.txt
+++ b/runtime/doc/options.txt
@@ -1,4 +1,4 @@
-*options.txt*	For Vim version 7.4.  Last change: 2016 Aug 14
+*options.txt*	For Vim version 7.4.  Last change: 2016 Aug 26
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -4319,6 +4319,8 @@ A jump table for the options with a shor
 	original position when no match is found and when pressing <Esc>.  You
 	still need to finish the search command with <Enter> to move the
 	cursor to the match.
+	You can use the CTRL-N and CTRL-P keys to move to the next and
+	previous match. |c_CTRL-N| |c_CTRL-P|
 	When compiled with the |+reltime| feature Vim only searches for about
 	half a second.  With a complicated pattern and/or a lot of text the
 	match may not be found.  This is to avoid that Vim hangs while you
@@ -4632,7 +4634,7 @@ A jump table for the options with a shor
 	be able to execute Normal mode commands.
 	This is the opposite of the 'keymap' option, where characters are
 	mapped in Insert mode.
-	Also consider setting 'langnoremap' to avoid 'langmap' applies to
+	Also consider resetting 'langremap' to avoid 'langmap' applies to
 	characters resulting from a mapping.
 	This option cannot be set from a |modeline| or in the |sandbox|, for
 	security reasons.
@@ -4695,10 +4697,20 @@ A jump table for the options with a shor
 			{not in Vi}
 			{only available when compiled with the |+langmap|
 			feature}
-	When on, setting 'langmap' does not apply to characters resulting from
+	This is just like 'langremap' but with the value inverted.  It only
+	exists for backwards compatibility.  When setting 'langremap' then
+	'langnoremap' is set to the inverted value, and the other way around.
+
+			*'langremap'* *'lrm'* *'nolangremap'* *'nolrm'*
+'langremap' 'lrm'	boolean (default on, reset in |defaults.vim|)
+			global
+			{not in Vi}
+			{only available when compiled with the |+langmap|
+			feature}
+	When off, setting 'langmap' does not apply to characters resulting from
 	a mapping.  This basically means, if you noticed that setting
-	'langmap' disables some of your mappings, try setting this option.
-	This option defaults to off for backwards compatibility.  Set it on if
+	'langmap' disables some of your mappings, try resetting this option.
+	This option defaults to on for backwards compatibility.  Set it off if
 	that works for you to avoid mappings to break.
 
 					*'laststatus'* *'ls'*
@@ -6245,6 +6257,8 @@ A jump table for the options with a shor
 	"inclusive" means that the last character of the selection is included
 	in an operation.  For example, when "x" is used to delete the
 	selection.
+	When "old" is used and 'virtualedit' allows the cursor to move past
+	the end of line the line break still isn't included.
 	Note that when "exclusive" is used and selecting from the end
 	backwards, you cannot include the last character of a line, when
 	starting in Normal mode and 'virtualedit' empty.
--- a/runtime/doc/quickref.txt
+++ b/runtime/doc/quickref.txt
@@ -1,4 +1,4 @@
-*quickref.txt*  For Vim version 7.4.  Last change: 2016 Aug 12
+*quickref.txt*  For Vim version 7.4.  Last change: 2016 Aug 21
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -767,7 +767,7 @@ Short explanation of each option:		*opti
 'keywordprg'	  'kp'	    program to use for the "K" command
 'langmap'	  'lmap'    alphabetic characters for other language mode
 'langmenu'	  'lm'	    language to be used for the menus
-'langnoremap'	  'lnr'	    do not apply 'langmap' to mapped characters
+'langremap'	  'lrm'	    do apply 'langmap' to mapped characters
 'laststatus'	  'ls'	    tells when last window has status lines
 'lazyredraw'	  'lz'	    don't redraw while executing macros
 'linebreak'	  'lbr'     wrap long lines at a blank
--- a/runtime/doc/tags
+++ b/runtime/doc/tags
@@ -400,6 +400,7 @@
 'langmap'	options.txt	/*'langmap'*
 'langmenu'	options.txt	/*'langmenu'*
 'langnoremap'	options.txt	/*'langnoremap'*
+'langremap'	options.txt	/*'langremap'*
 'laststatus'	options.txt	/*'laststatus'*
 'lazyredraw'	options.txt	/*'lazyredraw'*
 'lbr'	options.txt	/*'lbr'*
@@ -416,6 +417,7 @@
 'lnr'	options.txt	/*'lnr'*
 'loadplugins'	options.txt	/*'loadplugins'*
 'lpl'	options.txt	/*'lpl'*
+'lrm'	options.txt	/*'lrm'*
 'ls'	options.txt	/*'ls'*
 'lsp'	options.txt	/*'lsp'*
 'luadll'	options.txt	/*'luadll'*
@@ -586,6 +588,7 @@
 'nojoinspaces'	options.txt	/*'nojoinspaces'*
 'nojs'	options.txt	/*'nojs'*
 'nolangnoremap'	options.txt	/*'nolangnoremap'*
+'nolangremap'	options.txt	/*'nolangremap'*
 'nolazyredraw'	options.txt	/*'nolazyredraw'*
 'nolbr'	options.txt	/*'nolbr'*
 'nolinebreak'	options.txt	/*'nolinebreak'*
@@ -594,6 +597,7 @@
 'nolnr'	options.txt	/*'nolnr'*
 'noloadplugins'	options.txt	/*'noloadplugins'*
 'nolpl'	options.txt	/*'nolpl'*
+'nolrm'	options.txt	/*'nolrm'*
 'nolz'	options.txt	/*'nolz'*
 'noma'	options.txt	/*'noma'*
 'nomacatsui'	options.txt	/*'nomacatsui'*
@@ -1593,6 +1597,9 @@
 /\{-	pattern.txt	/*\/\\{-*
 /\~	pattern.txt	/*\/\\~*
 /^	pattern.txt	/*\/^*
+/_CTRL-L	cmdline.txt	/*\/_CTRL-L*
+/_CTRL-N	cmdline.txt	/*\/_CTRL-N*
+/_CTRL-P	cmdline.txt	/*\/_CTRL-P*
 /atom	pattern.txt	/*\/atom*
 /bar	pattern.txt	/*\/bar*
 /branch	pattern.txt	/*\/branch*
@@ -2267,6 +2274,8 @@ 90.5	usr_90.txt	/*90.5*
 :filetype-overview	filetype.txt	/*:filetype-overview*
 :filetype-plugin-off	filetype.txt	/*:filetype-plugin-off*
 :filetype-plugin-on	filetype.txt	/*:filetype-plugin-on*
+:filt	various.txt	/*:filt*
+:filter	various.txt	/*:filter*
 :fin	editing.txt	/*:fin*
 :fina	eval.txt	/*:fina*
 :finally	eval.txt	/*:finally*
@@ -4475,6 +4484,7 @@ E931	message.txt	/*E931*
 E932	eval.txt	/*E932*
 E933	eval.txt	/*E933*
 E934	sign.txt	/*E934*
+E935	eval.txt	/*E935*
 E94	windows.txt	/*E94*
 E95	message.txt	/*E95*
 E96	diff.txt	/*E96*
@@ -9217,6 +9227,7 @@ window-size	term.txt	/*window-size*
 window-size-functions	usr_41.txt	/*window-size-functions*
 window-tag	windows.txt	/*window-tag*
 window-variable	eval.txt	/*window-variable*
+windowid	windows.txt	/*windowid*
 windowid-variable	eval.txt	/*windowid-variable*
 windows	windows.txt	/*windows*
 windows-3.1	os_win32.txt	/*windows-3.1*
@@ -9226,6 +9237,7 @@ windows-starting	windows.txt	/*windows-s
 windows.txt	windows.txt	/*windows.txt*
 windows95	os_win32.txt	/*windows95*
 winheight()	eval.txt	/*winheight()*
+winid	windows.txt	/*winid*
 winline()	eval.txt	/*winline()*
 winnr()	eval.txt	/*winnr()*
 winrestcmd()	eval.txt	/*winrestcmd()*
--- a/runtime/doc/tagsrch.txt
+++ b/runtime/doc/tagsrch.txt
@@ -1,4 +1,4 @@
-*tagsrch.txt*   For Vim version 7.4.  Last change: 2013 Oct 01
+*tagsrch.txt*   For Vim version 7.4.  Last change: 2016 Aug 20
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -454,9 +454,9 @@ The next file in the list is not used wh
 This also depends on whether case is ignored.  Case is ignored when:
 - 'tagcase' is "followic" and 'ignorecase' is set
 - 'tagcase' is "ignore"
-- 'tagcase' is "smart" and and the pattern only contains lower case
+- 'tagcase' is "smart" and the pattern only contains lower case
   characters.
-- 'tagcase' is "followscs" and 'smartcase' is set and and the pattern only
+- 'tagcase' is "followscs" and 'smartcase' is set and the pattern only
   contains lower case characters.
 If case is not ignored, and the tags file only has a match without matching
 case, the next tags file is searched for a match with matching case.  If no
@@ -833,24 +833,24 @@ CTRL-W d		Open a new window, with the cu
 
 								*:search-args*
 Common arguments for the commands above:
-[!]   When included, find matches in lines that are recognized as comments.
-      When excluded, a match is ignored when the line is recognized as a
-      comment (according to 'comments'), or the match is in a C comment (after
-      "//" or inside /* */).  Note that a match may be missed if a line is
-      recognized as a comment, but the comment ends halfway the line.
-      And  if the line is a comment, but it is not recognized (according to
-      'comments') a match may be found in it anyway.  Example: >
+[!]	When included, find matches in lines that are recognized as comments.
+	When excluded, a match is ignored when the line is recognized as a
+	comment (according to 'comments'), or the match is in a C comment
+	(after "//" or inside /* */).  Note that a match may be missed if a
+	line is recognized as a comment, but the comment ends halfway the line.
+	And if the line is a comment, but it is not recognized (according to
+	'comments') a match may be found in it anyway.  Example: >
 		/* comment
 		   foobar */
-<     A match for "foobar" is found, because this line is not recognized as a
-      comment (even though syntax highlighting does recognize it).
-      Note: Since a macro definition mostly doesn't look like a comment, the
-      [!] makes no difference for ":dlist", ":dsearch" and ":djump".
-[/]   A pattern can be surrounded by '/'.  Without '/' only whole words are
-      matched, using the pattern "\<pattern\>".  Only after the second '/' a
-      next command can be appended with '|'.  Example: >
+<	A match for "foobar" is found, because this line is not recognized as
+	a comment (even though syntax highlighting does recognize it).
+	Note: Since a macro definition mostly doesn't look like a comment, the
+	[!] makes no difference for ":dlist", ":dsearch" and ":djump".
+[/]	A pattern can be surrounded by '/'.  Without '/' only whole words are
+	matched, using the pattern "\<pattern\>".  Only after the second '/' a
+	next command can be appended with '|'.  Example: >
 	:isearch /string/ | echo "the last one"
-<     For a ":djump", ":dsplit", ":dlist" and ":dsearch" command the pattern
-      is used as a literal string, not as a search pattern.
+<	For a ":djump", ":dsplit", ":dlist" and ":dsearch" command the pattern
+	is used as a literal string, not as a search pattern.
 
  vim:tw=78:ts=8:ft=help:norl:
--- a/runtime/doc/todo.txt
+++ b/runtime/doc/todo.txt
@@ -1,4 +1,4 @@
-*todo.txt*      For Vim version 7.4.  Last change: 2016 Aug 18
+*todo.txt*      For Vim version 7.4.  Last change: 2016 Aug 26
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -34,7 +34,13 @@ not be repeated below, unless there is e
 							*known-bugs*
 -------------------- Known bugs and current work -----------------------
 
-Rename 'langnoremap' to 'langremap' and invert the value?
+Make ":filter" work with more commands.
+
+C highlighting: modern C allows /* comment */ #ifdef
+
+Ramel Eshed: system() is much slower than job_start(), why? (Aug 26)
+
+Error in viminfo. (John Chen, 2016 Aug 26, #1010)
 
 +channel:
 - Check that raw mode does NL-NUL conversion.
@@ -55,6 +61,8 @@ Later
     With xterm could use -S{pty}.
 
 Regexp problems:
+- The new engine does not do the example in change.txt correctly, where the
+  meaning of \1 and \2 is explained. (Harm te Hennepe, #990)
 - Since 7.4.704 the old regex engine fails to match [[:print:]] in 0xf6.
   (Manuel Ortega, 2016 Apr 24)
   Test fails on Mac.  Avoid using isalpha(), isalnum(), etc?  Depends on
@@ -138,6 +146,8 @@ Invalid behavior with NULL list. (Nikola
 For current Windows build .pdb file is missing. (Gabriele Fava, 2016 May 11)
 5)
 
+Patch to fix compiler warning with gtk3. (Kazunobu Kuriyama, 2016 Aug 24)
+
 Problem with whitespace in errorformat. (Gerd Wachsmuth, 2016 May 15, #807)
 
 Undo problem: "g-" doesn't go back, gets stuck. (Björn Linse, 2016 Jul 18)
@@ -157,6 +167,9 @@ Jul 25, #948)
 
 'hlsearch' interferes with a Conceal match. (Rom Grk, 2016 Aug 9)
 
+Patch to add context information to quickfix/location list. (Yegappan
+Lakshmanan, 2016 Aug 25)
+
 MS-Windows: use WS_HIDE instead of SW_SHOWMINNOACTIVE in os_win32.c?
 Otherwise task flickers in taskbar.
 
@@ -165,23 +178,9 @@ Also for ":@.".
 
 Repeating 'opfunc' in a function only works once. (Tarmean, 2016 Jul 15, #925)
 
-Patch on issue #728 by Christian Brabandt, 2016 Apr 7.  Update with test: Apr 8.
-Explanation Apr 12.
-
 Second problem in #966: ins_compl_add_tv() uses get_dict_string() multiple
 times, overwrites the one buffer. (Nikolay Pavlov, 2016 Aug 5)
 
-Patch to add 'topbot' to 'belloff' option. (Coot, 2016 Mar 18, #695)
-
-Patch for C syntax HL. (Bradley Garagan, 2016 Apr 17) #763
-
-Patch to make matchit work better, respect 'matchpairs'. (Ken Takata, 2016 Mar
-25)
-
-Patch to fix that on suckless Terminal mousewheel up does not work.
-(Ralph Eastwood, 2013 Nov 25)
-Patch for mouse support on suckless Terminal. #971  Manuel Schiller
-
 This does not work: :set cscopequickfix=a-
 (Linewi, 2015 Jul 12, #914)
 
@@ -260,6 +259,9 @@ Problem using ":try" inside ":execute". 
 
 Patch to make tests pass with EBCDIC. (Owen Leibman, 2016 Apr 10)
 
+Add ":read :command", to insert the output of an Ex command?
+Can already do it with ":$put =execute('command')".
+
 When repeating the 'confirm' dialog one needs to press Enter. (ds26gte, 2016
 Apr 17)  #762
 
@@ -289,6 +291,14 @@ Also need to run update-desktop-database
 Patch to test popupmenu.  Fails, possibly due to a bug.
 (Christian Brabandt, 2016 Jul 23)
 
+Patch to introduce 'cmdencoding'. (Ken Takata, Aug 18?)
+Better help Aug 19.
+Problem: applies to too many commands, such as :cbuffer.
+Should there be a different value for :make and :grep?
+    Win32: When running ":make" and 'encoding' differs from the system locale,
+    the output should be converted.  Esp. when 'encoding' is "utf-8". (Yongwei
+    Wu) Should we use 'termencoding' for this?
+
 Patch to have text objects defined by arbitrary single characters. (Daniel
 Thau, 2013 Nov 20, 2014 Jan 29, 2014 Jan 31)
 Added tests (James McCoy, 2016 Aug 3).  Still needs more work.
@@ -317,9 +327,6 @@ Patch to avoid redrawing tabline when th
 Patch to add {skip} argument to search(). (Christian Brabandt, 2016 Feb 24)
 Update 2016 Jun 10, #861
 
-Add value "smart" to 'tagcase': ignore case when tag is all lower case.
-Patch from Christian Brabandt, 2016 Mar 30, #712.
-
 Patch to be able to use hex numbers with :digraph. (Lcd, 2015 Sep 6)
 Update Sep 7.  Update by Christian Brabandt, 2015 Sep 8, 2016 Feb 1.
 
@@ -544,8 +551,6 @@ 2015 Feb 6.
 Wrong scrolling when using incsearch.  Patch by Christian Brabandt, 2014 Dec 4.
 Is this a good solution?
 
-Patch to add /pattern/ to :oldfiles.  Pull #575.
-
 Patch: Let rare word highlighting overrule good word highlighting.
 (Jakson A. Aquino, 2010 Jul 30, again 2011 Jul 2)
 
@@ -2217,10 +2222,6 @@ only set after Visual moded is ended.
 Also add a variable for the Visual mode.  So that this mode and '< '> can be
 used to set what "gv" selects. (Ben Schmidt)
 
-Win32: When running ":make" and 'encoding' differs from the system locale, the
-output should be converted.  Esp. when 'encoding' is "utf-8". (Yongwei Wu)
-Should we use 'termencoding' for this?
-
 Win32, NTFS: When editing a specific infostream directly and 'backupcopy' is
 "auto" should detect this situation and work like 'backupcopy' is "yes".  File
 name is something like "c:\path\foo.txt:bar", includes a colon.  (Alex
--- a/runtime/doc/version8.txt
+++ b/runtime/doc/version8.txt
@@ -1,4 +1,4 @@
-*version8.txt*  For Vim version 8.0.  Last change: 2016 Aug 18
+*version8.txt*  For Vim version 8.0.  Last change: 2016 Aug 26
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -141,8 +141,10 @@ This adds the 'renderoptions' option to 
 
 GTK+ 3 support ~
 
-GTK+ 2 is getting old, GTK+ 3 is here.  Support has been added and it already
-works quite well, mostly just like GTK+ 2.
+The GTK+ 3 GUI works just like GTK+ 2 except for hardly noticeable technical
+differences between them.  Configure still chooses GTK+ 2 if both 2 and 3 are
+available.  See src/Makefile for how to use GTK+ 3 instead.  See
+|gui-x11-compiling| for other details.
 
 
 Vim script enhancements					*new-vim-script-8*
@@ -165,15 +167,6 @@ Many items were added so support |new-st
 Various new items					*new-items-8*
 -----------------
 
-Normal mode commands: ~
-
-|g+|		g+		go to newer text state N times
-|g,|		g,		go to N newer position in change list
-|g-|		g-		go to older text state N times
-|g;|		g;		go to N older position in change list
-|g_|		g_		cursor to the last CHAR N - 1 lines lower
-
-
 Visual mode commands: ~
 
 |v_CTRL-A|	CTRL-A		add N to number in highlighted text
@@ -194,7 +187,7 @@ Options: ~
 'breakindentopt'	settings for 'breakindent'.
 'emoji'			emoji characters are considered full width
 'fixendofline'		make sure last line in file has <EOL>
-'langnoremap'		do not apply 'langmap' to mapped characters
+'langremap'		do apply 'langmap' to mapped characters
 'luadll'		name of the Lua dynamic library
 'packpath'		list of directories used for packages
 'perldll'		name of the Perl dynamic library
@@ -396,6 +389,7 @@ Rmd (markdown with R code chunks) syntax
 Rmd ftplugin
 Rnoweb ftplugin
 Rnoweb indent
+Scala syntax and indent and ftplugin
 SystemVerilog syntax and indent and ftplugin
 Systemd syntax and indent and ftplugin
 Teraterm (TTL) syntax and indent
@@ -12884,7 +12878,7 @@ Files:      src/search.c, src/testdir/Ma
             src/testdir/test_gn.vim
 
 Patch 7.4.2101
-Problem:    Looping over windows, buffers and tab pages is inconsistant.
+Problem:    Looping over windows, buffers and tab pages is inconsistent.
 Solution:   Use FOR_ALL_ macros everywhere. (Yegappan Lakshmanan)
 Files:      src/buffer.c, src/diff.c, src/edit.c, src/eval.c, src/evalfunc.c,
             src/ex_cmds.c, src/ex_cmds2.c, src/ex_docmd.c, src/fileio.c,
--- a/runtime/doc/vim.man
+++ b/runtime/doc/vim.man
@@ -222,7 +222,7 @@ OPTIONS
 
        -R          Read-only  mode.   The  'readonly' option will be set.  You
                    can still edit the buffer, but will be prevented from acciâ€
-                   dently  overwriting  a file.  If you do want to overwrite a
+                   dentally overwriting a file.  If you do want to overwrite a
                    file, add an exclamation mark to  the  Ex  command,  as  in
                    ":w!".   The  -R  option  also  implies  the -n option (see
                    below).  The 'readonly' option  can  be  reset  with  ":set
--- a/runtime/doc/windows.txt
+++ b/runtime/doc/windows.txt
@@ -1,4 +1,4 @@
-*windows.txt*   For Vim version 7.4.  Last change: 2016 Aug 18
+*windows.txt*   For Vim version 7.4.  Last change: 2016 Aug 23
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -75,7 +75,7 @@ places where a Normal mode command can't
 
 The main Vim window can hold several split windows.  There are also tab pages
 |tab-page|, each of which can hold multiple windows.
-							*window-ID*
+					*window-ID* *winid* *windowid*
 Each window has a unique identifier called the window ID.  This identifier
 will not change within a Vim session. The |win_getid()| and |win_id2tabwin()|
 functions can be used to convert between the window/tab number and the
@@ -1042,6 +1042,10 @@ list of buffers. |unlisted-buffer|
 		     h+   hidden buffers which are modified
 		     a+   active buffers which are modified
 
+		When using |:filter| the pattern is matched against the
+		displayed buffer name, e.g.: >
+			filter /\.vim/ ls
+<
 						*:bad* *:badd*
 :bad[d]	[+lnum] {fname}
 		Add file name {fname} to the buffer list, without loading it.
--- 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:	2016 Aug 18
+" Last Change:	2016 Aug 26
 
 " Listen very carefully, I will say this only once
 if exists("did_load_filetypes")
@@ -692,8 +692,8 @@ func! s:FTe()
     let n = 1
     while n < 100 && n < line("$")
       if getline(n) =~ "^\\s*\\(<'\\|'>\\)\\s*$"
-        setf specman
-        return
+	setf specman
+	return
       endif
       let n = n + 1
     endwhile
@@ -1780,6 +1780,9 @@ au BufNewFile,BufRead *.sass			setf sass
 " Sather
 au BufNewFile,BufRead *.sa			setf sather
 
+" Scala
+au BufNewFile,BufRead *.scala			setf scala
+
 " Scilab
 au BufNewFile,BufRead *.sci,*.sce		setf scilab
 
@@ -2052,7 +2055,7 @@ func! s:FTRules()
     if line =~ s:ft_rules_udev_rules_pattern
       let udev_rules = substitute(line, s:ft_rules_udev_rules_pattern, '\1', "")
       if dir == udev_rules
-        setf udevrules
+	setf udevrules
       endif
       break
     endif
@@ -2301,7 +2304,7 @@ au BufNewFile,BufRead */etc/updatedb.con
 au BufNewFile,BufRead */usr/share/upstart/*.conf	       setf upstart
 au BufNewFile,BufRead */usr/share/upstart/*.override	       setf upstart
 au BufNewFile,BufRead */etc/init/*.conf,*/etc/init/*.override  setf upstart
-au BufNewFile,BufRead */.init/*.conf,*/.init/*.override        setf upstart
+au BufNewFile,BufRead */.init/*.conf,*/.init/*.override	       setf upstart
 au BufNewFile,BufRead */.config/upstart/*.conf		       setf upstart
 au BufNewFile,BufRead */.config/upstart/*.override	       setf upstart
 
--- a/runtime/ftplugin/rmd.vim
+++ b/runtime/ftplugin/rmd.vim
@@ -1,9 +1,9 @@
 " Vim filetype plugin file
-" Language: R help file
+" Language: R Markdown file
 " Maintainer: Jakson Alves de Aquino <jalvesaq@gmail.com>
 " Homepage: https://github.com/jalvesaq/R-Vim-runtime
-" Last Change:	Tue Apr 07, 2015  04:37PM
-" Original work by Alex Zvoleff (adjusted for rmd by Michel Kuhlmann)
+" Last Change:	Mon Jun 06, 2016  09:41PM
+" Original work by Alex Zvoleff (adjusted from R help for rmd by Michel Kuhlmann)
 
 " Only do this when not yet done for this buffer
 if exists("b:did_ftplugin")
@@ -12,6 +12,16 @@ endif
 
 runtime! ftplugin/html.vim ftplugin/html_*.vim ftplugin/html/*.vim
 
+" Nvim-R plugin needs this
+if exists("*CompleteR")
+  if &omnifunc == "CompleteR"
+    let b:rplugin_nonr_omnifunc = ""
+  else
+    let b:rplugin_nonr_omnifunc = &omnifunc
+  endif
+  set omnifunc=CompleteR
+endif
+
 setlocal comments=fb:*,fb:-,fb:+,n:> commentstring=>\ %s
 setlocal formatoptions+=tcqln
 setlocal formatlistpat=^\\s*\\d\\+\\.\\s\\+\\\|^\\s*[-*+]\\s\\+
new file mode 100644
--- /dev/null
+++ b/runtime/ftplugin/scala.vim
@@ -0,0 +1,37 @@
+" Vim filetype plugin file
+" Language:             Scala
+" Maintainer:           Derek Wyatt
+" URL:                  https://github.com/derekwyatt/vim-scala
+" License:              Same as Vim
+" Last Change:          02 August 2016
+" ----------------------------------------------------------------------------
+
+if exists('b:did_ftplugin') || &cp
+  finish
+endif
+let b:did_ftplugin = 1
+
+" j is fairly new in Vim, so don't complain if it's not there
+setlocal formatoptions-=t formatoptions+=croqnl
+silent! setlocal formatoptions+=j
+
+" Just like c.vim, but additionally doesn't wrap text onto /** line when
+" formatting. Doesn't bungle bulleted lists when formatting.
+if get(g:, 'scala_scaladoc_indent', 0)
+  setlocal comments=sO:*\ -,mO:*\ \ ,exO:*/,s2:/**,mb:*,ex:*/,s1:/*,mb:*,ex:*/,://
+else
+  setlocal comments=sO:*\ -,mO:*\ \ ,exO:*/,s1:/**,mb:*,ex:*/,s1:/*,mb:*,ex:*/,://
+endif
+setlocal commentstring=//\ %s
+
+setlocal shiftwidth=2 softtabstop=2 expandtab
+
+setlocal include='^\s*import'
+setlocal includeexpr='substitute(v:fname,"\\.","/","g")'
+
+setlocal path+=src/main/scala,src/test/scala
+setlocal suffixesadd=.scala
+
+compiler sbt
+
+" vim:set sw=2 sts=2 ts=8 et:
--- a/runtime/indent/fortran.vim
+++ b/runtime/indent/fortran.vim
@@ -1,7 +1,7 @@
 " Vim indent file
 " Language:	Fortran 2008 (and older: Fortran 2003, 95, 90, and 77)
-" Version:	0.44
-" Last Change:	2016 Jan. 26
+" Version:	0.45
+" Last Change:	2016 Aug. 18
 " Maintainer:	Ajit J. Thakkar <ajit@unb.ca>; <http://www2.unb.ca/~ajit/>
 " Usage:	For instructions, do :help fortran-indent from Vim
 " Credits:
@@ -121,7 +121,7 @@ function FortranGetIndent(lnum)
     let prefix='\(\(pure\|impure\|elemental\|recursive\)\s\+\)\{,2}'
     let type='\(\(integer\|real\|double\s\+precision\|complex\|logical'
           \.'\|character\|type\|class\)\s*\S*\s\+\)\='
-    if prevstat =~? '^\s*\(module\|contains\|program\)\>'
+    if prevstat =~? '^\s*\(module\|contains\/submodule\|program\)\>'
             \ ||prevstat =~? '^\s*'.prefix.'subroutine\>'
             \ ||prevstat =~? '^\s*'.prefix.type.'function\>'
             \ ||prevstat =~? '^\s*'.type.prefix.'function\>'
@@ -129,14 +129,14 @@ function FortranGetIndent(lnum)
     endif
     if getline(v:lnum) =~? '^\s*contains\>'
           \ ||getline(v:lnum)=~? '^\s*end\s*'
-          \ .'\(function\|subroutine\|module\|program\)\>'
+          \ .'\(function\|subroutine\|module\/submodule\|program\)\>'
       let ind = ind - shiftwidth()
     endif
   endif
 
   "Subtract a shiftwidth from else, else if, elsewhere, case, end if,
   " end where, end select, end forall, end interface, end associate,
-  " end enum, and end type statements
+  " end enum, end type, end block and end type statements
   if getline(v:lnum) =~? '^\s*\(\d\+\s\)\=\s*'
         \. '\(else\|else\s*if\|else\s*where\|case\|'
         \. 'end\s*\(if\|where\|select\|interface\|'
--- a/runtime/indent/javascript.vim
+++ b/runtime/indent/javascript.vim
@@ -1,8 +1,8 @@
 " Vim indent file
 " Language: Javascript
-" Maintainer: vim-javascript community
+" Maintainer: Chris Paul ( https://github.com/bounceme )
 " URL: https://github.com/pangloss/vim-javascript
-" Last Change: August 12, 2016
+" Last Change: August 25, 2016
 
 " Only load this indent file when no other was loaded.
 if exists('b:did_indent')
@@ -12,11 +12,11 @@ let b:did_indent = 1
 
 " Now, set up our indentation expression and keys that trigger it.
 setlocal indentexpr=GetJavascriptIndent()
-setlocal nolisp
+setlocal nolisp noautoindent nosmartindent
 setlocal indentkeys=0{,0},0),0],:,!^F,o,O,e
 setlocal cinoptions+=j1,J1
 
-let b:undo_indent = 'setlocal indentexpr< indentkeys< cinoptions<'
+let b:undo_indent = 'setlocal indentexpr< smartindent< autoindent< indentkeys< cinoptions<'
 
 " Only define the function once.
 if exists('*GetJavascriptIndent')
@@ -37,7 +37,7 @@ else
   endfunction
 endif
 
-let s:line_pre = '^\s*\%(\/\*.\{-}\*\/\s*\)*'
+let s:line_pre = '^\s*\%(\%(\%(\/\*.\{-}\)\=\*\+\/\s*\)\=\)\@>'
 let s:expr_case = s:line_pre . '\%(\%(case\>.\+\)\|default\)\s*:'
 " Regex of syntax group names that are or delimit string or are comments.
 let s:syng_strcom = '\%(s\%(tring\|pecial\)\|comment\|regex\|doc\|template\)'
@@ -46,63 +46,63 @@ let s:syng_strcom = '\%(s\%(tring\|pecia
 let s:syng_comment = '\%(comment\|doc\)'
 
 " Expression used to check whether we should skip a match with searchpair().
-let s:skip_expr = "line('.') < (prevnonblank(v:lnum) - 2000) ? dummy : synIDattr(synID(line('.'),col('.'),0),'name') =~? '".s:syng_strcom."'"
+let s:skip_expr = "synIDattr(synID(line('.'),col('.'),0),'name') =~? '".s:syng_strcom."'"
 
-function s:lookForParens(start,end,flags,time)
-  if has('reltime')
-    return searchpair(a:start,'',a:end,a:flags,s:skip_expr,0,a:time)
-  else
-    return searchpair(a:start,'',a:end,a:flags,0,0)
-  endif
-endfunction
+if has('reltime')
+  function s:GetPair(start,end,flags,time)
+    return searchpair(a:start,'',a:end,a:flags,s:skip_expr,max([prevnonblank(v:lnum) - 2000,0]),a:time)
+  endfunction
+else
+  function s:GetPair(start,end,flags,n)
+    return searchpair(a:start,'',a:end,a:flags,0,max([prevnonblank(v:lnum) - 2000,0]))
+  endfunction
+endif
 
-let s:line_term = '\%(\s*\%(\/\*.\{-}\*\/\s*\)\=\)\@>$'
+let s:line_term = '\s*\%(\%(\/\%(\%(\*.\{-}\*\/\)\|\%(\*\+\)\)\)\s*\)\=$'
 
 " configurable regexes that define continuation lines, not including (, {, or [.
 if !exists('g:javascript_opfirst')
-  let g:javascript_opfirst = '\%([<>,:?^%]\|\([-/.+]\)\%(\1\|\*\|\/\)\@!\|\*\/\@!\|=>\@!\||\|&\|in\%(stanceof\)\=\>\)'
+  let g:javascript_opfirst = '\%([<>,:?^%|*&]\|\/[^/*]\|\([-.+]\)\1\@!\|=>\@!\|in\%(stanceof\)\=\>\)'
 endif
-let g:javascript_opfirst = s:line_pre . g:javascript_opfirst
+if !exists('g:javascript_continuation')
+  let g:javascript_continuation = '\%([<=,.?/*:^%|&]\|+\@<!+\|-\@<!-\|=\@<!>\|\<in\%(stanceof\)\=\)'
+endif
 
-if !exists('g:javascript_continuation')
-  let g:javascript_continuation = '\%([<*,.?:^%]\|+\@<!+\|-\@<!-\|=\@<!>\|\*\@<!\/\|=\||\|&\|\<in\%(stanceof\)\=\)'
-endif
+let g:javascript_opfirst = s:line_pre . g:javascript_opfirst
 let g:javascript_continuation .= s:line_term
 
-function s:Onescope(lnum,text,add)
-  return a:text =~# '\%(\<else\|\<do\|=>' . (a:add ? '\|\<try\|\<finally' : '' ) . '\)' . s:line_term ||
+function s:OneScope(lnum,text,add)
+  return a:text =~# '\%(\<else\|\<do\|=>\)' . s:line_term ? 'no b' :
         \ ((a:add && a:text =~ s:line_pre . '$' && search('\%' . s:PrevCodeLine(a:lnum - 1) . 'l.)' . s:line_term)) ||
         \ cursor(a:lnum, match(a:text, ')' . s:line_term)) > -1) &&
-        \ s:lookForParens('(', ')', 'cbW', 100) > 0 && search((a:add ?
-        \ '\%(function\*\|[[:lower:][:upper:]_$][[:digit:][:lower:][:upper:]_$]*\)' :
-        \ '\<\%(for\%(\s\+each\)\=\|if\|let\|w\%(hile\|ith\)\)') . '\_s*\%#\C','bW') &&
-        \ (a:add || (expand('<cword>') ==# 'while' ? !s:lookForParens('\<do\>\C', '\<while\>\C','bW',100) : 1))
+        \ s:GetPair('(', ')', 'cbW', 100) > 0 && search('\C\l\+\_s*\%#','bW') &&
+        \ (a:add || ((expand('<cword>') !=# 'while' || !s:GetPair('\C\<do\>', '\C\<while\>','nbW',100)) &&
+        \ (expand('<cword>') !=# 'each' || search('\C\<for\_s\+\%#','nbW')))) ? expand('<cword>') : ''
+endfunction
+
+" https://github.com/sweet-js/sweet.js/wiki/design#give-lookbehind-to-the-reader
+function s:IsBlock()
+  return getline(line('.'))[col('.')-1] == '{' && !search(
+        \ '\C\%(\<return\s*\|\%([-=~!<*+,.?^%|&\[(]\|=\@<!>\|\*\@<!\/\|\<\%(var\|const\|let\|import\|export\%(\_s\+default\)\=\|yield\|delete\|void\|t\%(ypeof\|hrow\)\|new\|in\%(stanceof\)\=\)\)\_s*\)\%#','bnW') &&
+        \ (!search(':\_s*\%#','bW') || (!s:GetPair('[({[]','[])}]','bW',200) || s:IsBlock()))
 endfunction
 
 " Auxiliary Functions {{{2
 
-" strip line of comment
-function s:StripLine(c)
-  return a:c !~# s:expr_case ? substitute(a:c, '\%(:\@<!\/\/.*\)$', '','') : a:c
-endfunction
-
 " Find line above 'lnum' that isn't empty, in a comment, or in a string.
 function s:PrevCodeLine(lnum)
   let l:lnum = prevnonblank(a:lnum)
-  while l:lnum > 0
+  while l:lnum
     if synIDattr(synID(l:lnum,matchend(getline(l:lnum), '^\s*[^''"]'),0),'name') !~? s:syng_strcom
-      break
+      return l:lnum
     endif
     let l:lnum = prevnonblank(l:lnum - 1)
   endwhile
-  return l:lnum
 endfunction
 
 " Check if line 'lnum' has a balanced amount of parentheses.
 function s:Balanced(lnum)
-  let open_0 = 0
-  let open_2 = 0
-  let open_4 = 0
+  let [open_0,open_2,open_4] = [0,0,0]
   let l:line = getline(a:lnum)
   let pos = match(l:line, '[][(){}]', 0)
   while pos != -1
@@ -129,7 +129,7 @@ function GetJavascriptIndent()
   let syns = synIDattr(synID(v:lnum, 1, 0), 'name')
 
   " start with strings,comments,etc.{{{2
-  if (l:line !~ '^[''"`]' && syns =~? 'string\|template') ||
+  if (l:line !~ '^[''"`]' && syns =~? '\%(string\|template\)') ||
         \ (l:line !~ '^\s*[/*]' && syns =~? s:syng_comment)
     return -1
   endif
@@ -153,15 +153,15 @@ function GetJavascriptIndent()
   " the containing paren, bracket, curly. Memoize, last lineNr either has the
   " same scope or starts a new one, unless if it closed a scope.
   call cursor(v:lnum,1)
-  if b:js_cache[0] >= l:lnum  && b:js_cache[0] <= v:lnum && b:js_cache[0] &&
+  if b:js_cache[0] >= l:lnum  && b:js_cache[0] < v:lnum && b:js_cache[0] &&
         \ (b:js_cache[0] > l:lnum || s:Balanced(l:lnum) > 0)
     let num = b:js_cache[1]
   elseif syns != '' && l:line[0] =~ '\s'
     let pattern = syns =~? 'block' ? ['{','}'] : syns =~? 'jsparen' ? ['(',')'] :
           \ syns =~? 'jsbracket'? ['\[','\]'] : ['[({[]','[])}]']
-    let num = s:lookForParens(pattern[0],pattern[1],'bW',2000)
+    let num = s:GetPair(pattern[0],pattern[1],'bW',2000)
   else
-    let num = s:lookForParens('[({[]','[])}]','bW',2000)
+    let num = s:GetPair('[({[]','[])}]','bW',2000)
   endif
   let b:js_cache = [v:lnum,num,line('.') == v:lnum ? b:js_cache[2] : col('.')]
 
@@ -169,17 +169,19 @@ function GetJavascriptIndent()
     return indent(num)
   endif
 
-  let pline = s:StripLine(getline(l:lnum))
-  let inb = num == 0 ? 1 : (s:Onescope(num, s:StripLine(strpart(getline(num),0,b:js_cache[2] - 1)),1) ||
-        \ (l:line !~ s:line_pre . ',' && pline !~ ',' . s:line_term)) && num < l:lnum
-  let switch_offset = (!inb || num == 0) || expand("<cword>") !=# 'switch' ? 0 : &cino !~ ':' || !has('float') ?  s:sw() :
+  call cursor(b:js_cache[1],b:js_cache[2])
+
+  let swcase = getline(l:lnum) =~# s:expr_case
+  let pline = swcase ? getline(l:lnum) : substitute(getline(l:lnum), '\%(:\@<!\/\/.*\)$', '','')
+  let inb = num == 0 || num < l:lnum && ((l:line !~ s:line_pre . ',' && pline !~ ',' . s:line_term) || s:IsBlock())
+  let switch_offset = num == 0 || s:OneScope(num, strpart(getline(num),0,b:js_cache[2] - 1),1) !=# 'switch' ? 0 :
+        \ &cino !~ ':' || !has('float') ?  s:sw() :
         \ float2nr(str2float(matchstr(&cino,'.*:\zs[-0-9.]*')) * (&cino =~# '.*:[^,]*s' ? s:sw() : 1))
 
   " most significant, find the indent amount
-  if (inb && (l:line =~# g:javascript_opfirst ||
-        \ (pline =~# g:javascript_continuation && pline !~# s:expr_case && (pline !~ ':' . s:line_term || l:line !~#
-        \ s:line_pre . '\%(d\%(o\|ebugger\)\|else\|f\%(or\|inally\)\|if\|let\|switch\|t\%(hrow\|ry\)\|w\%(hile\|ith\)\)\>')))) ||
-        \ (num < l:lnum && s:Onescope(l:lnum,pline,0) && l:line !~ s:line_pre . '{')
+  if inb && !swcase && ((l:line =~# g:javascript_opfirst || pline =~# g:javascript_continuation) ||
+        \ num < l:lnum && s:OneScope(l:lnum,pline,0) =~# '\<\%(for\|each\|if\|let\|no\sb\|w\%(hile\|ith\)\)\>' &&
+        \ l:line !~ s:line_pre . '{')
     return (num > 0 ? indent(num) : -s:sw()) + (s:sw() * 2) + switch_offset
   elseif num > 0
     return indent(num) + s:sw() + switch_offset
--- a/runtime/indent/rnoweb.vim
+++ b/runtime/indent/rnoweb.vim
@@ -2,7 +2,7 @@
 " Language:	Rnoweb
 " Author:	Jakson Alves de Aquino <jalvesaq@gmail.com>
 " Homepage:     https://github.com/jalvesaq/R-Vim-runtime
-" Last Change:	Tue Apr 07, 2015  04:38PM
+" Last Change:	Fri Apr 15, 2016  10:58PM
 
 
 " Only load this indent file when no other was loaded.
@@ -10,7 +10,17 @@ if exists("b:did_indent")
   finish
 endif
 runtime indent/tex.vim
-let s:TeXIndent = function(substitute(&indentexpr, "()", "", ""))
+
+function! s:NoTeXIndent()
+  return indent(line("."))
+endfunction
+
+if &indentexpr == "" || &indentexpr == "GetRnowebIndent()"
+  let s:TeXIndent = function("s:NoTeXIndent")
+else
+  let s:TeXIndent = function(substitute(&indentexpr, "()", "", ""))
+endif
+
 unlet b:did_indent
 runtime indent/r.vim
 let s:RIndent = function(substitute(&indentexpr, "()", "", ""))
new file mode 100644
--- /dev/null
+++ b/runtime/indent/scala.vim
@@ -0,0 +1,609 @@
+" Vim indent file
+" Language:             Scala (http://scala-lang.org/)
+" Original Author:      Stefan Matthias Aust
+" Modifications By:     Derek Wyatt
+" URL:                  https://github.com/derekwyatt/vim-scala
+" Last Change:          2016 Aug 26
+
+if exists("b:did_indent")
+  finish
+endif
+let b:did_indent = 1
+
+setlocal autoindent
+setlocal indentexpr=GetScalaIndent()
+setlocal indentkeys=0{,0},0),!^F,<>>,o,O,e,=case,<CR>
+
+if exists("*GetScalaIndent")
+  finish
+endif
+let s:keepcpo= &cpo
+set cpo&vim
+
+let s:defMatcher = '\%(\%(private\|protected\)\%(\[[^\]]*\]\)\?\s\+\|abstract\s\+\|override\s\+\)*\<def\>'
+let s:funcNameMatcher = '\w\+'
+let s:typeSpecMatcher = '\%(\s*\[\_[^\]]*\]\)'
+let s:defArgMatcher = '\%((\_.\{-})\)'
+let s:returnTypeMatcher = '\%(:\s*\w\+' . s:typeSpecMatcher . '\?\)'
+let g:fullDefMatcher = '^\s*' . s:defMatcher . '\s\+' . s:funcNameMatcher . '\s*' . s:typeSpecMatcher . '\?\s*' . s:defArgMatcher . '\?\s*' . s:returnTypeMatcher . '\?\s*[={]'
+
+function! scala#ConditionalConfirm(msg)
+  if 0
+    call confirm(a:msg)
+  endif
+endfunction
+
+function! scala#GetLine(lnum)
+  let line = substitute(getline(a:lnum), '//.*$', '', '')
+  let line = substitute(line, '"\(.\|\\"\)\{-}"', '""', 'g')
+  return line
+endfunction
+
+function! scala#CountBrackets(line, openBracket, closedBracket)
+  let line = substitute(a:line, '"\(.\|\\"\)\{-}"', '', 'g')
+  let open = substitute(line, '[^' . a:openBracket . ']', '', 'g')
+  let close = substitute(line, '[^' . a:closedBracket . ']', '', 'g')
+  return strlen(open) - strlen(close)
+endfunction
+
+function! scala#CountParens(line)
+  return scala#CountBrackets(a:line, '(', ')')
+endfunction
+
+function! scala#CountCurlies(line)
+  return scala#CountBrackets(a:line, '{', '}')
+endfunction
+
+function! scala#LineEndsInIncomplete(line)
+  if a:line =~ '[.,]\s*$'
+    return 1
+  else
+    return 0
+  endif
+endfunction
+
+function! scala#LineIsAClosingXML(line)
+  if a:line =~ '^\s*</\w'
+    return 1
+  else
+    return 0
+  endif
+endfunction
+
+function! scala#LineCompletesXML(lnum, line)
+  let savedpos = getpos('.')
+  call setpos('.', [savedpos[0], a:lnum, 0, savedpos[3]])
+  let tag = substitute(a:line, '^.*</\([^>]*\)>.*$', '\1', '')
+  let [lineNum, colnum] = searchpairpos('<' . tag . '>', '', '</' . tag . '>', 'Wbn')
+  call setpos('.', savedpos)
+  let pline = scala#GetLine(prevnonblank(lineNum - 1))
+  if pline =~ '=\s*$'
+    return 1
+  else
+    return 0
+  endif
+endfunction
+
+function! scala#IsParentCase()
+  let savedpos = getpos('.')
+  call setpos('.', [savedpos[0], savedpos[1], 0, savedpos[3]])
+  let [l, c] = searchpos('^\s*\%(' . s:defMatcher . '\|\%(\<case\>\)\)', 'bnW')
+  let retvalue = -1
+  if l != 0 && search('\%' . l . 'l\s*\<case\>', 'bnW')
+    let retvalue = l
+  endif
+  call setpos('.', savedpos)
+  return retvalue
+endfunction
+
+function! scala#CurlyMatcher()
+  let matchline = scala#GetLineThatMatchesBracket('{', '}')
+  if scala#CountParens(scala#GetLine(matchline)) < 0
+    let savedpos = getpos('.')
+    call setpos('.', [savedpos[0], matchline, 9999, savedpos[3]])
+    call searchpos('{', 'Wbc')
+    call searchpos(')', 'Wb')
+    let [lnum, colnum] = searchpairpos('(', '', ')', 'Wbn')
+    call setpos('.', savedpos)
+    let line = scala#GetLine(lnum)
+    if line =~ '^\s*' . s:defMatcher
+      return lnum
+    else
+      return matchline
+    endif
+  else
+    return matchline
+  endif
+endfunction
+
+function! scala#GetLineAndColumnThatMatchesCurly()
+  return scala#GetLineAndColumnThatMatchesBracket('{', '}')
+endfunction
+
+function! scala#GetLineAndColumnThatMatchesParen()
+  return scala#GetLineAndColumnThatMatchesBracket('(', ')')
+endfunction
+
+function! scala#GetLineAndColumnThatMatchesBracket(openBracket, closedBracket)
+  let savedpos = getpos('.')
+  let curline = scala#GetLine(line('.'))
+  if curline =~ a:closedBracket . '.*' . a:openBracket . '.*' . a:closedBracket
+    call setpos('.', [savedpos[0], savedpos[1], 0, savedpos[3]])
+    call searchpos(a:closedBracket . '\ze[^' . a:closedBracket . a:openBracket . ']*' . a:openBracket, 'W')
+  else
+    call setpos('.', [savedpos[0], savedpos[1], 9999, savedpos[3]])
+    call searchpos(a:closedBracket, 'Wbc')
+  endif
+  let [lnum, colnum] = searchpairpos(a:openBracket, '', a:closedBracket, 'Wbn')
+  call setpos('.', savedpos)
+  return [lnum, colnum]
+endfunction
+
+function! scala#GetLineThatMatchesCurly()
+  return scala#GetLineThatMatchesBracket('{', '}')
+endfunction
+
+function! scala#GetLineThatMatchesParen()
+  return scala#GetLineThatMatchesBracket('(', ')')
+endfunction
+
+function! scala#GetLineThatMatchesBracket(openBracket, closedBracket)
+  let [lnum, colnum] = scala#GetLineAndColumnThatMatchesBracket(a:openBracket, a:closedBracket)
+  return lnum
+endfunction
+
+function! scala#NumberOfBraceGroups(line)
+  let line = substitute(a:line, '[^()]', '', 'g')
+  if strlen(line) == 0
+    return 0
+  endif
+  let line = substitute(line, '^)*', '', 'g')
+  if strlen(line) == 0
+    return 0
+  endif
+  let line = substitute(line, '^(', '', 'g')
+  if strlen(line) == 0
+    return 0
+  endif
+  let c = 1
+  let counter = 0
+  let groupCount = 0
+  while counter < strlen(line)
+    let char = strpart(line, counter, 1)
+    if char == '('
+      let c = c + 1
+    elseif char == ')'
+      let c = c - 1
+    endif
+    if c == 0
+      let groupCount = groupCount + 1
+    endif
+    let counter = counter + 1
+  endwhile
+  return groupCount
+endfunction
+
+function! scala#MatchesIncompleteDefValr(line)
+  if a:line =~ '^\s*\%(' . s:defMatcher . '\|\<va[lr]\>\).*[=({]\s*$'
+    return 1
+  else
+    return 0
+  endif
+endfunction
+
+function! scala#LineIsCompleteIf(line)
+  if scala#CountBrackets(a:line, '{', '}') == 0 &&
+   \ scala#CountBrackets(a:line, '(', ')') == 0 &&
+   \ a:line =~ '^\s*\<if\>\s*([^)]*)\s*\S.*$'
+    return 1
+  else
+    return 0
+  endif
+endfunction
+
+function! scala#LineCompletesIfElse(lnum, line)
+  if a:line =~ '^\s*\%(\<if\>\|\%(}\s*\)\?\<else\>\)'
+    return 0
+  endif
+  let result = search('^\%(\s*\<if\>\s*(.*).*\n\|\s*\<if\>\s*(.*)\s*\n.*\n\)\%(\s*\<else\>\s*\<if\>\s*(.*)\s*\n.*\n\)*\%(\s*\<else\>\s*\n\|\s*\<else\>[^{]*\n\)\?\%' . a:lnum . 'l', 'Wbn')
+  if result != 0 && scala#GetLine(prevnonblank(a:lnum - 1)) !~ '{\s*$'
+    return result
+  endif
+  return 0
+endfunction
+
+function! scala#GetPrevCodeLine(lnum)
+  " This needs to skip comment lines
+  return prevnonblank(a:lnum - 1)
+endfunction
+
+function! scala#InvertBracketType(openBracket, closedBracket)
+  if a:openBracket == '('
+    return [ '{', '}' ]
+  else
+    return [ '(', ')' ]
+  endif
+endfunction
+
+function! scala#Testhelper(lnum, line, openBracket, closedBracket, iteration)
+  let bracketCount = scala#CountBrackets(a:line, a:openBracket, a:closedBracket)
+  " There are more '}' braces than '{' on this line so it may be completing the function definition
+  if bracketCount < 0
+    let [matchedLNum, matchedColNum] = scala#GetLineAndColumnThatMatchesBracket(a:openBracket, a:closedBracket)
+    if matchedLNum == a:lnum
+      return -1
+    endif
+    let matchedLine = scala#GetLine(matchedLNum)
+    if ! scala#MatchesIncompleteDefValr(matchedLine)
+      let bracketLine = substitute(substitute(matchedLine, '\%' . matchedColNum . 'c.*$', '', ''), '[^{}()]', '', 'g')
+      if bracketLine =~ '}$'
+        return scala#Testhelper(matchedLNum, matchedLine, '{', '}', a:iteration + 1)
+      elseif bracketLine =~ ')$'
+        return scala#Testhelper(matchedLNum, matchedLine, '(', ')', a:iteration + 1)
+      else
+        let prevCodeLNum = scala#GetPrevCodeLine(matchedLNum)
+        if scala#MatchesIncompleteDefValr(scala#GetLine(prevCodeLNum))
+          return prevCodeLNum
+        else
+          return -1
+        endif
+      endif
+    else
+      " return indent value instead
+      return matchedLNum
+    endif
+  " There's an equal number of '{' and '}' on this line so it may be a single line function definition
+  elseif bracketCount == 0
+    if a:iteration == 0
+      let otherBracketType = scala#InvertBracketType(a:openBracket, a:closedBracket)
+      return scala#Testhelper(a:lnum, a:line, otherBracketType[0], otherBracketType[1], a:iteration + 1)
+    else
+      let prevCodeLNum = scala#GetPrevCodeLine(a:lnum)
+      let prevCodeLine = scala#GetLine(prevCodeLNum)
+      if scala#MatchesIncompleteDefValr(prevCodeLine) && prevCodeLine !~ '{\s*$'
+        return prevCodeLNum
+      else
+        let possibleIfElse = scala#LineCompletesIfElse(a:lnum, a:line)
+        if possibleIfElse != 0
+          let defValrLine = prevnonblank(possibleIfElse - 1)
+          let possibleDefValr = scala#GetLine(defValrLine)
+          if scala#MatchesIncompleteDefValr(possibleDefValr) && possibleDefValr =~ '^.*=\s*$'
+            return possibleDefValr
+          else
+            return -1
+          endif
+        else
+          return -1
+        endif
+      endif
+    endif
+  else
+    return -1
+  endif
+endfunction
+
+function! scala#Test(lnum, line, openBracket, closedBracket)
+  return scala#Testhelper(a:lnum, a:line, a:openBracket, a:closedBracket, 0)
+endfunction
+
+function! scala#LineCompletesDefValr(lnum, line)
+  let bracketCount = scala#CountBrackets(a:line, '{', '}')
+  if bracketCount < 0
+    let matchedBracket = scala#GetLineThatMatchesBracket('{', '}')
+    if ! scala#MatchesIncompleteDefValr(scala#GetLine(matchedBracket))
+      let possibleDefValr = scala#GetLine(prevnonblank(matchedBracket - 1))
+      if matchedBracket != -1 && scala#MatchesIncompleteDefValr(possibleDefValr)
+        return 1
+      else
+        return 0
+      endif
+    else
+      return 0
+    endif
+  elseif bracketCount == 0
+    let bracketCount = scala#CountBrackets(a:line, '(', ')')
+    if bracketCount < 0
+      let matchedBracket = scala#GetLineThatMatchesBracket('(', ')')
+      if ! scala#MatchesIncompleteDefValr(scala#GetLine(matchedBracket))
+        let possibleDefValr = scala#GetLine(prevnonblank(matchedBracket - 1))
+        if matchedBracket != -1 && scala#MatchesIncompleteDefValr(possibleDefValr)
+          return 1
+        else
+          return 0
+        endif
+      else
+        return 0
+      endif
+    elseif bracketCount == 0
+      let possibleDefValr = scala#GetLine(prevnonblank(a:lnum - 1))
+      if scala#MatchesIncompleteDefValr(possibleDefValr) && possibleDefValr =~ '^.*=\s*$'
+        return 1
+      else
+        let possibleIfElse = scala#LineCompletesIfElse(a:lnum, a:line)
+        if possibleIfElse != 0
+          let possibleDefValr = scala#GetLine(prevnonblank(possibleIfElse - 1))
+          if scala#MatchesIncompleteDefValr(possibleDefValr) && possibleDefValr =~ '^.*=\s*$'
+            return 2
+          else
+            return 0
+          endif
+        else
+          return 0
+        endif
+      endif
+    else
+      return 0
+    endif
+  endif
+endfunction
+
+function! scala#SpecificLineCompletesBrackets(lnum, openBracket, closedBracket)
+  let savedpos = getpos('.')
+  call setpos('.', [savedpos[0], a:lnum, 9999, savedpos[3]])
+  let retv = scala#LineCompletesBrackets(a:openBracket, a:closedBracket)
+  call setpos('.', savedpos)
+
+  return retv
+endfunction
+
+function! scala#LineCompletesBrackets(openBracket, closedBracket)
+  let savedpos = getpos('.')
+  let offline = 0
+  while offline == 0
+    let [lnum, colnum] = searchpos(a:closedBracket, 'Wb')
+    let [lnumA, colnumA] = searchpairpos(a:openBracket, '', a:closedBracket, 'Wbn')
+    if lnum != lnumA
+      let [lnumB, colnumB] = searchpairpos(a:openBracket, '', a:closedBracket, 'Wbnr')
+      let offline = 1
+    endif
+  endwhile
+  call setpos('.', savedpos)
+  if lnumA == lnumB && colnumA == colnumB
+    return lnumA
+  else
+    return -1
+  endif
+endfunction
+
+function! GetScalaIndent()
+  " Find a non-blank line above the current line.
+  let prevlnum = prevnonblank(v:lnum - 1)
+
+  " Hit the start of the file, use zero indent.
+  if prevlnum == 0
+    return 0
+  endif
+
+  let ind = indent(prevlnum)
+  let originalIndentValue = ind
+  let prevline = scala#GetLine(prevlnum)
+  let curlnum = v:lnum
+  let curline = scala#GetLine(curlnum)
+  if get(g:, 'scala_scaladoc_indent', 0)
+    let star_indent = 2
+  else
+    let star_indent = 1
+  end
+
+  if prevline =~ '^\s*/\*\*'
+    if prevline =~ '\*/\s*$'
+      return ind
+    else
+      return ind + star_indent
+    endif
+  endif
+
+  if curline =~ '^\s*\*'
+    return cindent(curlnum)
+  endif
+
+  " If this line starts with a { then make it indent the same as the previous line
+  if curline =~ '^\s*{'
+    call scala#ConditionalConfirm("1")
+    " Unless, of course, the previous one is a { as well
+    if prevline !~ '^\s*{'
+      call scala#ConditionalConfirm("2")
+      return indent(prevlnum)
+    endif
+  endif
+
+  " '.' continuations
+  if curline =~ '^\s*\.'
+    if prevline =~ '^\s*\.'
+      return ind
+    else
+      return ind + &shiftwidth
+    endif
+  endif
+
+  " Indent html literals
+  if prevline !~ '/>\s*$' && prevline =~ '^\s*<[a-zA-Z][^>]*>\s*$'
+    call scala#ConditionalConfirm("3")
+    return ind + &shiftwidth
+  endif
+
+  " assumes curly braces around try-block
+  if curline =~ '^\s*}\s*\<catch\>'
+    return ind - &shiftwidth
+  elseif curline =~ '^\s*\<catch\>'
+    return ind
+  endif
+
+  " Add a 'shiftwidth' after lines that start a block
+  " If 'if', 'for' or 'while' end with ), this is a one-line block
+  " If 'val', 'var', 'def' end with =, this is a one-line block
+  if (prevline =~ '^\s*\<\%(\%(}\?\s*else\s\+\)\?if\|for\|while\)\>.*[)=]\s*$' && scala#NumberOfBraceGroups(prevline) <= 1)
+        \ || prevline =~ '^\s*' . s:defMatcher . '.*=\s*$'
+        \ || prevline =~ '^\s*\<va[lr]\>.*[=]\s*$'
+        \ || prevline =~ '^\s*\%(}\s*\)\?\<else\>\s*$'
+        \ || prevline =~ '=\s*$'
+    call scala#ConditionalConfirm("4")
+    let ind = ind + &shiftwidth
+  elseif prevline =~ '^\s*\<\%(}\?\s*else\s\+\)\?if\>' && curline =~ '^\s*}\?\s*\<else\>'
+    return ind
+  endif
+
+  let lineCompletedBrackets = 0
+  let bracketCount = scala#CountBrackets(prevline, '{', '}')
+  if bracketCount > 0 || prevline =~ '.*{\s*$'
+    call scala#ConditionalConfirm("5b")
+    let ind = ind + &shiftwidth
+  elseif bracketCount < 0
+    call scala#ConditionalConfirm("6b")
+    " if the closing brace actually completes the braces entirely, then we
+    " have to indent to line that started the whole thing
+    let completeLine = scala#LineCompletesBrackets('{', '}')
+    if completeLine != -1
+      call scala#ConditionalConfirm("8b")
+      let prevCompleteLine = scala#GetLine(prevnonblank(completeLine - 1))
+      " However, what actually started this part looks like it was a function
+      " definition, so we need to indent to that line instead.  This is
+      " actually pretty weak at the moment.
+      if prevCompleteLine =~ '=\s*$'
+        call scala#ConditionalConfirm("9b")
+        let ind = indent(prevnonblank(completeLine - 1))
+      else
+        call scala#ConditionalConfirm("10b")
+        let ind = indent(completeLine)
+      endif
+    else
+      let lineCompletedBrackets = 1
+    endif
+  endif
+
+  if ind == originalIndentValue
+    let bracketCount = scala#CountBrackets(prevline, '(', ')')
+    if bracketCount > 0 || prevline =~ '.*(\s*$'
+      call scala#ConditionalConfirm("5a")
+      let ind = ind + &shiftwidth
+    elseif bracketCount < 0
+      call scala#ConditionalConfirm("6a")
+      " if the closing brace actually completes the braces entirely, then we
+      " have to indent to line that started the whole thing
+      let completeLine = scala#LineCompletesBrackets('(', ')')
+      if completeLine != -1 && prevline !~ '^.*{\s*$'
+        call scala#ConditionalConfirm("8a")
+        let prevCompleteLine = scala#GetLine(prevnonblank(completeLine - 1))
+        " However, what actually started this part looks like it was a function
+        " definition, so we need to indent to that line instead.  This is
+        " actually pretty weak at the moment.
+        if prevCompleteLine =~ '=\s*$'
+          call scala#ConditionalConfirm("9a")
+          let ind = indent(prevnonblank(completeLine - 1))
+        else
+          call scala#ConditionalConfirm("10a")
+          let ind = indent(completeLine)
+        endif
+      else
+        " This is the only part that's different from from the '{', '}' one below
+        " Yup... some refactoring is necessary at some point.
+        let ind = ind + (bracketCount * &shiftwidth)
+        let lineCompletedBrackets = 1
+      endif
+    endif
+  endif
+
+  if curline =~ '^\s*}\?\s*\<else\>\%(\s\+\<if\>\s*(.*)\)\?\s*{\?\s*$' &&
+   \ ! scala#LineIsCompleteIf(prevline) &&
+   \ prevline !~ '^.*}\s*$'
+    let ind = ind - &shiftwidth
+  endif
+
+  " Subtract a 'shiftwidth' on '}' or html
+  let curCurlyCount = scala#CountCurlies(curline)
+  if curCurlyCount < 0
+    call scala#ConditionalConfirm("14a")
+    let matchline = scala#CurlyMatcher()
+    return indent(matchline)
+  elseif curline =~ '^\s*</[a-zA-Z][^>]*>'
+    call scala#ConditionalConfirm("14c")
+    return ind - &shiftwidth
+  endif
+
+  let prevParenCount = scala#CountParens(prevline)
+  if prevline =~ '^\s*\<for\>.*$' && prevParenCount > 0
+    call scala#ConditionalConfirm("15")
+    let ind = indent(prevlnum) + 5
+  endif
+
+  let prevCurlyCount = scala#CountCurlies(prevline)
+  if prevCurlyCount == 0 && prevline =~ '^.*\%(=>\|⇒\)\s*$' && prevline !~ '^\s*this\s*:.*\%(=>\|⇒\)\s*$' && curline !~ '^\s*\<case\>'
+    call scala#ConditionalConfirm("16")
+    let ind = ind + &shiftwidth
+  endif
+
+  if ind == originalIndentValue && curline =~ '^\s*\<case\>'
+    call scala#ConditionalConfirm("17")
+    let parentCase = scala#IsParentCase()
+    if parentCase != -1
+      call scala#ConditionalConfirm("17a")
+      return indent(parentCase)
+    endif
+  endif
+
+  if prevline =~ '^\s*\*/'
+   \ || prevline =~ '*/\s*$'
+    call scala#ConditionalConfirm("18")
+    let ind = ind - star_indent
+  endif
+
+  if scala#LineEndsInIncomplete(prevline)
+    call scala#ConditionalConfirm("19")
+    return ind
+  endif
+
+  if scala#LineIsAClosingXML(prevline)
+    if scala#LineCompletesXML(prevlnum, prevline)
+      call scala#ConditionalConfirm("20a")
+      return ind - &shiftwidth
+    else
+      call scala#ConditionalConfirm("20b")
+      return ind
+    endif
+  endif
+
+  if ind == originalIndentValue
+    "let indentMultiplier = scala#LineCompletesDefValr(prevlnum, prevline)
+    "if indentMultiplier != 0
+    "  call scala#ConditionalConfirm("19a")
+    "  let ind = ind - (indentMultiplier * &shiftwidth)
+    let defValrLine = scala#Test(prevlnum, prevline, '{', '}')
+    if defValrLine != -1
+      call scala#ConditionalConfirm("21a")
+      let ind = indent(defValrLine)
+    elseif lineCompletedBrackets == 0
+      call scala#ConditionalConfirm("21b")
+      if scala#GetLine(prevnonblank(prevlnum - 1)) =~ '^.*\<else\>\s*\%(//.*\)\?$'
+        call scala#ConditionalConfirm("21c")
+        let ind = ind - &shiftwidth
+      elseif scala#LineCompletesIfElse(prevlnum, prevline)
+        call scala#ConditionalConfirm("21d")
+        let ind = ind - &shiftwidth
+      elseif scala#CountParens(curline) < 0 && curline =~ '^\s*)' && scala#GetLine(scala#GetLineThatMatchesBracket('(', ')')) =~ '.*(\s*$'
+        " Handles situations that look like this:
+        "
+        "   val a = func(
+        "     10
+        "   )
+        "
+        " or
+        "
+        "   val a = func(
+        "     10
+        "   ).somethingHere()
+        call scala#ConditionalConfirm("21e")
+        let ind = ind - &shiftwidth
+      endif
+    endif
+  endif
+
+  call scala#ConditionalConfirm("returning " . ind)
+
+  return ind
+endfunction
+
+let &cpo = s:keepcpo
+unlet s:keepcpo
+
+" vim:set sw=2 sts=2 ts=8 et:
+" vim600:fdm=marker fdl=1 fdc=0:
--- a/runtime/keymap/pinyin.vim
+++ b/runtime/keymap/pinyin.vim
@@ -1,5 +1,5 @@
 " Vim Keymap file for Hanyu Pinyin tone marks through numbers.
-" Maintainer: Fredrik Roubert <roubert@df.lth.se>
+" Maintainer: Fredrik Roubert <fredrik@roubert.name>
 " Last Changed: February 15, 2004
 
 " All characters are given literally.
--- a/runtime/optwin.vim
+++ b/runtime/optwin.vim
@@ -1,7 +1,7 @@
 " These commands create the option window.
 "
 " Maintainer:	Bram Moolenaar <Bram@vim.org>
-" Last Change:	2016 Aug 12
+" Last Change:	2016 Aug 21
 
 " If there already is an option window, jump to that one.
 if bufwinnr("option-window") > 0
@@ -1203,8 +1203,8 @@ endif
 if has("langmap")
   call append("$", "langmap\tlist of characters that are translated in Normal mode")
   call <SID>OptionG("lmap", &lmap)
-  call append("$", "langnoremap\tdon't apply 'langmap' to mapped characters")
-  call <SID>BinOptionG("lnr", &lnr)
+  call append("$", "langremap\tapply 'langmap' to mapped characters")
+  call <SID>BinOptionG("lrm", &lrm)
 endif
 if has("xim")
   call append("$", "imdisable\twhen set never use IM; overrules following IM options")
--- a/runtime/pack/dist/opt/matchit/plugin/matchit.vim
+++ b/runtime/pack/dist/opt/matchit/plugin/matchit.vim
@@ -1,8 +1,9 @@
 "  matchit.vim: (global plugin) Extended "%" matching
-"  Last Change: Fri Jan 25 10:00 AM 2008 EST
+"  Last Change: 2016 Aug 21
 "  Maintainer:  Benji Fisher PhD   <benji@member.AMS.org>
 "  Version:     1.13.2, for Vim 6.3+
 "		Fix from Fernando Torres included.
+"		Improvement from Ken Takata included.
 "  URL:		http://www.vim.org/script.php?script_id=39
 
 " Documentation:
@@ -44,6 +45,7 @@ endif
 let loaded_matchit = 1
 let s:last_mps = ""
 let s:last_words = ":"
+let s:patBR = ""
 
 let s:save_cpo = &cpo
 set cpo&vim
@@ -121,8 +123,8 @@ function! s:Match_wrapper(word, forward,
     execute "let match_words =" b:match_words
   endif
 " Thanks to Preben "Peppe" Guldberg and Bram Moolenaar for this suggestion!
-  if (match_words != s:last_words) || (&mps != s:last_mps) ||
-    \ exists("b:match_debug")
+  if (match_words != s:last_words) || (&mps != s:last_mps)
+      \ || exists("b:match_debug")
     let s:last_mps = &mps
     " The next several lines were here before
     " BF started messing with this script.
@@ -148,6 +150,10 @@ function! s:Match_wrapper(word, forward,
     if exists("b:match_debug")
       let b:match_pat = s:pat
     endif
+    " Reconstruct the version with unresolved backrefs.
+    let s:patBR = substitute(match_words.',',
+      \ s:notslash.'\zs[,:]*,[,:]*', ',', 'g')
+    let s:patBR = substitute(s:patBR, s:notslash.'\zs:\{2,}', ':', 'g')
   endif
 
   " Second step:  set the following local variables:
@@ -192,14 +198,10 @@ function! s:Match_wrapper(word, forward,
   " group = colon-separated list of patterns, one of which matches
   "       = ini:mid:fin or ini:fin
   "
-  " Reconstruct the version with unresolved backrefs.
-  let patBR = substitute(match_words.',',
-    \ s:notslash.'\zs[,:]*,[,:]*', ',', 'g')
-  let patBR = substitute(patBR, s:notslash.'\zs:\{2,}', ':', 'g')
   " Now, set group and groupBR to the matching group: 'if:endif' or
   " 'while:endwhile' or whatever.  A bit of a kluge:  s:Choose() returns
   " group . "," . groupBR, and we pick it apart.
-  let group = s:Choose(s:pat, matchline, ",", ":", prefix, suffix, patBR)
+  let group = s:Choose(s:pat, matchline, ",", ":", prefix, suffix, s:patBR)
   let i = matchend(group, s:notslash . ",")
   let groupBR = strpart(group, i)
   let group = strpart(group, 0, i-1)
@@ -661,6 +663,7 @@ fun! s:MultiMatch(spflag, mode)
     \ exists("b:match_debug")
     let s:last_words = match_words
     let s:last_mps = &mps
+    let match_words = match_words . (strlen(match_words) ? "," : "") . default
     if match_words !~ s:notslash . '\\\d'
       let s:do_BR = 0
       let s:pat = match_words
@@ -668,8 +671,8 @@ fun! s:MultiMatch(spflag, mode)
       let s:do_BR = 1
       let s:pat = s:ParseWords(match_words)
     endif
-    let s:all = '\%(' . substitute(s:pat . (strlen(s:pat)?",":"") . default,
-      \	'[,:]\+','\\|','g') . '\)'
+    let s:all = '\%(' . substitute(s:pat . (strlen(s:pat) ? "," : "") . default,
+	\ '[,:]\+', '\\|', 'g') . '\)'
     if exists("b:match_debug")
       let b:match_pat = s:pat
     endif
--- a/runtime/syntax/fortran.vim
+++ b/runtime/syntax/fortran.vim
@@ -1,7 +1,7 @@
 " Vim syntax file
 " Language:	Fortran 2008 (and older: Fortran 2003, 95, 90, and 77)
-" Version:	0.97
-" Last Change:	2016 Feb. 26
+" Version:	0.98
+" Last Change:	2016 Aug. 26
 " Maintainer:	Ajit J. Thakkar <ajit@unb.ca>; <http://www2.unb.ca/~ajit/>
 " Usage:	For instructions, do :help fortran-syntax from Vim
 " Credits:
@@ -10,7 +10,8 @@
 "  in chronological order, by:
 "  Andrej Panjkov, Bram Moolenaar, Thomas Olsen, Michael Sternberg, Christian Reile,
 "  Walter Dieudonné, Alexander Wagner, Roman Bertle, Charles Rendleman,
-"  Andrew Griffiths, Joe Krahn, Hendrik Merx, Matt Thompson, and Jan Hermann.
+"  Andrew Griffiths, Joe Krahn, Hendrik Merx, Matt Thompson, Jan Hermann,
+"  Stefano Zaghi and Vishnu Krishnan.
 
 if exists("b:current_syntax")
   finish
@@ -108,6 +109,7 @@ syn match fortranUnitHeader	"\<subroutin
 syn keyword fortranCall		call
 syn match fortranUnitHeader	"\<function\>"
 syn match fortranUnitHeader	"\<program\>"
+syn match fortranUnitHeader	"\<block\>"
 syn keyword fortranKeyword	return stop
 syn keyword fortranConditional	else then
 syn match fortranConditional	"\<if\>"
@@ -208,6 +210,7 @@ syn match fortranStorageClass	"\<kind\s*
 syn match fortranStorageClass	"\<len\s*="me=s+3
 
 syn match fortranUnitHeader	"\<module\>"
+syn match fortranUnitHeader	"\<submodule\>"
 syn keyword fortranUnitHeader	use only contains
 syn keyword fortranUnitHeader	result operator assignment
 syn match fortranUnitHeader	"\<interface\>"
@@ -231,8 +234,10 @@ syn match fortranIntrinsic	"\<kind\>\s*[
 syn match  fortranUnitHeader	"\<end\s*function"
 syn match  fortranUnitHeader	"\<end\s*interface"
 syn match  fortranUnitHeader	"\<end\s*module"
+syn match  fortranUnitHeader	"\<end\s*submodule"
 syn match  fortranUnitHeader	"\<end\s*program"
 syn match  fortranUnitHeader	"\<end\s*subroutine"
+syn match  fortranUnitHeader	"\<end\s*block"
 syn match  fortranRepeat	"\<end\s*do"
 syn match  fortranConditional	"\<end\s*where"
 syn match  fortranConditional	"\<select\s*case"
@@ -267,6 +272,7 @@ syn match fortranRepeat		"\<end\s*forall
 syn keyword fortranIntrinsic	null cpu_time
 syn match fortranType			"\<elemental\>"
 syn match fortranType			"\<pure\>"
+syn match fortranType			"\<impure\>"
 if exists("fortran_more_precise")
   syn match fortranConstructName "\(\<end\s*forall\s\+\)\@<=\a\w*\>"
 endif
@@ -286,8 +292,9 @@ if b:fortran_dialect == "f08"
 
   syn keyword fortranReadWrite	flush wait
   syn keyword fortranIO 	      decimal round iomsg
-  syn keyword fortranType             asynchronous nopass non_overridable pass protected volatile abstract extends import
+  syn keyword fortranType             asynchronous nopass non_overridable pass protected volatile extends import
   syn keyword fortranType             non_intrinsic value bind deferred generic final enumerator
+  syn match fortranType               "\<abstract\>"
   syn match fortranType               "\<class\>"
   syn match fortranType               "\<associate\>"
   syn match fortranType               "\<end\s*associate"
@@ -305,6 +312,7 @@ if b:fortran_dialect == "f08"
   syn keyword fortranIntrinsic        bge bgt ble blt dshiftl dshiftr findloc iall iany iparity image_index lcobound ucobound maskl maskr num_images parity popcnt poppar shifta shiftl shiftr this_image
   syn keyword fortranIO               newunit
   syn keyword fortranType             contiguous
+  syn keyword fortranRepeat           concurrent
 
 " CUDA fortran
   syn match fortranTypeCUDA           "\<attributes\>"
@@ -383,20 +391,22 @@ if exists("fortran_fold")
 
   if (b:fortran_fixed_source == 1)
     syn region fortranProgram transparent fold keepend start="^\s*program\s\+\z(\a\w*\)" skip="^\([!c*]\|\s*#\).*$" excludenl end="\<end\s*\(program\(\s\+\z1\>\)\=\|$\)" contains=ALLBUT,fortranModule
+    syn region fortranModule transparent fold keepend start="^\s*submodule\s\+(\a\w*\s*\(:\a\w*\s*\)*)\s*\z\(\a\w*\)" skip="^\([!c*]\|\s*#\).*$" excludenl end="\<end\s*\(submodule\(\s\+\z1\>\)\=\|$\)" contains=ALLBUT,fortranProgram,fortranModule
     syn region fortranModule transparent fold keepend start="^\s*module\s\+\(procedure\)\@!\z(\a\w*\)" skip="^\([!c*]\|\s*#\).*$" excludenl end="\<end\s*\(module\(\s\+\z1\>\)\=\|$\)" contains=ALLBUT,fortranProgram
-    syn region fortranFunction transparent fold keepend extend start="^\s*\(elemental \|pure \|recursive \)\=\s*\(\(\(real \|integer \|logical \|complex \|double \s*precision \)\s*\((\(\s*kind\s*=\)\=\s*\w\+\s*)\)\=\)\|type\s\+(\s*\w\+\s*) \|character \((\(\s*len\s*=\)\=\s*\d\+\s*)\|(\(\s*kind\s*=\)\=\s*\w\+\s*)\)\=\)\=\s*function\s\+\z(\a\w*\)" skip="^\([!c*]\|\s*#\).*$" excludenl end="\<end\s*\($\|function\(\s\+\z1\>\)\=\)" contains=ALLBUT,fortranProgram,fortranModule
-    syn region fortranSubroutine transparent fold keepend extend start="^\s*\(elemental \|pure \|recursive \)\=\s*subroutine\s\+\z(\a\w*\)" skip="^\([!c*]\|\s*#\).*$" excludenl end="\<end\s*\($\|subroutine\(\s\+\z1\>\)\=\)" contains=ALLBUT,fortranProgram,fortranModule
+    syn region fortranFunction transparent fold keepend extend start="^\s*\(elemental \|pure \|impure \|module \|recursive \)\=\s*\(\(\(real \|integer \|logical \|complex \|double \s*precision \)\s*\((\(\s*kind\s*=\)\=\s*\w\+\s*)\)\=\)\|type\s\+(\s*\w\+\s*) \|character \((\(\s*len\s*=\)\=\s*\d\+\s*)\|(\(\s*kind\s*=\)\=\s*\w\+\s*)\)\=\)\=\s*function\s\+\z(\a\w*\)" skip="^\([!c*]\|\s*#\).*$" excludenl end="\<end\s*\($\|function\(\s\+\z1\>\)\=\)" contains=ALLBUT,fortranProgram,fortranModule
+    syn region fortranSubroutine transparent fold keepend extend start="^\s*\(elemental \|pure \|impure \|module \|recursive \)\=\s*subroutine\s\+\z(\a\w*\)" skip="^\([!c*]\|\s*#\).*$" excludenl end="\<end\s*\($\|subroutine\(\s\+\z1\>\)\=\)" contains=ALLBUT,fortranProgram,fortranModule
     syn region fortranBlockData transparent fold keepend start="\<block\s*data\(\s\+\z(\a\w*\)\)\=" skip="^\([!c*]\|\s*#\).*$" excludenl end="\<end\s*\($\|block\s*data\(\s\+\z1\>\)\=\)" contains=ALLBUT,fortranProgram,fortranModule,fortranSubroutine,fortranFunction,fortran77Loop,fortranCase,fortran90Loop,fortranIfBlock
-    syn region fortranInterface transparent fold keepend extend start="^\s*interface\>" skip="^\([!c*]\|\s*#\).*$" excludenl end="\<end\s*interface\>" contains=ALLBUT,fortranProgram,fortranModule,fortran77Loop,fortranCase,fortran90Loop,fortranIfBlock
-    syn region fortranTypeDef transparent fold keepend extend start="^\s*type\s*\(,\s*\(public\|private\)\)\=\s*::" skip="^\([!c*]\|\s*#\).*$" excludenl end="\<end\s*type\>" contains=ALLBUT,fortranProgram,fortranModule,fortran77Loop,fortranCase,fortran90Loop,fortranIfBlock
+    syn region fortranInterface transparent fold keepend extend start="^\s*\(abstract \)\=\s*interface\>" skip="^\([!c*]\|\s*#\).*$" excludenl end="\<end\s*interface\>" contains=ALLBUT,fortranProgram,fortranModule,fortran77Loop,fortranCase,fortran90Loop,fortranIfBlock
+    syn region fortranTypeDef transparent fold keepend extend start="^\s*type\s*\(,\s*\(public\|private\|abstract\)\)\=\s*::" skip="^\([!c*]\|\s*#\).*$" excludenl end="\<end\s*type\>" contains=ALLBUT,fortranProgram,fortranModule,fortran77Loop,fortranCase,fortran90Loop,fortranIfBlock,fortranInterface
   else
     syn region fortranProgram transparent fold keepend start="^\s*program\s\+\z(\a\w*\)" skip="^\s*[!#].*$" excludenl end="\<end\s*\(program\(\s\+\z1\>\)\=\|$\)" contains=ALLBUT,fortranModule
+    syn region fortranModule transparent fold keepend start="^\s*submodule\s\+(\a\w*\s*\(:\a\w*\s*\)*)\s*\z\(\a\w*\)" skip="^\s*[!#].*$" excludenl end="\<end\s*\(submodule\(\s\+\z1\>\)\=\|$\)" contains=ALLBUT,fortranProgram,fortranModule
     syn region fortranModule transparent fold keepend start="^\s*module\s\+\(procedure\)\@!\z(\a\w*\)" skip="^\s*[!#].*$" excludenl end="\<end\s*\(module\(\s\+\z1\>\)\=\|$\)" contains=ALLBUT,fortranProgram
-    syn region fortranFunction transparent fold keepend extend start="^\s*\(elemental \|pure \|recursive \)\=\s*\(\(\(real \|integer \|logical \|complex \|double \s*precision \)\s*\((\(\s*kind\s*=\)\=\s*\w\+\s*)\)\=\)\|type\s\+(\s*\w\+\s*) \|character \((\(\s*len\s*=\)\=\s*\d\+\s*)\|(\(\s*kind\s*=\)\=\s*\w\+\s*)\)\=\)\=\s*function\s\+\z(\a\w*\)" skip="^\s*[!#].*$" excludenl end="\<end\s*\($\|function\(\s\+\z1\>\)\=\)" contains=ALLBUT,fortranProgram,fortranModule
-    syn region fortranSubroutine transparent fold keepend extend start="^\s*\(elemental \|pure \|recursive \)\=\s*subroutine\s\+\z(\a\w*\)" skip="^\s*[!#].*$" excludenl end="\<end\s*\($\|subroutine\(\s\+\z1\>\)\=\)" contains=ALLBUT,fortranProgram,fortranModule
+    syn region fortranFunction transparent fold keepend extend start="^\s*\(elemental \|pure \|impure \|module \|recursive \)\=\s*\(\(\(real \|integer \|logical \|complex \|double \s*precision \)\s*\((\(\s*kind\s*=\)\=\s*\w\+\s*)\)\=\)\|type\s\+(\s*\w\+\s*) \|character \((\(\s*len\s*=\)\=\s*\d\+\s*)\|(\(\s*kind\s*=\)\=\s*\w\+\s*)\)\=\)\=\s*function\s\+\z(\a\w*\)" skip="^\s*[!#].*$" excludenl end="\<end\s*\($\|function\(\s\+\z1\>\)\=\)" contains=ALLBUT,fortranProgram,fortranModule
+    syn region fortranSubroutine transparent fold keepend extend start="^\s*\(elemental \|pure \|impure \|module \|recursive \)\=\s*subroutine\s\+\z(\a\w*\)" skip="^\s*[!#].*$" excludenl end="\<end\s*\($\|subroutine\(\s\+\z1\>\)\=\)" contains=ALLBUT,fortranProgram,fortranModule
     syn region fortranBlockData transparent fold keepend start="\<block\s*data\(\s\+\z(\a\w*\)\)\=" skip="^\s*[!#].*$" excludenl end="\<end\s*\($\|block\s*data\(\s\+\z1\>\)\=\)" contains=ALLBUT,fortranProgram,fortranModule,fortranSubroutine,fortranFunction,fortran77Loop,fortranCase,fortran90Loop,fortranIfBlock
-    syn region fortranInterface transparent fold keepend extend start="^\s*interface\>" skip="^\s*[!#].*$" excludenl end="\<end\s*interface\>" contains=ALLBUT,fortranProgram,fortranModule,fortran77Loop,fortranCase,fortran90Loop,fortranIfBlock
-    syn region fortranTypeDef transparent fold keepend extend start="^\s*type\s*\(,\s*\(public\|private\)\)\=\s*::" skip="^\s*[!#].*$" excludenl end="\<end\s*type\>" contains=ALLBUT,fortranProgram,fortranModule,fortran77Loop,fortranCase,fortran90Loop,fortranIfBlock
+    syn region fortranInterface transparent fold keepend extend start="^\s*\(abstract \)\=\s*interface\>" skip="^\s*[!#].*$" excludenl end="\<end\s*interface\>" contains=ALLBUT,fortranProgram,fortranModule,fortran77Loop,fortranCase,fortran90Loop,fortranIfBlock
+    syn region fortranTypeDef transparent fold keepend extend start="^\s*type\s*\(,\s*\(public\|private\|abstract\)\)\=\s*::" skip="^\s*[!#].*$" excludenl end="\<end\s*type\>" contains=ALLBUT,fortranProgram,fortranModule,fortran77Loop,fortranCase,fortran90Loop,fortranIfBlock,fortranInterface
   endif
 
   if exists("fortran_fold_conditionals")
--- a/runtime/syntax/muttrc.vim
+++ b/runtime/syntax/muttrc.vim
@@ -2,10 +2,9 @@
 " Language:	Mutt setup files
 " Original:	Preben 'Peppe' Guldberg <peppe-vim@wielders.org>
 " Maintainer:	Kyle Wheeler <kyle-muttrc.vim@memoryhole.net>
-" Last Change:	2 Feb 2012
+" Last Change:	18 August 2016
 
-" This file covers mutt version 1.5.21 (and most of the mercurial tip)
-" Included are also a few features from 1.4.2.1
+" This file covers mutt version 1.7.0
 
 " For version 5.x: Clear all syntax items
 " For version 6.x: Quit when a syntax file was already loaded
@@ -98,7 +97,7 @@ syn match muttrcSetNumAssignment contain
 
 " Now catch some email addresses and headers (purified version from mail.vim)
 syn match muttrcEmail		"[a-zA-Z0-9._-]\+@[a-zA-Z0-9./-]\+"
-syn match muttrcHeader		"\<\%(From\|To\|C[Cc]\|B[Cc][Cc]\|Reply-To\|Subject\|Return-Path\|Received\|Date\|Replied\|Attach\)\>:\="
+syn match muttrcHeader		"\<\c\%(From\|To\|C[Cc]\|B[Cc][Cc]\|Reply-To\|Subject\|Return-Path\|Received\|Date\|Replied\|Attach\)\>:\="
 
 syn match   muttrcKeySpecial	contained +\%(\\[Cc'"]\|\^\|\\[01]\d\{2}\)+
 syn match   muttrcKey		contained "\S\+"			contains=muttrcKeySpecial,muttrcKeyName
@@ -109,143 +108,146 @@ syn match   muttrcKeyName	contained "\\[
 syn match   muttrcKeyName	contained "\c<\%(BackSpace\|BackTab\|Delete\|Down\|End\|Enter\|Esc\|Home\|Insert\|Left\|PageDown\|PageUp\|Return\|Right\|Space\|Tab\|Up\)>"
 syn match   muttrcKeyName	contained "<F[0-9]\+>"
 
-syn keyword muttrcVarBool	skipwhite contained allow_8bit allow_ansi arrow_cursor ascii_chars askbcc askcc attach_split auto_tag autoedit beep beep_new nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-syn keyword muttrcVarBool	skipwhite contained bounce_delivered braille_friendly check_new check_mbox_size nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-syn keyword muttrcVarBool	skipwhite contained collapse_unread confirmappend confirmcreate crypt_autoencrypt nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-syn keyword muttrcVarBool	skipwhite contained crypt_autopgp crypt_autosign crypt_autosmime crypt_replyencrypt nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-syn keyword muttrcVarBool	skipwhite contained crypt_replysign crypt_replysignencrypted crypt_timestamp nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-syn keyword muttrcVarBool	skipwhite contained crypt_use_gpgme crypt_use_pka delete_untag digest_collapse duplicate_threads nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-syn keyword muttrcVarBool	skipwhite contained edit_hdrs edit_headers encode_from envelope_from fast_reply nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-syn keyword muttrcVarBool	skipwhite contained fcc_clear followup_to force_name forw_decode nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-syn keyword muttrcVarBool	skipwhite contained forw_decrypt forw_quote forward_decode forward_decrypt nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-syn keyword muttrcVarBool	skipwhite contained forward_quote hdrs header help hidden_host hide_limited nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-syn keyword muttrcVarBool	skipwhite contained hide_missing hide_thread_subject hide_top_limited nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-syn keyword muttrcVarBool	skipwhite contained hide_top_missing honor_disposition ignore_linear_white_space ignore_list_reply_to imap_check_subscribed nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-syn keyword muttrcVarBool	skipwhite contained imap_list_subscribed imap_passive imap_peek imap_servernoise nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-syn keyword muttrcVarBool	skipwhite contained implicit_autoview include_onlyfirst keep_flagged nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-syn keyword muttrcVarBool	skipwhite contained mailcap_sanitize maildir_header_cache_verify maildir_trash nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-syn keyword muttrcVarBool	skipwhite contained mark_old markers menu_move_off menu_scroll message_cache_clean meta_key nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-syn keyword muttrcVarBool	skipwhite contained metoo mh_purge mime_forward_decode narrow_tree pager_stop nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-syn keyword muttrcVarBool	skipwhite contained pgp_auto_decode pgp_auto_traditional pgp_autoencrypt nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-syn keyword muttrcVarBool	skipwhite contained pgp_autoinline pgp_autosign pgp_check_exit nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-syn keyword muttrcVarBool	skipwhite contained pgp_create_traditional pgp_ignore_subkeys pgp_long_ids nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-syn keyword muttrcVarBool	skipwhite contained pgp_replyencrypt pgp_replyinline pgp_replysign nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-syn keyword muttrcVarBool	skipwhite contained pgp_replysignencrypted pgp_retainable_sigs pgp_show_unusable nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-syn keyword muttrcVarBool	skipwhite contained pgp_strict_enc pgp_use_gpg_agent pipe_decode pipe_split nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-syn keyword muttrcVarBool	skipwhite contained pop_auth_try_all pop_last print_decode print_split nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-syn keyword muttrcVarBool	skipwhite contained prompt_after read_only reply_self resolve reverse_alias nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-syn keyword muttrcVarBool	skipwhite contained reverse_name reverse_realname rfc2047_parameters save_address nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-syn keyword muttrcVarBool	skipwhite contained save_empty save_name score sig_dashes sig_on_top nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-syn keyword muttrcVarBool	skipwhite contained smart_wrap smime_ask_cert_label smime_decrypt_use_default_key nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-syn keyword muttrcVarBool	skipwhite contained smime_is_default sort_re ssl_force_tls ssl_use_sslv2 nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-syn keyword muttrcVarBool	skipwhite contained ssl_use_sslv3 ssl_use_tlsv1 ssl_usesystemcerts ssl_verify_dates ssl_verify_host status_on_top nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-syn keyword muttrcVarBool	skipwhite contained strict_mime strict_threads suspend text_flowed thorough_search nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-syn keyword muttrcVarBool	skipwhite contained thread_received tilde uncollapse_jump use_8bitmime nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-syn keyword muttrcVarBool	skipwhite contained use_domain use_envelope_from use_from use_idn use_ipv6 nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-syn keyword muttrcVarBool	skipwhite contained user_agent wait_key weed wrap_search write_bcc nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarBool	skipwhite contained 
+			\ allow_8bit allow_ansi arrow_cursor ascii_chars askbcc askcc attach_split
+			\ auto_tag autoedit beep beep_new bounce_delivered braille_friendly
+			\ check_mbox_size check_new collapse_unread confirmappend confirmcreate
+			\ crypt_autoencrypt crypt_autopgp crypt_autosign crypt_autosmime
+			\ crypt_confirmhook crypt_opportunistic_encrypt crypt_replyencrypt
+			\ crypt_replysign crypt_replysignencrypted crypt_timestamp crypt_use_gpgme
+			\ crypt_use_pka delete_untag digest_collapse duplicate_threads edit_hdrs
+			\ edit_headers encode_from envelope_from fast_reply fcc_clear followup_to
+			\ force_name forw_decode forw_decrypt forw_quote forward_decode forward_decrypt
+			\ forward_quote hdrs header help hidden_host hide_limited hide_missing
+			\ hide_thread_subject hide_top_limited hide_top_missing honor_disposition
+			\ idn_decode idn_encode ignore_linear_white_space ignore_list_reply_to
+			\ imap_check_subscribed imap_list_subscribed imap_passive imap_peek
+			\ imap_servernoise implicit_autoview include_onlyfirst keep_flagged
+			\ mail_check_recent mail_check_stats mailcap_sanitize maildir_check_cur
+			\ maildir_header_cache_verify maildir_trash mark_old markers menu_move_off
+			\ menu_scroll message_cache_clean meta_key metoo mh_purge mime_forward_decode
+			\ narrow_tree pager_stop pgp_auto_decode pgp_auto_traditional pgp_autoencrypt
+			\ pgp_autoinline pgp_autosign pgp_check_exit pgp_create_traditional
+			\ pgp_ignore_subkeys pgp_long_ids pgp_replyencrypt pgp_replyinline pgp_replysign
+			\ pgp_replysignencrypted pgp_retainable_sigs pgp_show_unusable pgp_strict_enc
+			\ pgp_use_gpg_agent pipe_decode pipe_split pop_auth_try_all pop_last
+			\ postpone_encrypt postpone_encrypt_as print_decode print_split prompt_after
+			\ read_only reflow_space_quotes reflow_text reflow_wrap reply_self resolve
+			\ resume_draft_files resume_edited_draft_files reverse_alias reverse_name
+			\ reverse_realname rfc2047_parameters save_address save_empty save_name score
+			\ sidebar_folder_indent sidebar_new_mail_only sidebar_next_new_wrap
+			\ sidebar_short_path sidebar_sort sidebar_visible sig_dashes sig_on_top
+			\ smart_wrap smime_ask_cert_label smime_decrypt_use_default_key smime_is_default
+			\ sort_re ssl_force_tls ssl_use_sslv2 ssl_use_sslv3 ssl_use_tlsv1
+			\ ssl_usesystemcerts ssl_verify_dates ssl_verify_host status_on_top strict_mime
+			\ strict_threads suspend text_flowed thorough_search thread_received tilde
+			\ ts_enabled uncollapse_jump use_8bitmime use_domain use_envelope_from use_from
+			\ use_idn use_ipv6 user_agent wait_key weed wrap_search write_bcc
+			\ nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
 
-syn keyword muttrcVarBool	skipwhite contained noallow_8bit noallow_ansi noarrow_cursor noascii_chars noaskbcc nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-syn keyword muttrcVarBool	skipwhite contained noaskcc noattach_split noauto_tag noautoedit nobeep nobeep_new nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-syn keyword muttrcVarBool	skipwhite contained nobounce_delivered nobraille_friendly nocheck_new nocollapse_unread nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-syn keyword muttrcVarBool	skipwhite contained noconfirmappend noconfirmcreate nocrypt_autoencrypt nocrypt_autopgp nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-syn keyword muttrcVarBool	skipwhite contained nocrypt_autosign nocrypt_autosmime nocrypt_replyencrypt nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-syn keyword muttrcVarBool	skipwhite contained nocrypt_replysign nocrypt_replysignencrypted nocrypt_timestamp nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-syn keyword muttrcVarBool	skipwhite contained nocrypt_use_gpgme nodelete_untag nodigest_collapse noduplicate_threads nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-syn keyword muttrcVarBool	skipwhite contained noedit_hdrs noedit_headers noencode_from noenvelope_from nofast_reply nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-syn keyword muttrcVarBool	skipwhite contained nofcc_clear nofollowup_to noforce_name noforw_decode nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-syn keyword muttrcVarBool	skipwhite contained noforw_decrypt noforw_quote noforward_decode noforward_decrypt nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-syn keyword muttrcVarBool	skipwhite contained noforward_quote nohdrs noheader nohelp nohidden_host nohide_limited nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-syn keyword muttrcVarBool	skipwhite contained nohide_missing nohide_thread_subject nohide_top_limited nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-syn keyword muttrcVarBool	skipwhite contained nohide_top_missing nohonor_disposition noignore_list_reply_to noimap_check_subscribed nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-syn keyword muttrcVarBool	skipwhite contained noimap_list_subscribed noimap_passive noimap_peek noimap_servernoise nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-syn keyword muttrcVarBool	skipwhite contained noimplicit_autoview noinclude_onlyfirst nokeep_flagged nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-syn keyword muttrcVarBool	skipwhite contained nomailcap_sanitize nomaildir_header_cache_verify nomaildir_trash nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-syn keyword muttrcVarBool	skipwhite contained nomark_old nomarkers nomenu_move_off nomenu_scroll nometa_key nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-syn keyword muttrcVarBool	skipwhite contained nometoo nomh_purge nomime_forward_decode nonarrow_tree nopager_stop nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-syn keyword muttrcVarBool	skipwhite contained nopgp_auto_decode nopgp_auto_traditional nopgp_autoencrypt nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-syn keyword muttrcVarBool	skipwhite contained nopgp_autoinline nopgp_autosign nopgp_check_exit nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-syn keyword muttrcVarBool	skipwhite contained nopgp_create_traditional nopgp_ignore_subkeys nopgp_long_ids nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-syn keyword muttrcVarBool	skipwhite contained nopgp_replyencrypt nopgp_replyinline nopgp_replysign nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-syn keyword muttrcVarBool	skipwhite contained nopgp_replysignencrypted nopgp_retainable_sigs nopgp_show_unusable nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-syn keyword muttrcVarBool	skipwhite contained nopgp_strict_enc nopgp_use_gpg_agent nopipe_decode nopipe_split nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-syn keyword muttrcVarBool	skipwhite contained nopop_auth_try_all nopop_last noprint_decode noprint_split nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-syn keyword muttrcVarBool	skipwhite contained noprompt_after noread_only noreply_self noresolve noreverse_alias nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-syn keyword muttrcVarBool	skipwhite contained noreverse_name noreverse_realname norfc2047_parameters nosave_address nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-syn keyword muttrcVarBool	skipwhite contained nosave_empty nosave_name noscore nosig_dashes nosig_on_top nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-syn keyword muttrcVarBool	skipwhite contained nosmart_wrap nosmime_ask_cert_label nosmime_decrypt_use_default_key nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-syn keyword muttrcVarBool	skipwhite contained nosmime_is_default nosort_re nossl_force_tls nossl_use_sslv2 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-syn keyword muttrcVarBool	skipwhite contained nossl_use_sslv3 nossl_use_tlsv1 nossl_usesystemcerts nostatus_on_top nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-syn keyword muttrcVarBool	skipwhite contained nostrict_threads nosuspend notext_flowed nothorough_search nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-syn keyword muttrcVarBool	skipwhite contained nothread_received notilde nouncollapse_jump nouse_8bitmime nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-syn keyword muttrcVarBool	skipwhite contained nouse_domain nouse_envelope_from nouse_from nouse_idn nouse_ipv6 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-syn keyword muttrcVarBool	skipwhite contained nouser_agent nowait_key noweed nowrap_search nowrite_bcc nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarBool	skipwhite contained 
+			\ noallow_8bit noallow_ansi noarrow_cursor noascii_chars noaskbcc noaskcc noattach_split
+			\ noauto_tag noautoedit nobeep nobeep_new nobounce_delivered nobraille_friendly
+			\ nocheck_mbox_size nocheck_new nocollapse_unread noconfirmappend noconfirmcreate
+			\ nocrypt_autoencrypt nocrypt_autopgp nocrypt_autosign nocrypt_autosmime
+			\ nocrypt_confirmhook nocrypt_opportunistic_encrypt nocrypt_replyencrypt
+			\ nocrypt_replysign nocrypt_replysignencrypted nocrypt_timestamp nocrypt_use_gpgme
+			\ nocrypt_use_pka nodelete_untag nodigest_collapse noduplicate_threads noedit_hdrs
+			\ noedit_headers noencode_from noenvelope_from nofast_reply nofcc_clear nofollowup_to
+			\ noforce_name noforw_decode noforw_decrypt noforw_quote noforward_decode noforward_decrypt
+			\ noforward_quote nohdrs noheader nohelp nohidden_host nohide_limited nohide_missing
+			\ nohide_thread_subject nohide_top_limited nohide_top_missing nohonor_disposition
+			\ noidn_decode noidn_encode noignore_linear_white_space noignore_list_reply_to
+			\ noimap_check_subscribed noimap_list_subscribed noimap_passive noimap_peek
+			\ noimap_servernoise noimplicit_autoview noinclude_onlyfirst nokeep_flagged
+			\ nomail_check_recent nomail_check_stats nomailcap_sanitize nomaildir_check_cur
+			\ nomaildir_header_cache_verify nomaildir_trash nomark_old nomarkers nomenu_move_off
+			\ nomenu_scroll nomessage_cache_clean nometa_key nometoo nomh_purge nomime_forward_decode
+			\ nonarrow_tree nopager_stop nopgp_auto_decode nopgp_auto_traditional nopgp_autoencrypt
+			\ nopgp_autoinline nopgp_autosign nopgp_check_exit nopgp_create_traditional
+			\ nopgp_ignore_subkeys nopgp_long_ids nopgp_replyencrypt nopgp_replyinline nopgp_replysign
+			\ nopgp_replysignencrypted nopgp_retainable_sigs nopgp_show_unusable nopgp_strict_enc
+			\ nopgp_use_gpg_agent nopipe_decode nopipe_split nopop_auth_try_all nopop_last
+			\ nopostpone_encrypt nopostpone_encrypt_as noprint_decode noprint_split noprompt_after
+			\ noread_only noreflow_space_quotes noreflow_text noreflow_wrap noreply_self noresolve
+			\ noresume_draft_files noresume_edited_draft_files noreverse_alias noreverse_name
+			\ noreverse_realname norfc2047_parameters nosave_address nosave_empty nosave_name noscore
+			\ nosidebar_folder_indent nosidebar_new_mail_only nosidebar_next_new_wrap
+			\ nosidebar_short_path nosidebar_sort nosidebar_visible nosig_dashes nosig_on_top
+			\ nosmart_wrap nosmime_ask_cert_label nosmime_decrypt_use_default_key nosmime_is_default
+			\ nosort_re nossl_force_tls nossl_use_sslv2 nossl_use_sslv3 nossl_use_tlsv1
+			\ nossl_usesystemcerts nossl_verify_dates nossl_verify_host nostatus_on_top nostrict_mime
+			\ nostrict_threads nosuspend notext_flowed nothorough_search nothread_received notilde
+			\ nots_enabled nouncollapse_jump nouse_8bitmime nouse_domain nouse_envelope_from nouse_from
+			\ nouse_idn nouse_ipv6 nouser_agent nowait_key noweed nowrap_search nowrite_bcc
+			\ nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
 
-syn keyword muttrcVarBool	skipwhite contained invallow_8bit invallow_ansi invarrow_cursor invascii_chars invaskbcc nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-syn keyword muttrcVarBool	skipwhite contained invaskcc invattach_split invauto_tag invautoedit invbeep invbeep_new nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-syn keyword muttrcVarBool	skipwhite contained invbounce_delivered invbraille_friendly invcheck_new invcollapse_unread nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-syn keyword muttrcVarBool	skipwhite contained invconfirmappend invconfirmcreate invcrypt_autoencrypt invcrypt_autopgp nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-syn keyword muttrcVarBool	skipwhite contained invcrypt_autosign invcrypt_autosmime invcrypt_replyencrypt nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-syn keyword muttrcVarBool	skipwhite contained invcrypt_replysign invcrypt_replysignencrypted invcrypt_timestamp nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-syn keyword muttrcVarBool	skipwhite contained invcrypt_use_gpgme invdelete_untag invdigest_collapse invduplicate_threads nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-syn keyword muttrcVarBool	skipwhite contained invedit_hdrs invedit_headers invencode_from invenvelope_from invfast_reply nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-syn keyword muttrcVarBool	skipwhite contained invfcc_clear invfollowup_to invforce_name invforw_decode nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-syn keyword muttrcVarBool	skipwhite contained invforw_decrypt invforw_quote invforward_decode invforward_decrypt nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-syn keyword muttrcVarBool	skipwhite contained invforward_quote invhdrs invheader invhelp invhidden_host invhide_limited nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-syn keyword muttrcVarBool	skipwhite contained invhide_missing invhide_thread_subject invhide_top_limited nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-syn keyword muttrcVarBool	skipwhite contained invhide_top_missing invhonor_disposition invignore_list_reply_to invimap_check_subscribed nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-syn keyword muttrcVarBool	skipwhite contained invimap_list_subscribed invimap_passive invimap_peek invimap_servernoise nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-syn keyword muttrcVarBool	skipwhite contained invimplicit_autoview invinclude_onlyfirst invkeep_flagged nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-syn keyword muttrcVarBool	skipwhite contained invmailcap_sanitize invmaildir_header_cache_verify invmaildir_trash nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-syn keyword muttrcVarBool	skipwhite contained invmark_old invmarkers invmenu_move_off invmenu_scroll invmeta_key nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-syn keyword muttrcVarBool	skipwhite contained invmetoo invmh_purge invmime_forward_decode invnarrow_tree invpager_stop nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-syn keyword muttrcVarBool	skipwhite contained invpgp_auto_decode invpgp_auto_traditional invpgp_autoencrypt nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-syn keyword muttrcVarBool	skipwhite contained invpgp_autoinline invpgp_autosign invpgp_check_exit nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-syn keyword muttrcVarBool	skipwhite contained invpgp_create_traditional invpgp_ignore_subkeys invpgp_long_ids nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-syn keyword muttrcVarBool	skipwhite contained invpgp_replyencrypt invpgp_replyinline invpgp_replysign nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-syn keyword muttrcVarBool	skipwhite contained invpgp_replysignencrypted invpgp_retainable_sigs invpgp_show_unusable nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-syn keyword muttrcVarBool	skipwhite contained invpgp_strict_enc invpgp_use_gpg_agent invpipe_decode invpipe_split nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-syn keyword muttrcVarBool	skipwhite contained invpop_auth_try_all invpop_last invprint_decode invprint_split nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-syn keyword muttrcVarBool	skipwhite contained invprompt_after invread_only invreply_self invresolve invreverse_alias nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-syn keyword muttrcVarBool	skipwhite contained invreverse_name invreverse_realname invrfc2047_parameters invsave_address nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-syn keyword muttrcVarBool	skipwhite contained invsave_empty invsave_name invscore invsig_dashes invsig_on_top nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-syn keyword muttrcVarBool	skipwhite contained invsmart_wrap invsmime_ask_cert_label invsmime_decrypt_use_default_key nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-syn keyword muttrcVarBool	skipwhite contained invsmime_is_default invsort_re invssl_force_tls invssl_use_sslv2 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-syn keyword muttrcVarBool	skipwhite contained invssl_use_sslv3 invssl_use_tlsv1 invssl_usesystemcerts invstatus_on_top nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-syn keyword muttrcVarBool	skipwhite contained invstrict_threads invsuspend invtext_flowed invthorough_search nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-syn keyword muttrcVarBool	skipwhite contained invthread_received invtilde invuncollapse_jump invuse_8bitmime nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-syn keyword muttrcVarBool	skipwhite contained invuse_domain invuse_envelope_from invuse_from invuse_idn invuse_ipv6 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-syn keyword muttrcVarBool	skipwhite contained invuser_agent invwait_key invweed invwrap_search invwrite_bcc nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-if use_mutt_sidebar == 1
-    syn keyword muttrcVarBool skipwhite contained sidebar_visible sidebar_sort nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-endif
+syn keyword muttrcVarBool	skipwhite contained
+			\ invallow_8bit invallow_ansi invarrow_cursor invascii_chars invaskbcc invaskcc invattach_split
+			\ invauto_tag invautoedit invbeep invbeep_new invbounce_delivered invbraille_friendly
+			\ invcheck_mbox_size invcheck_new invcollapse_unread invconfirmappend invconfirmcreate
+			\ invcrypt_autoencrypt invcrypt_autopgp invcrypt_autosign invcrypt_autosmime
+			\ invcrypt_confirmhook invcrypt_opportunistic_encrypt invcrypt_replyencrypt
+			\ invcrypt_replysign invcrypt_replysignencrypted invcrypt_timestamp invcrypt_use_gpgme
+			\ invcrypt_use_pka invdelete_untag invdigest_collapse invduplicate_threads invedit_hdrs
+			\ invedit_headers invencode_from invenvelope_from invfast_reply invfcc_clear invfollowup_to
+			\ invforce_name invforw_decode invforw_decrypt invforw_quote invforward_decode invforward_decrypt
+			\ invforward_quote invhdrs invheader invhelp invhidden_host invhide_limited invhide_missing
+			\ invhide_thread_subject invhide_top_limited invhide_top_missing invhonor_disposition
+			\ invidn_decode invidn_encode invignore_linear_white_space invignore_list_reply_to
+			\ invimap_check_subscribed invimap_list_subscribed invimap_passive invimap_peek
+			\ invimap_servernoise invimplicit_autoview invinclude_onlyfirst invkeep_flagged
+			\ invmail_check_recent invmail_check_stats invmailcap_sanitize invmaildir_check_cur
+			\ invmaildir_header_cache_verify invmaildir_trash invmark_old invmarkers invmenu_move_off
+			\ invmenu_scroll invmessage_cache_clean invmeta_key invmetoo invmh_purge invmime_forward_decode
+			\ invnarrow_tree invpager_stop invpgp_auto_decode invpgp_auto_traditional invpgp_autoencrypt
+			\ invpgp_autoinline invpgp_autosign invpgp_check_exit invpgp_create_traditional
+			\ invpgp_ignore_subkeys invpgp_long_ids invpgp_replyencrypt invpgp_replyinline invpgp_replysign
+			\ invpgp_replysignencrypted invpgp_retainable_sigs invpgp_show_unusable invpgp_strict_enc
+			\ invpgp_use_gpg_agent invpipe_decode invpipe_split invpop_auth_try_all invpop_last
+			\ invpostpone_encrypt invpostpone_encrypt_as invprint_decode invprint_split invprompt_after
+			\ invread_only invreflow_space_quotes invreflow_text invreflow_wrap invreply_self invresolve
+			\ invresume_draft_files invresume_edited_draft_files invreverse_alias invreverse_name
+			\ invreverse_realname invrfc2047_parameters invsave_address invsave_empty invsave_name invscore
+			\ invsidebar_folder_indent invsidebar_new_mail_only invsidebar_next_new_wrap
+			\ invsidebar_short_path invsidebar_sort invsidebar_visible invsig_dashes invsig_on_top
+			\ invsmart_wrap invsmime_ask_cert_label invsmime_decrypt_use_default_key invsmime_is_default
+			\ invsort_re invssl_force_tls invssl_use_sslv2 invssl_use_sslv3 invssl_use_tlsv1
+			\ invssl_usesystemcerts invssl_verify_dates invssl_verify_host invstatus_on_top invstrict_mime
+			\ invstrict_threads invsuspend invtext_flowed invthorough_search invthread_received invtilde
+			\ invts_enabled invuncollapse_jump invuse_8bitmime invuse_domain invuse_envelope_from invuse_from
+			\ invuse_idn invuse_ipv6 invuser_agent invwait_key invweed invwrap_search invwrite_bcc
+			\ nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
 
-syn keyword muttrcVarQuad	skipwhite contained abort_nosubject abort_unmodified bounce copy nextgroup=muttrcSetQuadAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-syn keyword muttrcVarQuad	skipwhite contained crypt_verify_sig delete fcc_attach forward_edit honor_followup_to nextgroup=muttrcSetQuadAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-syn keyword muttrcVarQuad	skipwhite contained include mime_forward mime_forward_rest mime_fwd move nextgroup=muttrcSetQuadAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-syn keyword muttrcVarQuad	skipwhite contained pgp_mime_auto pgp_verify_sig pop_delete pop_reconnect nextgroup=muttrcSetQuadAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-syn keyword muttrcVarQuad	skipwhite contained postpone print quit recall reply_to ssl_starttls nextgroup=muttrcSetQuadAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarQuad	skipwhite contained
+			\ abort_nosubject abort_unmodified bounce copy crypt_verify_sig delete
+			\ fcc_attach forward_edit honor_followup_to include mime_forward
+			\ mime_forward_rest mime_fwd move pgp_mime_auto pgp_verify_sig pop_delete
+			\ pop_reconnect postpone print quit recall reply_to ssl_starttls
+			\ nextgroup=muttrcSetQuadAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
 
-syn keyword muttrcVarQuad	skipwhite contained noabort_nosubject noabort_unmodified nobounce nocopy nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-syn keyword muttrcVarQuad	skipwhite contained nocrypt_verify_sig nodelete nofcc_attach noforward_edit nohonor_followup_to nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-syn keyword muttrcVarQuad	skipwhite contained noinclude nomime_forward nomime_forward_rest nomime_fwd nomove nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-syn keyword muttrcVarQuad	skipwhite contained nopgp_mime_auto nopgp_verify_sig nopop_delete nopop_reconnect nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-syn keyword muttrcVarQuad	skipwhite contained nopostpone noprint noquit norecall noreply_to nossl_starttls nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarQuad	skipwhite contained
+			\ noabort_nosubject noabort_unmodified nobounce nocopy nocrypt_verify_sig nodelete
+			\ nofcc_attach noforward_edit nohonor_followup_to noinclude nomime_forward
+			\ nomime_forward_rest nomime_fwd nomove nopgp_mime_auto nopgp_verify_sig nopop_delete
+			\ nopop_reconnect nopostpone noprint noquit norecall noreply_to nossl_starttls
+			\ nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
 
-syn keyword muttrcVarQuad	skipwhite contained invabort_nosubject invabort_unmodified invbounce invcopy nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-syn keyword muttrcVarQuad	skipwhite contained invcrypt_verify_sig invdelete invfcc_attach invforward_edit invhonor_followup_to nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-syn keyword muttrcVarQuad	skipwhite contained invinclude invmime_forward invmime_forward_rest invmime_fwd invmove nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-syn keyword muttrcVarQuad	skipwhite contained invpgp_mime_auto invpgp_verify_sig invpop_delete invpop_reconnect nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-syn keyword muttrcVarQuad	skipwhite contained invpostpone invprint invquit invrecall invreply_to invssl_starttls nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarQuad	skipwhite contained
+			\ invabort_nosubject invabort_unmodified invbounce invcopy invcrypt_verify_sig invdelete
+			\ invfcc_attach invforward_edit invhonor_followup_to invinclude invmime_forward
+			\ invmime_forward_rest invmime_fwd invmove invpgp_mime_auto invpgp_verify_sig invpop_delete
+			\ invpop_reconnect invpostpone invprint invquit invrecall invreply_to invssl_starttls
+			\ nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
 
-syn keyword muttrcVarNum	skipwhite contained connect_timeout history imap_keepalive imap_pipeline_depth mail_check nextgroup=muttrcSetNumAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-syn keyword muttrcVarNum	skipwhite contained menu_context net_inc pager_context pager_index_lines pgp_timeout nextgroup=muttrcSetNumAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-syn keyword muttrcVarNum	skipwhite contained pop_checkinterval read_inc save_history score_threshold_delete nextgroup=muttrcSetNumAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-syn keyword muttrcVarNum	skipwhite contained score_threshold_flag score_threshold_read search_context sendmail_wait sleep_time nextgroup=muttrcSetNumAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-syn keyword muttrcVarNum	skipwhite contained smime_timeout ssl_min_dh_prime_bits timeout time_inc wrap wrapmargin nextgroup=muttrcSetNumAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-syn keyword muttrcVarNum	skipwhite contained write_inc nextgroup=muttrcSetNumAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-if use_mutt_sidebar == 1
-    syn keyword muttrcVarNum skipwhite contained sidebar_width nextgroup=muttrcSetNumAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-endif
+syn keyword muttrcVarNum	skipwhite contained
+			\ connect_timeout history imap_keepalive imap_pipeline_depth mail_check
+			\ mail_check_stats_interval menu_context net_inc pager_context pager_index_lines
+			\ pgp_timeout pop_checkinterval read_inc save_history score_threshold_delete
+			\ score_threshold_flag score_threshold_read search_context sendmail_wait
+			\ sidebar_width sleep_time smime_timeout ssl_min_dh_prime_bits time_inc timeout
+			\ wrap wrap_headers wrapmargin write_inc
+			\ nextgroup=muttrcSetNumAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
 
 syn match muttrcFormatErrors contained /%./
 
@@ -349,7 +351,7 @@ syn keyword muttrcVarStr	contained skipw
 syn match muttrcVarEqualsQueryFmt contained skipwhite "=" nextgroup=muttrcQueryFormatStr
 syn keyword muttrcVarStr	contained skipwhite pgp_decode_command pgp_verify_command pgp_decrypt_command pgp_clearsign_command pgp_sign_command pgp_encrypt_sign_command pgp_encrypt_only_command pgp_import_command pgp_export_command pgp_verify_key_command pgp_list_secring_command pgp_list_pubring_command nextgroup=muttrcVarEqualsPGPCmdFmt
 syn match muttrcVarEqualsPGPCmdFmt contained skipwhite "=" nextgroup=muttrcPGPCmdFormatStr
-syn keyword muttrcVarStr	contained skipwhite status_format nextgroup=muttrcVarEqualsStatusFmt
+syn keyword muttrcVarStr	contained skipwhite ts_icon_format ts_status_format status_format nextgroup=muttrcVarEqualsStatusFmt
 syn match muttrcVarEqualsStatusFmt contained skipwhite "=" nextgroup=muttrcStatusFormatStr
 syn keyword muttrcVarStr	contained skipwhite pgp_getkeys_command nextgroup=muttrcVarEqualsPGPGetKeysFmt
 syn match muttrcVarEqualsPGPGetKeysFmt contained skipwhite "=" nextgroup=muttrcPGPGetKeysFormatStr
@@ -361,34 +363,29 @@ syn match muttrcVarEqualsStrftimeFmt con
 syn match muttrcVPrefix		contained /[?&]/ nextgroup=muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
 
 syn match muttrcVarStr		contained skipwhite 'my_[a-zA-Z0-9_]\+' nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-syn keyword muttrcVarStr	contained skipwhite alias_file assumed_charset attach_charset attach_sep nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-syn keyword muttrcVarStr	contained skipwhite certificate_file charset config_charset content_type nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-syn keyword muttrcVarStr	contained skipwhite default_hook display_filter dotlock_program dsn_notify nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-syn keyword muttrcVarStr	contained skipwhite dsn_return editor entropy_file envelope_from_address escape folder nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-syn keyword muttrcVarStr	contained skipwhite forw_format forward_format from gecos_mask hdr_format nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-syn keyword muttrcVarStr	contained skipwhite header_cache header_cache_compress header_cache_pagesize nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-syn keyword muttrcVarStr	contained skipwhite history_file hostname imap_authenticators nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-syn keyword muttrcVarStr	contained skipwhite imap_delim_chars imap_headers imap_idle imap_login imap_pass nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-syn keyword muttrcVarStr	contained skipwhite imap_user indent_str indent_string ispell locale mailcap_path nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-syn keyword muttrcVarStr	contained skipwhite mask mbox mbox_type message_cachedir mh_seq_flagged mh_seq_replied nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-syn keyword muttrcVarStr	contained skipwhite mh_seq_unseen mixmaster msg_format pager nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-syn keyword muttrcVarStr	contained skipwhite pgp_good_sign  nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-syn keyword muttrcVarStr	contained skipwhite pgp_mime_signature_filename nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-syn keyword muttrcVarStr	contained skipwhite pgp_mime_signature_description pgp_sign_as nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-syn keyword muttrcVarStr	contained skipwhite pgp_sort_keys nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-syn keyword muttrcVarStr	contained skipwhite pipe_sep pop_authenticators pop_host pop_pass pop_user post_indent_str nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-syn keyword muttrcVarStr	contained skipwhite post_indent_string postponed preconnect print_cmd print_command nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-syn keyword muttrcVarStr	contained skipwhite query_command quote_regexp realname record reply_regexp send_charset nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-syn keyword muttrcVarStr	contained skipwhite sendmail shell signature simple_search smileys smime_ca_location nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-syn keyword muttrcVarStr	contained skipwhite smime_certificates smime_default_key nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-syn keyword muttrcVarStr	contained skipwhite smime_encrypt_with nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-syn keyword muttrcVarStr	contained skipwhite smime_keys smime_sign_as nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-syn keyword muttrcVarStr	contained skipwhite smtp_url smtp_authenticators smtp_pass sort sort_alias sort_aux nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-syn keyword muttrcVarStr	contained skipwhite sort_browser spam_separator spoolfile ssl_ca_certificates_file ssl_client_cert nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-syn keyword muttrcVarStr	contained skipwhite status_chars tmpdir to_chars tunnel visual nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-if use_mutt_sidebar == 1
-    syn keyword muttrcVarStr skipwhite contained sidebar_delim nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-endif
+syn keyword muttrcVarStr	contained skipwhite
+			\ alias_file assumed_charset attach_charset attach_sep certificate_file charset
+			\ config_charset content_type default_hook display_filter dotlock_program
+			\ dsn_notify dsn_return editor entropy_file envelope_from_address escape folder
+			\ forw_format forward_format from gecos_mask hdr_format header_cache
+			\ header_cache_compress header_cache_pagesize history_file hostname
+			\ imap_authenticators imap_delim_chars imap_headers imap_idle imap_login
+			\ imap_pass imap_user indent_str indent_string ispell locale mailcap_path mask
+			\ mbox mbox_type message_cachedir mh_seq_flagged mh_seq_replied mh_seq_unseen
+			\ mixmaster msg_format pager pgp_decryption_okay pgp_good_sign
+			\ pgp_mime_signature_description pgp_mime_signature_filename pgp_sign_as
+			\ pgp_sort_keys pipe_sep pop_authenticators pop_host pop_pass pop_user
+			\ post_indent_str post_indent_string postpone_encrypt_as postponed preconnect
+			\ print_cmd print_command query_command quote_regexp realname record
+			\ reply_regexp send_charset sendmail shell sidebar_delim sidebar_delim_chars
+			\ sidebar_divider_char sidebar_format sidebar_indent_string sidebar_sort_method
+			\ signature simple_search smileys smime_ca_location smime_certificates
+			\ smime_default_key smime_encrypt_with smime_keys smime_sign_as
+			\ smime_sign_digest_alg smtp_authenticators smtp_pass smtp_url sort sort_alias
+			\ sort_aux sort_browser spam_separator spoolfile ssl_ca_certificates_file
+			\ ssl_ciphers ssl_client_cert status_chars tmpdir to_chars trash ts_icon_format
+			\ ts_status_format tunnel visual
+			\ nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
 
 " Present in 1.4.2.1 (pgp_create_traditional was a bool then)
 syn keyword muttrcVarBool	contained skipwhite imap_force_ssl noimap_force_ssl invimap_force_ssl nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
@@ -401,12 +398,11 @@ syn match muttrcMenuCommas /,/ contained
 
 syn keyword muttrcHooks		contained skipwhite account-hook charset-hook iconv-hook message-hook folder-hook mbox-hook save-hook fcc-hook fcc-save-hook send-hook send2-hook reply-hook crypt-hook
 
-syn keyword muttrcCommand	auto_view alternative_order exec unalternative_order
-syn keyword muttrcCommand	hdr_order iconv-hook ignore mailboxes my_hdr unmailboxes
-syn keyword muttrcCommand	pgp-hook push score source unauto_view unhdr_order
-syn keyword muttrcCommand	unignore unmono unmy_hdr unscore
-syn keyword muttrcCommand	mime_lookup unmime_lookup ungroup
-syn keyword muttrcCommand	unalternative_order
+syn keyword muttrcCommand	skipwhite
+			\ alternative_order auto_view exec hdr_order iconv-hook ignore mailboxes
+			\ mailto_allow mime_lookup my_hdr pgp-hook push score sidebar_whitelist source
+			\ unalternative_order unalternative_order unauto_view ungroup unhdr_order
+			\ unignore unmailboxes unmailto_allow unmime_lookup unmono unmy_hdr unscore
 syn keyword muttrcCommand	skipwhite charset-hook nextgroup=muttrcRXString
 syn keyword muttrcCommand	skipwhite unhook nextgroup=muttrcHooks
 
@@ -441,7 +437,7 @@ syn match muttrcVariableInner	contained 
 syn match muttrcEscapedVariable	contained "\\\$[a-zA-Z_-]\+"
 
 syn match muttrcBadAction	contained "[^<>]\+" contains=muttrcEmail
-syn match muttrcFunction	contained "\<\%(attach\|bounce\|copy\|delete\|display\|flag\|forward\|parent\|pipe\|postpone\|print\|recall\|resend\|save\|send\|tag\|undelete\)-message\>"
+syn match muttrcFunction	contained "\<\%(attach\|bounce\|copy\|delete\|display\|flag\|forward\|parent\|pipe\|postpone\|print\|purge\|recall\|resend\|save\|send\|tag\|undelete\)-message\>"
 syn match muttrcFunction	contained "\<\%(delete\|next\|previous\|read\|tag\|break\|undelete\)-thread\>"
 syn match muttrcFunction	contained "\<link-threads\>"
 syn match muttrcFunction	contained "\<\%(backward\|capitalize\|downcase\|forward\|kill\|upcase\)-word\>"
@@ -465,11 +461,13 @@ syn match muttrcFunction	contained "\<sh
 syn match muttrcFunction	contained "\<sort-\%(mailbox\|reverse\)\>"
 syn match muttrcFunction	contained "\<tag-\%(pattern\|\%(sub\)\?thread\|prefix\%(-cond\)\?\)\>"
 syn match muttrcFunction	contained "\<end-cond\>"
+syn match muttrcFunction	contained "\<sidebar-\%(next\|next-new\|open\|page-down\|page-up\|prev\|prev-new\|toggle-visible\)\>"
 syn match muttrcFunction	contained "\<toggle-\%(mailboxes\|new\|quoted\|subscribed\|unlink\|write\)\>"
 syn match muttrcFunction	contained "\<undelete-\%(pattern\|subthread\)\>"
 syn match muttrcFunction	contained "\<collapse-\%(parts\|thread\|all\)\>"
 syn match muttrcFunction	contained "\<view-\%(attach\|attachments\|file\|mailcap\|name\|text\)\>"
 syn match muttrcFunction	contained "\<\%(backspace\|backward-char\|bol\|bottom\|bottom-page\|buffy-cycle\|clear-flag\|complete\%(-query\)\?\|copy-file\|create-alias\|detach-file\|eol\|exit\|extract-keys\|\%(imap-\)\?fetch-mail\|forget-passphrase\|forward-char\|group-reply\|help\|ispell\|jump\|limit\|list-reply\|mail\|mail-key\|mark-as-new\|middle-page\|new-mime\|noop\|pgp-menu\|query\|query-append\|quit\|quote-char\|read-subthread\|redraw-screen\|refresh\|rename-file\|reply\|select-new\|set-flag\|shell-escape\|skip-quoted\|sort\|subscribe\|sync-mailbox\|top\|top-page\|transpose-chars\|unsubscribe\|untag-pattern\|verify-key\|what-key\|write-fcc\)\>"
+syn keyword muttrcFunction	contained imap-logout-all
 if use_mutt_sidebar == 1
     syn match muttrcFunction    contained "\<sidebar-\%(prev\|next\|open\|scroll-up\|scroll-down\)"
 endif
@@ -578,7 +576,11 @@ syn match muttrcColorMatchCount	containe
 syn match muttrcColorMatchCountNL contained skipwhite skipnl "\s*\\$" nextgroup=muttrcColorMatchCount,muttrcColorMatchCountNL
 syn region muttrcColorRXPat	contained start=+\s*'+ skip=+\\'+ end=+'\s*+ keepend skipwhite contains=muttrcRXString2 nextgroup=muttrcColorMatchCount,muttrcColorMatchCountNL
 syn region muttrcColorRXPat	contained start=+\s*"+ skip=+\\"+ end=+"\s*+ keepend skipwhite contains=muttrcRXString2 nextgroup=muttrcColorMatchCount,muttrcColorMatchCountNL
-syn keyword muttrcColorField	contained attachment body bold error hdrdefault header index indicator markers message normal quoted search signature status tilde tree underline
+syn keyword muttrcColorField	skipwhite contained
+			\ attachment body bold error hdrdefault header index indicator markers message
+			\ normal prompt quoted search sidebar-divider sidebar-flagged sidebar-highlight
+			\ sidebar-indicator sidebar-new sidebar-spoolfile signature status tilde tree
+			\ underline
 syn match   muttrcColorField	contained "\<quoted\d\=\>"
 if use_mutt_sidebar == 1
     syn keyword muttrcColorField contained sidebar_new
--- a/runtime/syntax/python.vim
+++ b/runtime/syntax/python.vim
@@ -1,7 +1,7 @@
 " Vim syntax file
 " Language:	Python
 " Maintainer:	Zvezdan Petkovic <zpetkovic@acm.org>
-" Last Change:	2016 Jul 21
+" Last Change:	2016 Aug 14
 " Credits:	Neil Schemenauer <nas@python.ca>
 "		Dmitry Vasiliev
 "
@@ -84,14 +84,30 @@ syn keyword pythonInclude	from import
 syn keyword pythonAsync		async await
 
 " Decorators (new in Python 2.4)
-syn match   pythonDecorator	"@" display nextgroup=pythonFunction skipwhite
-" The zero-length non-grouping match before the function name is
-" extremely important in pythonFunction.  Without it, everything is
-" interpreted as a function inside the contained environment of
+" Python 3.5 introduced the use of the same symbol for matrix
+" multiplication.  We now have to exclude the symbol from being
+" highlighted when used in that context. Hence, the check that it's
+" preceded by empty space only (possibly in a docstring/doctest) and
+" followed by decorator name, optional parenthesized list of arguments,
+" and the next line with either def, class, or another decorator.
+syn match   pythonDecorator
+  \ "\%(\%(^\s*\)\%(\%(>>>\|\.\.\.\)\s\+\)\=\)\zs@\%(\s*\h\%(\w\|\.\)*\%(([^)]*)\)\=\s*\n\s*\%(\.\.\.\s\+\)\=\%(@\s*\h\|\%(def\|class\)\s\+\)\)\@="
+  \ display nextgroup=pythonDecoratorName skipwhite
+
+" A dot must be allowed because of @MyClass.myfunc decorators.
+" It must be preceded by a decorator symbol and on a separate line from
+" a function/class it decorates.
+syn match   pythonDecoratorName
+  \ "\%(@\s*\)\@<=\h\%(\w\|\.\)*\%(\%(([^)]*)\)\=\s*\n\)\@="
+  \ contained display nextgroup=pythonFunction skipnl
+
+" The zero-length non-grouping match of def or class before the function
+" name is extremely important in pythonFunction.  Without it, everything
+" is interpreted as a function inside the contained environment of
 " doctests.
-" A dot must be allowed because of @MyClass.myfunc decorators.
 syn match   pythonFunction
-      \ "\%(\%(def\s\|class\s\|@\)\s*\)\@<=\h\%(\w\|\.\)*" contained
+  \ "\%(\%(^\s*\)\%(\%(>>>\|\.\.\.\)\s\+\)\=\%(def\|class\)\s\+\)\@<=\h\w*"
+  \ contained
 
 syn match   pythonComment	"#.*$" contains=pythonTodo,@Spell
 syn keyword pythonTodo		FIXME NOTE NOTES TODO XXX contained
@@ -293,6 +309,7 @@ if version >= 508 || !exists("did_python
   HiLink pythonInclude		Include
   HiLink pythonAsync		Statement
   HiLink pythonDecorator	Define
+  HiLink pythonDecoratorName	Function
   HiLink pythonFunction		Function
   HiLink pythonComment		Comment
   HiLink pythonTodo		Todo
--- a/runtime/syntax/r.vim
+++ b/runtime/syntax/r.vim
@@ -5,7 +5,7 @@
 " 		      Tom Payne <tom@tompayne.org>
 " Contributor:        Johannes Ranke <jranke@uni-bremen.de>
 " Homepage:           https://github.com/jalvesaq/R-Vim-runtime
-" Last Change:	      Thu Mar 10, 2016  12:26PM
+" Last Change:	      Thu Aug 25, 2016  08:52PM
 " Filenames:	      *.R *.r *.Rhistory *.Rt
 "
 " NOTE: The highlighting of R functions is defined in
@@ -26,7 +26,7 @@ if exists("b:current_syntax")
   finish
 endif
 
-setlocal iskeyword=@,48-57,_,.
+syn iskeyword @,48-57,_,.
 
 if exists("g:r_syntax_folding") && g:r_syntax_folding
   setlocal foldmethod=syntax
@@ -174,8 +174,6 @@ endif
 if g:R_hi_fun
   " Nvim-R:
   runtime R/functions.vim
-  " Vim-R-plugin:
-  runtime r-plugin/functions.vim
 endif
 
 syn match rDollar display contained "\$"
--- a/runtime/syntax/rhelp.vim
+++ b/runtime/syntax/rhelp.vim
@@ -3,7 +3,7 @@
 " Maintainer: Jakson Aquino <jalvesaq@gmail.com>
 " Former Maintainer: Johannes Ranke <jranke@uni-bremen.de>
 " Homepage: https://github.com/jalvesaq/R-Vim-runtime
-" Last Change: Sat Feb 06, 2016  11:34AM
+" Last Change: Tue Jun 28, 2016  08:53AM
 " Remarks:     - Includes R syntax highlighting in the appropriate
 "                sections if an r.vim file is in the same directory or in the
 "                default debian location.
@@ -17,7 +17,6 @@ if exists("b:current_syntax")
 endif 
 
 scriptencoding utf-8
-setlocal iskeyword=@,48-57,_,.
 
 syn case match
 
--- a/runtime/syntax/rmd.vim
+++ b/runtime/syntax/rmd.vim
@@ -1,7 +1,7 @@
 " markdown Text with R statements
 " Language: markdown with R code chunks
 " Homepage: https://github.com/jalvesaq/R-Vim-runtime
-" Last Change: Sat Feb 06, 2016  06:45AM
+" Last Change: Tue Jun 28, 2016  10:09AM
 "
 " CONFIGURATION:
 "   To highlight chunk headers as R code, put in your vimrc:
@@ -72,8 +72,6 @@ if rmdIsPandoc == 0
   hi def link rmdLaTeXRegDelim Special
 endif
 
-setlocal iskeyword=@,48-57,_,.
-
 syn sync match rmdSyncChunk grouphere rmdChunk "^[ \t]*``` *{r"
 
 hi def link rmdChunkDelim Special
--- a/runtime/syntax/rrst.vim
+++ b/runtime/syntax/rrst.vim
@@ -2,7 +2,7 @@
 " Language: reST with R code chunks
 " Maintainer: Alex Zvoleff, azvoleff@mail.sdsu.edu
 " Homepage: https://github.com/jalvesaq/R-Vim-runtime
-" Last Change: Sat Feb 06, 2016  06:45AM
+" Last Change: Tue Jun 28, 2016  08:53AM
 "
 " CONFIGURATION:
 "   To highlight chunk headers as R code, put in your vimrc:
@@ -19,8 +19,6 @@ unlet b:current_syntax
 " load all of the r syntax highlighting rules into @R
 syntax include @R syntax/r.vim
 
-setlocal iskeyword=@,48-57,_,.
-
 " highlight R chunks
 if exists("g:rrst_syn_hl_chunk")
   " highlight R code inside chunk header
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/scala.vim
@@ -0,0 +1,231 @@
+" Vim syntax file
+" Language:             Scala
+" Maintainer:           Derek Wyatt
+" URL:                  https://github.com/derekwyatt/vim-scala
+" License:              Same as Vim
+" Last Change:          20 May 2016
+" ----------------------------------------------------------------------------
+
+if !exists('main_syntax')
+  if version < 600
+    syntax clear
+  elseif exists("b:current_syntax")
+    finish
+  endif
+  let main_syntax = 'scala'
+endif
+
+scriptencoding utf-8
+
+let b:current_syntax = "scala"
+
+" Allows for embedding, see #59; main_syntax convention instead? Refactor TOP
+"
+" The @Spell here is a weird hack, it means *exclude* if the first group is
+" TOP. Otherwise we get spelling errors highlighted on code elements that
+" match scalaBlock, even with `syn spell notoplevel`.
+function! s:ContainedGroup()
+  try
+    silent syn list @scala
+    return '@scala,@NoSpell'
+  catch /E392/
+    return 'TOP,@Spell'
+  endtry
+endfunction
+
+unlet! b:current_syntax
+
+syn case match
+syn sync minlines=200 maxlines=1000
+
+syn keyword scalaKeyword catch do else final finally for forSome if
+syn keyword scalaKeyword match return throw try while yield macro
+syn keyword scalaKeyword class trait object extends with nextgroup=scalaInstanceDeclaration skipwhite
+syn keyword scalaKeyword case nextgroup=scalaKeyword,scalaCaseFollowing skipwhite
+syn keyword scalaKeyword val nextgroup=scalaNameDefinition,scalaQuasiQuotes skipwhite
+syn keyword scalaKeyword def var nextgroup=scalaNameDefinition skipwhite
+hi link scalaKeyword Keyword
+
+exe 'syn region scalaBlock start=/{/ end=/}/ contains=' . s:ContainedGroup() . ' fold'
+
+syn keyword scalaAkkaSpecialWord when goto using startWith initialize onTransition stay become unbecome
+hi link scalaAkkaSpecialWord PreProc
+
+syn keyword scalatestSpecialWord shouldBe
+syn match scalatestShouldDSLA /^\s\+\zsit should/
+syn match scalatestShouldDSLB /\<should\>/
+hi link scalatestSpecialWord PreProc
+hi link scalatestShouldDSLA PreProc
+hi link scalatestShouldDSLB PreProc
+
+syn match scalaSymbol /'[_A-Za-z0-9$]\+/
+hi link scalaSymbol Number
+
+syn match scalaChar /'.'/
+syn match scalaChar /'\\[\\"'ntbrf]'/ contains=scalaEscapedChar
+syn match scalaChar /'\\u[A-Fa-f0-9]\{4}'/ contains=scalaUnicodeChar
+syn match scalaEscapedChar /\\[\\"'ntbrf]/
+syn match scalaUnicodeChar /\\u[A-Fa-f0-9]\{4}/
+hi link scalaChar Character
+hi link scalaEscapedChar Function
+hi link scalaUnicodeChar Special
+
+syn match scalaOperator "||"
+syn match scalaOperator "&&"
+hi link scalaOperator Special
+
+syn match scalaNameDefinition /\<[_A-Za-z0-9$]\+\>/ contained nextgroup=scalaPostNameDefinition,scalaVariableDeclarationList
+syn match scalaNameDefinition /`[^`]\+`/ contained nextgroup=scalaPostNameDefinition
+syn match scalaVariableDeclarationList /\s*,\s*/ contained nextgroup=scalaNameDefinition
+syn match scalaPostNameDefinition /\_s*:\_s*/ contained nextgroup=scalaTypeDeclaration
+hi link scalaNameDefinition Function
+
+syn match scalaInstanceDeclaration /\<[_\.A-Za-z0-9$]\+\>/ contained nextgroup=scalaInstanceHash
+syn match scalaInstanceDeclaration /`[^`]\+`/ contained
+syn match scalaInstanceHash /#/ contained nextgroup=scalaInstanceDeclaration
+hi link scalaInstanceDeclaration Special
+hi link scalaInstanceHash Type
+
+syn match scalaUnimplemented /???/
+hi link scalaUnimplemented ERROR
+
+syn match scalaCapitalWord /\<[A-Z][A-Za-z0-9$]*\>/
+hi link scalaCapitalWord Special
+
+" Handle type declarations specially
+syn region scalaTypeStatement matchgroup=Keyword start=/\<type\_s\+\ze/ end=/$/ contains=scalaTypeTypeDeclaration,scalaSquareBrackets,scalaTypeTypeEquals,scalaTypeStatement
+
+" Ugh... duplication of all the scalaType* stuff to handle special highlighting
+" of `type X =` declarations
+syn match scalaTypeTypeDeclaration /(/ contained nextgroup=scalaTypeTypeExtension,scalaTypeTypeEquals contains=scalaRoundBrackets skipwhite
+syn match scalaTypeTypeDeclaration /\%(⇒\|=>\)\ze/ contained nextgroup=scalaTypeTypeDeclaration contains=scalaTypeTypeExtension skipwhite
+syn match scalaTypeTypeDeclaration /\<[_\.A-Za-z0-9$]\+\>/ contained nextgroup=scalaTypeTypeExtension,scalaTypeTypeEquals skipwhite
+syn match scalaTypeTypeEquals /=\ze[^>]/ contained nextgroup=scalaTypeTypePostDeclaration skipwhite
+syn match scalaTypeTypeExtension /)\?\_s*\zs\%(⇒\|=>\|<:\|:>\|=:=\|::\|#\)/ contained nextgroup=scalaTypeTypeDeclaration skipwhite
+syn match scalaTypeTypePostDeclaration /\<[_\.A-Za-z0-9$]\+\>/ contained nextgroup=scalaTypeTypePostExtension skipwhite
+syn match scalaTypeTypePostExtension /\%(⇒\|=>\|<:\|:>\|=:=\|::\)/ contained nextgroup=scalaTypeTypePostDeclaration skipwhite
+hi link scalaTypeTypeDeclaration Type
+hi link scalaTypeTypeExtension Keyword
+hi link scalaTypeTypePostDeclaration Special
+hi link scalaTypeTypePostExtension Keyword
+
+syn match scalaTypeDeclaration /(/ contained nextgroup=scalaTypeExtension contains=scalaRoundBrackets skipwhite
+syn match scalaTypeDeclaration /\%(⇒\|=>\)\ze/ contained nextgroup=scalaTypeDeclaration contains=scalaTypeExtension skipwhite
+syn match scalaTypeDeclaration /\<[_\.A-Za-z0-9$]\+\>/ contained nextgroup=scalaTypeExtension skipwhite
+syn match scalaTypeExtension /)\?\_s*\zs\%(⇒\|=>\|<:\|:>\|=:=\|::\|#\)/ contained nextgroup=scalaTypeDeclaration skipwhite
+hi link scalaTypeDeclaration Type
+hi link scalaTypeExtension Keyword
+hi link scalaTypePostExtension Keyword
+
+syn match scalaTypeAnnotation /\%([_a-zA-Z0-9$\s]:\_s*\)\ze[_=(\.A-Za-z0-9$]\+/ skipwhite nextgroup=scalaTypeDeclaration contains=scalaRoundBrackets
+syn match scalaTypeAnnotation /)\_s*:\_s*\ze[_=(\.A-Za-z0-9$]\+/ skipwhite nextgroup=scalaTypeDeclaration
+hi link scalaTypeAnnotation Normal
+
+syn match scalaCaseFollowing /\<[_\.A-Za-z0-9$]\+\>/ contained
+syn match scalaCaseFollowing /`[^`]\+`/ contained
+hi link scalaCaseFollowing Special
+
+syn keyword scalaKeywordModifier abstract override final lazy implicit implicitly private protected sealed null require super
+hi link scalaKeywordModifier Function
+
+syn keyword scalaSpecial this true false ne eq
+syn keyword scalaSpecial new nextgroup=scalaInstanceDeclaration skipwhite
+syn match scalaSpecial "\%(=>\|⇒\|<-\|â†\|->\|→\)"
+syn match scalaSpecial /`[^`]\+`/  " Backtick literals
+hi link scalaSpecial PreProc
+
+syn keyword scalaExternal package import
+hi link scalaExternal Include
+
+syn match scalaStringEmbeddedQuote /\\"/ contained
+syn region scalaString start=/"/ end=/"/ contains=scalaStringEmbeddedQuote,scalaEscapedChar,scalaUnicodeChar
+hi link scalaString String
+hi link scalaStringEmbeddedQuote String
+
+syn region scalaIString matchgroup=scalaInterpolationBrackets start=/\<[a-zA-Z][a-zA-Z0-9_]*"/ skip=/\\"/ end=/"/ contains=scalaInterpolation,scalaInterpolationB,scalaEscapedChar,scalaUnicodeChar
+syn region scalaTripleIString matchgroup=scalaInterpolationBrackets start=/\<[a-zA-Z][a-zA-Z0-9_]*"""/ end=/"""\%([^"]\|$\)/ contains=scalaInterpolation,scalaInterpolationB,scalaEscapedChar,scalaUnicodeChar
+hi link scalaIString String
+hi link scalaTripleIString String
+
+syn match scalaInterpolation /\$[a-zA-Z0-9_$]\+/ contained
+exe 'syn region scalaInterpolationB matchgroup=scalaInterpolationBoundary start=/\${/ end=/}/ contained contains=' . s:ContainedGroup()
+hi link scalaInterpolation Function
+hi link scalaInterpolationB Normal
+
+syn region scalaFString matchgroup=scalaInterpolationBrackets start=/f"/ skip=/\\"/ end=/"/ contains=scalaFInterpolation,scalaFInterpolationB,scalaEscapedChar,scalaUnicodeChar
+syn match scalaFInterpolation /\$[a-zA-Z0-9_$]\+\(%[-A-Za-z0-9\.]\+\)\?/ contained
+exe 'syn region scalaFInterpolationB matchgroup=scalaInterpolationBoundary start=/${/ end=/}\(%[-A-Za-z0-9\.]\+\)\?/ contained contains=' . s:ContainedGroup()
+hi link scalaFString String
+hi link scalaFInterpolation Function
+hi link scalaFInterpolationB Normal
+
+syn region scalaTripleString start=/"""/ end=/"""\%([^"]\|$\)/ contains=scalaEscapedChar,scalaUnicodeChar
+syn region scalaTripleFString matchgroup=scalaInterpolationBrackets start=/f"""/ end=/"""\%([^"]\|$\)/ contains=scalaFInterpolation,scalaFInterpolationB,scalaEscapedChar,scalaUnicodeChar
+hi link scalaTripleString String
+hi link scalaTripleFString String
+
+hi link scalaInterpolationBrackets Special
+hi link scalaInterpolationBoundary Function
+
+syn match scalaNumber /\<0[dDfFlL]\?\>/ " Just a bare 0
+syn match scalaNumber /\<[1-9]\d*[dDfFlL]\?\>/  " A multi-digit number - octal numbers with leading 0's are deprecated in Scala
+syn match scalaNumber /\<0[xX][0-9a-fA-F]\+[dDfFlL]\?\>/ " Hex number
+syn match scalaNumber /\%(\<\d\+\.\d*\|\.\d\+\)\%([eE][-+]\=\d\+\)\=[fFdD]\=/ " exponential notation 1
+syn match scalaNumber /\<\d\+[eE][-+]\=\d\+[fFdD]\=\>/ " exponential notation 2
+syn match scalaNumber /\<\d\+\%([eE][-+]\=\d\+\)\=[fFdD]\>/ " exponential notation 3
+hi link scalaNumber Number
+
+syn region scalaRoundBrackets start="(" end=")" skipwhite contained contains=scalaTypeDeclaration,scalaSquareBrackets,scalaRoundBrackets
+
+syn region scalaSquareBrackets matchgroup=scalaSquareBracketsBrackets start="\[" end="\]" skipwhite nextgroup=scalaTypeExtension contains=scalaTypeDeclaration,scalaSquareBrackets,scalaTypeOperator,scalaTypeAnnotationParameter
+syn match scalaTypeOperator /[-+=:<>]\+/ contained
+syn match scalaTypeAnnotationParameter /@\<[`_A-Za-z0-9$]\+\>/ contained
+hi link scalaSquareBracketsBrackets Type
+hi link scalaTypeOperator Keyword
+hi link scalaTypeAnnotationParameter Function
+
+syn match scalaShebang "\%^#!.*" display
+syn region scalaMultilineComment start="/\*" end="\*/" contains=scalaMultilineComment,scalaDocLinks,scalaParameterAnnotation,scalaCommentAnnotation,scalaTodo,scalaCommentCodeBlock,@Spell keepend fold
+syn match scalaCommentAnnotation "@[_A-Za-z0-9$]\+" contained
+syn match scalaParameterAnnotation "\%(@tparam\|@param\|@see\)" nextgroup=scalaParamAnnotationValue skipwhite contained
+syn match scalaParamAnnotationValue /[.`_A-Za-z0-9$]\+/ contained
+syn region scalaDocLinks start="\[\[" end="\]\]" contained
+syn region scalaCommentCodeBlock matchgroup=Keyword start="{{{" end="}}}" contained
+syn match scalaTodo "\vTODO|FIXME|XXX" contained
+hi link scalaShebang Comment
+hi link scalaMultilineComment Comment
+hi link scalaDocLinks Function
+hi link scalaParameterAnnotation Function
+hi link scalaParamAnnotationValue Keyword
+hi link scalaCommentAnnotation Function
+hi link scalaCommentCodeBlockBrackets String
+hi link scalaCommentCodeBlock String
+hi link scalaTodo Todo
+
+syn match scalaAnnotation /@\<[`_A-Za-z0-9$]\+\>/
+hi link scalaAnnotation PreProc
+
+syn match scalaTrailingComment "//.*$" contains=scalaTodo,@Spell
+hi link scalaTrailingComment Comment
+
+syn match scalaAkkaFSM /goto([^)]*)\_s\+\<using\>/ contains=scalaAkkaFSMGotoUsing
+syn match scalaAkkaFSM /stay\_s\+using/
+syn match scalaAkkaFSM /^\s*stay\s*$/
+syn match scalaAkkaFSM /when\ze([^)]*)/
+syn match scalaAkkaFSM /startWith\ze([^)]*)/
+syn match scalaAkkaFSM /initialize\ze()/
+syn match scalaAkkaFSM /onTransition/
+syn match scalaAkkaFSM /onTermination/
+syn match scalaAkkaFSM /whenUnhandled/
+syn match scalaAkkaFSMGotoUsing /\<using\>/
+syn match scalaAkkaFSMGotoUsing /\<goto\>/
+hi link scalaAkkaFSM PreProc
+hi link scalaAkkaFSMGotoUsing PreProc
+
+let b:current_syntax = 'scala'
+
+if main_syntax ==# 'scala'
+  unlet main_syntax
+endif
+
+" vim:set sw=2 sts=2 ts=8 et:
--- a/runtime/syntax/sh.vim
+++ b/runtime/syntax/sh.vim
@@ -2,8 +2,8 @@
 " Language:		shell (sh) Korn shell (ksh) bash (sh)
 " Maintainer:		Charles E. Campbell  <NdrOchipS@PcampbellAfamily.Mbiz>
 " Previous Maintainer:	Lennart Schultz <Lennart.Schultz@ecmwf.int>
-" Last Change:		Jul 29, 2016
-" Version:		155
+" Last Change:		Aug 23, 2016
+" Version:		161
 " URL:		http://www.drchip.org/astronaut/vim/index.html#SYNTAX_SH
 " For options and settings, please use:      :help ft-sh-syntax
 " This file includes many ideas from Eric Brunet (eric.brunet@ens.fr)
@@ -127,11 +127,11 @@ syn cluster shErrorList	contains=shDoErr
 if exists("b:is_kornshell")
  syn cluster ErrorList add=shDTestError
 endif
-syn cluster shArithParenList	contains=shArithmetic,shCaseEsac,shComment,shDeref,shDo,shDerefSimple,shEcho,shEscape,shNumber,shOperator,shPosnParm,shExSingleQuote,shExDoubleQuote,shRedir,shSingleQuote,shDoubleQuote,shStatement,shVariable,shAlias,shTest,shCtrlSeq,shSpecial,shParen,bashSpecialVariables,bashStatement,shIf,shFor
+syn cluster shArithParenList	contains=shArithmetic,shCaseEsac,shComment,shDeref,shDo,shDerefSimple,shEcho,shEscape,shNumber,shOperator,shPosnParm,shExSingleQuote,shExDoubleQuote,shHereString,shRedir,shSingleQuote,shDoubleQuote,shStatement,shVariable,shAlias,shTest,shCtrlSeq,shSpecial,shParen,bashSpecialVariables,bashStatement,shIf,shFor
 syn cluster shArithList	contains=@shArithParenList,shParenError
 syn cluster shCaseEsacList	contains=shCaseStart,shCase,shCaseBar,shCaseIn,shComment,shDeref,shDerefSimple,shCaseCommandSub,shCaseExSingleQuote,shCaseSingleQuote,shCaseDoubleQuote,shCtrlSeq,@shErrorList,shStringSpecial,shCaseRange
-syn cluster shCaseList	contains=@shCommandSubList,shCaseEsac,shColon,shCommandSub,shComment,shDo,shEcho,shExpr,shFor,shHereDoc,shIf,shRedir,shSetList,shSource,shStatement,shVariable,shCtrlSeq
-syn cluster shCommandSubList	contains=shAlias,shArithmetic,shComment,shCmdParenRegion,shCtrlSeq,shDeref,shDerefSimple,shDoubleQuote,shEcho,shEscape,shExDoubleQuote,shExpr,shExSingleQuote,shHereDoc,shNumber,shOperator,shOption,shPosnParm,shSingleQuote,shSpecial,shStatement,shSubSh,shTest,shVariable
+syn cluster shCaseList	contains=@shCommandSubList,shCaseEsac,shColon,shCommandSub,shComment,shDo,shEcho,shExpr,shFor,shHereDoc,shIf,shHereString,shRedir,shSetList,shSource,shStatement,shVariable,shCtrlSeq
+syn cluster shCommandSubList	contains=shAlias,shArithmetic,shComment,shCmdParenRegion,shCtrlSeq,shDeref,shDerefSimple,shDoubleQuote,shEcho,shEscape,shExDoubleQuote,shExpr,shExSingleQuote,shHereDoc,shNumber,shOperator,shOption,shPosnParm,shHereString,shRedir,shSingleQuote,shSpecial,shStatement,shSubSh,shTest,shVariable
 syn cluster shCurlyList	contains=shNumber,shComma,shDeref,shDerefSimple,shDerefSpecial
 syn cluster shDblQuoteList	contains=shCommandSub,shDeref,shDerefSimple,shEscape,shPosnParm,shCtrlSeq,shSpecial
 syn cluster shDerefList	contains=shDeref,shDerefSimple,shDerefVar,shDerefSpecial,shDerefWordError,shDerefPSR,shDerefPPS
@@ -139,7 +139,7 @@ syn cluster shDerefVarList	contains=shDe
 syn cluster shEchoList	contains=shArithmetic,shCommandSub,shDeref,shDerefSimple,shEscape,shExpr,shExSingleQuote,shExDoubleQuote,shSingleQuote,shDoubleQuote,shCtrlSeq,shEchoQuote
 syn cluster shExprList1	contains=shCharClass,shNumber,shOperator,shExSingleQuote,shExDoubleQuote,shSingleQuote,shDoubleQuote,shExpr,shDblBrace,shDeref,shDerefSimple,shCtrlSeq
 syn cluster shExprList2	contains=@shExprList1,@shCaseList,shTest
-syn cluster shFunctionList	contains=@shCommandSubList,shCaseEsac,shColon,shCommandSub,shComment,shDo,shEcho,shExpr,shFor,shHereDoc,shIf,shOption,shRedir,shSetList,shSource,shStatement,shVariable,shOperator,shCtrlSeq
+syn cluster shFunctionList	contains=@shCommandSubList,shCaseEsac,shColon,shCommandSub,shComment,shDo,shEcho,shExpr,shFor,shHereDoc,shIf,shOption,shHereString,shRedir,shSetList,shSource,shStatement,shVariable,shOperator,shCtrlSeq
 if exists("b:is_kornshell") || exists("b:is_bash")
  syn cluster shFunctionList	add=shRepeat
  syn cluster shFunctionList	add=shDblBrace,shDblParen
@@ -147,11 +147,11 @@ endif
 syn cluster shHereBeginList	contains=@shCommandSubList
 syn cluster shHereList	contains=shBeginHere,shHerePayload
 syn cluster shHereListDQ	contains=shBeginHere,@shDblQuoteList,shHerePayload
-syn cluster shIdList	contains=shCommandSub,shWrapLineOperator,shSetOption,shDeref,shDerefSimple,shRedir,shExSingleQuote,shExDoubleQuote,shSingleQuote,shDoubleQuote,shExpr,shCtrlSeq,shStringSpecial,shAtExpr
-syn cluster shIfList	contains=@shLoopList,shDblBrace,shDblParen,shFunctionKey,shFunctionOne,shFunctionTwo
+syn cluster shIdList	contains=shCommandSub,shWrapLineOperator,shSetOption,shDeref,shDerefSimple,shHereString,shRedir,shExSingleQuote,shExDoubleQuote,shSingleQuote,shDoubleQuote,shExpr,shCtrlSeq,shStringSpecial,shAtExpr
+syn cluster shIfList	contains=@shLoopList,shDblBrace,shDblParen,shFunctionKey,shFunctionOne,shFunctionTwo,shParen
 syn cluster shLoopList	contains=@shCaseList,@shErrorList,shCaseEsac,shConditional,shDblBrace,shExpr,shFor,shForPP,shIf,shOption,shSet,shTest,shTestOpr,shTouch
 syn cluster shPPSRightList	contains=shComment,shDeref,shDerefSimple,shEscape,shPosnParm
-syn cluster shSubShList	contains=@shCommandSubList,shCaseEsac,shColon,shCommandSub,shComment,shDo,shEcho,shExpr,shFor,shIf,shRedir,shSetList,shSource,shStatement,shVariable,shCtrlSeq,shOperator
+syn cluster shSubShList	contains=@shCommandSubList,shCaseEsac,shColon,shCommandSub,shComment,shDo,shEcho,shExpr,shFor,shIf,shHereString,shRedir,shSetList,shSource,shStatement,shVariable,shCtrlSeq,shOperator
 syn cluster shTestList	contains=shCharClass,shCommandSub,shCtrlSeq,shDeref,shDerefSimple,shDoubleQuote,shExDoubleQuote,shExpr,shExSingleQuote,shNumber,shOperator,shSingleQuote,shTest,shTestOpr
 
 " Echo: {{{1
@@ -216,8 +216,8 @@ syn match   shPattern	"\<\S\+\())\)\@="	
 
 " Subshells: {{{1
 " ==========
-syn region shExpr  transparent matchgroup=shExprRegion  start="{" end="}"		contains=@shExprList2 nextgroup=shMoreSpecial
-syn region shSubSh transparent matchgroup=shSubShRegion start="[^(]\zs(" end=")"	contains=@shSubShList nextgroup=shMoreSpecial
+syn region shExpr  transparent matchgroup=shExprRegion  start="{" end="}"		contains=@shExprList2 nextgroup=shSpecialNxt
+syn region shSubSh transparent matchgroup=shSubShRegion start="[^(]\zs(" end=")"	contains=@shSubShList nextgroup=shSpecialNxt
 
 " Tests: {{{1
 "=======
@@ -339,8 +339,8 @@ if exists("b:is_bash")
  syn match   shSpecial	"^\(\\\\\)*\zs\\\o\o\o\|\\x\x\x\|\\c[^"]\|\\[abefnrtv]"	contained
 endif
 if exists("b:is_bash")
- syn region  shExSingleQuote	matchgroup=shQuote start=+\$'+ skip=+\\\\\|\\.+ end=+'+	contains=shStringSpecial,shSpecial
- syn region  shExDoubleQuote	matchgroup=shQuote start=+\$"+ skip=+\\\\\|\\.\|\\"+ end=+"+	contains=@shDblQuoteList,shStringSpecial,shSpecial
+ syn region  shExSingleQuote	matchgroup=shQuote start=+\$'+ skip=+\\\\\|\\.+ end=+'+	contains=shStringSpecial,shSpecial		nextgroup=shSpecialNxt
+ syn region  shExDoubleQuote	matchgroup=shQuote start=+\$"+ skip=+\\\\\|\\.\|\\"+ end=+"+	contains=@shDblQuoteList,shStringSpecial,shSpecial	nextgroup=shSpecialNxt
 elseif !exists("g:sh_no_error")
  syn region  shExSingleQuote	matchGroup=Error start=+\$'+ skip=+\\\\\|\\.+ end=+'+	contains=shStringSpecial
  syn region  shExDoubleQuote	matchGroup=Error start=+\$"+ skip=+\\\\\|\\.+ end=+"+	contains=shStringSpecial
@@ -351,7 +351,7 @@ syn match   shStringSpecial	"[^[:print:]
 syn match   shStringSpecial	"[^\\]\zs\%(\\\\\)*\\[\\"'`$()#]"
 syn match   shSpecial	"[^\\]\zs\%(\\\\\)*\\[\\"'`$()#]"		nextgroup=shBkslshSnglQuote,shBkslshDblQuote
 syn match   shSpecial	"^\%(\\\\\)*\\[\\"'`$()#]"
-syn match   shMoreSpecial	"[^\\]\zs\%(\\\\\)*\\[\\"'`$()#]"		nextgroup=shMoreSpecial contained
+syn match   shSpecialNxt	contained	"\\[\\"'`$()#]"
 syn region  shBkslshSnglQuote	contained	matchgroup=shQuote start=+'+ end=+'+	contains=@Spell
 syn region  shBkslshDblQuote	contained	matchgroup=shQuote start=+"+ skip=+\\"+ end=+"+	contains=@shDblQuoteList,shStringSpecial,@Spell
 
@@ -386,7 +386,7 @@ ShFoldHereDoc syn region shHereDoc match
 " =============
 " available for: bash; ksh (really should be ksh93 only) but not if its a posix
 if exists("b:is_bash") || (exists("b:is_kornshell") && !exists("g:is_posix"))
- syn match shRedir "<<<"	skipwhite	nextgroup=shCmdParenRegion
+ syn match shHereString "<<<"	skipwhite	nextgroup=shCmdParenRegion
 endif
 
 " Identifiers: {{{1
@@ -431,6 +431,7 @@ syn match  shDerefSimple	"\$\%(\h\w*\|\d
 syn region shDeref	matchgroup=PreProc start="\${" end="}"	contains=@shDerefList,shDerefVarArray
 syn match  shDerefSimple	"\$[-#*@!?]"
 syn match  shDerefSimple	"\$\$"
+syn match  shDerefSimple	"\${\d}"
 if exists("b:is_bash") || exists("b:is_kornshell")
  syn region shDeref	matchgroup=PreProc start="\${##\=" end="}"	contains=@shDerefList
  syn region shDeref	matchgroup=PreProc start="\${\$\$" end="}"	contains=@shDerefList
@@ -455,6 +456,7 @@ endif
 syn match  shDerefSpecial	contained	"{\@<=[-*@?0]"		nextgroup=shDerefOp,shDerefOpError
 syn match  shDerefSpecial	contained	"\({[#!]\)\@<=[[:alnum:]*@_]\+"	nextgroup=@shDerefVarList,shDerefOp
 syn match  shDerefVar	contained	"{\@<=\h\w*"		nextgroup=@shDerefVarList
+syn match  shDerefVar	contained	'\d'                            nextgroup=@shDerefVarList
 if exists("b:is_kornshell")
   syn match  shDerefVar	contained	"{\@<=\h\w*[[:alnum:]_.]*"	nextgroup=@shDerefVarList
 endif
@@ -482,24 +484,24 @@ endif
 syn match  shDerefOp	contained	":\=[-=?]"	nextgroup=@shDerefPatternList
 syn match  shDerefOp	contained	":\=+"	nextgroup=@shDerefPatternList
 if exists("b:is_bash") || exists("b:is_kornshell")
- syn match  shDerefOp	contained	"#\{1,2}"	nextgroup=@shDerefPatternList
- syn match  shDerefOp	contained	"%\{1,2}"	nextgroup=@shDerefPatternList
- syn match  shDerefPattern	contained	"[^{}]\+"	contains=shDeref,shDerefSimple,shDerefPattern,shDerefString,shCommandSub,shDerefEscape nextgroup=shDerefPattern
+ syn match  shDerefOp	contained	"#\{1,2}"		nextgroup=@shDerefPatternList
+ syn match  shDerefOp	contained	"%\{1,2}"		nextgroup=@shDerefPatternList
+ syn match  shDerefPattern	contained	"[^{}]\+"		contains=shDeref,shDerefSimple,shDerefPattern,shDerefString,shCommandSub,shDerefEscape nextgroup=shDerefPattern
  syn region shDerefPattern	contained	start="{" end="}"	contains=shDeref,shDerefSimple,shDerefString,shCommandSub nextgroup=shDerefPattern
  syn match  shDerefEscape	contained	'\%(\\\\\)*\\.'
 endif
 if exists("b:is_bash")
  syn match  shDerefOp	contained	"[,^]\{1,2}"	nextgroup=@shDerefPatternList
 endif
-syn region shDerefString	contained	matchgroup=shDerefDelim start=+\%(\\\)\@<!'+ end=+'+		contains=shStringSpecial
+syn region shDerefString	contained	matchgroup=shDerefDelim start=+\%(\\\)\@<!'+ end=+'+	contains=shStringSpecial
 syn region shDerefString	contained	matchgroup=shDerefDelim start=+\%(\\\)\@<!"+ skip=+\\"+ end=+"+	contains=@shDblQuoteList,shStringSpecial
 syn match  shDerefString	contained	"\\["']"	nextgroup=shDerefPattern
 
 if exists("b:is_bash")
  " bash : ${parameter:offset}
  " bash : ${parameter:offset:length}
- syn region shDerefOff	contained	start=':'	end='\ze:'	end='\ze}'	contains=shDeref,shDerefSimple	nextgroup=shDerefLen,shDeref,shDerefSimple
- syn region shDerefOff	contained	start=':\s-'	end='\ze:'	end='\ze}'	contains=shDeref,shDerefSimple	nextgroup=shDerefLen,shDeref,shDerefSimple
+ syn region shDerefOff	contained	start=':'	end='\ze:'	end='\ze}'	contains=shDeref,shDerefSimple,shDerefEscape	nextgroup=shDerefLen,shDeref,shDerefSimple
+ syn region shDerefOff	contained	start=':\s-'	end='\ze:'	end='\ze}'	contains=shDeref,shDerefSimple,shDerefEscape	nextgroup=shDerefLen,shDeref,shDerefSimple
  syn match  shDerefLen	contained	":[^}]\+"	contains=shDeref,shDerefSimple
 
  " bash : ${parameter//pattern/string}
@@ -602,14 +604,16 @@ hi def link shEcho	shString
 hi def link shEchoDelim	shOperator
 hi def link shEchoQuote	shString
 hi def link shForPP	shLoop
+hi def link shFunction	Function
 hi def link shEmbeddedEcho	shString
 hi def link shEscape	shCommandSub
 hi def link shExDoubleQuote	shDoubleQuote
 hi def link shExSingleQuote	shSingleQuote
 hi def link shHereDoc	shString
+hi def link shHereString	shRedir
 hi def link shHerePayload	shHereDoc
 hi def link shLoop	shStatement
-hi def link shMoreSpecial	shSpecial
+hi def link shSpecialNxt	shSpecial
 hi def link shNoQuote	shDoubleQuote
 hi def link shOption	shCommandSub
 hi def link shPattern	shString
--- a/runtime/syntax/vim.vim
+++ b/runtime/syntax/vim.vim
@@ -1,8 +1,8 @@
 " Vim syntax file
 " Language:	Vim 7.4 script
 " Maintainer:	Charles E. Campbell <NdrOchipS@PcampbellAfamily.Mbiz>
-" Last Change:	July 11, 2016
-" Version:	7.4-51
+" Last Change:	August 26, 2016
+" Version:	7.4-52
 " Automatically generated keyword lists: {{{1
 
 " Quit when a syntax file was already loaded {{{2
@@ -18,24 +18,24 @@ syn keyword vimTodo contained	COMBAK	FIX
 syn cluster vimCommentGroup	contains=vimTodo,@Spell
 
 " regular vim commands {{{2
-syn keyword vimCommand contained	a arga[dd] argu[ment] bad[d] bn[ext] breakd[el] bw[ipeout] cadde[xpr] ccl[ose] cfdo chd[ir] clo[se] col[der] conf[irm] cs debug deletep delp diffp[atch] dj[ump] dr[op] ec em[enu] ene[w] filet fix[del] for gui helpg[rep] ia in ju[mps] keepj[umps] la[st] lat lcl[ose] lefta[bove] lg[etfile] lh[elpgrep] lmapc[lear] loadk lop[en] lt[ag] lvimgrepa[dd] marks mk[exrc] mod[e] nbc[lose] noautocmd nu[mber] opt[ions] pc[lose] popu[p] prof[ile] ptN[ext] ptn[ext] pw[d] pyf[ile] r[ead] redraws[tatus] rew[ind] rubyd[o] sIc sIp san[dbox] sbf[irst] sbr[ewind] sci scs setl[ocal] sgc sgp sie sin sm[agic] sn[ext] sor[t] spellr[epall] srI srl star[tinsert] sts[elect] sv[iew] syncbind tab tabf[ind] tabnew tags tf[irst] tn[ext] ts[elect] undol[ist] up[date] vi[sual] vmapc[lear] wa[ll] winp[os] ws[verb] xmapc[lear] xprop
-syn keyword vimCommand contained	ab argd[elete] as[cii] bd[elete] bo[tright] breakl[ist] cN[ext] caddf[ile] cd cfir[st] che[ckpath] cmapc[lear] colo[rscheme] cope[n] cscope debugg[reedy] deletl dep diffpu[t] dl ds[earch] echoe[rr] en[dif] ex filetype fo[ld] fu[nction] gvim helpt[ags] iabc[lear] intro k keepp[atterns] lad[dexpr] later lcs lex[pr] lgetb[uffer] ll lne[xt] loadkeymap lp[revious] lua lw[indow] mat[ch] mks[ession] mz[scheme] nbs[tart] noh[lsearch] o[pen] ownsyntax pe[rl] pp[op] profd[el] pta[g] ptp[revious] py3 python3 rec[over] reg[isters] ri[ght] rubyf[ile] sIe sIr sav[eas] sbl[ast] sc scl scscope sf[ind] sge sgr sig sip sm[ap] sno[magic] sp[lit] spellu[ndo] src srn startg[replace] sun[hide] sw[apname] syntime tabN[ext] tabfir[st] tabo[nly] tc[l] th[row] to[pleft] tu[nmenu] unh[ide] v vie[w] vne[w] wh[ile] wn[ext] wundo xme xunme
-syn keyword vimCommand contained	abc[lear] argdo au bel[owright] bp[revious] bro[wse] cNf[ile] cal[l] cdo cg[etfile] checkt[ime] cn[ext] com cp[revious] cstag delc[ommand] deletp di[splay] diffs[plit] dli[st] dsp[lit] echom[sg] endf[unction] exi[t] fin[d] foldc[lose] g h[elp] hi if is[earch] kee[pmarks] lN[ext] laddb[uffer] lb[uffer] lcscope lf[ile] lgete[xpr] lla[st] lnew[er] loc[kmarks] lpf[ile] luado m[ove] menut[ranslate] mksp[ell] mzf[ile] new nor ol[dfiles] p[rint] ped[it] pre[serve] promptf[ind] ptf[irst] ptr[ewind] py3do q[uit] red[o] res[ize] rightb[elow] rundo sIg sN[ext] sbN[ext] sbm[odified] scI scp se[t] sfir[st] sgi sh[ell] sign sir sme snoreme spe[llgood] spellw[rong] sre[wind] srp startr[eplace] sunme sy t tabc[lose] tabl[ast] tabp[revious] tcld[o] tj[ump] tp[revious] u[ndo] unl ve[rsion] vim[grep] vs[plit] win[size] wp[revious] wv[iminfo] xmenu xunmenu
-syn keyword vimCommand contained	abo[veleft] arge[dit] bN[ext] bf[irst] br[ewind] bufdo c[hange] cat[ch] ce[nter] cgetb[uffer] cl[ist] cnew[er] comc[lear] cpf[ile] cuna[bbrev] delel delf[unction] dif[fupdate] difft[his] do e[dit] echon endfo[r] exu[sage] fina[lly] foldd[oopen] go[to] ha[rdcopy] hid[e] ij[ump] isp[lit] keepa lNf[ile] laddf[ile] lc[d] ld[o] lfdo lgr[ep] lli[st] lnf[ile] lockv[ar] lr[ewind] luafile ma[rk] mes mkv[imrc] n[ext] nmapc[lear] nore omapc[lear] pa[ckadd] perld[o] prev[ious] promptr[epl] ptj[ump] pts[elect] py[thon] qa[ll] redi[r] ret[ab] ru[ntime] rv[iminfo] sIl sa[rgument] sb[uffer] sbn[ext] sce scr[iptnames] setf[iletype] sg sgl si sil[ent] sl[eep] smenu snoremenu spelld[ump] spr[evious] srg st[op] stj[ump] sunmenu syn tN[ext] tabd[o] tabm[ove] tabr[ewind] tclf[ile] tl[ast] tr[ewind] una[bbreviate] unlo[ckvar] verb[ose] vimgrepa[dd] wN[ext] winc[md] wq x[it] xnoreme xwininfo
-syn keyword vimCommand contained	al[l] argg[lobal] b[uffer] bl[ast] brea[k] buffers cabc[lear] cb[uffer] cex[pr] cgete[xpr] cla[st] cnf[ile] comp[iler] cq[uit] cw[indow] delep dell diffg[et] dig[raphs] doau ea el[se] endt[ry] f[ile] fini[sh] folddoc[losed] gr[ep] helpc[lose] his[tory] il[ist] iuna[bbrev] keepalt l[ist] lan[guage] lch[dir] le[ft] lfir[st] lgrepa[dd] lmak[e] lo[adview] lol[der] ls lv[imgrep] mak[e] messages mkvie[w] nb[key] noa nos[wapfile] on[ly] packl[oadall] po[p] pro ps[earch] ptl[ast] pu[t] pydo quita[ll] redr[aw] retu[rn] rub[y] sI sIn sal[l] sba[ll] sbp[revious] scg scripte[ncoding] setg[lobal] sgI sgn sic sim[alt] sla[st] smile so[urce] spelli[nfo] sr sri sta[g] stopi[nsert] sus[pend] sync ta[g] tabe[dit] tabn[ext] tabs te[aroff] tm[enu] try undoj[oin] uns[ilent] vert[ical] viu[sage] w[rite] windo wqa[ll] xa[ll] xnoremenu y[ank]
-syn keyword vimCommand contained	ar[gs] argl[ocal] ba[ll] bm[odified] breaka[dd] bun[load] cad[dbuffer] cc cf[ile] changes cle[arjumps] co[py] con[tinue] cr[ewind] d[elete] deletel delm[arks] diffo[ff] dir dp earlier elsei[f] endw[hile] files fir[st] foldo[pen] grepa[dd] helpf[ind] i imapc[lear] j[oin] 
+syn keyword vimCommand contained	a arga[dd] argu[ment] bad[d] bn[ext] breakd[el] bw[ipeout] cadde[xpr] cc cf[ile] changes cla[st] cnf[ile] comp[iler] cq[uit] cw[indow] delep dell diffg[et] dig[raphs] doau ea el[se] endt[ry] f[ile] fina[lly] foldd[oopen] go[to] ha[rdcopy] hid[e] ij[ump] isp[lit] keepa l[ist] lat lcl[ose] lex[pr] lgetb[uffer] lhi[story] lmapc[lear] loadk lop[en] lt[ag] lvimgrepa[dd] marks mk[exrc] mod[e] nbc[lose] noautocmd nu[mber] opt[ions] pc[lose] popu[p] prof[ile] ptN[ext] ptn[ext] pw[d] pyf[ile] r[ead] redraws[tatus] rew[ind] rubyd[o] sIc sIp san[dbox] sbf[irst] sbr[ewind] sci scs setl[ocal] sgc sgp sie sin sm[agic] sn[ext] sor[t] spellr[epall] srI srl star[tinsert] sts[elect] sv[iew] syncbind tab tabf[ind] tabnew tags tf[irst] tn[ext] ts[elect] undol[ist] up[date] vi[sual] vmapc[lear] wa[ll] winp[os] ws[verb] xmapc[lear] xprop
+syn keyword vimCommand contained	ab argd[elete] as[cii] bd[elete] bo[tright] breakl[ist] cN[ext] caddf[ile] ccl[ose] cfdo chd[ir] cle[arjumps] co[py] con[tinue] cr[ewind] d[elete] deletel delm[arks] diffo[ff] dir dp earlier elsei[f] endw[hile] files fini[sh] folddoc[losed] gr[ep] helpc[lose] his[tory] il[ist] iuna[bbrev] keepalt la[st] later lcs lf[ile] lgete[xpr] ll lne[xt] loadkeymap lp[revious] lua lw[indow] mat[ch] mks[ession] mz[scheme] nbs[tart] noh[lsearch] o[pen] ownsyntax pe[rl] pp[op] profd[el] pta[g] ptp[revious] py3 python3 rec[over] reg[isters] ri[ght] rubyf[ile] sIe sIr sav[eas] sbl[ast] sc scl scscope sf[ind] sge sgr sig sip sm[ap] sno[magic] sp[lit] spellu[ndo] src srn startg[replace] sun[hide] sw[apname] syntime tabN[ext] tabfir[st] tabo[nly] tc[l] th[row] to[pleft] tu[nmenu] unh[ide] v vie[w] vne[w] wh[ile] wn[ext] wundo xme xunme
+syn keyword vimCommand contained	abc[lear] argdo au bel[owright] bp[revious] bro[wse] cNf[ile] cal[l] cd cfir[st] che[ckpath] clo[se] col[der] conf[irm] cs debug deletep delp diffp[atch] dj[ump] dr[op] ec em[enu] ene[w] filet fir[st] foldo[pen] grepa[dd] helpf[ind] i imapc[lear] j[oin] keepj[umps] lad[dexpr] lb[uffer] lcscope lfdo lgr[ep] lla[st] lnew[er] loc[kmarks] lpf[ile] luado m[ove] menut[ranslate] mksp[ell] mzf[ile] new nor ol[dfiles] p[rint] ped[it] pre[serve] promptf[ind] ptf[irst] ptr[ewind] py3do q[uit] red[o] res[ize] rightb[elow] rundo sIg sN[ext] sbN[ext] sbm[odified] scI scp se[t] sfir[st] sgi sh[ell] sign sir sme snoreme spe[llgood] spellw[rong] sre[wind] srp startr[eplace] sunme sy t tabc[lose] tabl[ast] tabp[revious] tcld[o] tj[ump] tp[revious] u[ndo] unl ve[rsion] vim[grep] vs[plit] win[size] wp[revious] wv[iminfo] xmenu xunmenu
+syn keyword vimCommand contained	abo[veleft] arge[dit] bN[ext] bf[irst] br[ewind] bufdo c[hange] cat[ch] cdo cg[etfile] checkt[ime] cmapc[lear] colo[rscheme] cope[n] cscope debugg[reedy] deletl dep diffpu[t] dl ds[earch] echoe[rr] en[dif] ex filetype fix[del] for gui helpg[rep] ia in ju[mps] keepp[atterns] laddb[uffer] lbo[ttom] ld[o] lfir[st] lgrepa[dd] lli[st] lnf[ile] lockv[ar] lr[ewind] luafile ma[rk] mes mkv[imrc] n[ext] nmapc[lear] nore omapc[lear] pa[ckadd] perld[o] prev[ious] promptr[epl] ptj[ump] pts[elect] py[thon] qa[ll] redi[r] ret[ab] ru[ntime] rv[iminfo] sIl sa[rgument] sb[uffer] sbn[ext] sce scr[iptnames] setf[iletype] sg sgl si sil[ent] sl[eep] smenu snoremenu spelld[ump] spr[evious] srg st[op] stj[ump] sunmenu syn tN[ext] tabd[o] tabm[ove] tabr[ewind] tclf[ile] tl[ast] tr[ewind] una[bbreviate] unlo[ckvar] verb[ose] vimgrepa[dd] wN[ext] winc[md] wq x[it] xnoreme xwininfo
+syn keyword vimCommand contained	al[l] argg[lobal] b[uffer] bl[ast] brea[k] buffers cabc[lear] cb[uffer] ce[nter] cgetb[uffer] chi[story] cn[ext] com cp[revious] cstag delc[ommand] deletp di[splay] diffs[plit] dli[st] dsp[lit] echom[sg] endf[unction] exi[t] filt[er] fo[ld] fu[nction] gvim helpt[ags] iabc[lear] intro k lN[ext] laddf[ile] lc[d] le[ft] lg[etfile] lh[elpgrep] lmak[e] lo[adview] lol[der] ls lv[imgrep] mak[e] messages mkvie[w] nb[key] noa nos[wapfile] on[ly] packl[oadall] po[p] pro ps[earch] ptl[ast] pu[t] pydo quita[ll] redr[aw] retu[rn] rub[y] sI sIn sal[l] sba[ll] sbp[revious] scg scripte[ncoding] setg[lobal] sgI sgn sic sim[alt] sla[st] smile so[urce] spelli[nfo] sr sri sta[g] stopi[nsert] sus[pend] sync ta[g] tabe[dit] tabn[ext] tabs te[aroff] tm[enu] try undoj[oin] uns[ilent] vert[ical] viu[sage] w[rite] windo wqa[ll] xa[ll] xnoremenu y[ank]
+syn keyword vimCommand contained	ar[gs] argl[ocal] ba[ll] bm[odified] breaka[dd] bun[load] cad[dbuffer] cbo[ttom] cex[pr] cgete[xpr] cl[ist] cnew[er] comc[lear] cpf[ile] cuna[bbrev] delel delf[unction] dif[fupdate] difft[his] do e[dit] echon endfo[r] exu[sage] fin[d] foldc[lose] g h[elp] hi if is[earch] kee[pmarks] lNf[ile] lan[guage] lch[dir] lefta[bove] 
 syn match   vimCommand contained	"\<z[-+^.=]\=\>"
 syn keyword vimStdPlugin contained	DiffOrig Man N[ext] P[rint] S TOhtml XMLent XMLns 
 
 " vimOptions are caught only when contained in a vimSet {{{2
-syn keyword vimOption contained	acd ambw arshape background ballooneval bg bomb bs cb ch cinoptions cms commentstring copyindent cscopepathcomp csprg cul def diff display edcompatible enc errorbells expandtab fdl fenc fileencodings fixeol foldclose foldmarker formatlistpat gcr ghr guicursor guitablabel hi hkmapp icon imak ims incsearch infercase isk keymap langmenu lines lmap lw mat maxmempattern mis mmt mouse mouseshape mzquantum odev osfiletype patchexpr pexpr pmbfn printencoding prompt qe relativenumber rightleft rs runtimepath scroll sections sh shellslash shm showmode sj smd spell splitbelow ssl stl sw sxe tabpagemax tags tbs termguicolors tgst titleold top ttimeoutlen ttyscroll ul ur verbosefile visualbell wcm wi wildmenu winfixwidth wm wrapscan
-syn keyword vimOption contained	ai anti autochdir backspace balloonexpr bh breakat bsdir cc charconvert cinw co compatible cot cscopeprg csqf cursorbind define diffexpr dy ef encoding errorfile exrc fdls fencs fileformat fk foldcolumn foldmethod formatoptions gd go guifont guitabtooltip hid hkp iconstring imc imsearch inde insertmode iskeyword keymodel langnoremap linespace lnr lz matchpairs maxmemtot mkspellmem mod mousef mouset nf oft pa patchmode pfn popt printexpr pt quoteescape remap rightleftcmd rtp sb scrollbind secure shcf shelltemp shortmess showtabline slm sn spellcapcheck splitright ssop stmp swapfile sxq tabstop tagstack tc terse thesaurus titlestring tpm ttm ttytype undodir ut vfile vop wd wic wildmode winheight wmh write
-syn keyword vimOption contained	akm antialias autoindent backup bdir bin breakindent bsk ccv ci cinwords cocu complete cp cscopequickfix csre cursorcolumn delcombine diffopt ea efm endofline errorformat fcl fdm fex fileformats fkmap foldenable foldminlines formatprg gdefault gp guifontset helpfile hidden hl ignorecase imcmdline imsf indentexpr is isp keywordprg laststatus lisp loadplugins ma matchtime mco ml modeline mousefocus mousetime nrformats ofu packpath path ph pp printfont pumheight rdt renderoptions rl ru sbo scrolljump sel shell shelltype shortname shq sm so spellfile spr st sts swapsync syn tag tal tcldll textauto tildeop tl tr tty tw undofile vb vi wa weirdinvert wig wildoptions winminheight wmnu writeany
-syn keyword vimOption contained	al ar autoread backupcopy bdlay binary breakindentopt bt cd cin clipboard cole completefunc cpo cscoperelative cst cursorline dex digraph ead ei eol esckeys fcs fdn ff fileignorecase flp foldexpr foldnestmax fp gfm grepformat guifontwide helpheight highlight hlg im imd imstatusfunc indentkeys isf isprint km lazyredraw lispwords lpl macatsui maxcombine mef mls modelines mousehide mp nu omnifunc para pdev pheader preserveindent printheader pvh re report rlc rubydll sbr scrolloff selection shellcmdflag shellxescape showbreak si smartcase softtabstop spelllang sps sta su swb synmaxcol tagbsearch tb tenc textmode timeout tm ts ttybuiltin tx undolevels vbs viewdir wak wfh wildchar wim winminwidth wmw writebackup
-syn keyword vimOption contained	aleph arab autowrite backupdir belloff bk bri bufhidden cdpath cindent cm colorcolumn completeopt cpoptions cscopetag csto cwh dg dip eadirection ek ep et fdc fdo ffs filetype fml foldignore foldopen fs gfn grepprg guiheadroom helplang history hls imactivatefunc imdisable inc indk isfname joinspaces kmp lbr list ls magic maxfuncdepth menuitems mm modifiable mousem mps number opendevice paragraphs penc pi previewheight printmbcharset pvw readonly restorescreen rnu ruf sc scrollopt selectmode shellpipe shellxquote showcmd sidescroll smartindent sol spellsuggest sr stal sua swf syntax tagcase tbi term textwidth timeoutlen to tsl ttyfast uc undoreload vdir viewoptions warn wfw wildcharm winaltkeys winwidth wop writedelay
-syn keyword vimOption contained	allowrevins arabic autowriteall backupext beval bkc briopt buflisted cedit cink cmdheight columns concealcursor cpt cscopetagorder csverb debug dict dir eb emo equalalways eventignore fde fdt fic fillchars fmr foldlevel foldtext fsync gfs gtl guioptions hf hk hlsearch imactivatekey imi include inex isi js kp lcs listchars lsp makeef maxmapdepth mfd mmd modified mousemodel msm numberwidth operatorfunc paste perldll pm previewwindow printmbfont pythondll redrawtime revins ro ruler scb scs sessionoptions shellquote shiftround showfulltag sidescrolloff smarttab sp spf srr startofline suffixes switchbuf ta taglength tbidi termbidi tf title toolbar tsr ttym udf updatecount ve viminfo wb wh wildignore window wiv wrap ws
-syn keyword vimOption contained	altkeymap arabicshape aw backupskip bex bl brk buftype cf cinkeys cmdwinheight com conceallevel crb cscopeverbose cuc deco dictionary directory ed emoji equalprg ex fdi fen fileencoding fixendofline fo foldlevelstart formatexpr ft gfw gtt guipty hh hkmap ic imaf iminsert includeexpr inf isident key langmap linebreak lm luadll makeprg maxmem mh mmp more mouses mzq nuw opfunc pastetoggle pex pmbcs printdevice printoptions pythonthreedll regexpengine ri rop rulerformat scr sect sft shellredir shiftwidth showmatch siso smc spc spl ss statusline suffixesadd sws tabline tagrelative tbis termencoding tgc titlelen toolbariconsize ttimeout ttymouse udir updatetime verbose virtualedit wc whichwrap wildignorecase winfixheight wiw wrapmargin ww
-syn keyword vimOption contained	ambiwidth ari awa balloondelay bexpr bo browsedir casemap cfu cino cmp comments confirm cryptmethod cspc 
+syn keyword vimOption contained	acd ambw arshape background ballooneval bg bomb bs cb ch cinoptions cms commentstring copyindent cscopepathcomp csprg cursorbind delcombine diffopt ea efm endofline errorformat fcl fdm fex fileformats fkmap foldenable foldminlines formatprg gdefault gp guifontset helpfile hidden hl ignorecase imcmdline imsf indentexpr is isp keywordprg laststatus lisp loadplugins ma matchtime mco ml modeline mousefocus mousetime nrformats ofu packpath path ph pp printfont pumheight rdt renderoptions rl ru sbo scrollbind secure shcf shelltemp shortmess showtabline sj smd spell splitbelow ssl stl sw sxe tabpagemax tags tbs termguicolors tgst titleold top ttimeoutlen ttyscroll ul ur verbosefile visualbell wcm wi wildmenu winfixwidth wm wrapscan
+syn keyword vimOption contained	ai anti autochdir backspace balloonexpr bh breakat bsdir cc charconvert cinw co compatible cot cscopeprg csqf cursorcolumn dex digraph ead ei eol esckeys fcs fdn ff fileignorecase flp foldexpr foldnestmax fp gfm grepformat guifontwide helpheight highlight hlg im imd imstatusfunc indentkeys isf isprint km lazyredraw lispwords lpl macatsui maxcombine mef mls modelines mousehide mp nu omnifunc para pdev pheader preserveindent printheader pvh re report rlc rubydll sbr scrolljump sel shell shelltype shortname shq slm sn spellcapcheck splitright ssop stmp swapfile sxq tabstop tagstack tc terse thesaurus titlestring tpm ttm ttytype undodir ut vfile vop wd wic wildmode winheight wmh write
+syn keyword vimOption contained	akm antialias autoindent backup bdir bin breakindent bsk ccv ci cinwords cocu complete cp cscopequickfix csre cursorline dg dip eadirection ek ep et fdc fdo ffs filetype fml foldignore foldopen fs gfn grepprg guiheadroom helplang history hls imactivatefunc imdisable inc indk isfname joinspaces kmp lbr list ls magic maxfuncdepth menuitems mm modifiable mousem mps number opendevice paragraphs penc pi previewheight printmbcharset pvw readonly restorescreen rnu ruf sc scrolloff selection shellcmdflag shellxescape showbreak si sm so spellfile spr st sts swapsync syn tag tal tcldll textauto tildeop tl tr tty tw undofile vb vi wa weirdinvert wig wildoptions winminheight wmnu writeany
+syn keyword vimOption contained	al ar autoread backupcopy bdlay binary breakindentopt bt cd cin clipboard cole completefunc cpo cscoperelative cst cwh dict dir eb emo equalalways eventignore fde fdt fic fillchars fmr foldlevel foldtext fsync gfs gtl guioptions hf hk hlsearch imactivatekey imi include inex isi js kp lcs listchars lsp makeef maxmapdepth mfd mmd modified mousemodel msm numberwidth operatorfunc paste perldll pm previewwindow printmbfont pythondll redrawtime revins ro ruler scb scrollopt selectmode shellpipe shellxquote showcmd sidescroll smartcase softtabstop spelllang sps sta su swb synmaxcol tagbsearch tb tenc textmode timeout tm ts ttybuiltin tx undolevels vbs viewdir wak wfh wildchar wim winminwidth wmw writebackup
+syn keyword vimOption contained	aleph arab autowrite backupdir belloff bk bri bufhidden cdpath cindent cm colorcolumn completeopt cpoptions cscopetag csto debug dictionary directory ed emoji equalprg ex fdi fen fileencoding fixendofline fo foldlevelstart formatexpr ft gfw gtt guipty hh hkmap ic imaf iminsert includeexpr inf isident key langmap linebreak lm luadll makeprg maxmem mh mmp more mouses mzq nuw opfunc pastetoggle pex pmbcs printdevice printoptions pythonthreedll regexpengine ri rop rulerformat scl scs sessionoptions shellquote shiftround showfulltag sidescrolloff smartindent sol spellsuggest sr stal sua swf syntax tagcase tbi term textwidth timeoutlen to tsl ttyfast uc undoreload vdir viewoptions warn wfw wildcharm winaltkeys winwidth wop writedelay
+syn keyword vimOption contained	allowrevins arabic autowriteall backupext beval bkc briopt buflisted cedit cink cmdheight columns concealcursor cpt cscopetagorder csverb deco diff display edcompatible enc errorbells expandtab fdl fenc fileencodings fixeol foldclose foldmarker formatlistpat gcr ghr guicursor guitablabel hi hkmapp icon imak ims incsearch infercase isk keymap langmenu lines lmap lw mat maxmempattern mis mmt mouse mouseshape mzquantum odev osfiletype patchexpr pexpr pmbfn printencoding prompt qe relativenumber rightleft rs runtimepath scr sect sft shellredir shiftwidth showmatch signcolumn smarttab sp spf srr startofline suffixes switchbuf ta taglength tbidi termbidi tf title toolbar tsr ttym udf updatecount ve viminfo wb wh wildignore window wiv wrap ws
+syn keyword vimOption contained	altkeymap arabicshape aw backupskip bex bl brk buftype cf cinkeys cmdwinheight com conceallevel crb cscopeverbose cuc def diffexpr dy ef encoding errorfile exrc fdls fencs fileformat fk foldcolumn foldmethod formatoptions gd go guifont guitabtooltip hid hkp iconstring imc imsearch inde insertmode iskeyword keymodel langnoremap linespace lnr lz matchpairs maxmemtot mkspellmem mod mousef mouset nf oft pa patchmode pfn popt printexpr pt quoteescape remap rightleftcmd rtp sb scroll sections sh shellslash shm showmode siso smc spc spl ss statusline suffixesadd sws tabline tagrelative tbis termencoding tgc titlelen toolbariconsize ttimeout ttymouse udir updatetime verbose virtualedit wc whichwrap wildignorecase winfixheight wiw wrapmargin ww
+syn keyword vimOption contained	ambiwidth ari awa balloondelay bexpr bo browsedir casemap cfu cino cmp comments confirm cryptmethod cspc cul define 
 
 " vimOptions: These are the turn-off setting variants {{{2
 syn keyword vimOption contained	noacd noallowrevins noantialias noarabic noarshape noautoread noaw noballooneval nobinary nobomb nobuflisted nocin noconfirm nocrb nocscopeverbose nocsverb nocursorbind nodeco nodiff noeb noek noendofline noerrorbells noex nofen nofixendofline nofkmap nofsync noguipty nohk nohkp noic noim noimd noinf noinsertmode nojoinspaces nolangnoremap nolbr nolisp nolnr nolpl noma nomagic noml nomodeline nomodified nomousef nomousehide nonumber noopendevice nopi nopreviewwindow nopvw norelativenumber norestorescreen nori norl noro noru nosb noscb noscs nosft noshelltemp noshortname noshowfulltag noshowmode nosm nosmartindent nosmd nosol nosplitbelow nospr nossl nostartofline noswapfile nota notagrelative notbi notbs noterse notextmode notgst notimeout noto notr nottybuiltin notx noundofile novisualbell nowarn noweirdinvert nowfw nowildignorecase nowinfixheight nowiv nowrap nowrite nowritebackup
@@ -65,21 +65,21 @@ syn keyword vimErrSetting contained	bios
 
 " AutoCmd Events {{{2
 syn case ignore
-syn keyword vimAutoEvent contained	BufAdd BufCreate BufDelete BufEnter BufFilePost BufFilePre BufHidden BufLeave BufNew BufNewFile BufRead BufReadCmd BufReadPost BufReadPre BufUnload BufWinEnter BufWinLeave BufWipeout BufWrite BufWriteCmd BufWritePost BufWritePre CmdUndefined CmdwinEnter CmdwinLeave ColorScheme CompleteDone CursorHold CursorHoldI CursorMoved CursorMovedI EncodingChanged FileAppendCmd FileAppendPost FileAppendPre FileChangedRO FileChangedShell FileChangedShellPost FileEncoding FileReadCmd FileReadPost FileReadPre FileType FileWriteCmd FileWritePost FileWritePre FilterReadPost FilterReadPre FilterWritePost FilterWritePre FocusGained FocusLost FuncUndefined GUIEnter GUIFailed InsertChange InsertCharPre InsertEnter InsertLeave MenuPopup OptionSet QuickFixCmdPost QuickFixCmdPre QuitPre RemoteReply SessionLoadPost ShellCmdPost ShellFilterPost SourceCmd SourcePre SpellFileMissing StdinReadPost StdinReadPre SwapExists Syntax TabEnter TabLeave TermChanged TermResponse TextChanged TextChangedI User VimEnter VimLeave VimLeavePre VimResized WinEnter WinLeave 
+syn keyword vimAutoEvent contained	BufAdd BufCreate BufDelete BufEnter BufFilePost BufFilePre BufHidden BufLeave BufNew BufNewFile BufRead BufReadCmd BufReadPost BufReadPre BufUnload BufWinEnter BufWinLeave BufWipeout BufWrite BufWriteCmd BufWritePost BufWritePre CmdUndefined CmdwinEnter CmdwinLeave ColorScheme CompleteDone CursorHold CursorHoldI CursorMoved CursorMovedI EncodingChanged FileAppendCmd FileAppendPost FileAppendPre FileChangedRO FileChangedShell FileChangedShellPost FileEncoding FileReadCmd FileReadPost FileReadPre FileType FileWriteCmd FileWritePost FileWritePre FilterReadPost FilterReadPre FilterWritePost FilterWritePre FocusGained FocusLost FuncUndefined GUIEnter GUIFailed InsertChange InsertCharPre InsertEnter InsertLeave MenuPopup OptionSet QuickFixCmdPost QuickFixCmdPre QuitPre RemoteReply SessionLoadPost ShellCmdPost ShellFilterPost SourceCmd SourcePre SpellFileMissing StdinReadPost StdinReadPre SwapExists Syntax TabClosed TabEnter TabLeave TabNew TermChanged TermResponse TextChanged TextChangedI User VimEnter VimLeave VimLeavePre VimResized WinEnter WinLeave WinNew 
 
 " Highlight commonly used Groupnames {{{2
 syn keyword vimGroup contained	Comment Constant String Character Number Boolean Float Identifier Function Statement Conditional Repeat Label Operator Keyword Exception PreProc Include Define Macro PreCondit Type StorageClass Structure Typedef Special SpecialChar Tag Delimiter SpecialComment Debug Underlined Ignore Error Todo 
 
 " Default highlighting groups {{{2
-syn keyword vimHLGroup contained	ColorColumn Cursor CursorColumn CursorIM CursorLine CursorLineNr DiffAdd DiffChange DiffDelete DiffText Directory ErrorMsg FoldColumn Folded IncSearch LineNr MatchParen Menu ModeMsg MoreMsg NonText Normal Pmenu PmenuSbar PmenuSel PmenuThumb Question Scrollbar Search SignColumn SpecialKey SpellBad SpellCap SpellLocal SpellRare StatusLine StatusLineNC TabLine TabLineFill TabLineSel Title Tooltip VertSplit Visual VisualNOS WarningMsg WildMenu 
+syn keyword vimHLGroup contained	ColorColumn Cursor CursorColumn CursorIM CursorLine CursorLineNr DiffAdd DiffChange DiffDelete DiffText Directory EndOfBuffer ErrorMsg FoldColumn Folded IncSearch LineNr MatchParen Menu ModeMsg MoreMsg NonText Normal Pmenu PmenuSbar PmenuSel PmenuThumb Question Scrollbar Search SignColumn SpecialKey SpellBad SpellCap SpellLocal SpellRare StatusLine StatusLineNC TabLine TabLineFill TabLineSel Title Tooltip VertSplit Visual VisualNOS WarningMsg WildMenu 
 syn match vimHLGroup contained	"Conceal"
 syn case match
 
 " Function Names {{{2
-syn keyword vimFuncName contained	abs append argv assert_fails assert_notmatch browse bufloaded bufwinnr call ch_close ch_getjob ch_open ch_sendraw clearmatches complete_check cosh deepcopy diff_hlID eventhandler exp filereadable findfile fnameescape foldlevel function getbufvar getcmdline getcurpos getfsize getloclist getqflist gettabwinvar getwinvar globpath haslocaldir histdel hlexists iconv input inputrestore insert islocked job_getchannel job_start join json_decode len line localtime luaeval mapcheck matchaddpos matchend matchstrpos mkdir nextnonblank pathshorten prevnonblank py3eval readfile reltimestr remote_peek remove resolve screenattr screenrow searchpair server2client setcharsearch setline setpos settabvar sha256 simplify sort spellsuggest str2float strchars strgetchar strlen strtrans substitute synIDattr system tabpagenr taglist tempname test_garbagecollect_now test_null_job test_null_string timer_stop tr undofile values wildmenumode win_findbuf winheight winline winrestview wordcount
-syn keyword vimFuncName contained	acos argc asin assert_false assert_true browsedir bufname byte2line ceil ch_evalexpr ch_info ch_read ch_setoptions col confirm count delete empty executable expand filewritable float2nr fnamemodify foldtext garbagecollect getchar getcmdpos getcwd getftime getmatches getreg getwinposx glob has hasmapto histget hlID indent inputdialog inputsave invert isnan job_info job_status js_decode json_encode libcall line2byte log map match matcharg matchlist max mode nr2char perleval printf pyeval reltime remote_expr remote_read rename reverse screenchar search searchpairpos serverlist setcmdpos setloclist setqflist settabwinvar shellescape sin soundfold split str2nr strdisplaywidth stridx strpart strwidth synconcealed synIDtrans systemlist tabpagewinnr tan test_alloc_fail test_null_channel test_null_list test_settime tolower trunc undotree virtcol winbufnr win_getid win_id2tabwin winnr winsaveview writefile
-syn keyword vimFuncName contained	add argidx assert_equal assert_match atan bufexists bufnr byteidx changenr ch_evalraw ch_log ch_readraw ch_status complete copy cscope_connection did_filetype escape exepath extend filter floor foldclosed foldtextresult get getcharmod getcmdtype getfontname getftype getpid getregtype getwinposy glob2regpat has_key histadd histnr hostname index inputlist inputsecret isdirectory items job_setoptions job_stop js_encode keys libcallnr lispindent log10 maparg matchadd matchdelete matchstr min mzeval or pow pumvisible range reltimefloat remote_foreground remote_send repeat round screencol searchdecl searchpos setbufvar setfperm setmatches setreg setwinvar shiftwidth sinh spellbadword sqrt strcharpart strftime string strridx submatch synID synstack tabpagebuflist tagfiles tanh test_disable_char_avail test_null_dict test_null_partial timer_start toupper type uniq visualmode wincol win_gotoid win_id2win winrestcmd winwidth xor
-syn keyword vimFuncName contained	and arglistid assert_exception assert_notequal atan2 buflisted bufwinid byteidxcomp char2nr ch_getbufnr ch_logfile ch_sendexpr cindent complete_add cos cursor diff_filler eval exists feedkeys finddir fmod foldclosedend foreground getbufline getcharsearch getcmdwintype getfperm getline getpos gettabvar 
+syn keyword vimFuncName contained	abs append argv assert_fails assert_notequal atan2 buflisted bufwinid byteidxcomp char2nr ch_getbufnr ch_logfile ch_sendexpr cindent complete_add cos cursor diff_filler eval exepath extend filter floor foldclosed foldtextresult garbagecollect getbufvar getcmdline getcompletion getfperm getline getpos gettabinfo getwinposx glob2regpat haslocaldir histget hostname input inputsave isdirectory job_getchannel job_status js_decode json_encode libcall line2byte log map match matcharg matchlist max mode nr2char perleval printf pyeval reltime remote_expr remote_read rename reverse screenchar search searchpairpos serverlist setcmdpos setloclist setqflist settabwinvar shellescape sin soundfold split str2nr strdisplaywidth stridx strpart strwidth synconcealed synIDtrans systemlist tabpagewinnr tan test_alloc_fail test_garbagecollect_now test_null_job test_null_string timer_pause timer_stopall tr undofile values wildmenumode win_findbuf winheight winline winrestview wordcount
+syn keyword vimFuncName contained	acos argc asin assert_false assert_notmatch browse bufloaded bufwinnr call ch_close ch_getjob ch_open ch_sendraw clearmatches complete_check cosh deepcopy diff_hlID eventhandler exists feedkeys finddir fmod foldclosedend foreground get getchar getcmdpos getcurpos getfsize getloclist getqflist gettabvar getwinposy globpath hasmapto histnr iconv inputdialog inputsecret islocked job_info job_stop js_encode keys libcallnr lispindent log10 maparg matchadd matchdelete matchstr min mzeval or pow pumvisible range reltimefloat remote_foreground remote_send repeat round screencol searchdecl searchpos setbufvar setfperm setmatches setreg setwinvar shiftwidth sinh spellbadword sqrt strcharpart strftime string strridx submatch synID synstack tabpagebuflist tagfiles tanh test_autochdir test_null_channel test_null_list test_settime timer_start tolower trunc undotree virtcol winbufnr win_getid win_id2tabwin winnr winsaveview writefile
+syn keyword vimFuncName contained	add argidx assert_equal assert_inrange assert_true browsedir bufname byte2line ceil ch_evalexpr ch_info ch_read ch_setoptions col confirm count delete empty executable exp filereadable findfile fnameescape foldlevel funcref getbufinfo getcharmod getcmdtype getcwd getftime getmatches getreg gettabwinvar getwinvar has histadd hlexists indent inputlist insert isnan job_setoptions join json_decode len line localtime luaeval mapcheck matchaddpos matchend matchstrpos mkdir nextnonblank pathshorten prevnonblank py3eval readfile reltimestr remote_peek remove resolve screenattr screenrow searchpair server2client setcharsearch setline setpos settabvar sha256 simplify sort spellsuggest str2float strchars strgetchar strlen strtrans substitute synIDattr system tabpagenr taglist tempname test_disable_char_avail test_null_dict test_null_partial timer_info timer_stop toupper type uniq visualmode wincol win_gotoid win_id2win winrestcmd winwidth xor
+syn keyword vimFuncName contained	and arglistid assert_exception assert_match atan bufexists bufnr byteidx changenr ch_evalraw ch_log ch_readraw ch_status complete copy cscope_connection did_filetype escape execute expand filewritable float2nr fnamemodify foldtext function getbufline getcharsearch getcmdwintype getfontname getftype getpid getregtype getwininfo glob has_key histdel hlID index inputrestore invert items job_start 
 
 "--- syntax here and above generated by mkvimvim ---
 " Special Vim Highlighting (not automatic) {{{1
--- a/runtime/tutor/tutor.es
+++ b/runtime/tutor/tutor.es
@@ -478,7 +478,7 @@ Nota: ¡Esto es muy útil en la detección de errores en un programa con
 
   1. Ctrl-g  muestra la posición del cursor en el fichero y su estado.
      Mayu-G mueve el cursor al final del fichero. Un número de línea
-     sewguido de Mayu-G mueve el cursor a la línea con ese número.
+     seguido de Mayu-G mueve el cursor a la línea con ese número.
 
   2. Pulsando  /  seguido de una frase busca la frase hacia ADELANTE.
      Pulsando  ?  seguido de una frase busca la frase hacia ATRÁS.
--- a/runtime/tutor/tutor.es.utf-8
+++ b/runtime/tutor/tutor.es.utf-8
@@ -478,7 +478,7 @@ Nota: ¡Esto es muy útil en la detección de errores en un programa con
 
   1. Ctrl-g  muestra la posición del cursor en el fichero y su estado.
      Mayu-G mueve el cursor al final del fichero. Un número de línea
-     sewguido de Mayu-G mueve el cursor a la línea con ese número.
+     seguido de Mayu-G mueve el cursor a la línea con ese número.
 
   2. Pulsando  /  seguido de una frase busca la frase hacia ADELANTE.
      Pulsando  ?  seguido de una frase busca la frase hacia ATRÃS.
--- a/src/po/fi.po
+++ b/src/po/fi.po
@@ -1,45 +1,45 @@
 # Finnish translation for Vim.
 # Copyright (C) 2003-2006 Free Software Foundation, Inc.
-# 2007-2010, Flammie Pirinen <flammie@iki.fi>
-#
-# Vimin käyttäjät on nörttejä. Sanasto on jargonia :-p
+# 2007-2016, Flammie Pirinen <flammie@iki.fi>
 #
-# Lähinnä latin-1:tä, sillä vim pitää portata ilmeisen obskuureille
-# alustoille. Myös: pluralit puuttuu, ohjelman käyttöliittymän fontti
-# tasavälinen, tila rajattu, jne. jne., luovia ratkaisuja edessä.
+# Jargonia ei ole yritetty suotta kotoperäistää missä teknisempi lainasanasto
+# tulee paremmin kyseeseen.
 #
 # Sanastosta:
-# Fold on sellainen moderneissa ohjelmointi-IDE:issä oleva toiminto, jolla
-#   lohko koodia esim. funktio piilotetaan näkymästä: suom. taitos alkup.
+# * Fold on sellainen moderneissa ohjelmointi-IDE:issä oleva toiminto, jolla
+#   lohko koodia esim. funktio piilotetaan näkymästä: suom. taitos alkup.
 #   analogian mukaan
-# source v. lataa tiedoston, kuten bash-komento source (tai .)
+# * source, v. lataa tiedoston, kuten bash-komento source (tai .)
+# * dictionary (dict) on vaihtelevasti sanakirja tai tietorakenne
 #
 msgid ""
 msgstr ""
 "Project-Id-Version: Vim 7\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-08-09 02:00+0300\n"
-"PO-Revision-Date: 2010-08-09 02:35+0300\n"
-"Last-Translator: Flammie Pirinen <flammie@iki.fi>\n"
+"POT-Creation-Date: 2016-08-23 12:27+0200\n"
+"PO-Revision-Date: 2016-08-23 16:12+0200\n"
+"Last-Translator: Flammie A Pirinen <flammie@iki.fi>\n"
 "Language-Team: Finnish <laatu@lokalisointi.org>\n"
+"Language: fi\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
 "MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=ISO-8859-1\n"
+"Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 
 msgid "E831: bf_key_init() called with empty password"
-msgstr "E831: bf_key_init() tyhjällä salasanalla"
+msgstr "E831: bf_key_init() tyhjällä salasanalla"
 
 msgid "E820: sizeof(uint32_t) != 4"
 msgstr "E820: sizeof(uint32_t) != 4"
 
 msgid "E817: Blowfish big/little endian use wrong"
-msgstr "E817: Blowfishin tavujärjestys väärä"
+msgstr "E817: Blowfishin tavujärjestys väärä"
 
 msgid "E818: sha256 test failed"
-msgstr "E818: sha256-testi epäonnistui failed"
+msgstr "E818: sha256-testi epäonnistui failed"
 
 msgid "E819: Blowfish test failed"
-msgstr "E819: Blowfish-testi epäonnistui"
+msgstr "E819: Blowfish-testi epäonnistui"
 
 msgid "[Location List]"
 msgstr "[Sijaintiluettelo]"
@@ -47,11 +47,17 @@ msgstr "[Sijaintiluettelo]"
 msgid "[Quickfix List]"
 msgstr "[Pikakorjausluettelo]"
 
+msgid "E855: Autocommands caused command to abort"
+msgstr "E855: Autocommands lopetti komennon"
+
 msgid "E82: Cannot allocate any buffer, exiting..."
-msgstr "E82: Mitään puskuria ei voitu varata, lopetetaan..."
+msgstr "E82: Mitään puskuria ei voitu varata, lopetetaan..."
 
 msgid "E83: Cannot allocate buffer, using other one..."
-msgstr "E83: Puskuria ei voitu varata, käytetään toista..."
+msgstr "E83: Puskuria ei voitu varata, käytetään toista..."
+
+msgid "E931: Buffer cannot be registered"
+msgstr "E931: Puskuria ei voi rekisteröidä"
 
 msgid "E515: No buffers were unloaded"
 msgstr "E515: Puskureita ei vapautettu"
@@ -83,6 +89,9 @@ msgstr "1 puskuri pyyhitty"
 msgid "%d buffers wiped out"
 msgstr "%d puskuria pyyhitty"
 
+msgid "E90: Cannot unload last buffer"
+msgstr "E90: Ei voi vapauttaa viimeistä puskuria"
+
 msgid "E84: No modified buffer found"
 msgstr "E84: Ei muokattuja puskureita"
 
@@ -90,39 +99,32 @@ msgstr "E84: Ei muokattuja puskureita"
 msgid "E85: There is no listed buffer"
 msgstr "E85: Luetteloitua puskuria ei ole"
 
-#, c-format
-msgid "E86: Buffer %ld does not exist"
-msgstr "E86: Puskuria %ld ei ole"
-
 msgid "E87: Cannot go beyond last buffer"
-msgstr "E87: Viimeisen puskurin ohi ei voi edetä"
+msgstr "E87: Viimeisen puskurin ohi ei voi edetä"
 
 msgid "E88: Cannot go before first buffer"
-msgstr "E88: Ensimmäisen puskurin ohi ei voi edetä"
+msgstr "E88: Ensimmäisen puskurin ohi ei voi edetä"
 
 #, c-format
 msgid "E89: No write since last change for buffer %ld (add ! to override)"
 msgstr ""
-"E89: Puskurin %ld muutoksia ei ole tallennettu (lisää komentoon ! "
+"E89: Puskurin %ld muutoksia ei ole tallennettu (lisää komentoon ! "
 "ohittaaksesi)"
 
-msgid "E90: Cannot unload last buffer"
-msgstr "E90: Ei voi vapauttaa viimeistä puskuria"
-
 msgid "W14: Warning: List of file names overflow"
 msgstr "W14: Varoitus: Tiedostonimiluettelon ylivuoto"
 
 #, c-format
 msgid "E92: Buffer %ld not found"
-msgstr "E92: Puskuria %ld ei löydy"
+msgstr "E92: Puskuria %ld ei löydy"
 
 #, c-format
 msgid "E93: More than one match for %s"
-msgstr "E93: %s täsmää useampaan kuin yhteen puskuriin"
+msgstr "E93: %s täsmää useampaan kuin yhteen puskuriin"
 
 #, c-format
 msgid "E94: No matching buffer for %s"
-msgstr "E94: %s ei täsmää yhteenkään puskuriin"
+msgstr "E94: %s ei täsmää yhteenkään puskuriin"
 
 #, c-format
 msgid "line %ld"
@@ -141,7 +143,10 @@ msgid "[New file]"
 msgstr "[Uusi tiedosto]"
 
 msgid "[Read errors]"
-msgstr "[Lukuvirheitä]"
+msgstr "[Lukuvirheitä]"
+
+msgid "[RO]"
+msgstr "[Luku]"
 
 msgid "[readonly]"
 msgstr "[kirjoitussuojattu]"
@@ -152,14 +157,14 @@ msgstr "1 rivi --%d %%--"
 
 #, c-format
 msgid "%ld lines --%d%%--"
-msgstr "%ld riviä --%d %%--"
+msgstr "%ld riviä --%d %%--"
 
 #, c-format
 msgid "line %ld of %ld --%d%%-- col "
 msgstr "rivi %ld/%ld --%d %%-- sarake "
 
 msgid "[No Name]"
-msgstr "[Nimetön]"
+msgstr "[Nimetön]"
 
 #. must be a help buffer
 msgid "help"
@@ -172,7 +177,7 @@ msgid "[Preview]"
 msgstr "[Esikatselu]"
 
 # sijainti tiedostossa -indikaattoreja:
-# 4 merkkiä sais riittää
+# 4 merkkiä sais riittää
 msgid "All"
 msgstr "Kaik"
 
@@ -182,7 +187,6 @@ msgstr "Loppu"
 msgid "Top"
 msgstr "Alku"
 
-#, c-format
 msgid ""
 "\n"
 "# Buffer list:\n"
@@ -208,15 +212,80 @@ msgstr "Merkit kohteelle %s:"
 msgid "    line=%ld  id=%d  name=%s"
 msgstr "    rivi=%ld  id=%d  nimi=%s"
 
-#, c-format
-msgid "E96: Can not diff more than %ld buffers"
-msgstr "E96: Ei voi diffata enempää kuin %ld puskuria"
+msgid "E902: Cannot connect to port"
+msgstr "E902: Ei voi yhdistää porttiin"
+
+#, c-format
+msgid "E917: Cannot use a callback with %s()"
+msgstr "E917: Ei voitu käyttää callbackia %s()"
+
+msgid "E912: cannot use ch_evalexpr()/ch_sendexpr() with a raw or nl channel"
+msgstr "E912: ei voida käyttää funktioita ch_evalexpr(), ch_sendexpr()"
+" raa'an tai nl-kanavan kanssa"
+
+msgid "E906: not an open channel"
+msgstr "E906: ei ole avoin kanava"
+
+msgid "E920: _io file requires _name to be set"
+msgstr "E920: _io-tiedostolla pitää olla _name asetettu"
+
+msgid "E915: in_io buffer requires in_buf or in_name to be set"
+msgstr "E915: in_io-puskurilla pitää olla in_buf tai in_name asetettu"
+
+#, c-format
+msgid "E918: buffer must be loaded: %s"
+msgstr "E918: puskuria ei voi ladata: %s"
+
+msgid "E821: File is encrypted with unknown method"
+msgstr "E821: Tiedoston salaus on tuntematon"
+
+msgid "Warning: Using a weak encryption method; see :help 'cm'"
+msgstr "Varoitus: Käytetään heikkoa salausmenetelmää, ks. :help 'cm'"
+
+msgid "Enter encryption key: "
+msgstr "Anna salausavain: "
+
+msgid "Enter same key again: "
+msgstr "Anna sama avain uudestaan: "
+
+msgid "Keys don't match!"
+msgstr "Avaimet eivät täsmää!"
+
+msgid "[crypted]"
+msgstr "[salattu]"
+
+#, c-format
+msgid "E720: Missing colon in Dictionary: %s"
+msgstr "E720: Sanakirjasta puuttuu kaksoispiste: %s"
+
+#, c-format
+msgid "E721: Duplicate key in Dictionary: \"%s\""
+msgstr "E721: Kaksi samaa avainta sanakirjassa: %s"
+
+#, c-format
+msgid "E722: Missing comma in Dictionary: %s"
+msgstr "E722: Sanakirjasta puuttuu pilkku: %s"
+
+#, c-format
+msgid "E723: Missing end of Dictionary '}': %s"
+msgstr "E723: Sanakirjan lopusta puuttuu }: %s"
+
+msgid "extend() argument"
+msgstr "extend()-argumentti"
+
+#, c-format
+msgid "E737: Key already exists: %s"
+msgstr "E737: Avain on jo olemassa: %s"
+
+#, c-format
+msgid "E96: Cannot diff more than %ld buffers"
+msgstr "E96: Ei voi diffata enempää kuin %ld puskuria"
 
 msgid "E810: Cannot read or write temp files"
-msgstr "E810: Ei voi lukea tai kirjoittaa väliaikaistiedostoja"
+msgstr "E810: Ei voi lukea tai kirjoittaa väliaikaistiedostoja"
 
 msgid "E97: Cannot create diffs"
-msgstr "E97: Ei voi luoda diffejä"
+msgstr "E97: Ei voi luoda diffejä"
 
 msgid "Patch file"
 msgstr "Patch-tiedosto"
@@ -228,20 +297,20 @@ msgid "E98: Cannot read diff output"
 msgstr "E98: Ei voi lukea diffin tulostetta"
 
 msgid "E99: Current buffer is not in diff mode"
-msgstr "E99: Tämä puskuri ei ole diff-tilassa"
+msgstr "E99: Tämä puskuri ei ole diff-tilassa"
 
 msgid "E793: No other buffer in diff mode is modifiable"
-msgstr "E793: Yksikään muu diff-tilan puskurit ei ole muokattavissa"
+msgstr "E793: Yksikään muu diff-tilan puskurit ei ole muokattavissa"
 
 msgid "E100: No other buffer in diff mode"
-msgstr "E100: Yksikään muu puskuri ei ole diff-tilassa"
+msgstr "E100: Yksikään muu puskuri ei ole diff-tilassa"
 
 msgid "E101: More than two buffers in diff mode, don't know which one to use"
-msgstr "E101: Monta puskuria on diff-tilassa, käytettävän valinta ei onnistu"
+msgstr "E101: Monta puskuria on diff-tilassa, käytettävän valinta ei onnistu"
 
 #, c-format
 msgid "E102: Can't find buffer \"%s\""
-msgstr "E102: Puskuria %s ei löydy"
+msgstr "E102: Puskuria %s ei löydy"
 
 #, c-format
 msgid "E103: Buffer \"%s\" is not in diff mode"
@@ -251,75 +320,81 @@ msgid "E787: Buffer changed unexpectedly
 msgstr "E787: Puskuri vaihtui odottamatta"
 
 msgid "E104: Escape not allowed in digraph"
-msgstr "E104: Escapea ei voi käyttää digraafissa"
+msgstr "E104: Escapea ei voi käyttää digraafissa"
 
 msgid "E544: Keymap file not found"
-msgstr "E544: Näppäinkarttaa ei löydy"
+msgstr "E544: Näppäinkarttaa ei löydy"
 
 msgid "E105: Using :loadkeymap not in a sourced file"
-msgstr "E105: Käytetään :loadkeymapia ladatun tiedoston ulkopuolella"
+msgstr "E105: Käytetään :loadkeymapia ladatun tiedoston ulkopuolella"
 
 msgid "E791: Empty keymap entry"
-msgstr "E791: Tyhjä keymap-kenttä"
+msgstr "E791: Tyhjä keymap-kenttä"
 
 msgid " Keyword completion (^N^P)"
-msgstr " Avainsanatäydennys (^N^P)"
+msgstr " Avainsanatäydennys (^N^P)"
 
 #. ctrl_x_mode == 0, ^P/^N compl.
 msgid " ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)"
 msgstr " ^X-tila (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)"
 
 msgid " Whole line completion (^L^N^P)"
-msgstr " Täysrivitäydennys (^L^N^P)"
+msgstr " Täysrivitäydennys (^L^N^P)"
 
 msgid " File name completion (^F^N^P)"
-msgstr " Tiedostonimitäydennys (^F^N^P)"
+msgstr " Tiedostonimitäydennys (^F^N^P)"
 
 msgid " Tag completion (^]^N^P)"
-msgstr " Tägitäydennys (^]^N^P)"
+msgstr " Tägitäydennys (^]^N^P)"
 
 msgid " Path pattern completion (^N^P)"
-msgstr " Polkukuviotäydennys (^N^P)"
+msgstr " Polkukuviotäydennys (^N^P)"
 
 msgid " Definition completion (^D^N^P)"
-msgstr " Määritelmätäydennys (^D^N^P)"
+msgstr " Määritelmätäydennys (^D^N^P)"
 
 msgid " Dictionary completion (^K^N^P)"
-msgstr " Sanakirjatäydennys (^K^N^P)"
+msgstr " Sanakirjatäydennys (^K^N^P)"
 
 msgid " Thesaurus completion (^T^N^P)"
-msgstr " Thesaurus-täydennys (^T^N^P)"
+msgstr " Thesaurus-täydennys (^T^N^P)"
 
 msgid " Command-line completion (^V^N^P)"
-msgstr " Komentorivitäydennys (^V^N^P)"
+msgstr " Komentorivitäydennys (^V^N^P)"
 
 msgid " User defined completion (^U^N^P)"
-msgstr " Käyttäjän määrittelemä täydennys (^U^N^P)"
+msgstr " Käyttäjän määrittelemä täydennys (^U^N^P)"
 
 msgid " Omni completion (^O^N^P)"
-msgstr " Omnitäydennys (^O^N^P)"
+msgstr " Omnitäydennys (^O^N^P)"
 
 msgid " Spelling suggestion (s^N^P)"
 msgstr " Oikaisulukuehdotus (s^N^P)"
 
 msgid " Keyword Local completion (^N^P)"
-msgstr " Avainsanan paikallinen täydennys (^N^P)"
+msgstr " Avainsanan paikallinen täydennys (^N^P)"
 
 msgid "Hit end of paragraph"
 msgstr "Kappaleen loppu tuli vastaan"
 
+msgid "E839: Completion function changed window"
+msgstr "E839: Täydennys vaihtoi ikkunaa"
+
+msgid "E840: Completion function deleted text"
+msgstr "E840: Täydennys poisti tekstiä"
+
 msgid "'dictionary' option is empty"
-msgstr "dictionary-asetus on tyhjä"
+msgstr "dictionary-asetus on tyhjä"
 
 msgid "'thesaurus' option is empty"
-msgstr "thesaurus-asetus on tyhjä"
+msgstr "thesaurus-asetus on tyhjä"
 
 #, c-format
 msgid "Scanning dictionary: %s"
 msgstr "Luetaan sanakirjaa: %s"
 
 msgid " (insert) Scroll (^E/^Y)"
-msgstr " (syöttö) Vieritys (^E/^Y)"
+msgstr " (syöttö) Vieritys (^E/^Y)"
 
 msgid " (replace) Scroll (^E/^Y)"
 msgstr " (korvaus) Vieritys (^E/^Y)"
@@ -329,10 +404,10 @@ msgid "Scanning: %s"
 msgstr "Luetaan: %s"
 
 msgid "Scanning tags."
-msgstr "Luetaan tägejä."
+msgstr "Luetaan tägejä."
 
 msgid " Adding"
-msgstr " Lisätään"
+msgstr " Lisätään"
 
 #. showmode might reset the internal line pointers, so it must
 #. * be called before line = ml_get(), or when this address is no
@@ -342,111 +417,71 @@ msgid "-- Searching..."
 msgstr "-- Haetaan..."
 
 msgid "Back at original"
-msgstr "Takaisin lähtöpisteessä"
+msgstr "Takaisin lähtöpisteessä"
 
 msgid "Word from other line"
-msgstr "Sana toisella rivillä"
+msgstr "Sana toisella rivillä"
 
 msgid "The only match"
-msgstr "Ainoa täsmäys"
+msgstr "Ainoa täsmäys"
 
 #, c-format
 msgid "match %d of %d"
-msgstr "täsmäys %d/%d"
+msgstr "täsmäys %d/%d"
 
 #, c-format
 msgid "match %d"
-msgstr "täsmäys %d"
-
+msgstr "täsmäys %d"
+
+#. maximum nesting of lists and dicts
 msgid "E18: Unexpected characters in :let"
-msgstr "E18: Odottamattomia merkkejä komennossa :let"
-
-#, c-format
-msgid "E684: list index out of range: %ld"
-msgstr "E684: Indeksi %ld luettelon rajojen ulkopuolella"
+msgstr "E18: Odottamattomia merkkejä komennossa :let"
 
 #, c-format
 msgid "E121: Undefined variable: %s"
-msgstr "E121: Määrittelemätön muuttuja: %s"
+msgstr "E121: Määrittelemätön muuttuja: %s"
 
 msgid "E111: Missing ']'"
 msgstr "E111: ] puuttuu"
 
-#, c-format
-msgid "E686: Argument of %s must be a List"
-msgstr "E686: Argumentin %s pitää olla lista"
-
-# datarakenteita
-#, c-format
-msgid "E712: Argument of %s must be a List or Dictionary"
-msgstr "E712: Argumentin %s pitää olla lista tai sanakirja"
-
-msgid "E713: Cannot use empty key for Dictionary"
-msgstr "E713: Sanakirjassa ei voi olla tyhjiä avaimia"
-
-msgid "E714: List required"
-msgstr "E714: Lista tarvitaan"
-
-msgid "E715: Dictionary required"
-msgstr "E715: Sanakirja tarvitaan"
-
-#, c-format
-msgid "E118: Too many arguments for function: %s"
-msgstr "E118: Liikaa argumentteja funktiolle: %s"
-
-#, c-format
-msgid "E716: Key not present in Dictionary: %s"
-msgstr "E716: Avainta %s ei ole sanakirjassa"
-
-#, c-format
-msgid "E122: Function %s already exists, add ! to replace it"
-msgstr "E122: Funktio %s on jo olemassa, lisää ! korvataksesi"
-
-msgid "E717: Dictionary entry already exists"
-msgstr "E717: Sanakirja-alkio on jo olemassa"
-
-msgid "E718: Funcref required"
-msgstr "E718: Funcref tarvitaan"
-
 msgid "E719: Cannot use [:] with a Dictionary"
-msgstr "E719: Sanakirjassa ei voi käyttää merkintää [:]"
+msgstr "E719: Sanakirjassa ei voi käyttää merkintää [:]"
 
 #, c-format
 msgid "E734: Wrong variable type for %s="
-msgstr "E734: Väärä muuttujatyyppi muuttujalle %s="
-
-#, c-format
-msgid "E130: Unknown function: %s"
-msgstr "E130: Tuntematon funktio: %s"
+msgstr "E734: Väärä muuttujatyyppi muuttujalle %s="
 
 #, c-format
 msgid "E461: Illegal variable name: %s"
 msgstr "E461: Virheellinen muuttujanimi: %s"
 
+msgid "E806: using Float as a String"
+msgstr "E806: Float ei käy merkkijonosta"
+
 msgid "E687: Less targets than List items"
-msgstr "E687: Kohteita on vähemmän kuin listan alkioita"
+msgstr "E687: Kohteita on vähemmän kuin listan alkioita"
 
 msgid "E688: More targets than List items"
-msgstr "E688: Kohteita on enemmän kuin listan alkioita"
+msgstr "E688: Kohteita on enemmän kuin listan alkioita"
 
 msgid "Double ; in list of variables"
-msgstr "Kaksi ;:ttä listan muuttujissa"
+msgstr "Kaksi ;:ttä listan muuttujissa"
 
 #, c-format
 msgid "E738: Can't list variables for %s"
 msgstr "E738: Kohteen %s muuttujia ei voi listata"
 
 msgid "E689: Can only index a List or Dictionary"
-msgstr "E689: Vain listalla ja sanakirjalla voi olla indeksejä"
+msgstr "E689: Vain listalla ja sanakirjalla voi olla indeksejä"
 
 msgid "E708: [:] must come last"
-msgstr "E708: [:]:n pitää olla viimeisenä"
+msgstr "E708: [:]:n pitää olla viimeisenä"
 
 msgid "E709: [:] requires a List value"
 msgstr "E709: [:] toimii vain listalla"
 
 msgid "E710: List value has more items than target"
-msgstr "E710: Listalla on enemmän alkioita kuin kohteella"
+msgstr "E710: Listalla on enemmän alkioita kuin kohteella"
 
 msgid "E711: List value has not enough items"
 msgstr "E711: Listalla ei ole tarpeeksi alkioita"
@@ -455,18 +490,14 @@ msgid "E690: Missing \"in\" after :for"
 msgstr "E690: :for-kommenolta puuttuu in"
 
 #, c-format
-msgid "E107: Missing parentheses: %s"
-msgstr "E107: Sulkeita puuttuu: %s"
-
-#, c-format
 msgid "E108: No such variable: \"%s\""
 msgstr "E108: Muuttujaa %s ei ole"
 
 msgid "E743: variable nested too deep for (un)lock"
-msgstr "E743: muuttujassa liian monta tasoa lukituksen käsittelyyn"
+msgstr "E743: muuttujassa liian monta tasoa lukituksen käsittelyyn"
 
 msgid "E109: Missing ':' after '?'"
-msgstr "E109: ?:n jälkeen puuttuu :"
+msgstr "E109: ?:n jälkeen puuttuu :"
 
 msgid "E691: Can only compare List with List"
 msgstr "E691: Listaa voi verrata vain listaan"
@@ -480,20 +511,20 @@ msgstr "E735: Sanakirjaa voi verrata vai
 msgid "E736: Invalid operation for Dictionary"
 msgstr "E736: Virheellinen toiminto sanakirjalle"
 
-msgid "E693: Can only compare Funcref with Funcref"
-msgstr "E693: Funcrefiä voi verrata vain funcrefiin"
-
 msgid "E694: Invalid operation for Funcrefs"
 msgstr "E694: Virheellinen toiminto funcrefille"
 
 msgid "E804: Cannot use '%' with Float"
-msgstr "E804: Ei voi käyttää '%':a Floatin kanssa"
+msgstr "E804: Ei voi käyttää '%':a Floatin kanssa"
 
 msgid "E110: Missing ')'"
 msgstr "E110: ) puuttuu"
 
 msgid "E695: Cannot index a Funcref"
-msgstr "E695: Funcrefiä ei voi indeksoida"
+msgstr "E695: Funcrefiä ei voi indeksoida"
+
+msgid "E909: Cannot index a special variable"
+msgstr "E909: erikoismuuttujaa ei voi indeksoida"
 
 #, c-format
 msgid "E112: Option name missing: %s"
@@ -511,177 +542,77 @@ msgstr "E114: Puuttuva lainausmerkki: %s
 msgid "E115: Missing quote: %s"
 msgstr "E115: Puuttuva lainausmerkki: %s"
 
-#, c-format
-msgid "E696: Missing comma in List: %s"
-msgstr "E696: Listasta puuttuu pilkku: %s"
-
-#, c-format
-msgid "E697: Missing end of List ']': %s"
-msgstr "E697: Listan lopusta puuttuu ]: %s"
-
-#, c-format
-msgid "E720: Missing colon in Dictionary: %s"
-msgstr "E720: Sanakirjasta puuttuu kaksoispiste: %s"
-
-#, c-format
-msgid "E721: Duplicate key in Dictionary: \"%s\""
-msgstr "E721: Kaksi samaa avainta sanakirjassa: %s"
-
-#, c-format
-msgid "E722: Missing comma in Dictionary: %s"
-msgstr "E722: Sanakirjasta puuttuu pilkku: %s"
-
-#, c-format
-msgid "E723: Missing end of Dictionary '}': %s"
-msgstr "E723: Sanakirjan lopusta puuttuu }: %s"
+msgid "Not enough memory to set references, garbage collection aborted!"
+msgstr "Ei tarpeeksi muistia viitteiden asettamista varten, roskiekeruu "
+"peruttiin."
 
 msgid "E724: variable nested too deep for displaying"
-msgstr "E724: muuttuja on upotettu liian syvälle näytettäväksi"
-
-#, c-format
-msgid "E740: Too many arguments for function %s"
-msgstr "E740: Liikaa argumentteja funktiolle %s"
-
-#, c-format
-msgid "E116: Invalid arguments for function %s"
-msgstr "E116: Vääriä argumentteja funktiolle %s"
-
-#, c-format
-msgid "E117: Unknown function: %s"
-msgstr "E117: Tuntematon funktio: %s"
-
-#, c-format
-msgid "E119: Not enough arguments for function: %s"
-msgstr "E119: Liikaa argumentteja funktiolle %s"
-
-#, c-format
-msgid "E120: Using <SID> not in a script context: %s"
-msgstr "E120: <SID> skriptin ulkopuolella: %s"
-
-#, c-format
-msgid "E725: Calling dict function without Dictionary: %s"
-msgstr "E725: dict-funktio ilman sanakirjaa: %s"
-
-msgid "E808: Number or Float required"
-msgstr "E808: Number tai Float vaaditaan"
-
-msgid "E699: Too many arguments"
-msgstr "E699: Liikaa argumentteja"
-
-msgid "E785: complete() can only be used in Insert mode"
-msgstr "E785: complete() toimii vain syöttötilassa"
-
-#.
-#. * Yes this is ugly, I don't particularly like it either.  But doing it
-#. * this way has the compelling advantage that translations need not to
-#. * be touched at all.  See below what 'ok' and 'ync' are used for.
-#.
-msgid "&Ok"
-msgstr "&Ok"
-
-#, c-format
-msgid "E737: Key already exists: %s"
-msgstr "E737: Avain on jo olemassa: %s"
-
-#, c-format
-msgid "+-%s%3ld lines: "
-msgstr "+-%s%3ld riviä: "
-
-#, c-format
-msgid "E700: Unknown function: %s"
-msgstr "E700: Tuntematon funktio: %s"
-
-msgid ""
-"&OK\n"
-"&Cancel"
-msgstr ""
-"&OK\n"
-"&Peru"
-
-msgid "called inputrestore() more often than inputsave()"
-msgstr "inputrestore() suoritettu useammin kuin inputsave()"
-
-msgid "E786: Range not allowed"
-msgstr "E786: Aluetta ei voi käyttää"
-
-msgid "E701: Invalid type for len()"
-msgstr "E701: Virheellinen tyyppi funktiolle len()"
-
-msgid "E726: Stride is zero"
-msgstr "E726: Stride on nolla"
-
-msgid "E727: Start past end"
-msgstr "E727: Alku on lopun jälkeen"
-
-msgid "<empty>"
-msgstr "<tyhjä>"
-
-msgid "E240: No connection to Vim server"
-msgstr "E240: Ei yhteyttä vim-palvelimeen"
-
-#, c-format
-msgid "E241: Unable to send to %s"
-msgstr "E241: Kohteeseen %s lähettäminen ei onnistunut"
-
-msgid "E277: Unable to read a server reply"
-msgstr "E277: Palvelimen vastauksen lukeminen ei onnistunut"
-
-msgid "E655: Too many symbolic links (cycle?)"
-msgstr "E655: Liikaa symbolisia linkkejä (mahdollinen sykli)"
-
-msgid "E258: Unable to send to client"
-msgstr "E258: Asiakkaalle lähetys ei onnistunut"
-
-msgid "E702: Sort compare function failed"
-msgstr "E702: Lajittelun vertausfunktio ei onnistunut"
-
-msgid "(Invalid)"
-msgstr "(Virheellinen)"
-
-msgid "E677: Error writing temp file"
-msgstr "E677: Väliaikaistiedostoon kirjoittaminen ei onnistunut"
+msgstr "E724: muuttuja on upotettu liian syvälle näytettäväksi"
 
 msgid "E805: Using a Float as a Number"
-msgstr "E805: Float ei käy Numberista"
+msgstr "E805: Float ei käy Numberista"
 
 msgid "E703: Using a Funcref as a Number"
-msgstr "E703: Funcref ei käy Numberista"
+msgstr "E703: Funcref ei käy Numberista"
 
 msgid "E745: Using a List as a Number"
-msgstr "E745: Lista ei käy Numberista"
+msgstr "E745: Lista ei käy Numberista"
 
 msgid "E728: Using a Dictionary as a Number"
-msgstr "E728: Sanakirja ei käy Numberista"
+msgstr "E728: Sanakirja ei käy Numberista"
+
+msgid "E910: Using a Job as a Number"
+msgstr "E910: Job ei käy Numberista"
+
+msgid "E913: Using a Channel as a Number"
+msgstr "E913: Channel ei käy Numberista"
+
+msgid "E891: Using a Funcref as a Float"
+msgstr "E891: Funcref ei käy Floatista"
+
+msgid "E892: Using a String as a Float"
+msgstr "E892: String ei käy Floatista"
+
+msgid "E893: Using a List as a Float"
+msgstr "E893: Lista ei käy Floatista"
+
+msgid "E894: Using a Dictionary as a Float"
+msgstr "E894: Sanakirja ei käy Floatista"
+
+msgid "E907: Using a special value as a Float"
+msgstr "E907: Käytettiin erikoisarvoa Floattina"
+
+msgid "E911: Using a Job as a Float"
+msgstr "E911: Job ei käy Floatista"
+
+msgid "E914: Using a Channel as a Float"
+msgstr "E914: Käytettiin Channelia Floattina"
 
 msgid "E729: using Funcref as a String"
-msgstr "E729: Funcref ei käy merkkijonosta"
+msgstr "E729: Funcref ei käy merkkijonosta"
 
 msgid "E730: using List as a String"
-msgstr "E730: Lista ei käy merkkijonosta"
+msgstr "E730: Lista ei käy merkkijonosta"
 
 msgid "E731: using Dictionary as a String"
-msgstr "E731: Sanakirja ei käy merkkijonosta"
-
-msgid "E806: using Float as a String"
-msgstr "E806: Float ei käy merkkijonosta"
+msgstr "E731: Sanakirja ei käy merkkijonosta"
+
+msgid "E908: using an invalid value as a String"
+msgstr "E908: huono arvo merkkijonolle"
+
+#, c-format
+msgid "E795: Cannot delete variable %s"
+msgstr "E795: Muuttujaa %s ei voi poistaa"
 
 #, c-format
 msgid "E704: Funcref variable name must start with a capital: %s"
-msgstr "E704: Funcrefin muuttujanimen pitää alkaa suuraakkosella: %s"
+msgstr "E704: Funcrefin muuttujanimen pitää alkaa suuraakkosella: %s"
 
 #, c-format
 msgid "E705: Variable name conflicts with existing function: %s"
 msgstr "E705: Muuttujanimi on sama kuin olemassaolevan funktion: %s"
 
 #, c-format
-msgid "E706: Variable type mismatch for: %s"
-msgstr "E706: Muuttujatyyppi ei täsmää: %s"
-
-#, c-format
-msgid "E795: Cannot delete variable %s"
-msgstr "E795: Muuttujaa %s ei voi poistaa"
-
-#, c-format
 msgid "E741: Value is locked: %s"
 msgstr "E741: Arvo on lukittu: %s"
 
@@ -693,73 +624,7 @@ msgid "E742: Cannot change value of %s"
 msgstr "E742: Ei voi muuttaa muuttujan %s arvoa"
 
 msgid "E698: variable nested too deep for making a copy"
-msgstr "E698: muuttuja on upotettu liian syvälle kopioitavaksi"
-
-#, c-format
-msgid "E123: Undefined function: %s"
-msgstr "E123: Tuntematon funktio: %s"
-
-#, c-format
-msgid "E124: Missing '(': %s"
-msgstr "E124: ( puuttuu: %s"
-
-#, c-format
-msgid "E125: Illegal argument: %s"
-msgstr "E125: Virheellinen argumentti: %s"
-
-msgid "E126: Missing :endfunction"
-msgstr "E126: :endfunction puuttuu"
-
-#, c-format
-msgid "E707: Function name conflicts with variable: %s"
-msgstr "E707: Funktion nimi on ristiriidassa muuttujan kanssa: %s"
-
-#, c-format
-msgid "E127: Cannot redefine function %s: It is in use"
-msgstr "E127: Funktiota %s ei voi määritellä uudestaan, koska se on käytössä"
-
-#, c-format
-msgid "E746: Function name does not match script file name: %s"
-msgstr "E746: Funktion nimi ei ole sama kuin skriptin tiedostonnimi: %s"
-
-msgid "E129: Function name required"
-msgstr "E129: Funktion nimi puuttuu"
-
-#, c-format
-msgid "E128: Function name must start with a capital or contain a colon: %s"
-msgstr ""
-"E128: Funktion nimen pitää alkaa suuraakkosella tai sisältää kaksoispisteen: "
-"%s"
-
-#, c-format
-msgid "E131: Cannot delete function %s: It is in use"
-msgstr "E131: Funktiota %s ei voi poistaa"
-
-msgid "E132: Function call depth is higher than 'maxfuncdepth'"
-msgstr "E132: Funktiokutsujen syvyys on enemmän kuin maxfuncdepth"
-
-#, c-format
-msgid "calling %s"
-msgstr "kutsutaan funktiota %s"
-
-#, c-format
-msgid "%s aborted"
-msgstr "%s keskeytettiin"
-
-#, c-format
-msgid "%s returning #%ld"
-msgstr "%s palaa kohdassa #%ld"
-
-#, c-format
-msgid "%s returning %s"
-msgstr "%s palaa kohdassa %s"
-
-#, c-format
-msgid "continuing in %s"
-msgstr "jatkaa kohdassa %s"
-
-msgid "E133: :return not inside a function"
-msgstr "E133: :return ei ole funktion sisällä"
+msgstr "E698: muuttuja on upotettu liian syvälle kopioitavaksi"
 
 msgid ""
 "\n"
@@ -775,11 +640,440 @@ msgstr ""
 "\n"
 "\tViimeksi asetettu kohteesta "
 
+msgid "map() argument"
+msgstr "map()-argumentti"
+
+msgid "filter() argument"
+msgstr "filter()-argumentti"
+
+#, c-format
+msgid "E686: Argument of %s must be a List"
+msgstr "E686: Argumentin %s pitää olla lista"
+
+msgid "E928: String required"
+msgstr "E928: Merkkijono puuttuu"
+
+msgid "E808: Number or Float required"
+msgstr "E808: Number tai Float vaaditaan"
+
+msgid "add() argument"
+msgstr "add()-argumentti"
+
+msgid "E785: complete() can only be used in Insert mode"
+msgstr "E785: complete() toimii vain syöttötilassa"
+
+#.
+#. * Yes this is ugly, I don't particularly like it either.  But doing it
+#. * this way has the compelling advantage that translations need not to
+#. * be touched at all.  See below what 'ok' and 'ync' are used for.
+#.
+msgid "&Ok"
+msgstr "&Ok"
+
+#, c-format
+msgid "+-%s%3ld line: "
+msgid_plural "+-%s%3ld lines: "
+msgstr[0] "+-%s%3ld rivi: "
+msgstr[1] "+-%s%3ld riviä: "
+
+#, c-format
+msgid "E700: Unknown function: %s"
+msgstr "E700: Tuntematon funktio: %s"
+
+msgid "E922: expected a dict"
+msgstr "E922: odotettiin dictiä"
+
+# datarakenteita
+msgid "E923: Second argument of function() must be a list or a dict"
+msgstr "E923: toisen function()-argumentin pitää olla lista tai sanakirja"
+
+msgid ""
+"&OK\n"
+"&Cancel"
+msgstr ""
+"&OK\n"
+"&Peru"
+
+msgid "called inputrestore() more often than inputsave()"
+msgstr "inputrestore() suoritettu useammin kuin inputsave()"
+
+msgid "insert() argument"
+msgstr "insert()-argumentti"
+
+msgid "E786: Range not allowed"
+msgstr "E786: Aluetta ei voi käyttää"
+
+msgid "E916: not a valid job"
+msgstr "E916: ei ole job"
+
+msgid "E701: Invalid type for len()"
+msgstr "E701: Virheellinen tyyppi funktiolle len()"
+
+msgid "E726: Stride is zero"
+msgstr "E726: Stride on nolla"
+
+msgid "E727: Start past end"
+msgstr "E727: Alku on lopun jälkeen"
+
+msgid "<empty>"
+msgstr "<tyhjä>"
+
+msgid "E240: No connection to Vim server"
+msgstr "E240: Ei yhteyttä vim-palvelimeen"
+
+#, c-format
+msgid "E241: Unable to send to %s"
+msgstr "E241: Kohteeseen %s lähettäminen ei onnistunut"
+
+msgid "E277: Unable to read a server reply"
+msgstr "E277: Palvelimen vastauksen lukeminen ei onnistunut"
+
+msgid "remove() argument"
+msgstr "remove()-argumentti"
+
+msgid "E655: Too many symbolic links (cycle?)"
+msgstr "E655: Liikaa symbolisia linkkejä (mahdollinen sykli)"
+
+msgid "reverse() argument"
+msgstr "reverse()-argumentti"
+
+msgid "E258: Unable to send to client"
+msgstr "E258: Asiakkaalle lähetys ei onnistunut"
+
+#, c-format
+msgid "E927: Invalid action: '%s'"
+msgstr "E927: Viallinen toiminto: %s"
+
+msgid "sort() argument"
+msgstr "sort()-argumentti"
+
+msgid "uniq() argument"
+msgstr "uniq()-argumentti"
+
+msgid "E702: Sort compare function failed"
+msgstr "E702: Lajittelun vertausfunktio ei onnistunut"
+
+msgid "E882: Uniq compare function failed"
+msgstr "E882: Uniqin vertausfunktio ei onnistunut"
+
+msgid "(Invalid)"
+msgstr "(Virheellinen)"
+
+#, c-format
+msgid "E935: invalid submatch number: %d"
+msgstr "E935: Virheellinen alitäsmäyksen numero: %d"
+
+msgid "E677: Error writing temp file"
+msgstr "E677: Väliaikaistiedostoon kirjoittaminen ei onnistunut"
+
+msgid "E921: Invalid callback argument"
+msgstr "E921: Virheellinen callback-argumentti"
+
+# puhutaan merkin ulkoasusta snprintf(..., c, c, c, c)
+#, c-format
+msgid "<%s>%s%s  %d,  Hex %02x,  Octal %03o"
+msgstr "<%s>%s%s  %d, heksana %02x, oktaalina %03o"
+
+#, c-format
+msgid "> %d, Hex %04x, Octal %o"
+msgstr "> %d, heksana %04x, oktaalina %o"
+
+#, c-format
+msgid "> %d, Hex %08x, Octal %o"
+msgstr "> %d, hekdana %08x, oktaalina %o"
+
+msgid "E134: Move lines into themselves"
+msgstr "E134: Rivien siirto itsejensä päälle"
+
+msgid "1 line moved"
+msgstr "1 rivi siirretty"
+
+#, c-format
+msgid "%ld lines moved"
+msgstr "%ld riviä siirretty"
+
+#, c-format
+msgid "%ld lines filtered"
+msgstr "%ld riviä suodatettu"
+
+msgid "E135: *Filter* Autocommands must not change current buffer"
+msgstr "E135: *Filter*-autocommand ei voi vaihtaa puskuria"
+
+msgid "[No write since last change]\n"
+msgstr "[Viimeisintä muutosta ei ole kirjoitettu]\n"
+
+#, c-format
+msgid "%sviminfo: %s in line: "
+msgstr "%sviminfo: %s rivillä: "
+
+msgid "E136: viminfo: Too many errors, skipping rest of file"
+msgstr "E136: viminfo: liikaa virheitä, ohitetaan lopputiedosto"
+
+#, c-format
+msgid "Reading viminfo file \"%s\"%s%s%s"
+msgstr "Luetaan viminfo-tiedostoa \"%s\"%s%s%s"
+
+msgid " info"
+msgstr " info"
+
+msgid " marks"
+msgstr " merkit"
+
+msgid " oldfiles"
+msgstr " vanhaatiedostoa"
+
+msgid " FAILED"
+msgstr " EPÄONNISTUI"
+
+#. avoid a wait_return for this message, it's annoying
+#, c-format
+msgid "E137: Viminfo file is not writable: %s"
+msgstr "E137: Viminfo-tiedostoon ei voitu kirjoittaa: %s"
+
+#, c-format
+msgid "E929: Too many viminfo temp files, like %s!"
+msgstr "E929: liikaa viminfo-väliaikaistiedostoja, kuten %s."
+
+#, c-format
+msgid "E138: Can't write viminfo file %s!"
+msgstr "E138: Viminfo-tiedoston kirjoittaminen ei onnistu %s"
+
+#, c-format
+msgid "Writing viminfo file \"%s\""
+msgstr "Kirjoitetaan viminfo-tiedostoa %s"
+
+#, c-format
+msgid "E886: Can't rename viminfo file to %s!"
+msgstr "E886: Viminfo-tiedostoa ei voit uudelleennimetä nimelle %s"
+
+#. Write the info:
+#, c-format
+msgid "# This viminfo file was generated by Vim %s.\n"
+msgstr "# Vimin %s generoima viminfo-tiedosto.\n"
+
+msgid ""
+"# You may edit it if you're careful!\n"
+"\n"
+msgstr ""
+"# Muokkaa varovasti!\n"
+"\n"
+
+msgid "# Value of 'encoding' when this file was written\n"
+msgstr "# encoding-muuttujan arvo tiedostoa kirjoitettaessa\n"
+
+msgid "Illegal starting char"
+msgstr "Virheellinen aloitusmerkki"
+
+msgid ""
+"\n"
+"# Bar lines, copied verbatim:\n"
+msgstr ""
+"\n"
+"# Bar-rivit, kopiotu sellaisenaan:\n"
+
+msgid "Save As"
+msgstr "Tallenna nimellä"
+
+msgid "Write partial file?"
+msgstr "Kirjoita osittainen tiedosto"
+
+msgid "E140: Use ! to write partial buffer"
+msgstr "E140: Käytä !-komentoa osittaisen puskurin kirjoittamiseen"
+
+#, c-format
+msgid "Overwrite existing file \"%s\"?"
+msgstr "Ylikirjoitetaanko olemassaoleva tiedosto %s?"
+
+#, c-format
+msgid "Swap file \"%s\" exists, overwrite anyway?"
+msgstr "Swap-tiedosto %s on olemassa, ylikirjoitetaanko?"
+
+#, c-format
+msgid "E768: Swap file exists: %s (:silent! overrides)"
+msgstr "E768: Swap-tiedosto on jo olemassa: %s (komento :silent! ohittaa)"
+
+#, c-format
+msgid "E141: No file name for buffer %ld"
+msgstr "E141: Ei tiedostonimeä puskurille %ld"
+
+msgid "E142: File not written: Writing is disabled by 'write' option"
+msgstr ""
+"E142: Tiedostoa ei kirjoitettu; write-asetus poistaa kirjoituksen käytöstä"
+
+#, c-format
+msgid ""
+"'readonly' option is set for \"%s\".\n"
+"Do you wish to write anyway?"
+msgstr ""
+"readonly asetettu tiedostolle \"%s\".\n"
+"Kirjoitetaanko?"
+
+#, c-format
+msgid ""
+"File permissions of \"%s\" are read-only.\n"
+"It may still be possible to write it.\n"
+"Do you wish to try?"
+msgstr ""
+"Tiedosto %s on kirjoitussuojattu.\n"
+"Siihen saattaa voida silti kirjoittaa.\n"
+"Yritetäänkö?"
+
+#, c-format
+msgid "E505: \"%s\" is read-only (add ! to override)"
+msgstr "E505: %s on kirjoitussuojattu (lisää komentoon ! ohittaaksesi)"
+
+msgid "Edit File"
+msgstr "Muokkaa tiedostoa"
+
+#, c-format
+msgid "E143: Autocommands unexpectedly deleted new buffer %s"
+msgstr "E143: Autocommand poisti uuden puskurin odotuksen vastaisesti %s"
+
+msgid "E144: non-numeric argument to :z"
+msgstr "E144: :z:n argumentti ei ole numero"
+
+msgid "E145: Shell commands not allowed in rvim"
+msgstr "E145: Kuoren komennot eivät toimi rvimissä"
+
+msgid "E146: Regular expressions can't be delimited by letters"
+msgstr "E146: Säännöllistä ilmausta ei voi rajata kirjaimilla"
+
+#, c-format
+msgid "replace with %s (y/n/a/q/l/^E/^Y)?"
+msgstr "korvaa kohteella %s (y/n/a/q/l/^E/^Y)?"
+
+msgid "(Interrupted) "
+msgstr "(Keskeytetty)"
+
+msgid "1 match"
+msgstr "1 täsmäys"
+
+msgid "1 substitution"
+msgstr "1 korvaus"
+
+#, c-format
+msgid "%ld matches"
+msgstr "%ld täsmäystä"
+
+#, c-format
+msgid "%ld substitutions"
+msgstr "%ld korvausta"
+
+msgid " on 1 line"
+msgstr " 1 rivillä"
+
+#, c-format
+msgid " on %ld lines"
+msgstr " %ld rivillä"
+
+msgid "E147: Cannot do :global recursive"
+msgstr "E147: :globalia ei voi suorittaa rekursiivisesti"
+
+msgid "E148: Regular expression missing from global"
+msgstr "E148: Säännöllinen ilmaus puuttuu globaalista"
+
+#, c-format
+msgid "Pattern found in every line: %s"
+msgstr "Kuvio löytyi joka riviltä: %s"
+
+#, c-format
+msgid "Pattern not found: %s"
+msgstr "Kuviota ei löydy: %s"
+
+msgid ""
+"\n"
+"# Last Substitute String:\n"
+"$"
+msgstr ""
+"\n"
+"# Viimeisin korvausmerkkijono:\n"
+"$"
+
+msgid "E478: Don't panic!"
+msgstr "E478: Älä panikoi."
+
+#, c-format
+msgid "E661: Sorry, no '%s' help for %s"
+msgstr "E661: ei löydy %s-ohjetta kohteelle %s"
+
+#, c-format
+msgid "E149: Sorry, no help for %s"
+msgstr "E149: ei löydy ohjetta kohteelle %s"
+
+#, c-format
+msgid "Sorry, help file \"%s\" not found"
+msgstr "ohjetiedostoa %s ei löydy"
+
+#, c-format
+msgid "E152: Cannot open %s for writing"
+msgstr "E152: Ei voi avata tiedostoa %s kirjoittamista varten"
+
+#, c-format
+msgid "E153: Unable to open %s for reading"
+msgstr "E153: Ei voi avata tiedostoa %s lukemista varten"
+
+#, c-format
+msgid "E670: Mix of help file encodings within a language: %s"
+msgstr "E670: Monia ohjetiedostokoodauksia kielessä: %s"
+
+#, c-format
+msgid "E154: Duplicate tag \"%s\" in file %s/%s"
+msgstr "E154: Kaksoiskappale tägistä %s tiedostossa %s/%s"
+
+#, c-format
+msgid "E150: Not a directory: %s"
+msgstr "E150: Ei ole hakemisto: %s"
+
+#, c-format
+msgid "E160: Unknown sign command: %s"
+msgstr "E160: Tuntematon merkkikomento: %s"
+
+msgid "E156: Missing sign name"
+msgstr "E156: Merkki puuttuu"
+
+msgid "E612: Too many signs defined"
+msgstr "E612: Liikaa merkkejä määritelty"
+
+#, c-format
+msgid "E239: Invalid sign text: %s"
+msgstr "E239: Virheellinen merkkiteksti: %s"
+
+#, c-format
+msgid "E155: Unknown sign: %s"
+msgstr "E155: Tuntematon merkki: %s"
+
+msgid "E159: Missing sign number"
+msgstr "E159: Merkin numero puuttuu"
+
+#, c-format
+msgid "E158: Invalid buffer name: %s"
+msgstr "E158: Virheellinen puskurin nimi: %s"
+
+msgid "E934: Cannot jump to a buffer that does not have a name"
+msgstr "E934: Ei voida hypätä puskuriin jolla ei ole nimeä"
+
+#, c-format
+msgid "E157: Invalid sign ID: %ld"
+msgstr "E157: Virheellinen merkin tunnus: %ld"
+
+#, c-format
+msgid "E885: Not possible to change sign %s"
+msgstr "E885: Ei voida muuttaa merkkiä %s"
+
+msgid " (NOT FOUND)"
+msgstr " (EI LÖYTYNYT)"
+
+msgid " (not supported)"
+msgstr " (ei tuettu)"
+
+msgid "[Deleted]"
+msgstr "[Poistettu]"
+
 msgid "No old files"
 msgstr "Ei vanhoja tiedostoja"
 
 msgid "Entering Debug mode.  Type \"cont\" to continue."
-msgstr "Siirrytään vianetsintätilaan, kirjoita cont jatkaaksesi."
+msgstr "Siirrytään vianetsintätilaan, kirjoita cont jatkaaksesi."
 
 #, c-format
 msgid "line %ld: %s"
@@ -789,9 +1083,16 @@ msgstr "rivi %ld: %s"
 msgid "cmd: %s"
 msgstr "kmnt: %s"
 
+msgid "frame is zero"
+msgstr "kehys on nolla"
+
+#, c-format
+msgid "frame at highest level: %d"
+msgstr "kehys ylimmällä tasolla: %d"
+
 #, c-format
 msgid "Breakpoint in \"%s%s\" line %ld"
-msgstr "Katkaisukohta %s%s rivillä %ld"
+msgstr "Katkaisukohta %s%s rivillä %ld"
 
 #, c-format
 msgid "E161: Breakpoint not found: %s"
@@ -805,21 +1106,18 @@ msgid "%3d  %s %s  line %ld"
 msgstr "%3d  %s %s  rivi %ld"
 
 msgid "E750: First use \":profile start {fname}\""
-msgstr "E750: Aloita käskyllä :profile start {fname}"
-
-msgid "Save As"
-msgstr "Tallenna nimellä"
+msgstr "E750: Aloita käskyllä :profile start {fname}"
 
 #, c-format
 msgid "Save changes to \"%s\"?"
 msgstr "Tallennetaanko muutokset tiedostoon %s?"
 
 msgid "Untitled"
-msgstr "Nimetön"
+msgstr "Nimetön"
 
 #, c-format
 msgid "E162: No write since last change for buffer \"%s\""
-msgstr "E162: Muutoksia ei ole kirjoitettu puskurin %s viime muutoksen jälkeen"
+msgstr "E162: Muutoksia ei ole kirjoitettu puskurin %s viime muutoksen jälkeen"
 
 msgid "Warning: Entered other buffer unexpectedly (check autocommands)"
 msgstr "Varoitus: Puskuri vaihtui odottamatta (tarkista autocommands)"
@@ -828,26 +1126,26 @@ msgid "E163: There is only one file to e
 msgstr "E163: Vain yksi tiedosto muokattavana"
 
 msgid "E164: Cannot go before first file"
-msgstr "E164: Ensimmäisen tiedoston ohi ei voi mennä"
+msgstr "E164: Ensimmäisen tiedoston ohi ei voi mennä"
 
 msgid "E165: Cannot go beyond last file"
-msgstr "E165: Viimeisen tiedoston ohi ei voi mennä"
+msgstr "E165: Viimeisen tiedoston ohi ei voi mennä"
 
 #, c-format
 msgid "E666: compiler not supported: %s"
-msgstr "E666: kääntäjää ei tueta: %s"
+msgstr "E666: kääntäjää ei tueta: %s"
 
 #, c-format
 msgid "Searching for \"%s\" in \"%s\""
-msgstr "Etsitään ilmausta %s kohteesta %s"
+msgstr "Etsitään ilmausta %s kohteesta %s"
 
 #, c-format
 msgid "Searching for \"%s\""
-msgstr "Etsitään ilmausta %s"
-
-#, c-format
-msgid "not found in 'runtimepath': \"%s\""
-msgstr "ei löydy runtimepathista: %s"
+msgstr "Etsitään ilmausta %s"
+
+#, c-format
+msgid "not found in '%s': \"%s\""
+msgstr "'%s' ei löydy kohteesta: %s"
 
 msgid "Source Vim script"
 msgstr "Lataa vim-skripti"
@@ -876,6 +1174,10 @@ msgstr "rivi %ld: ladataan %s"
 msgid "finished sourcing %s"
 msgstr "ladattu %s"
 
+#, c-format
+msgid "continuing in %s"
+msgstr "jatkaa kohdassa %s"
+
 msgid "modeline"
 msgstr "mode-rivi"
 
@@ -886,13 +1188,13 @@ msgid "-c argument"
 msgstr "-c-argumentti"
 
 msgid "environment variable"
-msgstr "ympäristömuuttuja"
+msgstr "ympäristömuuttuja"
 
 msgid "error handler"
-msgstr "virhekäsittelin"
+msgstr "virhekäsittelin"
 
 msgid "W15: Warning: Wrong line separator, ^M may be missing"
-msgstr "W15: Varoitus: Väärä rivierotin, ^M saattaa puuttua"
+msgstr "W15: Varoitus: Väärä rivierotin, ^M saattaa puuttua"
 
 msgid "E167: :scriptencoding used outside of a sourced file"
 msgstr "E167: :scriptencoding ladatun tiedoston ulkopuolella"
@@ -902,288 +1204,14 @@ msgstr "E168: :finish ladatun tiedoston 
 
 #, c-format
 msgid "Current %slanguage: \"%s\""
-msgstr "Käytössä oleva %skieli: %s"
+msgstr "Käytössä oleva %skieli: %s"
 
 #, c-format
 msgid "E197: Cannot set language to \"%s\""
-msgstr "E197: Kieleksi ei voitu asettaa kieltä %s"
-
-# puhutaan merkin ulkoasusta snprintf(..., c, c, c, c)
-#, c-format
-msgid "<%s>%s%s  %d,  Hex %02x,  Octal %03o"
-msgstr "<%s>%s%s  %d, heksana %02x, oktaalina %03o"
-
-#, c-format
-msgid "> %d, Hex %04x, Octal %o"
-msgstr "> %d, heksana %04x, oktaalina %o"
-
-#, c-format
-msgid "> %d, Hex %08x, Octal %o"
-msgstr "> %d, hekdana %08x, oktaalina %o"
-
-msgid "E134: Move lines into themselves"
-msgstr "E134: Rivien siirto itsejensä päälle"
-
-msgid "1 line moved"
-msgstr "1 rivi siirretty"
-
-#, c-format
-msgid "%ld lines moved"
-msgstr "%ld riviä siirretty"
-
-#, c-format
-msgid "%ld lines filtered"
-msgstr "%ld riviä suodatettu"
-
-msgid "E135: *Filter* Autocommands must not change current buffer"
-msgstr "E135: *Filter*-autocommand ei voi vaihtaa puskuria"
-
-msgid "[No write since last change]\n"
-msgstr "[Viimeisintä muutosta ei ole kirjoitettu]\n"
-
-#, c-format
-msgid "%sviminfo: %s in line: "
-msgstr "%sviminfo: %s rivillä: "
-
-msgid "E136: viminfo: Too many errors, skipping rest of file"
-msgstr "E136: viminfo: liikaa virheitä, ohitetaan lopputiedosto"
-
-#, c-format
-msgid "Reading viminfo file \"%s\"%s%s%s"
-msgstr "Luetaan viminfo-tiedostoa \"%s\"%s%s%s"
-
-msgid " info"
-msgstr " info"
-
-msgid " marks"
-msgstr " merkit"
-
-msgid " oldfiles"
-msgstr " vanhaatiedostoa"
-
-msgid " FAILED"
-msgstr " EPÄONNISTUI"
-
-#. avoid a wait_return for this message, it's annoying
-#, c-format
-msgid "E137: Viminfo file is not writable: %s"
-msgstr "E137: Viminfo-tiedostoon ei voitu kirjoittaa: %s"
-
-#, c-format
-msgid "E138: Can't write viminfo file %s!"
-msgstr "E138: Viminfo-tiedoston kirjoittaminen ei onnistu %s"
-
-#, c-format
-msgid "Writing viminfo file \"%s\""
-msgstr "Kirjoitetaan viminfo-tiedostoa %s"
-
-#. Write the info:
-#, c-format
-msgid "# This viminfo file was generated by Vim %s.\n"
-msgstr "# Vimin %s generoima viminfo-tiedosto.\n"
-
-#, c-format
-msgid ""
-"# You may edit it if you're careful!\n"
-"\n"
-msgstr ""
-"# Muokkaa varovasti!\n"
-"\n"
-
-#, c-format
-msgid "# Value of 'encoding' when this file was written\n"
-msgstr "# encoding-muuttujan arvo tiedostoa kirjoitettaessa\n"
-
-msgid "Illegal starting char"
-msgstr "Virheellinen aloitusmerkki"
-
-msgid "Write partial file?"
-msgstr "Kirjoita osittainen tiedosto"
-
-msgid "E140: Use ! to write partial buffer"
-msgstr "E140: Käytä !-komentoa osittaisen puskurin kirjoittamiseen"
-
-#, c-format
-msgid "Overwrite existing file \"%s\"?"
-msgstr "Ylikirjoitetaanko olemassaoleva tiedosto %s?"
-
-#, c-format
-msgid "Swap file \"%s\" exists, overwrite anyway?"
-msgstr "Swap-tiedosto %s on olemassa, ylikirjoitetaanko?"
-
-#, c-format
-msgid "E768: Swap file exists: %s (:silent! overrides)"
-msgstr "E768: Swap-tiedosto on jo olemassa: %s (komento :silent! ohittaa)"
-
-#, c-format
-msgid "E141: No file name for buffer %ld"
-msgstr "E141: Ei tiedostonimeä puskurille %ld"
-
-msgid "E142: File not written: Writing is disabled by 'write' option"
-msgstr ""
-"E142: Tiedostoa ei kirjoitettu; write-asetus poistaa kirjoituksen käytöstä"
-
-#, c-format
-msgid ""
-"'readonly' option is set for \"%s\".\n"
-"Do you wish to write anyway?"
-msgstr ""
-"readonly asetettu tiedostolle \"%s\".\n"
-"Kirjoitetaanko?"
-
-#, c-format
-msgid ""
-"File permissions of \"%s\" are read-only.\n"
-"It may still be possible to write it.\n"
-"Do you wish to try?"
-msgstr ""
-"Tiedosto %s on kirjoitussuojattu.\n"
-"Siihen saattaa voida silti kirjoittaa.\n"
-"Yritetäänkö?"
-
-#, c-format
-msgid "E505: \"%s\" is read-only (add ! to override)"
-msgstr "E505: %s on kirjoitussuojattu (lisää komentoon ! ohittaaksesi)"
-
-msgid "Edit File"
-msgstr "Muokkaa tiedostoa"
-
-#, c-format
-msgid "E143: Autocommands unexpectedly deleted new buffer %s"
-msgstr "E143: Autocommand poisti uuden puskurin odotuksen vastaisesti %s"
-
-msgid "E144: non-numeric argument to :z"
-msgstr "E144: :z:n argumentti ei ole numero"
-
-msgid "E145: Shell commands not allowed in rvim"
-msgstr "E145: Kuoren komennot eivät toimi rvimissä"
-
-msgid "E146: Regular expressions can't be delimited by letters"
-msgstr "E146: Säännöllistä ilmausta ei voi rajata kirjaimilla"
-
-#, c-format
-msgid "replace with %s (y/n/a/q/l/^E/^Y)?"
-msgstr "korvaa kohteella %s (y/n/a/q/l/^E/^Y)?"
-
-msgid "(Interrupted) "
-msgstr "(Keskeytetty)"
-
-msgid "1 match"
-msgstr "1 täsmäys"
-
-msgid "1 substitution"
-msgstr "1 korvaus"
-
-#, c-format
-msgid "%ld matches"
-msgstr "%ld täsmäystä"
-
-#, c-format
-msgid "%ld substitutions"
-msgstr "%ld korvausta"
-
-msgid " on 1 line"
-msgstr " 1 rivillä"
-
-#, c-format
-msgid " on %ld lines"
-msgstr " %ld rivillä"
-
-msgid "E147: Cannot do :global recursive"
-msgstr "E147: :globalia ei voi suorittaa rekursiivisesti"
-
-msgid "E148: Regular expression missing from global"
-msgstr "E148: Säännöllinen ilmaus puuttuu globaalista"
-
-#, c-format
-msgid "Pattern found in every line: %s"
-msgstr "Kuvio löytyi joka riviltä: %s"
-
-#, c-format
-msgid ""
-"\n"
-"# Last Substitute String:\n"
-"$"
-msgstr ""
-"\n"
-"# Viimeisin korvausmerkkijono:\n"
-"$"
-
-msgid "E478: Don't panic!"
-msgstr "E478: Älä panikoi."
-
-#, c-format
-msgid "E661: Sorry, no '%s' help for %s"
-msgstr "E661: Sori, ei löydy %s-ohjetta kohteelle %s"
-
-#, c-format
-msgid "E149: Sorry, no help for %s"
-msgstr "E149: Sori, ei löydy ohjetta kohteelle %s"
-
-#, c-format
-msgid "Sorry, help file \"%s\" not found"
-msgstr "Sori, ohjetiedostoa %s ei löydy"
-
-#, c-format
-msgid "E150: Not a directory: %s"
-msgstr "E150: Ei ole hakemisto: %s"
-
-#, c-format
-msgid "E152: Cannot open %s for writing"
-msgstr "E152: Ei voi avata tiedostoa %s kirjoittamista varten"
-
-#, c-format
-msgid "E153: Unable to open %s for reading"
-msgstr "E153: Ei voi avata tiedostoa %s lukemista varten"
-
-#, c-format
-msgid "E670: Mix of help file encodings within a language: %s"
-msgstr "E670: Monia ohjetiedostokoodauksia kielessä: %s"
-
-#, c-format
-msgid "E154: Duplicate tag \"%s\" in file %s/%s"
-msgstr "E154: Kaksoiskappale tägistä %s tiedostossa %s/%s"
-
-#, c-format
-msgid "E160: Unknown sign command: %s"
-msgstr "E160: Tuntematon merkkikomento: %s"
-
-msgid "E156: Missing sign name"
-msgstr "E156: Merkki puuttuu"
-
-msgid "E612: Too many signs defined"
-msgstr "E612: Liikaa merkkejä määritelty"
-
-#, c-format
-msgid "E239: Invalid sign text: %s"
-msgstr "E239: Virheellinen merkkiteksti: %s"
-
-#, c-format
-msgid "E155: Unknown sign: %s"
-msgstr "E155: Tuntematon merkki: %s"
-
-msgid "E159: Missing sign number"
-msgstr "E159: Merkin numero puuttuu"
-
-#, c-format
-msgid "E158: Invalid buffer name: %s"
-msgstr "E158: Virheellinen puskurin nimi: %s"
-
-#, c-format
-msgid "E157: Invalid sign ID: %ld"
-msgstr "E157: Virheellinen merkin tunnus: %ld"
-
-msgid " (NOT FOUND)"
-msgstr " (EI LÖYTYNYT)"
-
-msgid " (not supported)"
-msgstr " (ei tuettu)"
-
-msgid "[Deleted]"
-msgstr "[Poistettu]"
+msgstr "E197: Kieleksi ei voitu asettaa kieltä %s"
 
 msgid "Entering Ex mode.  Type \"visual\" to go to Normal mode."
-msgstr "Siirrytään Ex-tilaan, kirjoita visual palataksesi normaaliin tilaan."
+msgstr "Siirrytään Ex-tilaan, kirjoita visual palataksesi normaaliin tilaan."
 
 msgid "E501: At end-of-file"
 msgstr "E501: Tiedoston lopussa"
@@ -1202,7 +1230,7 @@ msgid "End of function"
 msgstr "Funktion loppu"
 
 msgid "E464: Ambiguous use of user-defined command"
-msgstr "E464: Käyttäjän määrittelemän komennon monimerkityksinen käyttö"
+msgstr "E464: Käyttäjän määrittelemän komennon monimerkityksinen käyttö"
 
 msgid "E492: Not an editor command"
 msgstr "E492: Ei ole editorikomento"
@@ -1211,59 +1239,62 @@ msgid "E493: Backwards range given"
 msgstr "E493: Takaperoinen arvoalue annettu"
 
 msgid "Backwards range given, OK to swap"
-msgstr "Takaperoinen arvoalue annettu, OK kääntää"
+msgstr "Takaperoinen arvoalue annettu, OK kääntää"
 
 msgid "E494: Use w or w>>"
-msgstr "E494: Käytä w:tä tai w>>:aa"
+msgstr "E494: Käytä w:tä tai w>>:aa"
 
 msgid "E319: Sorry, the command is not available in this version"
-msgstr "E319: Komento ei ole käytettävissä tässä versiossa"
+msgstr "E319: Komento ei ole käytettävissä tässä versiossa"
 
 msgid "E172: Only one file name allowed"
 msgstr "E172: Vain yksi tiedostonimi sallitaan"
 
 msgid "1 more file to edit.  Quit anyway?"
-msgstr "vielä 1 tiedosto muokattavana, lopetaanko silti?"
+msgstr "vielä 1 tiedosto muokattavana, lopetaanko silti?"
 
 #, c-format
 msgid "%d more files to edit.  Quit anyway?"
-msgstr "vielä %d tiedostoa muokattavana, lopetetaanko silti?"
+msgstr "vielä %d tiedostoa muokattavana, lopetetaanko silti?"
 
 msgid "E173: 1 more file to edit"
-msgstr "E173: vielä 1 tiedosto muokattavana"
+msgstr "E173: vielä 1 tiedosto muokattavana"
 
 #, c-format
 msgid "E173: %ld more files to edit"
-msgstr "E173: vielä %ld tiedostoa muokattavana"
+msgstr "E173: vielä %ld tiedostoa muokattavana"
 
 msgid "E174: Command already exists: add ! to replace it"
-msgstr "E174: Komento on jo olemassa, käytä !:ä korvataksesi"
+msgstr "E174: Komento on jo olemassa, käytä !:ä korvataksesi"
 
 msgid ""
 "\n"
-"    Name        Args Range Complete  Definition"
-msgstr ""
-"\n"
-"    Nimi        Arg  Arvot Valmis    Määritelmä"
+"    Name        Args       Address   Complete  Definition"
+msgstr ""
+"\n"
+"    Nimi        Argumentit Osoite    Valmis    Määritelmä"
 
 msgid "No user-defined commands found"
-msgstr "Ei käyttäjän määrittelemiä komentoja"
+msgstr "Ei käyttäjän määrittelemiä komentoja"
 
 msgid "E175: No attribute specified"
-msgstr "E175: Ei attribuutteja määriteltynä"
+msgstr "E175: Ei attribuutteja määriteltynä"
 
 msgid "E176: Invalid number of arguments"
-msgstr "E176: Väärä määrä attribuutteja"
+msgstr "E176: Väärä määrä attribuutteja"
 
 msgid "E177: Count cannot be specified twice"
-msgstr "E177: Lukumäärää ei voi määritellä kahdesti"
+msgstr "E177: Lukumäärää ei voi määritellä kahdesti"
 
 msgid "E178: Invalid default value for count"
-msgstr "E178: Lukumäärän oletusarvo on väärä"
+msgstr "E178: Lukumäärän oletusarvo on väärä"
 
 msgid "E179: argument required for -complete"
 msgstr "E179: -complete vaatii argumentin"
 
+msgid "E179: argument required for -addr"
+msgstr "E179: -addr vaatii argumentin"
+
 #, c-format
 msgid "E181: Invalid attribute: %s"
 msgstr "E181: Virheellinen attribuutti: %s"
@@ -1272,37 +1303,44 @@ msgid "E182: Invalid command name"
 msgstr "E182: Virheellinen komennon nimi"
 
 msgid "E183: User defined commands must start with an uppercase letter"
-msgstr "E183: Käyttäjän määrittelemän komennon pitää alkaa suuraakkosella"
+msgstr "E183: Käyttäjän määrittelemän komennon pitää alkaa suuraakkosella"
+
+msgid "E841: Reserved name, cannot be used for user defined command"
+msgstr "E841: Varattua nimeä ei voi käyttää käyttäjän määrittelemänä komentona"
 
 #, c-format
 msgid "E184: No such user-defined command: %s"
-msgstr "E184: Käyttäjän komentoa ei ole olemassa: %s"
+msgstr "E184: Käyttäjän komentoa ei ole olemassa: %s"
+
+#, c-format
+msgid "E180: Invalid address type value: %s"
+msgstr "E180: Virheellinen osoitetyyppiarvo: %s"
 
 #, c-format
 msgid "E180: Invalid complete value: %s"
-msgstr "E180: Virheellinen täydennysarvo: %s"
+msgstr "E180: Virheellinen täydennysarvo: %s"
 
 msgid "E468: Completion argument only allowed for custom completion"
-msgstr "E468: Täydennysargumentti sopii vain itse määriteltyyn täydennykseen"
+msgstr "E468: Täydennysargumentti sopii vain itse määriteltyyn täydennykseen"
 
 msgid "E467: Custom completion requires a function argument"
-msgstr "E467: Itse määritelty täydennys vaatii funktioargumentin"
+msgstr "E467: Itse määritelty täydennys vaatii funktioargumentin"
 
 msgid "unknown"
 msgstr "tuntematon"
 
 #, c-format
-msgid "E185: Cannot find color scheme %s"
-msgstr "E185: Väriteemaa %s ei löydy"
+msgid "E185: Cannot find color scheme '%s'"
+msgstr "E185: Väriteemaa %s ei löydy"
 
 msgid "Greetings, Vim user!"
-msgstr "Tervehdys, Vimin käyttäjä."
+msgstr "Tervehdys, Vimin käyttäjä."
 
 msgid "E784: Cannot close last tab page"
-msgstr "E784: Viimeistä välilehteä ei voi sulkea"
+msgstr "E784: Viimeistä välilehteä ei voi sulkea"
 
 msgid "Already only one tab page"
-msgstr "Vain yksi välilehti jäljellä enää"
+msgstr "Vain yksi välilehti jäljellä enää"
 
 msgid "Edit File in new window"
 msgstr "Muokkaa uudessa ikkunassa"
@@ -1315,15 +1353,15 @@ msgid "No swap file"
 msgstr "Ei swap-tiedostoa"
 
 msgid "Append File"
-msgstr "Lisää tiedostoon"
+msgstr "Lisää tiedostoon"
 
 msgid "E747: Cannot change directory, buffer is modified (add ! to override)"
 msgstr ""
-"E747: Hakemistoa ei voida muuttaa, puskuria on muokattu (lisää komentoon ! "
+"E747: Hakemistoa ei voida muuttaa, puskuria on muokattu (lisää komentoon ! "
 "ohittaaksesi"
 
 msgid "E186: No previous directory"
-msgstr "E186: Ei edellistä hakemistoa"
+msgstr "E186: Ei edellistä hakemistoa"
 
 msgid "E187: Unknown"
 msgstr "E187: Tuntematon"
@@ -1336,16 +1374,19 @@ msgid "Window position: X %d, Y %d"
 msgstr "Ikkunan sijainti: X %d, Y %d"
 
 msgid "E188: Obtaining window position not implemented for this platform"
-msgstr "E188: Ikkunan sijainnin selvitys ei toimi tällä alustalla"
+msgstr "E188: Ikkunan sijainnin selvitys ei toimi tällä alustalla"
 
 msgid "E466: :winpos requires two number arguments"
 msgstr "E466: :winpos vaatii kaksi lukuargumenttia"
 
+msgid "E930: Cannot use :redir inside execute()"
+msgstr "E930: Komentoa :redir ei voi käyttää funktion execute() sisällä"
+
 msgid "Save Redirection"
 msgstr "Tallenna uudelleenosoitus"
 
 msgid "Save View"
-msgstr "Tallenna näkymä"
+msgstr "Tallenna näkymä"
 
 msgid "Save Session"
 msgstr "Tallenna sessio"
@@ -1359,7 +1400,7 @@ msgstr "E739: hakemistoa ei voi luoda: %
 
 #, c-format
 msgid "E189: \"%s\" exists (add ! to override)"
-msgstr "E189: %s on jo olemassa (lisää komentoon ! ohittaaksesi)"
+msgstr "E189: %s on jo olemassa (lisää komentoon ! ohittaaksesi)"
 
 #, c-format
 msgid "E190: Cannot open \"%s\" for writing"
@@ -1367,16 +1408,16 @@ msgstr "E190: Tiedostoa %s ei voitu avat
 
 #. set mark
 msgid "E191: Argument must be a letter or forward/backward quote"
-msgstr "E191: Argumentin eteen- tai taaksepäin lainaukseen pitää olla kirjain"
+msgstr "E191: Argumentin eteen- tai taaksepäin lainaukseen pitää olla kirjain"
 
 msgid "E192: Recursive use of :normal too deep"
-msgstr "E192: :normalin liian syvä rekursio"
+msgstr "E192: :normalin liian syvä rekursio"
 
 msgid "E809: #< is not available without the +eval feature"
-msgstr "E809: #< ei ole käytössä jollei +eval ole päällä"
+msgstr "E809: #< ei ole käytössä jollei +eval ole päällä"
 
 msgid "E194: No alternate file name to substitute for '#'"
-msgstr "E194: Ei vaihtoehtoista tiedostonimeä #:lle"
+msgstr "E194: Ei vaihtoehtoista tiedostonimeä #:lle"
 
 msgid "E495: no autocommand file name to substitute for \"<afile>\""
 msgstr "E495: ei autocommand-tiedostoa kohteelle <afile>"
@@ -1385,26 +1426,29 @@ msgid "E496: no autocommand buffer numbe
 msgstr "E496: ei autocommand-puskurinumeroa kohteelle <abuf>"
 
 msgid "E497: no autocommand match name to substitute for \"<amatch>\""
-msgstr "E497: ei autocommand-täsmäysnimeä kohteella <amatch>"
+msgstr "E497: ei autocommand-täsmäysnimeä kohteella <amatch>"
 
 msgid "E498: no :source file name to substitute for \"<sfile>\""
-msgstr "E498: ei :source-tiedostonimeä kohteelle <sfile>"
+msgstr "E498: ei :source-tiedostonimeä kohteelle <sfile>"
+
+msgid "E842: no line number to use for \"<slnum>\""
+msgstr "E842: ei rivinumeroa kohteelle <slnum>"
 
 #, no-c-format
 msgid "E499: Empty file name for '%' or '#', only works with \":p:h\""
-msgstr "E499: Tyhjä tiedostonimi kohteissa % tai #  toimii vain :p:h"
+msgstr "E499: Tyhjä tiedostonimi kohteissa % tai #  toimii vain :p:h"
 
 msgid "E500: Evaluates to an empty string"
-msgstr "E500: Loppuarvo on tyhjä merkkijono"
+msgstr "E500: Loppuarvo on tyhjä merkkijono"
 
 msgid "E195: Cannot open viminfo file for reading"
 msgstr "E195: Viminfoa ei voi avata lukemista varten"
 
 msgid "E196: No digraphs in this version"
-msgstr "E196: Digraafeja ei ole tässä versiossa"
+msgstr "E196: Digraafeja ei ole tässä versiossa"
 
 msgid "E608: Cannot :throw exceptions with 'Vim' prefix"
-msgstr "E608: Vim-alkuisia poikkeuksia ei voi heittää :throw-komennolla"
+msgstr "E608: Vim-alkuisia poikkeuksia ei voi heittää :throw-komennolla"
 
 #. always scroll up, don't overwrite
 #, c-format
@@ -1469,7 +1513,7 @@ msgid "E583: multiple :else"
 msgstr "E583: :else monta kertaa"
 
 msgid "E584: :elseif after :else"
-msgstr "E584: :elseif komennon :else jälkeen"
+msgstr "E584: :elseif komennon :else jälkeen"
 
 msgid "E585: :while/:for nesting too deep"
 msgstr "E585: liian monta tasoa :while- tai :for-komennoissa"
@@ -1517,7 +1561,7 @@ msgid "E811: Not allowed to change buffe
 msgstr "E811: Puskuria ei voi vaihtaa nyt"
 
 msgid "tagname"
-msgstr "täginimi"
+msgstr "täginimi"
 
 msgid " kind file\n"
 msgstr " -tiedostotyyppi\n"
@@ -1543,7 +1587,10 @@ msgid "Expression"
 msgstr "Ilmaus"
 
 msgid "Input Line"
-msgstr "Syöterivi"
+msgstr "Syöterivi"
+
+msgid "Debug Line"
+msgstr "Vianetsintärivi"
 
 msgid "E198: cmd_pchar beyond the command length"
 msgstr "E198: cmd_pchar komennon pituuden ulkopuolella"
@@ -1564,7 +1611,7 @@ msgid "is not a file"
 msgstr "ei ole tiedosto"
 
 msgid "is a device (disabled with 'opendevice' option)"
-msgstr "on laite (ei käytössä opendevice-asetuksen takia)"
+msgstr "on laite (ei käytössä opendevice-asetuksen takia)"
 
 msgid "[New File]"
 msgstr "[Uusi tiedosto]"
@@ -1580,16 +1627,16 @@ msgstr "[Lupa kielletty]"
 
 msgid "E200: *ReadPre autocommands made the file unreadable"
 msgstr ""
-"E200: *ReadPre-autocommand-komennot tekivät tiedostosta lukukelvottoman"
+"E200: *ReadPre-autocommand-komennot tekivät tiedostosta lukukelvottoman"
 
 msgid "E201: *ReadPre autocommands must not change current buffer"
-msgstr "E201: *ReadPre-autocommand-komennot eivät saa muuttaa puskuria"
+msgstr "E201: *ReadPre-autocommand-komennot eivät saa muuttaa puskuria"
 
 msgid "Vim: Reading from stdin...\n"
-msgstr "Vim: Luetaan vakiosyötteestä...\n"
+msgstr "Vim: Luetaan vakiosyötteestä...\n"
 
 msgid "Reading from stdin..."
-msgstr "Luetaan vakiosyötteestä"
+msgstr "Luetaan vakiosyötteestä"
 
 #. Re-opening the original file failed!
 msgid "E202: Conversion made file unreadable!"
@@ -1607,15 +1654,12 @@ msgstr "[soketti]"
 msgid "[character special]"
 msgstr "[merkki erikoinen]"
 
-msgid "[RO]"
-msgstr "[Luku]"
-
-# Carriage Return elikkä rivinvaihtomerkin eräs muoto/osa (vrt. LF)
+# Carriage Return elikkä rivinvaihtomerkin eräs muoto/osa (vrt. LF)
 msgid "[CR missing]"
 msgstr "[CR puuttuu]"
 
 msgid "[long lines split]"
-msgstr "[pitkät rivit hajotettu]"
+msgstr "[pitkät rivit hajotettu]"
 
 msgid "[NOT converted]"
 msgstr "[EI muunnettu]"
@@ -1623,32 +1667,26 @@ msgstr "[EI muunnettu]"
 msgid "[converted]"
 msgstr "[muunnettu]"
 
-msgid "[crypted]"
-msgstr "[salattu]"
-
 #, c-format
 msgid "[CONVERSION ERROR in line %ld]"
-msgstr "[MUUNNOSVIRHE rivillä %ld]"
+msgstr "[MUUNNOSVIRHE rivillä %ld]"
 
 #, c-format
 msgid "[ILLEGAL BYTE in line %ld]"
-msgstr "[VIRHEELLINEN OKTETTI rivillä %ld]"
+msgstr "[VIRHEELLINEN OKTETTI rivillä %ld]"
 
 msgid "[READ ERRORS]"
-msgstr "[LUKUVIRHEITÄ]"
+msgstr "[LUKUVIRHEITÄ]"
 
 msgid "Can't find temp file for conversion"
-msgstr "Ei voi löytää väliaikaistiedstoa muuntamiseksi"
+msgstr "Ei voi löytää väliaikaistiedstoa muuntamiseksi"
 
 msgid "Conversion with 'charconvert' failed"
-msgstr "Muunnos charconvert epäonnistui"
+msgstr "Muunnos charconvert epäonnistui"
 
 msgid "can't read output of 'charconvert'"
 msgstr "charconvertin tulostetta ei voida lukea"
 
-msgid "E821: File is encrypted with unknown method"
-msgstr "E821: Tiedoston salaus on tuntematon"
-
 msgid "E676: No matching autocommands for acwrite buffer"
 msgstr "E676: Ei autocommand-komentoa acwrite-puskurille"
 
@@ -1658,7 +1696,7 @@ msgstr ""
 "kirjoittaa"
 
 msgid "E204: Autocommand changed number of lines in unexpected way"
-msgstr "E204: Autocommand-komento muutti rivien määrä odottamatta"
+msgstr "E204: Autocommand-komento muutti rivien määrä odottamatta"
 
 msgid "NetBeans disallows writes of unmodified buffers"
 msgstr "NetBeans ei salli kirjoittaa muokkaamattomiin puskureihin"
@@ -1670,43 +1708,43 @@ msgid "is not a file or writable device"
 msgstr "ei ole tiedosto tai kirjoitettava laite"
 
 msgid "writing to device disabled with 'opendevice' option"
-msgstr "laitteeseen kirjoittaminen pois käytöstä opendevice-asetuksella"
+msgstr "laitteeseen kirjoittaminen pois käytöstä opendevice-asetuksella"
 
 msgid "is read-only (add ! to override)"
-msgstr "on kirjoitussuojattu (lisää komentoon ! ohittaaksesi)"
+msgstr "on kirjoitussuojattu (lisää komentoon ! ohittaaksesi)"
 
 msgid "E506: Can't write to backup file (add ! to override)"
 msgstr ""
-"E506: Ei voi kirjoittaa varmuuskopiotiedostoon (lisää komentoon ! "
+"E506: Ei voi kirjoittaa varmuuskopiotiedostoon (lisää komentoon ! "
 "ohittaaksesi)"
 
 msgid "E507: Close error for backup file (add ! to override)"
 msgstr ""
-"E507: Varmuuskopiotiedoston sulkeminen ei onnistu (lisää komentoon ! "
+"E507: Varmuuskopiotiedoston sulkeminen ei onnistu (lisää komentoon ! "
 "ohittaaksesi)"
 
 msgid "E508: Can't read file for backup (add ! to override)"
 msgstr ""
-"E508: Varmuuskopiotiedostoa ei voi lukea (lisää komentoon ! ohittaaksesi)"
+"E508: Varmuuskopiotiedostoa ei voi lukea (lisää komentoon ! ohittaaksesi)"
 
 msgid "E509: Cannot create backup file (add ! to override)"
 msgstr ""
-"E509: Ei voi luoda varmuuskopiotiedostoa (lisää komentoon ! ohittaaksesi)"
+"E509: Ei voi luoda varmuuskopiotiedostoa (lisää komentoon ! ohittaaksesi)"
 
 msgid "E510: Can't make backup file (add ! to override)"
 msgstr ""
-"E510: Ei voi tehdä varmuuskopiotiedostoa (lisää komentoon ! ohittaaksesi)"
-
-# tietääkseni resurssiforkki on applen tiedostojärjestelmän tunnistejuttujuttu
+"E510: Ei voi tehdä varmuuskopiotiedostoa (lisää komentoon ! ohittaaksesi)"
+
+# tietääkseni resurssiforkki on applen tiedostojärjestelmän tunnistejuttujuttu
 msgid "E460: The resource fork would be lost (add ! to override)"
-msgstr "E460: resurssiosa häviäisi (lisää komentoon ! ohittaaksesi)"
+msgstr "E460: resurssiosa häviäisi (lisää komentoon ! ohittaaksesi)"
 
 msgid "E214: Can't find temp file for writing"
-msgstr "E214: Ei voi löytää väliaikaistiedostoa kirjoitettavaksi"
+msgstr "E214: Ei voi löytää väliaikaistiedostoa kirjoitettavaksi"
 
 msgid "E213: Cannot convert (add ! to write without conversion)"
 msgstr ""
-"E213: Muunnos ei onnistu (lisää komentoon ! kirjoittaaksesi muuntamatta)"
+"E213: Muunnos ei onnistu (lisää komentoon ! kirjoittaaksesi muuntamatta)"
 
 msgid "E166: Can't open linked file for writing"
 msgstr "E166: Linkitetyn tiedoston avaus kirjoittamista varten ei onnistu"
@@ -1721,24 +1759,25 @@ msgid "E512: Close failed"
 msgstr "E512: Sulkeminen ei onnistunut"
 
 msgid "E513: write error, conversion failed (make 'fenc' empty to override)"
-msgstr "E513: kirjoitusvirhe, muunnos epäonnistui (tyhjää fenc ohittaaksesi)"
+msgstr "E513: kirjoitusvirhe, muunnos epäonnistui (tyhjää fenc ohittaaksesi)"
 
 #, c-format
 msgid ""
 "E513: write error, conversion failed in line %ld (make 'fenc' empty to "
 "override)"
-msgstr "E513: kirjoitusvirhe, muunnos epäonnistui rivillä %ld"
-"(tyhjää fenc ohittaaksesi)"
+msgstr ""
+"E513: kirjoitusvirhe, muunnos epäonnistui rivillä %ld(tyhjää fenc "
+"ohittaaksesi)"
 
 msgid "E514: write error (file system full?)"
-msgstr "E514: kirjoitusvirhe (tiedostojärjestelmä täysi)"
+msgstr "E514: kirjoitusvirhe (tiedostojärjestelmä täysi)"
 
 msgid " CONVERSION ERROR"
 msgstr " MUUNNOSVIRHE"
 
 #, c-format
 msgid " in line %ld;"
-msgstr " rivillä %ld"
+msgstr " rivillä %ld"
 
 msgid "[Device]"
 msgstr "[Laite]"
@@ -1750,7 +1789,7 @@ msgid " [a]"
 msgstr " [a]"
 
 msgid " appended"
-msgstr " lisätty"
+msgstr " lisätty"
 
 msgid " [w]"
 msgstr " [w]"
@@ -1759,10 +1798,10 @@ msgid " written"
 msgstr " kirjoitettu"
 
 msgid "E205: Patchmode: can't save original file"
-msgstr "E205: Patch-tilassa ei voi tallentaa alkuperäistiedostoa"
+msgstr "E205: Patch-tilassa ei voi tallentaa alkuperäistiedostoa"
 
 msgid "E206: patchmode: can't touch empty original file"
-msgstr "E206: patch-tilassa ei voi muuttaa tyhjää alkuperäistiedostoa"
+msgstr "E206: patch-tilassa ei voi muuttaa tyhjää alkuperäistiedostoa"
 
 msgid "E207: Can't delete backup file"
 msgstr "E207: Ei voi poistaa varmuuskopiota"
@@ -1772,10 +1811,10 @@ msgid ""
 "WARNING: Original file may be lost or damaged\n"
 msgstr ""
 "\n"
-"VAROITUS: Alkuperäistiedosto voi hävitä tai vahingoittua\n"
+"VAROITUS: Alkuperäistiedosto voi hävitä tai vahingoittua\n"
 
 msgid "don't quit the editor until the file is successfully written!"
-msgstr "älä lopeta editoria kesken tallentamisen."
+msgstr "älä lopeta editoria kesken tallentamisen."
 
 msgid "[dos]"
 msgstr "[dos]"
@@ -1800,19 +1839,14 @@ msgstr "1 rivi, "
 
 #, c-format
 msgid "%ld lines, "
-msgstr "%ld riviä, "
+msgstr "%ld riviä, "
 
 msgid "1 character"
 msgstr "1 merkki"
 
 #, c-format
 msgid "%lld characters"
-msgstr "%lld merkkiä"
-
-#. Explicit typecast avoids warning on Mac OS X 10.6
-#, c-format
-msgid "%ld characters"
-msgstr "%ld merkkiä"
+msgstr "%lld merkkiä"
 
 # ei rivinvaihtoja
 msgid "[noeol]"
@@ -1821,12 +1855,12 @@ msgstr "[eiriviv.]"
 msgid "[Incomplete last line]"
 msgstr "[Vajaa viimeinen rivi]"
 
-# Jos aukiolevaa tiedostoa sörkkii toisella ohjelmalla
+# Jos aukiolevaa tiedostoa sörkkii toisella ohjelmalla
 #. don't overwrite messages here
 #. must give this prompt
 #. don't use emsg() here, don't want to flush the buffers
 msgid "WARNING: The file has been changed since reading it!!!"
-msgstr "VAROITUS: tiedosto on muuttunut viime lukukerran jälkeen!"
+msgstr "VAROITUS: tiedosto on muuttunut viime lukukerran jälkeen!"
 
 msgid "Do you really want to write to it"
 msgstr "Kirjoitetaanko"
@@ -1848,7 +1882,7 @@ msgstr "E246: FileChangedShell-autocomma
 
 #, c-format
 msgid "E211: File \"%s\" no longer available"
-msgstr "E211: Tiedostoa %s ei ole enää"
+msgstr "E211: Tiedostoa %s ei ole enää"
 
 #, c-format
 msgid ""
@@ -1859,32 +1893,32 @@ msgstr ""
 "tiedostoon"
 
 msgid "See \":help W12\" for more info."
-msgstr ":help W12 kertoo lisätietoja."
+msgstr ":help W12 kertoo lisätietoja."
 
 #, c-format
 msgid "W11: Warning: File \"%s\" has changed since editing started"
-msgstr "W11: Varoitus: Tiedostoa %s on muutettu muokkauksen aloituksen jälkeen"
+msgstr "W11: Varoitus: Tiedostoa %s on muutettu muokkauksen aloituksen jälkeen"
 
 msgid "See \":help W11\" for more info."
-msgstr ":help W11 kertoo lisätietoja."
+msgstr ":help W11 kertoo lisätietoja."
 
 #, c-format
 msgid "W16: Warning: Mode of file \"%s\" has changed since editing started"
 msgstr ""
 "W16: Varoitus: Tiedoston %s oikeuksia on muutettu muokkauksen aloituksen "
-"jälkeen"
+"jälkeen"
 
 msgid "See \":help W16\" for more info."
-msgstr ":help W16 kertoo lisätietoja."
+msgstr ":help W16 kertoo lisätietoja."
 
 #, c-format
 msgid "W13: Warning: File \"%s\" has been created after editing started"
-msgstr "W13: Varoitus: Tiedosto %s on luotu muokkauksen aloituksen jälkeen"
+msgstr "W13: Varoitus: Tiedosto %s on luotu muokkauksen aloituksen jälkeen"
 
 msgid "Warning"
 msgstr "Varoitus"
 
-# yllä olevien varoitusten ratkaisut
+# yllä olevien varoitusten ratkaisut
 msgid ""
 "&OK\n"
 "&Load File"
@@ -1900,9 +1934,6 @@ msgstr "E462: Ei voitu valmistella uudel
 msgid "E321: Could not reload \"%s\""
 msgstr "E321: Ei voitu uudelleenavata %s"
 
-msgid "--Deleted--"
-msgstr "--Poistettu--"
-
 #, c-format
 msgid "auto-removing autocommand: %s <buffer=%d>"
 msgstr "poistetaan autocommand automaattisesti: %s <puskuri=%d>"
@@ -1910,19 +1941,25 @@ msgstr "poistetaan autocommand automaatt
 #. the group doesn't exist
 #, c-format
 msgid "E367: No such group: \"%s\""
-msgstr "E367: Ryhmää ei ole: %s"
+msgstr "E367: Ryhmää ei ole: %s"
+
+msgid "W19: Deleting augroup that is still in use"
+msgstr "W19: käytössä oleva augroup poistetaan"
+
+msgid "--Deleted--"
+msgstr "--Poistettu--"
 
 #, c-format
 msgid "E215: Illegal character after *: %s"
-msgstr "E215: Virheellinen merkki *:n jälkeen: %s"
+msgstr "E215: Virheellinen merkki *:n jälkeen: %s"
 
 #, c-format
 msgid "E216: No such event: %s"
-msgstr "E216: Eventtiä ei ole: %s"
+msgstr "E216: Eventtiä ei ole: %s"
 
 #, c-format
 msgid "E216: No such group or event: %s"
-msgstr "E216: Ryhmää tai eventtiä ei ole: %s"
+msgstr "E216: Ryhmää tai eventtiä ei ole: %s"
 
 #. Highlight title
 msgid ""
@@ -1940,7 +1977,7 @@ msgid "E217: Can't execute autocommands 
 msgstr "E217: Ei voi suorittaa autocommandsia kaikille eventeille"
 
 msgid "No matching autocommands"
-msgstr "Ei täsmääviä autocommandsia"
+msgstr "Ei täsmääviä autocommandsia"
 
 msgid "E218: autocommand nesting too deep"
 msgstr "E218: liian monta tasoa autocommandissa"
@@ -1967,28 +2004,30 @@ msgid "E490: No fold found"
 msgstr "E490: taitos puuttuu"
 
 msgid "E350: Cannot create fold with current 'foldmethod'"
-msgstr "E350: Taitoksia ei voi tehdä tällä foldmethodilla"
+msgstr "E350: Taitoksia ei voi tehdä tällä foldmethodilla"
 
 msgid "E351: Cannot delete fold with current 'foldmethod'"
-msgstr "E351: Taitosta ei voi poistaa tällä foldmethodilla"
-
-#, c-format
-msgid "+--%3ld lines folded "
-msgstr "+--%3ld riviä taitettu pois "
+msgstr "E351: Taitosta ei voi poistaa tällä foldmethodilla"
+
+#, c-format
+msgid "+--%3ld line folded "
+msgid_plural "+--%3ld lines folded "
+msgstr[0] "+--%3ld rivi taitettu pois "
+msgstr[1] "+--%3ld riviä taitettu pois "
 
 msgid "E222: Add to read buffer"
-msgstr "E222: Lisää lukupuskuriin"
+msgstr "E222: Lisää lukupuskuriin"
 
 msgid "E223: recursive mapping"
 msgstr "E223: rekursiivinen kuvaus"
 
 #, c-format
 msgid "E224: global abbreviation already exists for %s"
-msgstr "E224: globaali lyhenne merkinnälle %s on jo olemassa"
+msgstr "E224: globaali lyhenne merkinnälle %s on jo olemassa"
 
 #, c-format
 msgid "E225: global mapping already exists for %s"
-msgstr "E225: globaali kuvaus merkinnälle %s on jo olemassa"
+msgstr "E225: globaali kuvaus merkinnälle %s on jo olemassa"
 
 #, c-format
 msgid "E226: abbreviation already exists for %s"
@@ -1999,14 +2038,43 @@ msgid "E227: mapping already exists for 
 msgstr "E227: kuvaus on jo olemassa %s"
 
 msgid "No abbreviation found"
-msgstr "Lyhennettä ei löydy"
+msgstr "Lyhennettä ei löydy"
 
 msgid "No mapping found"
-msgstr "Kuvausta ei löydy"
+msgstr "Kuvausta ei löydy"
 
 msgid "E228: makemap: Illegal mode"
 msgstr "E228: makemap: Virheellinen tila"
 
+msgid "E851: Failed to create a new process for the GUI"
+msgstr "E851: Ei voitu luoda uutta prosessia käyttöliittymälle"
+
+msgid "E852: The child process failed to start the GUI"
+msgstr "E852: Lapsiprosesi ei voinut käynnistää käyttöliittymää"
+
+msgid "E229: Cannot start the GUI"
+msgstr "E229: GUIn käynnistys ei onnistu"
+
+#, c-format
+msgid "E230: Cannot read from \"%s\""
+msgstr "E230: Ei voi lukea kohteesta %s"
+
+msgid "E665: Cannot start GUI, no valid font found"
+msgstr "E665: Ei voi avata GUIta, sopivaa fonttia ei löydy"
+
+msgid "E231: 'guifontwide' invalid"
+msgstr "E231: guifontwide virheellinen"
+
+msgid "E599: Value of 'imactivatekey' is invalid"
+msgstr "E599: imactivatekeyn arvo on virheellinen"
+
+#, c-format
+msgid "E254: Cannot allocate color %s"
+msgstr "E254: Väriä %s ei voi määritellä"
+
+msgid "No match at cursor, finding next"
+msgstr "Ei täsmäystä kursorin alla, etsitään seuraava"
+
 msgid "<cannot open> "
 msgstr "<ei voi avata> "
 
@@ -2021,7 +2089,7 @@ msgid "Pathname:"
 msgstr "Polku:"
 
 msgid "E615: vim_SelFile: can't get current directory"
-msgstr "E615: vim_SelFile: nykyistä hakemistoa ei saada selville"
+msgstr "E615: vim_SelFile: nykyistä hakemistoa ei saada selville"
 
 msgid "OK"
 msgstr "OK"
@@ -2029,49 +2097,44 @@ msgstr "OK"
 msgid "Cancel"
 msgstr "Peru"
 
+msgid "Scrollbar Widget: Could not get geometry of thumb pixmap."
+msgstr "Vierityspalkki: Pixmapin geometria ei selviä"
+
 msgid "Vim dialog"
 msgstr "Vim-ikkuna"
 
-msgid "Scrollbar Widget: Could not get geometry of thumb pixmap."
-msgstr "Vierityspalkki: Pixmapin geometria ei selviä"
-
 msgid "E232: Cannot create BalloonEval with both message and callback"
 msgstr "E232: Ei voi luoda BalloonEvalia viestille ja callbackille"
 
-msgid "E229: Cannot start the GUI"
-msgstr "E229: GUIn käynnistys ei onnistu"
-
-#, c-format
-msgid "E230: Cannot read from \"%s\""
-msgstr "E230: Ei voi lukea kohteesta %s"
-
-msgid "E665: Cannot start GUI, no valid font found"
-msgstr "E665: Ei voi avata GUIta, sopivaa fonttia ei löydy"
-
-msgid "E231: 'guifontwide' invalid"
-msgstr "E231: guifontwide virheellinen"
-
-msgid "E599: Value of 'imactivatekey' is invalid"
-msgstr "E599: imactivatekeyn arvo on virheellinen"
-
-#, c-format
-msgid "E254: Cannot allocate color %s"
-msgstr "E254: Väriä %s ei voi määritellä"
-
-msgid "No match at cursor, finding next"
-msgstr "Ei täsmäystä kursorin alla, etsitään seuraava"
+msgid "_Cancel"
+msgstr "_Peru"
+
+msgid "_Save"
+msgstr "_Tallenna"
+
+msgid "_Open"
+msgstr "_Avaa"
+
+msgid "_OK"
+msgstr "_OK"
 
 msgid ""
 "&Yes\n"
 "&No\n"
 "&Cancel"
 msgstr ""
-"&Kyllä\n"
+"&Kyllä\n"
 "&Ei\n"
 "&Peru"
 
+msgid "Yes"
+msgstr "Kyllä"
+
+msgid "No"
+msgstr "Ei"
+
 msgid "Input _Methods"
-msgstr "Syöte_menetelmät"
+msgstr "Syöte_menetelmät"
 
 msgid "VIM - Search and Replace..."
 msgstr "VIM - Etsi ja korvaa..."
@@ -2098,37 +2161,37 @@ msgstr "Suunta"
 
 #. 'Up' and 'Down' buttons
 msgid "Up"
-msgstr "Ylös"
+msgstr "Ylös"
 
 msgid "Down"
 msgstr "Alas"
 
-#. 'Find Next' button
 msgid "Find Next"
 msgstr "Etsi seuraava"
 
-#. 'Replace' button
 msgid "Replace"
 msgstr "Korvaa"
 
-#. 'Replace All' button
 msgid "Replace All"
 msgstr "Korvaa kaikki"
 
+msgid "_Close"
+msgstr "_Sulje"
+
 msgid "Vim: Received \"die\" request from session manager\n"
-msgstr "Vim: sessiomanageri lähetti die-pyynnön\n"
-
-msgid "Close"
-msgstr "Sulje"
+msgstr "Vim: sessiomanageri lähetti die-pyynnön\n"
+
+msgid "Close tab"
+msgstr "Sulje välilehti"
 
 msgid "New tab"
-msgstr "Uusi välilehti"
+msgstr "Uusi välilehti"
 
 msgid "Open Tab..."
-msgstr "Avaa välilehti..."
+msgstr "Avaa välilehti..."
 
 msgid "Vim: Main window unexpectedly destroyed\n"
-msgstr "Vim: Pääikkuna tuhoutui odottamatta\n"
+msgstr "Vim: Pääikkuna tuhoutui odottamatta\n"
 
 msgid "&Filter"
 msgstr "&Suodata"
@@ -2166,45 +2229,42 @@ msgstr "Korvaa k&aikki"
 msgid "&Undo"
 msgstr "&Kumoa"
 
+msgid "Open tab..."
+msgstr "Avaa välilehti..."
+
+msgid "Find string (use '\\\\' to find  a '\\')"
+msgstr "Etsi merkkijonoa (\\\\:llä löytää \\:t)"
+
+msgid "Find & Replace (use '\\\\' to find  a '\\')"
+msgstr "Etsi ja korvaa (\\\\:llä löytää \\:t)"
+
+#. We fake this: Use a filter that doesn't select anything and a default
+#. * file name that won't be used.
+msgid "Not Used"
+msgstr "Ei käytössä"
+
+msgid "Directory\t*.nothing\n"
+msgstr "Hakemisto\t*.nothing\n"
+
 #, c-format
 msgid "E671: Cannot find window title \"%s\""
-msgstr "E671: Ikkunan otsikkoa ei löydy %s"
-
-# OLE on object linking and embedding på windowska
+msgstr "E671: Ikkunan otsikkoa ei löydy %s"
+
+# OLE on object linking and embedding på windowska
 #, c-format
 msgid "E243: Argument not supported: \"-%s\"; Use the OLE version."
-msgstr "E243: Argumenttia ei tueta: -%s, käytä OLE-versiota"
+msgstr "E243: Argumenttia ei tueta: -%s, käytä OLE-versiota"
 
 # MDI eli windowsin moni-ikkunasovellus
 msgid "E672: Unable to open window inside MDI application"
 msgstr "E672: Ikkunaa ei voitu avata MDI-sovellukseen"
 
-msgid "Close tab"
-msgstr "Sulje välilehti"
-
-msgid "Open tab..."
-msgstr "Avaa välilehti..."
-
-msgid "Find string (use '\\\\' to find  a '\\')"
-msgstr "Etsi merkkijonoa (\\\\:llä löytää \\:t)"
-
-msgid "Find & Replace (use '\\\\' to find  a '\\')"
-msgstr "Etsi ja korvaa (\\\\:llä löytää \\:t)"
-
-#. We fake this: Use a filter that doesn't select anything and a default
-#. * file name that won't be used.
-msgid "Not Used"
-msgstr "Ei käytössä"
-
-msgid "Directory\t*.nothing\n"
-msgstr "Hakemisto\t*.nothing\n"
-
 msgid "Vim E458: Cannot allocate colormap entry, some colors may be incorrect"
-msgstr "Vim E458: Ei voi varata värikartan alkiota, värit voivat mennä väärin"
+msgstr "Vim E458: Ei voi varata värikartan alkiota, värit voivat mennä väärin"
 
 #, c-format
 msgid "E250: Fonts for the following charsets are missing in fontset %s:"
-msgstr "E250: Seuraavien merkistöjoukkojen fontit puuttuvat fontsetistä %s:"
+msgstr "E250: Seuraavien merkistöjoukkojen fontit puuttuvat fontsetistä %s:"
 
 #, c-format
 msgid "E252: Fontset name: %s"
@@ -2212,44 +2272,42 @@ msgstr "E252: Fontsetin nimi: %s"
 
 #, c-format
 msgid "Font '%s' is not fixed-width"
-msgstr "Fontti %s ei ole tasavälinen"
-
-#, c-format
-msgid "E253: Fontset name: %s\n"
-msgstr "E253: Fontsetin nimi: %s\n"
-
-#, c-format
-msgid "Font0: %s\n"
-msgstr "Fontti0: %s\n"
-
-#, c-format
-msgid "Font1: %s\n"
-msgstr "Fontti1: %s\n"
-
-#, c-format
-msgid "Font%ld width is not twice that of font0\n"
-msgstr "Fontti%ld:n leveys ei ole kaksi kertaa fontti0:n\n"
-
-#, c-format
-msgid "Font0 width: %ld\n"
-msgstr "Fontti0:n leveys: %ld\n"
-
-#, c-format
-msgid ""
-"Font1 width: %ld\n"
-"\n"
-msgstr ""
-"Fontti1:n leveys: %ld\n"
-"\n"
+msgstr "Fontti %s ei ole tasavälinen"
+
+#, c-format
+msgid "E253: Fontset name: %s"
+msgstr "E253: Fontsetin nimi: %s"
+
+#, c-format
+msgid "Font0: %s"
+msgstr "Fontti0: %s"
+
+#, c-format
+msgid "Font1: %s"
+msgstr "Fontti1: %s"
+
+#, c-format
+msgid "Font%ld width is not twice that of font0"
+msgstr "Fontti%ld:n leveys ei ole kaksi kertaa fontti0:n"
+
+#, c-format
+msgid "Font0 width: %ld"
+msgstr "Fontti0:n leveys: %ld"
+
+#, c-format
+msgid "Font1 width: %ld"
+msgstr ""
+"Fontti1:n leveys: %ld"
+
 
 msgid "Invalid font specification"
-msgstr "Virheellinen fonttimääritys"
+msgstr "Virheellinen fonttimääritys"
 
 msgid "&Dismiss"
 msgstr "&Ohita"
 
 msgid "no specific match"
-msgstr "ei tarkkaa täsmäystä"
+msgstr "ei tarkkaa täsmäystä"
 
 msgid "Vim - Font Selector"
 msgstr "Vim - fonttivalitsin"
@@ -2259,7 +2317,7 @@ msgstr "Nimi:"
 
 #. create toggle button
 msgid "Show size in Points"
-msgstr "Näytä koko pisteinä"
+msgstr "Näytä koko pisteinä"
 
 msgid "Encoding:"
 msgstr "Koodaus:"
@@ -2283,14 +2341,14 @@ msgid "E551: Illegal component"
 msgstr "E551: Virheellinen komponentti"
 
 msgid "E552: digit expected"
-msgstr "E552: pitäisi olla numero"
+msgstr "E552: pitäisi olla numero"
 
 #, c-format
 msgid "Page %d"
 msgstr "Sivu %d"
 
 msgid "No text to be printed"
-msgstr "Ei tekstiä tulostettavaksi"
+msgstr "Ei tekstiä tulostettavaksi"
 
 #, c-format
 msgid "Printing page %d (%d%%)"
@@ -2308,7 +2366,7 @@ msgid "Printing aborted"
 msgstr "Tulostus peruttu"
 
 msgid "E455: Error writing to PostScript output file"
-msgstr "E455: Virhe kirjoitettaessa PostScriptiä tiedostoon"
+msgstr "E455: Virhe kirjoitettaessa PostScriptiä tiedostoon"
 
 #, c-format
 msgid "E624: Can't open file \"%s\""
@@ -2328,13 +2386,13 @@ msgstr "E619: tiedosto %s ei ole tuettu 
 
 #, c-format
 msgid "E621: \"%s\" resource file has wrong version"
-msgstr "E621: resurssitiedoston %s versio on väärä"
+msgstr "E621: resurssitiedoston %s versio on väärä"
 
 msgid "E673: Incompatible multi-byte encoding and character set."
-msgstr "E673: Tukematon monitvauinen merkistökoodaus ja merkistö."
+msgstr "E673: Tukematon monitvauinen merkistökoodaus ja merkistö."
 
 msgid "E674: printmbcharset cannot be empty with multi-byte encoding."
-msgstr "E674: printmbcharset ei voi olla tyhjä monitavuiselle koodaukselle."
+msgstr "E674: printmbcharset ei voi olla tyhjä monitavuiselle koodaukselle."
 
 msgid "E675: No default font specified for multi-byte printing."
 msgstr "E675: Ei oletusfonttia monitavuiseen tulostukseen"
@@ -2347,36 +2405,36 @@ msgid "E456: Can't open file \"%s\""
 msgstr "E456: Tiedoston %s avaus ei onnistu"
 
 msgid "E456: Can't find PostScript resource file \"prolog.ps\""
-msgstr "E456: PostScript-resurssitiedostoa prolog.ps ei löydy"
+msgstr "E456: PostScript-resurssitiedostoa prolog.ps ei löydy"
 
 msgid "E456: Can't find PostScript resource file \"cidfont.ps\""
-msgstr "E456: PostScript-resurssitiedostoa cidfont.ps ei löydy"
+msgstr "E456: PostScript-resurssitiedostoa cidfont.ps ei löydy"
 
 #, c-format
 msgid "E456: Can't find PostScript resource file \"%s.ps\""
-msgstr "E456: Postscript-resurssitiedosta %s.ps ei löydy"
+msgstr "E456: Postscript-resurssitiedosta %s.ps ei löydy"
 
 #, c-format
 msgid "E620: Unable to convert to print encoding \"%s\""
 msgstr "E620: Tulostuskoodaukseen %s muunto ei onnistu"
 
 msgid "Sending to printer..."
-msgstr "Lähetetään tulostimelle..."
+msgstr "Lähetetään tulostimelle..."
 
 msgid "E365: Failed to print PostScript file"
-msgstr "E365: PostScript-tiedoston tulostus epäonnistui"
+msgstr "E365: PostScript-tiedoston tulostus epäonnistui"
 
 msgid "Print job sent."
-msgstr "Tulostustyö lähetetty."
+msgstr "Tulostustyö lähetetty."
 
 msgid "Add a new database"
-msgstr "Lisää uusi tietokanta"
+msgstr "Lisää uusi tietokanta"
 
 msgid "Query for a pattern"
 msgstr "Hae kuviota"
 
 msgid "Show this message"
-msgstr "Näytä tämä viesti"
+msgstr "Näytä tämä viesti"
 
 msgid "Kill a connection"
 msgstr "Tapa yhteys"
@@ -2385,20 +2443,20 @@ msgid "Reinit all connections"
 msgstr "Alusta uudelleen yhteydet"
 
 msgid "Show connections"
-msgstr "Näytä yhteydet"
+msgstr "Näytä yhteydet"
 
 #, c-format
 msgid "E560: Usage: cs[cope] %s"
-msgstr "E560: Käyttö: cs[cope] %s"
+msgstr "E560: Käyttö: cs[cope] %s"
 
 msgid "This cscope command does not support splitting the window.\n"
-msgstr "Tämä cscope-komento ei tue ikkunan jakamista.\n"
+msgstr "Tämä cscope-komento ei tue ikkunan jakamista.\n"
 
 msgid "E562: Usage: cstag <ident>"
-msgstr "E562: Käyttö: cstag <ident>"
+msgstr "E562: Käyttö: cstag <ident>"
 
 msgid "E257: cstag: tag not found"
-msgstr "E257: cstag: tägia ei löydy"
+msgstr "E257: cstag: tägia ei löydy"
 
 #, c-format
 msgid "E563: stat(%s) error: %d"
@@ -2409,15 +2467,15 @@ msgstr "E563: stat-virhe"
 
 #, c-format
 msgid "E564: %s is not a directory or a valid cscope database"
-msgstr "E564: %s ei ole hakemisto eikä cscope-tietokanta"
+msgstr "E564: %s ei ole hakemisto eikä cscope-tietokanta"
 
 #, c-format
 msgid "Added cscope database %s"
-msgstr "Lisätty cscope-tietokanta %s"
+msgstr "Lisätty cscope-tietokanta %s"
 
 #, c-format
 msgid "E262: error reading cscope connection %ld"
-msgstr "E262: Virhe luettaessa cscope-yhteyttä %ld"
+msgstr "E262: Virhe luettaessa cscope-yhteyttä %ld"
 
 msgid "E561: unknown cscope search type"
 msgstr "E561: tuntematon cscope-hakutyyppi"
@@ -2428,20 +2486,23 @@ msgstr "E566: Ei voitu luoda cscope-putk
 msgid "E622: Could not fork for cscope"
 msgstr "E622: Ei voitu haarauttaa cscopea"
 
+msgid "cs_create_connection setpgid failed"
+msgstr "cs_create_connection setpgid epäonnistui"
+
 msgid "cs_create_connection exec failed"
-msgstr "cs_create_connection epäonnistui"
+msgstr "cs_create_connection epäonnistui"
 
 msgid "cs_create_connection: fdopen for to_fp failed"
-msgstr "cs_create_connection: fdopen to_fp epäonnistui"
+msgstr "cs_create_connection: fdopen to_fp epäonnistui"
 
 msgid "cs_create_connection: fdopen for fr_fp failed"
-msgstr "cs_create_connection: fdopen fr_fp epäonnistui"
+msgstr "cs_create_connection: fdopen fr_fp epäonnistui"
 
 msgid "E623: Could not spawn cscope process"
-msgstr "E623: Cscope-prosessin luonti epäonnistui"
+msgstr "E623: Cscope-prosessin luonti epäonnistui"
 
 msgid "E567: no cscope connections"
-msgstr "E567: ei cscope-yhteyksiä"
+msgstr "E567: ei cscope-yhteyksiä"
 
 #, c-format
 msgid "E469: invalid cscopequickfix flag %c for %c"
@@ -2449,17 +2510,18 @@ msgstr "E469: virheellinen cscopequickfi
 
 #, c-format
 msgid "E259: no matches found for cscope query %s of %s"
-msgstr "E259: ei täsmäyksiä cscope-hakuun %s/%s"
+msgstr "E259: ei täsmäyksiä cscope-hakuun %s/%s"
 
 msgid "cscope commands:\n"
 msgstr "cscope-komennot:\n"
 
 #, c-format
 msgid "%-5s: %s%*s (Usage: %s)"
-msgstr "%-5s: %s%*s (Käyttö: %s)"
+msgstr "%-5s: %s%*s (Käyttö: %s)"
 
 msgid ""
 "\n"
+"       a: Find assignments to this symbol\n"
 "       c: Find functions calling this function\n"
 "       d: Find functions called by this function\n"
 "       e: Find this egrep pattern\n"
@@ -2467,16 +2529,17 @@ msgid ""
 "       g: Find this definition\n"
 "       i: Find files #including this file\n"
 "       s: Find this C symbol\n"
-"       t: Find assignments to\n"
-msgstr ""
-"\n"
-"       c: Etsi tätä funktiota kutsuvat funktiot\n"
-"       d: Etsi tämän funktion kutsumat funktiot\n"
-"       e: Etsi tämä egrep-lauseke\n"
-"       f: Find tämä tiedosto\n"
-"       g: Etsi tämä määritys\n"
-"       i: Etsi tiedostoja jotka #inkluudaavat tämän\n"
-"       s: Etsi tämä C-symboli\n"
+"       t: Find this text string\n"
+msgstr ""
+"\n"
+"       a: Etsi sijotukset tähän symboliin\n"
+"       c: Etsi tätä funktiota kutsuvat funktiot\n"
+"       d: Etsi tämän funktion kutsumat funktiot\n"
+"       e: Etsi tämä egrep-lauseke\n"
+"       f: Etsi tämä tiedosto\n"
+"       g: Etsi tämä määritys\n"
+"       i: Etsi tiedostoja jotka #inkluudaavat tämän\n"
+"       s: Etsi tämä C-symboli\n"
 "       t: Etsi sijoitukset muuttujaan \n"
 
 #, c-format
@@ -2487,7 +2550,7 @@ msgid "E626: cannot get cscope database 
 msgstr "E626: ei voi hakea cscope-tietokannan tietoja"
 
 msgid "E568: duplicate cscope database not added"
-msgstr "E568: kaksoiskappaletta cscope-tietokannasta ei lisätty"
+msgstr "E568: kaksoiskappaletta cscope-tietokannasta ei lisätty"
 
 #, c-format
 msgid "E261: cscope connection %s not found"
@@ -2503,7 +2566,7 @@ msgstr "E570: kriittinen virhe cs_manage
 
 #, c-format
 msgid "Cscope tag: %s"
-msgstr "Cscope-tägi: %s"
+msgstr "Cscope-tägi: %s"
 
 msgid ""
 "\n"
@@ -2523,10 +2586,10 @@ msgid "All cscope databases reset"
 msgstr "Kaikki cscope-tietokannat nollattu"
 
 msgid "no cscope connections\n"
-msgstr "ei cscope-yhteyksiä\n"
+msgstr "ei cscope-yhteyksiä\n"
 
 msgid " # pid    database name                       prepend path\n"
-msgstr " # pid    tietokanta                          lisäyspolku\n"
+msgstr " # pid    tietokanta                          lisäyspolku\n"
 
 msgid "Lua library cannot be loaded."
 msgstr "Luan kirjastoa ei voitu ladata."
@@ -2537,13 +2600,18 @@ msgstr "ei voitu tallentaa kumoustietoja
 msgid ""
 "E815: Sorry, this command is disabled, the MzScheme libraries could not be "
 "loaded."
-msgstr "E815: Sori, komento ei toimi, MzScheme-kirjastoa ei voitu ladata."
+msgstr "E815: komento ei toimi, MzScheme-kirjastoa ei voitu ladata."
+
+msgid ""
+"E895: Sorry, this command is disabled, the MzScheme's racket/base module "
+"could not be loaded."
+msgstr "E895: Komento ei toimi, MzScheme-moduulia racket/base ei voitu ladata."
 
 msgid "invalid expression"
 msgstr "virheellinen ilmaus"
 
 msgid "expressions disabled at compile time"
-msgstr "ilmaukset poistettu käytöstä käännösaikana"
+msgstr "ilmaukset poistettu käytöstä käännösaikana"
 
 msgid "hidden option"
 msgstr "piilotettu asetus"
@@ -2558,16 +2626,19 @@ msgid "couldn't open buffer"
 msgstr "ei voitu avata puskuria"
 
 msgid "cannot delete line"
-msgstr "ei voitu poistaa riviä"
+msgstr "ei voitu poistaa riviä"
 
 msgid "cannot replace line"
-msgstr "ei voitu korvata riviä"
+msgstr "ei voitu korvata riviä"
 
 msgid "cannot insert line"
-msgstr "ei voitu lisätä riviä"
+msgstr "ei voitu lisätä riviä"
 
 msgid "string cannot contain newlines"
-msgstr "merkkijono ei saa sisältää rivinvaihtoja"
+msgstr "merkkijono ei saa sisältää rivinvaihtoja"
+
+msgid "error converting Scheme values to Vim"
+msgstr "virhe Schemestä Vimiin konversiossa"
 
 msgid "Vim error: ~a"
 msgstr "Vim-virhe: ~a"
@@ -2588,39 +2659,32 @@ msgid "not allowed in the Vim sandbox"
 msgstr "ei sallittu Vimin hiekkalaatikossa"
 
 msgid "E836: This Vim cannot execute :python after using :py3"
-msgstr "E836: Python: Ei voi käyttää komentoja :py ja :py3 samassa istunnossa"
-
-msgid "E837: This Vim cannot execute :py3 after using :python"
-msgstr "E837: Python: Ei voi käyttää komentoja :py ja :py3 samassa istunnossa"
+msgstr "E836: Python: Ei voi käyttää komentoja :py ja :py3 samassa istunnossa"
 
 msgid ""
 "E263: Sorry, this command is disabled, the Python library could not be "
 "loaded."
 msgstr ""
-"E263: Sori, komento ei toimi, Python-kirjaston lataaminen ei onnistunut."
-
-msgid "can't delete OutputObject attributes"
-msgstr "ei voi poistaa OutputObject-attribuutteja"
-
-msgid "softspace must be an integer"
-msgstr "softspacen pitää olla kokonaisluku"
-
-msgid "invalid attribute"
-msgstr "virheellinen attribuutti"
-
-#, c-format
-msgid "<buffer object (deleted) at %p>"
-msgstr "<puskuriolio (poistettu) kohdassa %p>"
+"E263: komento ei toimi, Python-kirjaston lataaminen ei onnistunut."
+
+msgid ""
+"E887: Sorry, this command is disabled, the Python's site module could not be "
+"loaded."
+msgstr ""
+"E887: Komento ei toimi, Pythonin site-moduulien lataaminen ei onnistunut."
 
 msgid "E659: Cannot invoke Python recursively"
 msgstr "E659: Pythonia ei voi kutsua rekursiivisesti"
 
+msgid "E837: This Vim cannot execute :py3 after using :python"
+msgstr "E837: Python: Ei voi käyttää komentoja :py ja :py3 samassa istunnossa"
+
 msgid "E265: $_ must be an instance of String"
-msgstr "E265: muuttujan $_ pitää olla Stringin instanssi"
+msgstr "E265: muuttujan $_ pitää olla Stringin instanssi"
 
 msgid ""
 "E266: Sorry, this command is disabled, the Ruby library could not be loaded."
-msgstr "E266: Sori, komento ei toimi, Ruby-kirjastoa ei voitu ladata."
+msgstr "E266: komento ei toimi, Ruby-kirjastoa ei voitu ladata."
 
 msgid "E267: unexpected return"
 msgstr "E267: odotuksenvastainen return"
@@ -2638,101 +2702,12 @@ msgid "E271: retry outside of rescue cla
 msgstr "E271: retry rescuen ulkopuolella"
 
 msgid "E272: unhandled exception"
-msgstr "E272: käsittelemätön poikkeus"
+msgstr "E272: käsittelemätön poikkeus"
 
 #, c-format
 msgid "E273: unknown longjmp status %d"
 msgstr "E273: tuntematon longjmp-tila %d"
 
-msgid "Toggle implementation/definition"
-msgstr "Vaihda toteutuksen ja määritelmän välillä"
-
-msgid "Show base class of"
-msgstr "Näytä kantaluokka kohteelle"
-
-msgid "Show overridden member function"
-msgstr "Näytä korvattu jäsenfunktio"
-
-msgid "Retrieve from file"
-msgstr "Jäljitä tiedostosta"
-
-msgid "Retrieve from project"
-msgstr "Jäljitä projektista"
-
-msgid "Retrieve from all projects"
-msgstr "Jäljitä kaikista projekteista"
-
-msgid "Retrieve"
-msgstr "Jäljitä"
-
-msgid "Show source of"
-msgstr "Näytä lähdekoodi kohteelle"
-
-msgid "Find symbol"
-msgstr "Etsi symboli"
-
-msgid "Browse class"
-msgstr "Selaa luokkaa"
-
-msgid "Show class in hierarchy"
-msgstr "Näytä luokka hierarkiassa"
-
-msgid "Show class in restricted hierarchy"
-msgstr "Näytä luokka rajoitetussa hierarkiassa"
-
-msgid "Xref refers to"
-msgstr "Xref viittaa kohteeseen"
-
-msgid "Xref referred by"
-msgstr "Xref viitattu kohteesta"
-
-msgid "Xref has a"
-msgstr "Xref sisältää kohteen"
-
-msgid "Xref used by"
-msgstr "Xrefiä käyttää"
-
-msgid "Show docu of"
-msgstr "Näytä dokumentti kohteelle"
-
-msgid "Generate docu for"
-msgstr "Luo dokumentti kohteelle"
-
-msgid ""
-"Cannot connect to SNiFF+. Check environment (sniffemacs must be found in "
-"$PATH).\n"
-msgstr ""
-"Ei voida yhdistää SNiFF+:aan. Tarkista ympäristömuuttujat (sniffemacsin "
-"löytyä polkumuuttujasta $PATH).\n"
-
-msgid "E274: Sniff: Error during read. Disconnected"
-msgstr "E274: Sniff: Virhe luettaessa, yhteys katkaistu"
-
-msgid "SNiFF+ is currently "
-msgstr "SNiFF+ "
-
-msgid "not "
-msgstr "ei ole "
-
-msgid "connected"
-msgstr "yhdistetty"
-
-#, c-format
-msgid "E275: Unknown SNiFF+ request: %s"
-msgstr "E275: Tuntematon SNiFF+-pyyntö: %s"
-
-msgid "E276: Error connecting to SNiFF+"
-msgstr "E276: Virhe yhdistettäessä SNiFF+:aan"
-
-msgid "E278: SNiFF+ not connected"
-msgstr "E278: SNiFF+ ei ole yhdistetty"
-
-msgid "E279: Not a SNiFF+ buffer"
-msgstr "E279: Ei ole SNiFF+-puskuri"
-
-msgid "Sniff: Error during write. Disconnected"
-msgstr "Sniff: Virhe kirjoituksessa, yhteys katkaistu"
-
 msgid "invalid buffer number"
 msgstr "virheellinen puskurinumero"
 
@@ -2741,7 +2716,7 @@ msgstr "ei toteutettu"
 
 #. ???
 msgid "cannot set line(s)"
-msgstr "ei voi asettaa rivejä"
+msgstr "ei voi asettaa rivejä"
 
 msgid "invalid mark name"
 msgstr "virheellinen merkin nimi"
@@ -2754,7 +2729,7 @@ msgid "row %d column %d"
 msgstr "rivi %d sarake %d"
 
 msgid "cannot insert/append line"
-msgstr "rivin lisäys ei onnistu"
+msgstr "rivin lisäys ei onnistu"
 
 msgid "line number out of range"
 msgstr "rivinumero arvoalueen ulkopuolella"
@@ -2766,7 +2741,7 @@ msgid "unknown vimOption"
 msgstr "tuntematon vimOption"
 
 msgid "keyboard interrupt"
-msgstr "näppäimistökeskeytys"
+msgstr "näppäimistökeskeytys"
 
 msgid "vim error"
 msgstr "vim-virhe"
@@ -2776,7 +2751,7 @@ msgstr "ei voi luoda puskuri- tai ikkuna
 
 msgid ""
 "cannot register callback command: buffer/window is already being deleted"
-msgstr "callbackia ei voi rekisteröidä: puskuri tai ikkuna on poistettu"
+msgstr "callbackia ei voi rekisteröidä: puskuri tai ikkuna on poistettu"
 
 #. This should never happen.  Famous last word?
 msgid ""
@@ -2787,30 +2762,24 @@ msgstr ""
 "postituslistalle vim-dev@vim.org"
 
 msgid "cannot register callback command: buffer/window reference not found"
-msgstr "callbackia ei voi rekisteröidä: puskurin tai ikkunan viitettä ei löydy"
+msgstr "callbackia ei voi rekisteröidä: puskurin tai ikkunan viitettä ei löydy"
 
 msgid ""
 "E571: Sorry, this command is disabled: the Tcl library could not be loaded."
-msgstr "E571: Sori, komento ei toimi, Tcl-kirjastoa ei voitu ladata."
-
-msgid ""
-"E281: TCL ERROR: exit code is not int!? Please report this to vim-dev@vim.org"
-msgstr ""
-"E281: TCL-virhe: lopetuskoodi ei ole kokonaisluku? Ilmoita asiasta "
-"postituslistalle vim-dev@vim.org"
+msgstr "E571: komento ei toimi, Tcl-kirjastoa ei voitu ladata."
 
 #, c-format
 msgid "E572: exit code %d"
 msgstr "E572: palautusarvo %d"
 
 msgid "cannot get line"
-msgstr "ei voida hakea riviä"
+msgstr "ei voida hakea riviä"
 
 msgid "Unable to register a command server name"
-msgstr "Komentopalvelimen nimen rekisteröinti ei onnistu"
+msgstr "Komentopalvelimen nimen rekisteröinti ei onnistu"
 
 msgid "E248: Failed to send command to the destination program"
-msgstr "E248: Komennon lähetys kohdeohjelmalle ei onnistu"
+msgstr "E248: Komennon lähetys kohdeohjelmalle ei onnistu"
 
 #, c-format
 msgid "E573: Invalid server id used: %s"
@@ -2819,6 +2788,14 @@ msgstr "E573: Virheellinen palvelimen tu
 msgid "E251: VIM instance registry property is badly formed.  Deleted!"
 msgstr "E251: VIMin instanssin rekisteriarvo on virheellinen, poistettiin."
 
+#, c-format
+msgid "E696: Missing comma in List: %s"
+msgstr "E696: Listasta puuttuu pilkku: %s"
+
+#, c-format
+msgid "E697: Missing end of List ']': %s"
+msgstr "E697: Listan lopusta puuttuu ]: %s"
+
 msgid "Unknown option argument"
 msgstr "Tuntematon asetusargumentti"
 
@@ -2829,26 +2806,26 @@ msgid "Argument missing after"
 msgstr "Argumentti puuttuu kohdasta"
 
 msgid "Garbage after option argument"
-msgstr "Roskaa argumentin perässä"
+msgstr "Roskaa argumentin perässä"
 
 msgid "Too many \"+command\", \"-c command\" or \"--cmd command\" arguments"
 msgstr "Liikaa +komentoja, -c-komentoja tai --cmd-komentoja"
 
 msgid "Invalid argument for"
-msgstr "Väärä argumentti valitsimelle"
+msgstr "Väärä argumentti valitsimelle"
 
 #, c-format
 msgid "%d files to edit\n"
 msgstr "%d tiedostoa muokattavana\n"
 
 msgid "netbeans is not supported with this GUI\n"
-msgstr "netbeans ei toimi tässä käyttöliittymässä\n"
+msgstr "netbeans ei toimi tässä käyttöliittymässä\n"
+
+msgid "'-nb' cannot be used: not enabled at compile time\n"
+msgstr "-nb:tä ei voi käyttää, koska sitä ei käännetty mukaan\n"
 
 msgid "This Vim was not compiled with the diff feature."
-msgstr "Tähän Vimiin ei ole käännetty diff-toimintoja mukaan."
-
-msgid "'-nb' cannot be used: not enabled at compile time\n"
-msgstr "-nb:tä ei voi käyttää, koska sitä ei käännetty mukaan\n"
+msgstr "Tähän Vimiin ei ole käännetty diff-toimintoja mukaan."
 
 msgid "Attempt to open script file again: \""
 msgstr "Yritettiin avata skriptitiedostoa uudestaan:"
@@ -2860,13 +2837,16 @@ msgid "Cannot open for script output: \"
 msgstr "Ei voi avata skriptin tulostetta varten: "
 
 msgid "Vim: Error: Failure to start gvim from NetBeans\n"
-msgstr "Vim: Virhe: Gvimin käynnistys NetBeansistä ei onnistu\n"
+msgstr "Vim: Virhe: Gvimin käynnistys NetBeansistä ei onnistu\n"
+
+msgid "Vim: Error: This version of Vim does not run in a Cygwin terminal\n"
+msgstr "Vim: Virhe: Tämä versio Vimistä ei toimi Cygwinin terminaalissa\n"
 
 msgid "Vim: Warning: Output is not to a terminal\n"
 msgstr "Vim: Varoitus: Tuloste ei mene terminaalille\n"
 
 msgid "Vim: Warning: Input is not from a terminal\n"
-msgstr "Vim: Varoitus: Syöte ei tule terminaalilta\n"
+msgstr "Vim: Varoitus: Syöte ei tule terminaalilta\n"
 
 #. just in case..
 msgid "pre-vimrc command line"
@@ -2881,19 +2861,19 @@ msgid ""
 "More info with: \"vim -h\"\n"
 msgstr ""
 "\n"
-"Lisätietoja: \"vim -h\"\n"
+"Lisätietoja: \"vim -h\"\n"
 
 msgid "[file ..]       edit specified file(s)"
 msgstr "[tiedosto ..]       muokkaa tiedostoja"
 
 msgid "-               read text from stdin"
-msgstr "-                   lue vakiosyötteestä"
+msgstr "-                   lue vakiosyötteestä"
 
 msgid "-t tag          edit file where tag is defined"
-msgstr "-t tägi             muokkaa tiedostoa tägistä"
+msgstr "-t tägi             muokkaa tiedostoa tägistä"
 
 msgid "-q [errorfile]  edit file with first error"
-msgstr "-q [virhetiedosto]  muokkaa tiedostoa ensimmäisestä virheestä"
+msgstr "-q [virhetiedosto]  muokkaa tiedostoa ensimmäisestä virheestä"
 
 msgid ""
 "\n"
@@ -2902,7 +2882,7 @@ msgid ""
 msgstr ""
 "\n"
 "\n"
-"käyttö:"
+"käyttö:"
 
 msgid " vim [arguments] "
 msgstr " vim [argumentit] "
@@ -2919,7 +2899,7 @@ msgid ""
 "Where case is ignored prepend / to make flag upper case"
 msgstr ""
 "\n"
-"Jos aakkoslaji on ohitettu, lisää alkuun / tehdäksesi asetuksesta "
+"Jos aakkoslaji on ohitettu, lisää alkuun / tehdäksesi asetuksesta "
 "suuraakkosia"
 
 msgid ""
@@ -2932,52 +2912,55 @@ msgstr ""
 "Argumentit:\n"
 
 msgid "--\t\t\tOnly file names after this"
-msgstr "--\t\t\tvain tiedostonimiä tämän jälkeen"
+msgstr "--\t\t\tvain tiedostonimiä tämän jälkeen"
 
 msgid "--literal\t\tDon't expand wildcards"
-msgstr "--literal\t\tÄlä käsittele jokerimerkkejä "
+msgstr "--literal\t\tÄlä käsittele jokerimerkkejä "
 
 msgid "-register\t\tRegister this gvim for OLE"
-msgstr "-register\t\trekisteröi gvim OLEa varten"
+msgstr "-register\t\trekisteröi gvim OLEa varten"
 
 msgid "-unregister\t\tUnregister gvim for OLE"
-msgstr "-unregister\t\tPoista gvim OLE-rekisteristä"
+msgstr "-unregister\t\tPoista gvim OLE-rekisteristä"
 
 msgid "-g\t\t\tRun using GUI (like \"gvim\")"
-msgstr "-g\t\t\tAvaa GUI (kuten gvimillä)"
+msgstr "-g\t\t\tAvaa GUI (kuten gvimillä)"
 
 msgid "-f  or  --nofork\tForeground: Don't fork when starting GUI"
-msgstr "-f tai --nofork\tEdustalle: Älä haarauta GUIn käynnistyksessä"
+msgstr "-f tai --nofork\tEdustalle: Älä haarauta GUIn käynnistyksessä"
 
 msgid "-v\t\t\tVi mode (like \"vi\")"
-msgstr "-v\t\t\tVi-tila (kuten villä)"
+msgstr "-v\t\t\tVi-tila (kuten villä)"
 
 msgid "-e\t\t\tEx mode (like \"ex\")"
-msgstr "-e\t\t\tEx-tila (kute exillä)"
+msgstr "-e\t\t\tEx-tila (kute exillä)"
+
+msgid "-E\t\t\tImproved Ex mode"
+msgstr "-E\t\t\tParanneltu Ex-tila"
 
 msgid "-s\t\t\tSilent (batch) mode (only for \"ex\")"
-msgstr "-s\t\t\tHiljainen (eräajo)tila (vain exillä)"
+msgstr "-s\t\t\tHiljainen (eräajo)tila (vain exillä)"
 
 msgid "-d\t\t\tDiff mode (like \"vimdiff\")"
-msgstr "-d\t\t\tDiff-tila (kuten vimdiffillä)"
+msgstr "-d\t\t\tDiff-tila (kuten vimdiffillä)"
 
 msgid "-y\t\t\tEasy mode (like \"evim\", modeless)"
-msgstr "-y\t\t\tHelppokäyttötila (kuten evimissä, ilman tiloja)"
+msgstr "-y\t\t\tHelppokäyttötila (kuten evimissä, ilman tiloja)"
 
 msgid "-R\t\t\tReadonly mode (like \"view\")"
 msgstr "-R\t\t\tKirjoitussuojattu tila (kuten view'lla)"
 
 msgid "-Z\t\t\tRestricted mode (like \"rvim\")"
-msgstr "-Z\t\t\tRajoitettu tila (kuten rvimillä)"
+msgstr "-Z\t\t\tRajoitettu tila (kuten rvimillä)"
 
 msgid "-m\t\t\tModifications (writing files) not allowed"
-msgstr "-m\t\t\tMuokkaukset (kirjoittaminen tiedostoon) pois käytöstä"
+msgstr "-m\t\t\tMuokkaukset (kirjoittaminen tiedostoon) pois käytöstä"
 
 msgid "-M\t\t\tModifications in text not allowed"
-msgstr "-M\t\t\tTekstin muokkaus pois käytöstä"
+msgstr "-M\t\t\tTekstin muokkaus pois käytöstä"
 
 msgid "-b\t\t\tBinary mode"
-msgstr "-b\t\t\tBinääritila"
+msgstr "-b\t\t\tBinääritila"
 
 msgid "-l\t\t\tLisp mode"
 msgstr "-l\t\t\tLisp-tila"
@@ -2993,10 +2976,10 @@ msgstr ""
 "-V[N][tnimi]\t\tMonisanainen tuloste [Taso N] [kirjoita tuloste tnimeen] "
 
 msgid "-D\t\t\tDebugging mode"
-msgstr "-D\t\t\tVianetsintätila"
+msgstr "-D\t\t\tVianetsintätila"
 
 msgid "-n\t\t\tNo swap file, use memory only"
-msgstr "-n\t\t\tEi swap-tiedostoja, käytä muistia"
+msgstr "-n\t\t\tEi swap-tiedostoja, käytä muistia"
 
 msgid "-r\t\t\tList swap files and exit"
 msgstr "-r\t\t\tLuetteloi swap-tiedostot ja poistu"
@@ -3008,34 +2991,37 @@ msgid "-L\t\t\tSame as -r"
 msgstr "-L\t\t\tkuten -r"
 
 msgid "-f\t\t\tDon't use newcli to open window"
-msgstr "-f\t\t\tÄlä käytä newcli:tä ikkunan avaamiseen"
+msgstr "-f\t\t\tÄlä käytä newcli:tä ikkunan avaamiseen"
 
 msgid "-dev <device>\t\tUse <device> for I/O"
-msgstr "-dev <laite>\t\tKäytä <laitetta> IO:hon"
+msgstr "-dev <laite>\t\tKäytä <laitetta> IO:hon"
 
 msgid "-A\t\t\tstart in Arabic mode"
-msgstr "-A\t\t\tkäynnistä arabia-tilassa"
+msgstr "-A\t\t\tkäynnistä arabia-tilassa"
 
 msgid "-H\t\t\tStart in Hebrew mode"
-msgstr "-H\t\t\tkäynnistä heprea-tilassa"
+msgstr "-H\t\t\tkäynnistä heprea-tilassa"
 
 msgid "-F\t\t\tStart in Farsi mode"
-msgstr "-F\t\t\tkäynnistä farsi-tilassa"
+msgstr "-F\t\t\tkäynnistä farsi-tilassa"
 
 msgid "-T <terminal>\tSet terminal type to <terminal>"
 msgstr "-T <terminaali>\tAseta terminaalin tyypiksi <terminaali>"
 
+msgid "--not-a-term\t\tSkip warning for input/output not being a terminal"
+msgstr "--not-a-term\t\tOhita varoitus siitä että i/o ei ole terminaali"
+
 msgid "-u <vimrc>\t\tUse <vimrc> instead of any .vimrc"
-msgstr "-u <vimrc>\t\tKäytä <vimrc>-tiedostoa .vimrc:iden sijasta"
+msgstr "-u <vimrc>\t\tKäytä <vimrc>-tiedostoa .vimrc:iden sijasta"
 
 msgid "-U <gvimrc>\t\tUse <gvimrc> instead of any .gvimrc"
-msgstr "-U <gvimrc>\t\tKäytä <gvimrc>-tiedostoa .gvimrc:iden sijasta"
+msgstr "-U <gvimrc>\t\tKäytä <gvimrc>-tiedostoa .gvimrc:iden sijasta"
 
 msgid "--noplugin\t\tDon't load plugin scripts"
-msgstr "--noplugin\t\tÄlä lataa liitännäisiä"
+msgstr "--noplugin\t\tÄlä lataa liitännäisiä"
 
 msgid "-p[N]\t\tOpen N tab pages (default: one for each file)"
-msgstr "-p[N]\t\tAvaa N välilehteä (oletus: yksi per tiedosto)"
+msgstr "-p[N]\t\tAvaa N välilehteä (oletus: yksi per tiedosto)"
 
 msgid "-o[N]\t\tOpen N windows (default: one for each file)"
 msgstr "-o[N]\t\tAvaa N ikkunaa (oletus: yksi per tiedosto)"
@@ -3047,22 +3033,22 @@ msgid "+\t\t\tStart at end of file"
 msgstr "+\t\t\tAloita tiedoston lopusta"
 
 msgid "+<lnum>\t\tStart at line <lnum>"
-msgstr "+<rivi>\t\t\tAloita riviltä <rivi>"
+msgstr "+<rivi>\t\t\tAloita riviltä <rivi>"
 
 msgid "--cmd <command>\tExecute <command> before loading any vimrc file"
 msgstr "--cmd <komento>\tSuorita <komento> ennen vimrc:iden latausta"
 
 msgid "-c <command>\t\tExecute <command> after loading the first file"
-msgstr "-c <komento>\t\tSuorita <komento> ensimmäisen tiedoston latauduttua"
+msgstr "-c <komento>\t\tSuorita <komento> ensimmäisen tiedoston latauduttua"
 
 msgid "-S <session>\t\tSource file <session> after loading the first file"
-msgstr "-S <sessio>\t\tLataa <sessio> ensimmäisen tiedoston latauduttua"
+msgstr "-S <sessio>\t\tLataa <sessio> ensimmäisen tiedoston latauduttua"
 
 msgid "-s <scriptin>\tRead Normal mode commands from file <scriptin>"
 msgstr "-s <skripti>\tLue normaalitilan komentoja <skripti>-tiedostosta"
 
 msgid "-w <scriptout>\tAppend all typed commands to file <scriptout>"
-msgstr "-w <skripti>\tLisää kirjoitetut komennot <skripti>-tiedostoon"
+msgstr "-w <skripti>\tLisää kirjoitetut komennot <skripti>-tiedostoon"
 
 msgid "-W <scriptout>\tWrite all typed commands to file <scriptout>"
 msgstr "-W <skripti>\tKirjoita komennot <skripti>-tiedostoon"
@@ -3071,10 +3057,10 @@ msgid "-x\t\t\tEdit encrypted files"
 msgstr "-x\t\t\tMuokkaa salattua tiedostoa"
 
 msgid "-display <display>\tConnect vim to this particular X-server"
-msgstr "-display <näyttö>\tYhdistä vim tiettyyn X-palvelimeen"
+msgstr "-display <näyttö>\tYhdistä vim tiettyyn X-palvelimeen"
 
 msgid "-X\t\t\tDo not connect to X server"
-msgstr "-X\t\t\tÄlä yhdistä X-palvelimeen"
+msgstr "-X\t\t\tÄlä yhdistä X-palvelimeen"
 
 msgid "--remote <files>\tEdit <files> in a Vim server if possible"
 msgstr ""
@@ -3082,7 +3068,7 @@ msgstr ""
 
 msgid "--remote-silent <files>  Same, don't complain if there is no server"
 msgstr ""
-"--remote-silent <tiedostoja>\tSama, mutta älä ilmoita puuttuvasta "
+"--remote-silent <tiedostoja>\tSama, mutta älä ilmoita puuttuvasta "
 "palvelimesta"
 
 msgid ""
@@ -3094,37 +3080,37 @@ msgstr ""
 msgid ""
 "--remote-wait-silent <files>  Same, don't complain if there is no server"
 msgstr ""
-"--remote-wait-silent <tiedostoja>  sama, mutta älä ilmoita puuttuvasta "
+"--remote-wait-silent <tiedostoja>  sama, mutta älä ilmoita puuttuvasta "
 "palvelimesta"
 
 msgid ""
 "--remote-tab[-wait][-silent] <files>  As --remote but use tab page per file"
 msgstr ""
 "--remote-tab[-wait][-silent] <tiedostoja>  kuten --remote, mutta avaa "
-"välilehti joka tiedostolle"
+"välilehti joka tiedostolle"
 
 msgid "--remote-send <keys>\tSend <keys> to a Vim server and exit"
 msgstr ""
-"--remote-send <näppäimiä>\tLähetä <näppäimiä> painalluksina Vimille ja lopeta"
+"--remote-send <näppäimiä>\tLähetä <näppäimiä> painalluksina Vimille ja lopeta"
 
 msgid "--remote-expr <expr>\tEvaluate <expr> in a Vim server and print result"
 msgstr ""
-"--remote-expr <ilmaus>\tKäsittele <ilmaus> Vim-palvelimella ja tulosta tulos"
+"--remote-expr <ilmaus>\tKäsittele <ilmaus> Vim-palvelimella ja tulosta tulos"
 
 msgid "--serverlist\t\tList available Vim server names and exit"
 msgstr "--serverlist\t\tLuettele Vim-palvelinten nimet ja lopeta"
 
 msgid "--servername <name>\tSend to/become the Vim server <name>"
-msgstr "--servername <nimi>\tLähetä Vim-palvelimelle <nimi> tai luo se"
+msgstr "--servername <nimi>\tLähetä Vim-palvelimelle <nimi> tai luo se"
 
 msgid "--startuptime <file>\tWrite startup timing messages to <file>"
-msgstr "--startuptime <file>\tKirjoita käynnistysaikaviestit tiedostoon <file>"
+msgstr "--startuptime <file>\tKirjoita käynnistysaikaviestit tiedostoon <file>"
 
 msgid "-i <viminfo>\t\tUse <viminfo> instead of .viminfo"
-msgstr "-i <viminfo>\t\tKäytä <viminfo>-tiedostoa .viminfon sijaan"
+msgstr "-i <viminfo>\t\tKäytä <viminfo>-tiedostoa .viminfon sijaan"
 
 msgid "-h  or  --help\tPrint Help (this message) and exit"
-msgstr "-h tai --help\tTulosta ohje (tämä viesti) ja lopeta"
+msgstr "-h tai --help\tTulosta ohje (tämä viesti) ja lopeta"
 
 msgid "--version\t\tPrint version information and exit"
 msgstr "--version\t\t\tTulosta versiotiedot ja lopeta"
@@ -3151,113 +3137,103 @@ msgstr ""
 "Gvimin (Athena-version) tuntemat argumentit:\n"
 
 msgid "-display <display>\tRun vim on <display>"
-msgstr "-display <näyttö>\tSuorita vim <näytössä>"
+msgstr "-display <näyttö>\tSuorita vim <näytössä>"
 
 msgid "-iconic\t\tStart vim iconified"
-msgstr "-iconic\t\tKäynnistä pienennettynä"
+msgstr "-iconic\t\tKäynnistä pienennettynä"
 
 msgid "-background <color>\tUse <color> for the background (also: -bg)"
-msgstr "-background <väri>\tKäytä <väriä> taustavärinä (myös: -bg)"
+msgstr "-background <väri>\tKäytä <väriä> taustavärinä (myös: -bg)"
 
 msgid "-foreground <color>\tUse <color> for normal text (also: -fg)"
-msgstr "-foreground <väri>\tKäytä <väriä> tekstin värinä (myös: -fg)"
+msgstr "-foreground <väri>\tKäytä <väriä> tekstin värinä (myös: -fg)"
 
 msgid "-font <font>\t\tUse <font> for normal text (also: -fn)"
-msgstr "-font <fontti>\t\tKäytä <fonttia> tekstissä (myös: -fn)"
+msgstr "-font <fontti>\t\tKäytä <fonttia> tekstissä (myös: -fn)"
 
 msgid "-boldfont <font>\tUse <font> for bold text"
-msgstr "-boldfont <fontti>\tKäytä <fonttia> lihavoidussa tekstissä"
+msgstr "-boldfont <fontti>\tKäytä <fonttia> lihavoidussa tekstissä"
 
 msgid "-italicfont <font>\tUse <font> for italic text"
-msgstr "-italicfont <fontti>\tKäytä <fonttia> kursivoidussa tekstissä"
+msgstr "-italicfont <fontti>\tKäytä <fonttia> kursivoidussa tekstissä"
 
 msgid "-geometry <geom>\tUse <geom> for initial geometry (also: -geom)"
 msgstr ""
-"-geometry <geom>\tKäytä mittoja <geom> ikkunan asetteluun (myös: -geom)"
+"-geometry <geom>\tKäytä mittoja <geom> ikkunan asetteluun (myös: -geom)"
 
 msgid "-borderwidth <width>\tUse a border width of <width> (also: -bw)"
-msgstr "-borderwidt <leveys>\tKäytä <leveyttä> reunuksissa (myös: -bw) "
+msgstr "-borderwidt <leveys>\tKäytä <leveyttä> reunuksissa (myös: -bw) "
 
 msgid "-scrollbarwidth <width>  Use a scrollbar width of <width> (also: -sw)"
 msgstr ""
-"-scrollbarwidth <leveys>  Käytä <leveyttä> vierityspalkissa (myös: -sw)"
+"-scrollbarwidth <leveys>  Käytä <leveyttä> vierityspalkissa (myös: -sw)"
 
 msgid "-menuheight <height>\tUse a menu bar height of <height> (also: -mh)"
-msgstr "-menuheight <korkeus>\tKäytä <korkeutta> valikossa (myös: -mh)"
+msgstr "-menuheight <korkeus>\tKäytä <korkeutta> valikossa (myös: -mh)"
 
 msgid "-reverse\t\tUse reverse video (also: -rv)"
-msgstr "-reverse\t\tKäytä käänteisvärejä (myös: -rv) "
+msgstr "-reverse\t\tKäytä käänteisvärejä (myös: -rv) "
 
 msgid "+reverse\t\tDon't use reverse video (also: +rv)"
-msgstr "+reverse\t\tÄlä käytä käänteisvärejä (myös: +rv)"
+msgstr "+reverse\t\tÄlä käytä käänteisvärejä (myös: +rv)"
 
 msgid "-xrm <resource>\tSet the specified resource"
 msgstr "-xrm <resurssi>\tAseta resurssi"
 
 msgid ""
 "\n"
-"Arguments recognised by gvim (RISC OS version):\n"
-msgstr ""
-"\n"
-"Gvimin (RISC OS -version) tuntemat argumentit:\n"
-
-msgid "--columns <number>\tInitial width of window in columns"
-msgstr "--columns <luku>\tIkkunan alkuleveys sarakkeina"
-
-msgid "--rows <number>\tInitial height of window in rows"
-msgstr "--rows <luku>\tIkkunan alkukorkeus riveinä"
-
-msgid ""
-"\n"
 "Arguments recognised by gvim (GTK+ version):\n"
 msgstr ""
 "\n"
 "Gvimin (GTK+-version) tuntemat argumentit:\n"
 
 msgid "-display <display>\tRun vim on <display> (also: --display)"
-msgstr "-display <näyttö>\tSuorita vim näytöllä <näyttö> (myös: --display)"
-
-# X-ikkunointijärjestelmässä saman sovelluksen saman luokan ikkunat
+msgstr "-display <näyttö>\tSuorita vim näytöllä <näyttö> (myös: --display)"
+
+# X-ikkunointijärjestelmässä saman sovelluksen saman luokan ikkunat
 # tunnistetaan rooliresursseista
 msgid "--role <role>\tSet a unique role to identify the main window"
-msgstr "--role <rooli>\tAseta pääikkunalle ainutlaatuinen rooli tunnisteeksi"
+msgstr "--role <rooli>\tAseta pääikkunalle ainutlaatuinen rooli tunnisteeksi"
 
 msgid "--socketid <xid>\tOpen Vim inside another GTK widget"
 msgstr "--socketid <xid>\tAvaa Vim annettuun GTK-olioon "
 
+msgid "--echo-wid\t\tMake gvim echo the Window ID on stdout"
+msgstr "--echo-wid\t\tTulosta gvimin Window ID vakiotulosteeseen"
+
 msgid "-P <parent title>\tOpen Vim inside parent application"
-msgstr "-P <otsikko>\tAvaa Vim isäntäohjelman sisään"
+msgstr "-P <otsikko>\tAvaa Vim isäntäohjelman sisään"
 
 msgid "--windowid <HWND>\tOpen Vim inside another win32 widget"
 msgstr "--windowid <HWND>\tAvaa Vim annettuun win32-olioon "
 
 msgid "No display"
-msgstr "Ei näyttöä"
+msgstr "Ei näyttöä"
 
 #. Failed to send, abort.
 msgid ": Send failed.\n"
-msgstr ": Lähetys epäonnistui.\n"
+msgstr ": Lähetys epäonnistui.\n"
 
 #. Let vim start normally.
 msgid ": Send failed. Trying to execute locally\n"
-msgstr ": Lähetys epäonnistui. Yritetään suorittaa paikallisena\n"
+msgstr ": Lähetys epäonnistui. Yritetään suorittaa paikallisena\n"
 
 #, c-format
 msgid "%d of %d edited"
 msgstr "%d/%d muokattu"
 
 msgid "No display: Send expression failed.\n"
-msgstr "Ei näyttöä: Ilmauksen lähetys epäonnistui.\n"
+msgstr "Ei näyttöä: Ilmauksen lähetys epäonnistui.\n"
 
 msgid ": Send expression failed.\n"
-msgstr ": Ilmauksen lähetys epäonnistui.\n"
+msgstr ": Ilmauksen lähetys epäonnistui.\n"
 
 msgid "No marks set"
-msgstr "Ei asetettuja merkkejä"
+msgstr "Ei asetettuja merkkejä"
 
 #, c-format
 msgid "E283: No marks matching \"%s\""
-msgstr "E283: Mikään merkki ei täsmää ilmaukseen \"%s\""
+msgstr "E283: Mikään merkki ei täsmää ilmaukseen \"%s\""
 
 #. Highlight title
 msgid ""
@@ -3283,7 +3259,6 @@ msgstr ""
 "\n"
 "muutos rivi sarake teksti"
 
-#, c-format
 msgid ""
 "\n"
 "# File marks:\n"
@@ -3292,7 +3267,6 @@ msgstr ""
 "# Tiedoston merkit:\n"
 
 #. Write the jumplist with -'
-#, c-format
 msgid ""
 "\n"
 "# Jumplist (newest first):\n"
@@ -3300,7 +3274,6 @@ msgstr ""
 "\n"
 "# Hyppylista (uusin ensiksi):\n"
 
-#, c-format
 msgid ""
 "\n"
 "# History of marks within files (newest to oldest):\n"
@@ -3312,26 +3285,26 @@ msgid "Missing '>'"
 msgstr "> puuttuu"
 
 msgid "E543: Not a valid codepage"
-msgstr "E543: Koodisivu ei ole käypä"
+msgstr "E543: Koodisivu ei ole käypä"
 
 msgid "E284: Cannot set IC values"
 msgstr "E284: Ei voi asettaa IC-arvoja"
 
 msgid "E285: Failed to create input context"
-msgstr "E285: Syötekontekstin luonti ei onnistu"
+msgstr "E285: Syötekontekstin luonti ei onnistu"
 
 msgid "E286: Failed to open input method"
-msgstr "E286: Syötemetodin avaus ei onnistu"
+msgstr "E286: Syötemetodin avaus ei onnistu"
 
 msgid "E287: Warning: Could not set destroy callback to IM"
 msgstr ""
-"E287: Varoitus: Ei voitu asettaa destroy-kutsua syötemetodipalvelimelle"
+"E287: Varoitus: Ei voitu asettaa destroy-kutsua syötemetodipalvelimelle"
 
 msgid "E288: input method doesn't support any style"
-msgstr "E288: syötemetodi ei tue tyylejä"
+msgstr "E288: syötemetodi ei tue tyylejä"
 
 msgid "E289: input method doesn't support my preedit type"
-msgstr "E289: syötemetodi ei tue tätä preedit-tyyppiä"
+msgstr "E289: syötemetodi ei tue tätä preedit-tyyppiä"
 
 msgid "E293: block was not locked"
 msgstr "E293: lohkoa ei ole lukittu"
@@ -3349,20 +3322,23 @@ msgid "E297: Write error in swap file"
 msgstr "E297: Kirjoitusvirhe swap-tiedostossa"
 
 msgid "E300: Swap file already exists (symlink attack?)"
-msgstr "E300: Swaptiedosto on jo olemassa (symlink-hyökkäys?)"
+msgstr "E300: Swaptiedosto on jo olemassa (symlink-hyökkäys?)"
 
 msgid "E298: Didn't get block nr 0?"
 msgstr "E298: Lohko 0:aa ei saatu?"
 
 msgid "E298: Didn't get block nr 1?"
-msgstr "E298: Lohko 1:tä ei saatu?"
+msgstr "E298: Lohko 1:tä ei saatu?"
 
 msgid "E298: Didn't get block nr 2?"
 msgstr "E298: Lohko 2:ta ei saatu?"
 
+msgid "E843: Error while updating swap file crypt"
+msgstr "E843: Virhe päivitettäessä swapin kryptausta"
+
 #. could not (re)open the swap file, what can we do????
 msgid "E301: Oops, lost the swap file!!!"
-msgstr "E301: Hups, swap-tiedosto hävisi!"
+msgstr "E301: Hups, swap-tiedosto hävisi!"
 
 msgid "E302: Could not rename swap file"
 msgstr "E302: Swap-tiedoston uudellennimeys ei onnistu"
@@ -3393,20 +3369,20 @@ msgid ""
 "Maybe no changes were made or Vim did not update the swap file."
 msgstr ""
 "\n"
-"Muutoksia ei tehty, tai Vim ei päivittänyt swap-tiedostoa."
+"Muutoksia ei tehty, tai Vim ei päivittänyt swap-tiedostoa."
 
 msgid " cannot be used with this version of Vim.\n"
-msgstr " ei toimi tämän version Vimin kanssa.\n"
+msgstr " ei toimi tämän version Vimin kanssa.\n"
 
 msgid "Use Vim version 3.0.\n"
-msgstr "Käytä Vimin versiota 3.0\n"
+msgstr "Käytä Vimin versiota 3.0\n"
 
 #, c-format
 msgid "E307: %s does not look like a Vim swap file"
 msgstr "E307: %s ei ole Vimin swap-tiedosto"
 
 msgid " cannot be used on this computer.\n"
-msgstr " ei toimi tällä koneella.\n"
+msgstr " ei toimi tällä koneella.\n"
 
 msgid "The file was created on "
 msgstr "Tiedosto luotiin "
@@ -3421,21 +3397,21 @@ msgstr ""
 #, c-format
 msgid ""
 "E833: %s is encrypted and this version of Vim does not support encryption"
-msgstr "E833: %s on salattu eikä tämä Vim tue salausta"
+msgstr "E833: %s on salattu eikä tämä Vim tue salausta"
 
 msgid " has been damaged (page size is smaller than minimum value).\n"
-msgstr " on vioittunut (sivun koko on vähimmäisarvoa pienempi).\n"
+msgstr " on vioittunut (sivun koko on vähimmäisarvoa pienempi).\n"
 
 #, c-format
 msgid "Using swap file \"%s\""
-msgstr "Käytetään swap-tiedostoa %s"
+msgstr "Käytetään swap-tiedostoa %s"
 
 #, c-format
 msgid "Original file \"%s\""
-msgstr "Alkuperäinen tiedosto %s"
+msgstr "Alkuperäinen tiedosto %s"
 
 msgid "E308: Warning: Original file may have been changed"
-msgstr "E308: Varoitus: Alkuperäistä tiedostoa saattaa olla muutettu"
+msgstr "E308: Varoitus: Alkuperäistä tiedostoa saattaa olla muutettu"
 
 #, c-format
 msgid "Swap file is encrypted: \"%s\""
@@ -3444,55 +3420,59 @@ msgstr "Swap-tiedosto on salattu: %s"
 msgid ""
 "\n"
 "If you entered a new crypt key but did not write the text file,"
-msgstr "\n"
-"Jos käytit uutta salausavainta muttet kirjoittanut tekstitiedostoa,"
+msgstr ""
+"\n"
+"Jos käytit uutta salausavainta muttet kirjoittanut tekstitiedostoa,"
 
 msgid ""
 "\n"
 "enter the new crypt key."
-msgstr "\n"
+msgstr ""
+"\n"
 "anna uusi salausavain."
 
 msgid ""
 "\n"
 "If you wrote the text file after changing the crypt key press enter"
-msgstr "\n"
-"Jos kirjoitit tekstitiedoston salausavaimen vaihdon jälkeen paina enteriä"
+msgstr ""
+"\n"
+"Jos kirjoitit tekstitiedoston salausavaimen vaihdon jälkeen paina enteriä"
 
 msgid ""
 "\n"
 "to use the same key for text file and swap file"
-msgstr "\n"
-"käyttääksesi samaa avainta teksti- ja swäppitiedostoille"
+msgstr ""
+"\n"
+"käyttääksesi samaa avainta teksti- ja swäppitiedostoille"
 
 #, c-format
 msgid "E309: Unable to read block 1 from %s"
 msgstr "E309: Ei voitu lukea lohkoa 1 tiedostosta %s"
 
 msgid "???MANY LINES MISSING"
-msgstr "???PALJON RIVEJÄ PUUTTUU"
+msgstr "???PALJON RIVEJÄ PUUTTUU"
 
 msgid "???LINE COUNT WRONG"
-msgstr "???RIVIMÄÄRÄ PIELESSÄ"
+msgstr "???RIVIMÄÄRÄ PIELESSÄ"
 
 msgid "???EMPTY BLOCK"
-msgstr "???TYHJÄ LOHKO"
+msgstr "???TYHJÄ LOHKO"
 
 msgid "???LINES MISSING"
-msgstr "???RIVEJÄ PUUTTUU"
+msgstr "???RIVEJÄ PUUTTUU"
 
 #, c-format
 msgid "E310: Block 1 ID wrong (%s not a .swp file?)"
-msgstr "E310: Lohon 1 tunniste väärä (%s ei ole .swp-tiedosto?)"
+msgstr "E310: Lohon 1 tunniste väärä (%s ei ole .swp-tiedosto?)"
 
 msgid "???BLOCK MISSING"
 msgstr "???LOHKO PUUTTUU"
 
 msgid "??? from here until ???END lines may be messed up"
-msgstr "??? tästä kohtaan ???LOPPU rivejä sekaisin"
+msgstr "??? tästä kohtaan ???LOPPU rivejä sekaisin"
 
 msgid "??? from here until ???END lines may have been inserted/deleted"
-msgstr "??? tästä kohtaan ???LOPPU rivejä saattaa olla lisätty tai poistettu"
+msgstr "??? tästä kohtaan ???LOPPU rivejä saattaa olla lisätty tai poistettu"
 
 msgid "???END"
 msgstr "???LOPPU"
@@ -3502,53 +3482,54 @@ msgstr "E311: Palautus keskeytetty"
 
 msgid ""
 "E312: Errors detected while recovering; look for lines starting with ???"
-msgstr "E312: Palautuksessa oli virheitä, etsi rivejä, jotka alkavat ???"
+msgstr "E312: Palautuksessa oli virheitä, etsi rivejä, jotka alkavat ???"
 
 msgid "See \":help E312\" for more information."
-msgstr ":help E312 kertoo lisätietoja"
+msgstr ":help E312 kertoo lisätietoja"
 
 msgid "Recovery completed. You should check if everything is OK."
-msgstr "Palautus onnistui. Tarkista, että kaikki on kunnossa."
+msgstr "Palautus onnistui. Tarkista, että kaikki on kunnossa."
 
 msgid ""
 "\n"
 "(You might want to write out this file under another name\n"
 msgstr ""
 "\n"
-"(Saattaa kannattaa kirjoittaa tämä tiedosto toisella nimellä\n"
+"(Saattaa kannattaa kirjoittaa tämä tiedosto toisella nimellä\n"
 
 msgid "and run diff with the original file to check for changes)"
-msgstr "ja katso diffillä muutokset alkuperäiseen tiedostoon)"
+msgstr "ja katso diffillä muutokset alkuperäiseen tiedostoon)"
 
 msgid "Recovery completed. Buffer contents equals file contents."
-msgstr "Palautus onnistui. Puskurin ja tiedoston sisällöt täsmäävät."
+msgstr "Palautus onnistui. Puskurin ja tiedoston sisällöt täsmäävät."
 
 msgid ""
 "\n"
 "You may want to delete the .swp file now.\n"
 "\n"
-msgstr "\n"
+msgstr ""
+"\n"
 "Voit poistaa .swp-tiedosto nyt.\n"
 "\n"
 
 msgid "Using crypt key from swap file for the text file.\n"
-msgstr "Käytetään swäpin salausavainta tekstitiedostolle\n"
+msgstr "Käytetään swäpin salausavainta tekstitiedostolle\n"
 
 #. use msg() to start the scrolling properly
 msgid "Swap files found:"
-msgstr "Swap-tiedostoja löytyi:"
+msgstr "Swap-tiedostoja löytyi:"
 
 msgid "   In current directory:\n"
-msgstr "   Tässä hakemistossa:\n"
+msgstr "   Tässä hakemistossa:\n"
 
 msgid "   Using specified name:\n"
-msgstr "   Määritellyllä nimellä:\n"
+msgstr "   Määritellyllä nimellä:\n"
 
 msgid "   In directory "
 msgstr "   Hakemistossa "
 
 msgid "      -- none --\n"
-msgstr " -- ei mitään --\n"
+msgstr " -- ei mitään --\n"
 
 msgid "          owned by: "
 msgstr "          omistaja: "
@@ -3563,7 +3544,7 @@ msgid "         [from Vim version 3.0]"
 msgstr "         [Vimin 3.0-versiosta]"
 
 msgid "         [does not look like a Vim swap file]"
-msgstr "         [ei näytä Vimin swap-tiedostolta]"
+msgstr "         [ei näytä Vimin swap-tiedostolta]"
 
 msgid "         file name: "
 msgstr "      tiedostonimi: "
@@ -3576,7 +3557,7 @@ msgstr ""
 "          muokattu: "
 
 msgid "YES"
-msgstr "KYLLÄ"
+msgstr "KYLLÄ"
 
 msgid "no"
 msgstr "ei"
@@ -3586,7 +3567,7 @@ msgid ""
 "         user name: "
 msgstr ""
 "\n"
-"         käyttäjänimi: "
+"         käyttäjänimi: "
 
 msgid "   host name: "
 msgstr "   laitenimi: "
@@ -3606,21 +3587,21 @@ msgstr ""
 "        prosessin tunniste: "
 
 msgid " (still running)"
-msgstr " (käynnissä)"
+msgstr " (käynnissä)"
 
 msgid ""
 "\n"
 "         [not usable with this version of Vim]"
 msgstr ""
 "\n"
-"         [ei toimi tämän Vim-version kanssa]"
+"         [ei toimi tämän Vim-version kanssa]"
 
 msgid ""
 "\n"
 "         [not usable on this computer]"
 msgstr ""
 "\n"
-"         [ei toimi tällä koneella]"
+"         [ei toimi tällä koneella]"
 
 msgid "         [cannot be read]"
 msgstr "         [ei voi lukea]"
@@ -3629,13 +3610,13 @@ msgid "         [cannot be opened]"
 msgstr "         [ei voi avata]"
 
 msgid "E313: Cannot preserve, there is no swap file"
-msgstr "E313: Ei voi säilyttää, swap-tiedostoa ei ole"
+msgstr "E313: Ei voi säilyttää, swap-tiedostoa ei ole"
 
 msgid "File preserved"
-msgstr "Tiedosto säilytetty"
+msgstr "Tiedosto säilytetty"
 
 msgid "E314: Preserve failed"
-msgstr "E314: Säilyttäminen epäonnistui"
+msgstr "E314: Säilyttäminen epäonnistui"
 
 #, c-format
 msgid "E315: ml_get: invalid lnum: %ld"
@@ -3643,29 +3624,29 @@ msgstr "E315: ml_get: virheellinen lnum:
 
 #, c-format
 msgid "E316: ml_get: cannot find line %ld"
-msgstr "E316: ml_get: riviä %ld ei löydy"
+msgstr "E316: ml_get: riviä %ld ei löydy"
 
 msgid "E317: pointer block id wrong 3"
-msgstr "E317: osoitinlohkon tunnus väärä 3"
+msgstr "E317: osoitinlohkon tunnus väärä 3"
 
 msgid "stack_idx should be 0"
-msgstr "stack_idx pitää olla 0"
+msgstr "stack_idx pitää olla 0"
 
 msgid "E318: Updated too many blocks?"
-msgstr "E318: Päivitetty liikaa lohkoja"
+msgstr "E318: Päivitetty liikaa lohkoja"
 
 msgid "E317: pointer block id wrong 4"
-msgstr "E317: osoitinlohkon tunnus väärä 4"
+msgstr "E317: osoitinlohkon tunnus väärä 4"
 
 msgid "deleted block 1?"
 msgstr "poistettu lohko 1?"
 
 #, c-format
 msgid "E320: Cannot find line %ld"
-msgstr "E320: Riviä %ld ei löydy"
+msgstr "E320: Riviä %ld ei löydy"
 
 msgid "E317: pointer block id wrong"
-msgstr "E317: osoitinlohkon tunnus väärä"
+msgstr "E317: osoitinlohkon tunnus väärä"
 
 msgid "pe_line_count is zero"
 msgstr "pe_line_count on nolla"
@@ -3676,13 +3657,13 @@ msgstr "E322: rivinumero arvoalueen ulko
 
 #, c-format
 msgid "E323: line count wrong in block %ld"
-msgstr "E323: rivimäärä väärin lohkossa %ld"
+msgstr "E323: rivimäärä väärin lohkossa %ld"
 
 msgid "Stack size increases"
 msgstr "Pinon koko kasvaa"
 
 msgid "E317: pointer block id wrong 2"
-msgstr "E317: osoitinlohon tunnus väärä 2"
+msgstr "E317: osoitinlohon tunnus väärä 2"
 
 #, c-format
 msgid "E773: Symlink loop for \"%s\""
@@ -3696,7 +3677,7 @@ msgid ""
 "Found a swap file by the name \""
 msgstr ""
 "\n"
-"Swap-tiedosto löytyi: \""
+"Swap-tiedosto löytyi: \""
 
 msgid "While opening file \""
 msgstr "Avattaessa tiedostoa "
@@ -3708,44 +3689,37 @@ msgstr "   joka on UUDEMPI kuin swap-tie
 #. * other languages.
 msgid ""
 "\n"
-"(1) Another program may be editing the same file.\n"
-"    If this is the case, be careful not to end up with two\n"
-"    different instances of the same file when making changes.\n"
-msgstr ""
-"\n"
-"(1) Toinen ohjelma saattaa käyttää samaa tiedostoa.\n"
-"    Jos näin on, varo, ettet muokkaa saman tiedoston\n"
-"    kahta instanssia yhtä aikaa.\n"
-
-msgid "    Quit, or continue with caution.\n"
-msgstr "    Lopeta, tai jatka.\n"
-
-msgid ""
-"\n"
-"(2) An edit session for this file crashed.\n"
-msgstr ""
-"\n"
-"(2) Ohjelma on kaatunut muokatessa tiedostoa.\n"
+"(1) Another program may be editing the same file.  If this is the case,\n"
+"    be careful not to end up with two different instances of the same\n"
+"    file when making changes.  Quit, or continue with caution.\n"
+msgstr ""
+"\n"
+"(1) Toinen ohjelma saattaa käyttää samaa tiedostoa.\n"
+"    Jos näin on, varo, ettet muokkaa saman tiedoston\n"
+"    kahta instanssia yhtä aikaa. Lopeta tai jatka varoen.\n"
+
+msgid "(2) An edit session for this file crashed.\n"
+msgstr "(2) Tiedostonmuokkausistunto on kaatunut.\n"
 
 msgid "    If this is the case, use \":recover\" or \"vim -r "
-msgstr "    Jos näin on, käytä komentoa :recover tai vim -r "
+msgstr "    Jos näin on, käytä komentoa :recover tai vim -r "
 
 msgid ""
 "\"\n"
 "    to recover the changes (see \":help recovery\").\n"
 msgstr ""
 "\"\n"
-"    palauttaaksesi muutokset (lisätietoja: \":help recovery\").\n"
+"    palauttaaksesi muutokset (lisätietoja: \":help recovery\").\n"
 
 msgid "    If you did this already, delete the swap file \""
-msgstr "    Jos teit jo näin, poista swap-tiedosto "
+msgstr "    Jos teit jo näin, poista swap-tiedosto "
 
 msgid ""
 "\"\n"
 "    to avoid this message.\n"
 msgstr ""
 "\"\n"
-"    välttääksesi tämän viestin.\n"
+"    välttääksesi tämän viestin.\n"
 
 msgid "Swap file \""
 msgstr "Swap-tiedosto "
@@ -3802,13 +3776,13 @@ msgstr "E329: Ei valikkoa %s"
 
 #. Only a mnemonic or accelerator is not valid.
 msgid "E792: Empty menu name"
-msgstr "E792: tyhjä valikkonimi"
+msgstr "E792: tyhjä valikkonimi"
 
 msgid "E330: Menu path must not lead to a sub-menu"
 msgstr "E330: Valikkopolku ei saa johtaa alivalikkoon"
 
 msgid "E331: Must not add menu items directly to menu bar"
-msgstr "E331: Valikkokohtia ei saa lisätä suoraan valikkopalkkiin"
+msgstr "E331: Valikkokohtia ei saa lisätä suoraan valikkopalkkiin"
 
 msgid "E332: Separator cannot be part of a menu path"
 msgstr "E332: Erotin ei voi olla valikkopolun osa"
@@ -3823,24 +3797,24 @@ msgstr ""
 "--- Valikot ---"
 
 msgid "Tear off this menu"
-msgstr "Repäise valikko irti"
+msgstr "Repäise valikko irti"
 
 msgid "E333: Menu path must lead to a menu item"
 msgstr "E333: Valikkopolun on johdettava valikkokohtaan"
 
 #, c-format
 msgid "E334: Menu not found: %s"
-msgstr "E334: Valikkoa ei löydy: %s"
+msgstr "E334: Valikkoa ei löydy: %s"
 
 #, c-format
 msgid "E335: Menu not defined for %s mode"
-msgstr "E335: Valikkoa ei ole määritelty %s-tilassa"
+msgstr "E335: Valikkoa ei ole määritelty %s-tilassa"
 
 msgid "E336: Menu path must lead to a sub-menu"
-msgstr "E336: Valikkopolun pitää johtaa alivalikkoon"
+msgstr "E336: Valikkopolun pitää johtaa alivalikkoon"
 
 msgid "E337: Menu not found - check menu names"
-msgstr "E337: Valikkoa ei löytynyt - tarkista valikkojen nimet"
+msgstr "E337: Valikkoa ei löytynyt - tarkista valikkojen nimet"
 
 #, c-format
 msgid "Error detected while processing %s:"
@@ -3855,23 +3829,23 @@ msgid "E354: Invalid register name: '%s'
 msgstr "E354: Virheellinen rekisterin nimi: %s"
 
 msgid "Messages maintainer: Bram Moolenaar <Bram@vim.org>"
-msgstr "Käännöksen ylläpitäjä: Flammie Pirinen <flammie@iki.fi>"
+msgstr "Käännöksen ylläpitäjä: Flammie Pirinen <flammie@iki.fi>"
 
 msgid "Interrupt: "
 msgstr "Keskeytys: "
 
 msgid "Press ENTER or type command to continue"
-msgstr "Paina enteriä tai kirjoita komento aloittaaksesi "
+msgstr "Paina enteriä tai kirjoita komento aloittaaksesi "
 
 #, c-format
 msgid "%s line %ld"
 msgstr "%s rivi %ld"
 
 msgid "-- More --"
-msgstr "-- Lisää --"
+msgstr "-- Lisää --"
 
 msgid " SPACE/d/j: screen/page/line down, b/u/k: up, q: quit "
-msgstr " SPACE/d/j: ruutu/sivu/rivi alas, b/u/k: ylös, q: lopeta "
+msgstr " SPACE/d/j: ruutu/sivu/rivi alas, b/u/k: ylös, q: lopeta "
 
 msgid "Question"
 msgstr "Kysymys"
@@ -3880,7 +3854,7 @@ msgid ""
 "&Yes\n"
 "&No"
 msgstr ""
-"&Kyllä\n"
+"&Kyllä\n"
 "&Ei"
 
 msgid ""
@@ -3890,7 +3864,7 @@ msgid ""
 "&Discard All\n"
 "&Cancel"
 msgstr ""
-"&Kyllä\n"
+"&Kyllä\n"
 "&Ei\n"
 "&Tallenna kaikki\n"
 "T&uhoa kaikki\n"
@@ -3907,7 +3881,7 @@ msgstr "Avausikkuna"
 
 #. TODO: non-GUI file selector here
 msgid "E338: Sorry, no file browser in console mode"
-msgstr "E338: Sori, tiedostonselain puuttuu konsolitilasta"
+msgstr "E338: tiedostonselain puuttuu konsolitilasta"
 
 msgid "E766: Insufficient arguments for printf()"
 msgstr "E766: printf():lle ei annettu tarpeeksi argumentteja"
@@ -3922,24 +3896,24 @@ msgid "W10: Warning: Changing a readonly
 msgstr "W10: Varoitus: Muutetaan kirjoitussuojattua tiedostoa"
 
 msgid "Type number and <Enter> or click with mouse (empty cancels): "
-msgstr "Kirjoita numero ja <Enter> tai valitse hiirellä (tyhjä peruu): "
+msgstr "Kirjoita numero ja <Enter> tai valitse hiirellä (tyhjä peruu): "
 
 msgid "Type number and <Enter> (empty cancels): "
-msgstr "Valitse numero ja <Enter> (tyhjä peruu): "
+msgstr "Valitse numero ja <Enter> (tyhjä peruu): "
 
 msgid "1 more line"
-msgstr "1 rivi lisää"
+msgstr "1 rivi lisää"
 
 msgid "1 line less"
-msgstr "1 rivi vähemmän"
+msgstr "1 rivi vähemmän"
 
 #, c-format
 msgid "%ld more lines"
-msgstr "%ld riviä lisää"
+msgstr "%ld riviä lisää"
 
 #, c-format
 msgid "%ld fewer lines"
-msgstr "%ld riviä vähemmän"
+msgstr "%ld riviä vähemmän"
 
 msgid " (Interrupted)"
 msgstr " (Keskeytetty)"
@@ -3947,14 +3921,6 @@ msgstr " (Keskeytetty)"
 msgid "Beep!"
 msgstr "Piip!"
 
-msgid "Vim: preserving files...\n"
-msgstr "Vim: säästetään tiedostoja...\n"
-
-#. close all memfiles, without deleting
-msgid "Vim: Finished.\n"
-msgstr "Vim: Valmis.\n"
-
-#, c-format
 msgid "ERROR: "
 msgstr "VIRHE: "
 
@@ -3964,7 +3930,7 @@ msgid ""
 "[bytes] total alloc-freed %lu-%lu, in use %lu, peak use %lu\n"
 msgstr ""
 "\n"
-"[tavua] yht. alloc-free %lu-%lu, käytössä %lu, käyttöhuippu %lu\n"
+"[tavua] yht. alloc-free %lu-%lu, käytössä %lu, käyttöhuippu %lu\n"
 
 #, c-format
 msgid ""
@@ -3975,11 +3941,11 @@ msgstr ""
 "\n"
 
 msgid "E340: Line is becoming too long"
-msgstr "E340: Rivistä tulee liian pitkä"
+msgstr "E340: Rivistä tulee liian pitkä"
 
 #, c-format
 msgid "E341: Internal error: lalloc(%ld, )"
-msgstr "E341: Sisäinen virhe: lalloc(%ld, )"
+msgstr "E341: Sisäinen virhe: lalloc(%ld, )"
 
 #, c-format
 msgid "E342: Out of memory!  (allocating %lu bytes)"
@@ -3999,19 +3965,13 @@ msgid "E547: Illegal mouseshape"
 msgstr "E547: Virheellinen hiiren muoto"
 
 msgid "E548: digit expected"
-msgstr "E548: pitää olla numero"
+msgstr "E548: pitää olla numero"
 
 msgid "E549: Illegal percentage"
 msgstr "E549: Virheellinen prosenttiluku"
 
-msgid "Enter encryption key: "
-msgstr "Anna salausavain: "
-
-msgid "Enter same key again: "
-msgstr "Anna sama avain uudestaan: "
-
-msgid "Keys don't match!"
-msgstr "Avaimet eivät täsmää!"
+msgid "E854: path too long for completion"
+msgstr "E854: polku on liian pitkä täydennykseen"
 
 #, c-format
 msgid ""
@@ -4023,51 +3983,46 @@ msgstr ""
 
 #, c-format
 msgid "E344: Can't find directory \"%s\" in cdpath"
-msgstr "E344: Hakemistoa %s ei löydy cdpathista"
+msgstr "E344: Hakemistoa %s ei löydy cdpathista"
 
 #, c-format
 msgid "E345: Can't find file \"%s\" in path"
-msgstr "E345: Tiedostoa %s ei löydy polulta"
+msgstr "E345: Tiedostoa %s ei löydy polulta"
 
 #, c-format
 msgid "E346: No more directory \"%s\" found in cdpath"
-msgstr "E346: Hakemisto %s ei ole enää cdpathissa"
+msgstr "E346: Hakemisto %s ei ole enää cdpathissa"
 
 #, c-format
 msgid "E347: No more file \"%s\" found in path"
-msgstr "E347: Tiedosto %s ei ole enää polulla"
-
-msgid "Cannot connect to Netbeans #2"
-msgstr "Ei voi yhdistää Netbeans #2:een"
-
-msgid "Cannot connect to Netbeans"
-msgstr "Ei voi yhdistää Netbeansiin"
+msgstr "E347: Tiedosto %s ei ole enää polulla"
 
 #, c-format
 msgid "E668: Wrong access mode for NetBeans connection info file: \"%s\""
-msgstr "E668: Väärä avaustila NetBeans-yhteyden infotiedostolle: %s"
-
-msgid "read from Netbeans socket"
-msgstr "luettu Netbeans-soketista"
+msgstr "E668: Väärä avaustila NetBeans-yhteyden infotiedostolle: %s"
 
 #, c-format
 msgid "E658: NetBeans connection lost for buffer %ld"
 msgstr "E658: NetBeans-yhteys katkesi puskurille %ld"
 
+msgid "E838: netbeans is not supported with this GUI"
+msgstr "E838: netbeans ei toimi tässä käyttöliittymässä"
+
 msgid "E511: netbeans already connected"
 msgstr "E511: netbeans on yhdistetty jo"
 
-msgid "E505: "
-msgstr "E505: "
+#, c-format
+msgid "E505: %s is read-only (add ! to override)"
+msgstr "E505: %s on kirjoitussuojattu (lisää komentoon ! ohittaaksesi)"
 
 msgid "E349: No identifier under cursor"
 msgstr "E349: Ei tunnistetta osoittimen alla"
 
 msgid "E774: 'operatorfunc' is empty"
-msgstr "E774: operatorfunc on tyhjä"
+msgstr "E774: operatorfunc on tyhjä"
 
 msgid "E775: Eval feature not available"
-msgstr "E775: Eval ei ole käytettävissä"
+msgstr "E775: Eval ei ole käytettävissä"
 
 msgid "Warning: terminal cannot highlight"
 msgstr "Varoitus: terminaalista puuttuu korostus"
@@ -4076,10 +4031,10 @@ msgid "E348: No string under cursor"
 msgstr "E348: Ei merkkijonoa kursorin alla"
 
 msgid "E352: Cannot erase folds with current 'foldmethod'"
-msgstr "E352: taitoksia ei voi poistaa tällä foldmethodilla"
+msgstr "E352: taitoksia ei voi poistaa tällä foldmethodilla"
 
 msgid "E664: changelist is empty"
-msgstr "E664: muutoslista on tyhjä"
+msgstr "E664: muutoslista on tyhjä"
 
 msgid "E662: At start of changelist"
 msgstr "E662: Muutoslistan alussa"
@@ -4092,33 +4047,33 @@ msgstr "Komento :quit<Enter> lopettaa Vi
 
 #, c-format
 msgid "1 line %sed 1 time"
-msgstr "1 riviä %s kerran"
+msgstr "1 riviä %s kerran"
 
 #, c-format
 msgid "1 line %sed %d times"
-msgstr "1 riviä %s %d kertaa"
+msgstr "1 riviä %s %d kertaa"
 
 #, c-format
 msgid "%ld lines %sed 1 time"
-msgstr "%ld riviä %s kerran"
+msgstr "%ld riviä %s kerran"
 
 #, c-format
 msgid "%ld lines %sed %d times"
-msgstr "%ld riviä %s %d kertaa"
+msgstr "%ld riviä %s %d kertaa"
 
 #, c-format
 msgid "%ld lines to indent... "
-msgstr "%ld riviä sisennettävänä..."
+msgstr "%ld riviä sisennettävänä..."
 
 msgid "1 line indented "
 msgstr "1 rivi sisennetty "
 
 #, c-format
 msgid "%ld lines indented "
-msgstr "%ld riviä sisennetty "
+msgstr "%ld riviä sisennetty "
 
 msgid "E748: No previously used register"
-msgstr "E748: Ei aiemmin käytettyjä rekisterejä"
+msgstr "E748: Ei aiemmin käytettyjä rekisterejä"
 
 #. must display the prompt
 msgid "cannot yank; delete anyway"
@@ -4129,11 +4084,11 @@ msgstr "1 rivi muuttui"
 
 #, c-format
 msgid "%ld lines changed"
-msgstr "%ld riviä muuttui"
+msgstr "%ld riviä muuttui"
 
 #, c-format
 msgid "freeing %ld lines"
-msgstr "vapautetaan %ld riviä"
+msgstr "vapautetaan %ld riviä"
 
 msgid "block of 1 line yanked"
 msgstr "1 rivin lohko kopioitu"
@@ -4143,15 +4098,15 @@ msgstr "1 rivi kopioitu"
 
 #, c-format
 msgid "block of %ld lines yanked"
-msgstr "lohko %ld riviltä kopioitu"
+msgstr "lohko %ld riviltä kopioitu"
 
 #, c-format
 msgid "%ld lines yanked"
-msgstr "%ld riviä kopioitu"
+msgstr "%ld riviä kopioitu"
 
 #, c-format
 msgid "E353: Nothing in register %s"
-msgstr "E353: Rekisterissä %s ei ole mitään"
+msgstr "E353: Rekisterissä %s ei ole mitään"
 
 #. Highlight title
 msgid ""
@@ -4175,29 +4130,38 @@ msgstr ""
 msgid "E574: Unknown register type %d"
 msgstr "E574: Tuntematon rekisterityyppi %d"
 
+msgid ""
+"E883: search pattern and expression register may not contain two or more "
+"lines"
+msgstr ""
+"E883: hakulauseke- ja -ilmausrekisteri ei voi sisältää kahta tai useampaa "
+"riviä"
+
 #, c-format
 msgid "%ld Cols; "
 msgstr "%ld saraketta, "
 
 #, c-format
-msgid "Selected %s%ld of %ld Lines; %ld of %ld Words; %ld of %ld Bytes"
-msgstr "Valittu %s%ld/%ld riviä, %ld/%ld sanaa, %ld/%ld tavua"
+msgid "Selected %s%ld of %ld Lines; %lld of %lld Words; %lld of %lld Bytes"
+msgstr "Valittu %s%ld/%ld riviä, %lld/%lld sanaa, %lld/%lld tavua"
 
 #, c-format
 msgid ""
-"Selected %s%ld of %ld Lines; %ld of %ld Words; %ld of %ld Chars; %ld of %ld "
-"Bytes"
-msgstr "Valittu %s%ld/%ld riviä, %ld/%ld sanaa, %ld/%ld merkkiä, %ld/%ld tavua"
-
-#, c-format
-msgid "Col %s of %s; Line %ld of %ld; Word %ld of %ld; Byte %ld of %ld"
-msgstr "Sarake %s/%s, Rivi %ld/%ld, sana %ld/%ld, tavu %ld/%ld"
+"Selected %s%ld of %ld Lines; %lld of %lld Words; %lld of %lld Chars; %lld of "
+"%lld Bytes"
+msgstr "Valittu %s%ld/%ld riviä, %lld/%lld sanaa, %lld/%lld merkkiä, "
+"%lld/%lld tavua"
+
+#, c-format
+msgid "Col %s of %s; Line %ld of %ld; Word %lld of %lld; Byte %lld of %lld"
+msgstr "Sarake %s/%s, Rivi %ld/%ld, sana %lld/%lld, tavu %lld/%lld"
 
 #, c-format
 msgid ""
-"Col %s of %s; Line %ld of %ld; Word %ld of %ld; Char %ld of %ld; Byte %ld of "
-"%ld"
-msgstr "Sarake %s/%s, rivi %ld/%ld, sana %ld/%ld, merkki %ld/%ld, tavu %ld/%ld"
+"Col %s of %s; Line %ld of %ld; Word %lld of %lld; Char %lld of %lld; Byte "
+"%lld of %lld"
+msgstr "Sarake %s/%s, rivi %ld/%ld, sana %lld/%lld, merkki %lld/%lld, tavu "
+"%lld/%lld"
 
 # Unicode Byte Order Mark
 #, c-format
@@ -4208,7 +4172,7 @@ msgid "%<%f%h%m%=Page %N"
 msgstr "%<%f%h%m%=Sivu %N"
 
 msgid "Thanks for flying Vim"
-msgstr "Kiitos että ajoit Vimiä"
+msgstr "Kiitos että ajoit Vimiä"
 
 msgid "E518: Unknown option"
 msgstr "E518: Tuntematon asetus"
@@ -4217,10 +4181,13 @@ msgid "E519: Option not supported"
 msgstr "E519: Asetusta ei tueta"
 
 msgid "E520: Not allowed in a modeline"
-msgstr "E520: Ei sallitu modeline-rivillä"
+msgstr "E520: Ei sallitu modeline-rivillä"
+
+msgid "E846: Key code not set"
+msgstr "E846: Avainkoodi puuttuu"
 
 msgid "E521: Number required after ="
-msgstr "E521: =:n jälkeen tarvitaan luku"
+msgstr "E521: =:n jälkeen tarvitaan luku"
 
 msgid "E522: Not found in termcap"
 msgstr "E522: Puuttuu termcapista"
@@ -4229,14 +4196,18 @@ msgstr "E522: Puuttuu termcapista"
 msgid "E539: Illegal character <%s>"
 msgstr "E539: Virheellinen merkki <%s>"
 
+#, c-format
+msgid "For option %s"
+msgstr "Asetukselle %s"
+
 msgid "E529: Cannot set 'term' to empty string"
-msgstr "E529: Termiä ei voi asettaa tyhjäksi merkkijonoksi"
+msgstr "E529: Termiä ei voi asettaa tyhjäksi merkkijonoksi"
 
 msgid "E530: Cannot change term in GUI"
-msgstr "E530: Ei voi vaihtaa termiä GUIssa"
+msgstr "E530: Ei voi vaihtaa termiä GUIssa"
 
 msgid "E531: Use \":gui\" to start the GUI"
-msgstr "E531: Käytä komentoa :gui GUIn käynnistämiseen"
+msgstr "E531: Käytä komentoa :gui GUIn käynnistämiseen"
 
 msgid "E589: 'backupext' and 'patchmode' are equal"
 msgstr "E589: backupext ja patchmod ovat samat"
@@ -4258,16 +4229,16 @@ msgstr "E525: Nollan pituinen merkkijono
 
 #, c-format
 msgid "E526: Missing number after <%s>"
-msgstr "E526: Lukuarvo puuttuu merkkijonon <%s> jälkeen"
+msgstr "E526: Lukuarvo puuttuu merkkijonon <%s> jälkeen"
 
 msgid "E527: Missing comma"
 msgstr "E527: Pilkku puuttuu"
 
 msgid "E528: Must specify a ' value"
-msgstr "E528: '-arvo pitää antaa"
+msgstr "E528: '-arvo pitää antaa"
 
 msgid "E595: contains unprintable or wide character"
-msgstr "E595: Sisältää tulostumattomia tai leveitä merkkejä"
+msgstr "E595: Sisältää tulostumattomia tai leveitä merkkejä"
 
 msgid "E596: Invalid font(s)"
 msgstr "E596: Viallisia fontteja"
@@ -4279,24 +4250,24 @@ msgid "E598: Invalid fontset"
 msgstr "E598: Viallinen fontset"
 
 msgid "E533: can't select wide font"
-msgstr "E533: Leveän fontin valinta ei onnistu"
+msgstr "E533: Leveän fontin valinta ei onnistu"
 
 msgid "E534: Invalid wide font"
-msgstr "E534: Viallinen leveä fontti"
+msgstr "E534: Viallinen leveä fontti"
 
 #, c-format
 msgid "E535: Illegal character after <%c>"
-msgstr "E535: Virheellinen merkki merkin <%c> jälkeen"
+msgstr "E535: Virheellinen merkki merkin <%c> jälkeen"
 
 msgid "E536: comma required"
 msgstr "E536: pilkku puuttuu"
 
 #, c-format
 msgid "E537: 'commentstring' must be empty or contain %s"
-msgstr "E537: commentstringin pitää olla tyhjä tai sisältää %s"
+msgstr "E537: commentstringin pitää olla tyhjä tai sisältää %s"
 
 msgid "E538: No mouse support"
-msgstr "E538: Hiirtä ei tueta"
+msgstr "E538: Hiirtä ei tueta"
 
 msgid "E540: Unclosed expression sequence"
 msgstr "E540: Sulkematon lausekesarja"
@@ -4305,17 +4276,17 @@ msgid "E541: too many items"
 msgstr "E541: liikaa kohteita"
 
 msgid "E542: unbalanced groups"
-msgstr "E542: epätasapainoisia ryhmiä"
+msgstr "E542: epätasapainoisia ryhmiä"
 
 msgid "E590: A preview window already exists"
 msgstr "E590: Esikatseluikkuna on jo olemassa"
 
 msgid "W17: Arabic requires UTF-8, do ':set encoding=utf-8'"
-msgstr "W17: Arabialle pitää olla UTF-8:aa, aseta :set encoding=utf-8"
+msgstr "W17: Arabialle pitää olla UTF-8:aa, aseta :set encoding=utf-8"
 
 #, c-format
 msgid "E593: Need at least %d lines"
-msgstr "E593: Tarvitaan ainakin %d riviä"
+msgstr "E593: Tarvitaan ainakin %d riviä"
 
 #, c-format
 msgid "E594: Need at least %d columns"
@@ -4365,11 +4336,11 @@ msgstr "E356: get_varp-virhe"
 
 #, c-format
 msgid "E357: 'langmap': Matching character missing for %s"
-msgstr "E357: langmap: Merkkiin %s täsmäävä merkki puuttuu"
+msgstr "E357: langmap: Merkkiin %s täsmäävä merkki puuttuu"
 
 #, c-format
 msgid "E358: 'langmap': Extra characters after semicolon: %s"
-msgstr "E358: langmap: ylimääräisiä merkkejä puolipisteen jälkeen: %s"
+msgstr "E358: langmap: ylimääräisiä merkkejä puolipisteen jälkeen: %s"
 
 msgid "cannot open "
 msgstr "ei voi avata "
@@ -4385,7 +4356,7 @@ msgid "Need %s version %ld\n"
 msgstr "Tarvitaan %s versio %ld\n"
 
 msgid "Cannot open NIL:\n"
-msgstr "Ei voi avata NILiä:\n"
+msgstr "Ei voi avata NILiä:\n"
 
 msgid "Cannot create "
 msgstr "Ei voi luoda "
@@ -4426,7 +4397,7 @@ msgid "'columns' is not 80, cannot execu
 msgstr "columns ei ole 80, ei voi suorittaa ulkoista komentoa"
 
 msgid "E237: Printer selection failed"
-msgstr "E237: Tulostimen valinta epäonnistui"
+msgstr "E237: Tulostimen valinta epäonnistui"
 
 #, c-format
 msgid "to %s on %s"
@@ -4446,26 +4417,19 @@ msgstr "Tulostetaan %s"
 
 #, c-format
 msgid "E244: Illegal charset name \"%s\" in font name \"%s\""
-msgstr "E244: Virheellinen merkistön nimi %s fontin nimessä %s"
+msgstr "E244: Virheellinen merkistön nimi %s fontin nimessä %s"
+
+#, c-format
+msgid "E244: Illegal quality name \"%s\" in font name \"%s\""
+msgstr "E244: Virheellinen laatunimi %s fontin nimessä %s"
 
 #, c-format
 msgid "E245: Illegal char '%c' in font name \"%s\""
-msgstr "E245: Virheellinen merkki %c fontin nimessä %s"
-
-msgid "Vim: Double signal, exiting\n"
-msgstr "Vim: Kaksoissignaali, lopetetaan\n"
-
-#, c-format
-msgid "Vim: Caught deadly signal %s\n"
-msgstr "Vim: Tappava signaali %s\n"
-
-#, c-format
-msgid "Vim: Caught deadly signal\n"
-msgstr "Vim: Tappava signaali\n"
+msgstr "E245: Virheellinen merkki %c fontin nimessä %s"
 
 #, c-format
 msgid "Opening the X display took %ld msec"
-msgstr "X-näytön avaus vei %ld millisekuntia"
+msgstr "X-näytön avaus vei %ld millisekuntia"
 
 msgid ""
 "\n"
@@ -4475,12 +4439,12 @@ msgstr ""
 "Vim: X-virhe\n"
 
 msgid "Testing the X display failed"
-msgstr "X-näytön testaus epäonnistui"
+msgstr "X-näytön testaus epäonnistui"
 
 msgid "Opening the X display timed out"
-msgstr "X-näytön avaus aikakatkaistiin"
-
-# mikä security context?
+msgstr "X-näytön avaus aikakatkaistiin"
+
+# mikä security context?
 msgid ""
 "\n"
 "Could not get security context for "
@@ -4495,12 +4459,16 @@ msgstr ""
 "\n"
 "Ei voitu asettaa turvallisuuskontekstia kohteelle "
 
-msgid ""
-"\n"
-"Cannot execute shell "
-msgstr ""
-"\n"
-"Kuoren suoritus ei onnistu "
+#, c-format
+msgid "Could not set security context %s for %s"
+msgstr ""
+"Ei voitu asettaa turvallisuuskontekstia %s kohteelle %s"
+
+# mikä security context?
+#, c-format
+msgid "Could not get security context %s for %s. Removing it!"
+msgstr ""
+"Ei saatu turvallisuuskontekstia %s kohteelle %s ja se poistetaan"
 
 msgid ""
 "\n"
@@ -4521,7 +4489,7 @@ msgid ""
 "Cannot create pipes\n"
 msgstr ""
 "\n"
-"Putkia ei voi tehdä\n"
+"Putkia ei voi tehdä\n"
 
 msgid ""
 "\n"
@@ -4532,6 +4500,13 @@ msgstr ""
 
 msgid ""
 "\n"
+"Cannot execute shell "
+msgstr ""
+"\n"
+"Kuoren suoritus ei onnistu "
+
+msgid ""
+"\n"
 "Command terminated\n"
 msgstr ""
 "\n"
@@ -4545,36 +4520,32 @@ msgid "dlerror = \"%s\""
 msgstr "dlerror = %s"
 
 msgid "Opening the X display failed"
-msgstr "X-näytön avaus epäonnistui"
+msgstr "X-näytön avaus epäonnistui"
 
 msgid "XSMP handling save-yourself request"
-msgstr "XSMP käsittelee save-yourself-pyyntöä"
+msgstr "XSMP käsittelee save-yourself-pyyntöä"
 
 msgid "XSMP opening connection"
-msgstr "XSMP avaa yhteyttä"
+msgstr "XSMP avaa yhteyttä"
 
 msgid "XSMP ICE connection watch failed"
-msgstr "XSMP:n ICE-yhteyden tarkkailu epäonnistui"
+msgstr "XSMP:n ICE-yhteyden tarkkailu epäonnistui"
 
 #, c-format
 msgid "XSMP SmcOpenConnection failed: %s"
-msgstr "XSMP SmcOpenConnection epäonnistui: %s"
+msgstr "XSMP SmcOpenConnection epäonnistui: %s"
 
 msgid "At line"
-msgstr "Rivillä"
+msgstr "Rivillä"
 
 msgid "Could not load vim32.dll!"
-msgstr "Vim32.dll:ää ei voitu ladata"
+msgstr "Vim32.dll:ää ei voitu ladata"
 
 msgid "VIM Error"
 msgstr "VIM-virhe"
 
 msgid "Could not fix up function pointers to the DLL!"
-msgstr "Ei voitu korjata funktio-osoittimia DLL:ssä"
-
-#, c-format
-msgid "shell returned %d"
-msgstr "kuori palautti arvon %d"
+msgstr "Ei voitu korjata funktio-osoittimia DLL:ssä"
 
 #, c-format
 msgid "Vim: Caught %s event\n"
@@ -4590,21 +4561,25 @@ msgid "shutdown"
 msgstr "sammutus"
 
 msgid "E371: Command not found"
-msgstr "E371: Komentoa ei löydy"
+msgstr "E371: Komentoa ei löydy"
 
 msgid ""
 "VIMRUN.EXE not found in your $PATH.\n"
 "External commands will not pause after completion.\n"
 "See  :help win32-vimrun  for more information."
 msgstr ""
-"VIMRUN.EXEä ei löydy muuttujasta $PATH.\n"
-"Ulkoiset komennot eivät pysähdy suorituksen lopussa.\n"
-"Lisätietoja komennolla  :help win32-vimrun"
+"VIMRUN.EXEä ei löydy muuttujasta $PATH.\n"
+"Ulkoiset komennot eivät pysähdy suorituksen lopussa.\n"
+"Lisätietoja komennolla  :help win32-vimrun"
 
 msgid "Vim Warning"
 msgstr "Vim-varoitus"
 
 #, c-format
+msgid "shell returned %d"
+msgstr "kuori palautti arvon %d"
+
+#, c-format
 msgid "E372: Too many %%%c in format string"
 msgstr "E372: Liikaa %%%c-juttuja muotoilumerkkijonossa"
 
@@ -4627,14 +4602,24 @@ msgstr "E376: Virheellinen %%%c muotoilu
 msgid "E377: Invalid %%%c in format string"
 msgstr "E377: Virheellinen %%%c muotoilumerkkijonossa"
 
+#. nothing found
 msgid "E378: 'errorformat' contains no pattern"
 msgstr "E378: errorformatissa ei ole kuvioita"
 
 msgid "E379: Missing or empty directory name"
-msgstr "E379: Puuttuva tai tyhjä hakemiston nimi"
+msgstr "E379: Puuttuva tai tyhjä hakemiston nimi"
 
 msgid "E553: No more items"
-msgstr "E553: Ei enää kohteita"
+msgstr "E553: Ei enää kohteita"
+
+msgid "E924: Current window was closed"
+msgstr "E924: Nykyinen ikkuna on suljettu"
+
+msgid "E925: Current quickfix was changed"
+msgstr "E925: Nykyinen quickfix on muuttunut"
+
+msgid "E926: Current location list was changed"
+msgstr "E926: Nykyinen sijaintiluettelo on muuttunut"
 
 #, c-format
 msgid "(%d of %d)%s%s: "
@@ -4643,15 +4628,18 @@ msgstr "(%d/%d)%s%s: "
 msgid " (line deleted)"
 msgstr " (rivi poistettu)"
 
+#, c-format
+msgid "%serror list %d of %d; %d errors "
+msgstr "%svirhelista %d/%d, %d virhettä"
+
 msgid "E380: At bottom of quickfix stack"
 msgstr "E380: quickfix-pinon pohjalla"
 
 msgid "E381: At top of quickfix stack"
 msgstr "E381: quickfix-pinon huipulla"
 
-#, c-format
-msgid "error list %d of %d; %d errors"
-msgstr "virhelista %d/%d, %d virhettä"
+msgid "No entries"
+msgstr "Ei kenttiä"
 
 msgid "E382: Cannot write, 'buftype' option is set"
 msgstr "E382: Ei voi kirjoittaa, buftype asetettu"
@@ -4670,24 +4658,15 @@ msgid "E681: Buffer is not loaded"
 msgstr "E681: Puskuria ei ole ladattu"
 
 msgid "E777: String or List expected"
-msgstr "E777: Pitää olla merkkijono tai lista"
+msgstr "E777: Pitää olla merkkijono tai lista"
 
 #, c-format
 msgid "E369: invalid item in %s%%[]"
 msgstr "E369: virheellinen olio kohdassa %s%%[]"
 
-msgid "E339: Pattern too long"
-msgstr "E339: Liian pitkä kuvio"
-
-msgid "E50: Too many \\z("
-msgstr "E50: Liikaa merkkejä \\z("
-
-#, c-format
-msgid "E51: Too many %s("
-msgstr "E51: Liikaa merkkejä %s("
-
-msgid "E52: Unmatched \\z("
-msgstr "E52: Pariton \\z("
+#, c-format
+msgid "E769: Missing ] after %s["
+msgstr "E769: ] puuttuu merkinnän %s[ jäljestä"
 
 #, c-format
 msgid "E53: Unmatched %s%%("
@@ -4701,9 +4680,36 @@ msgstr "E54: Pariton %s("
 msgid "E55: Unmatched %s)"
 msgstr "E55: Pariton %s)"
 
+msgid "E66: \\z( not allowed here"
+msgstr "E66: \\z( ei ole sallittu tässä"
+
+msgid "E67: \\z1 et al. not allowed here"
+msgstr "E67: \\z1 jne. ei ole sallittu tässä"
+
+#, c-format
+msgid "E69: Missing ] after %s%%["
+msgstr "E69: ] puuttuu merkinnän %s%%[ jäljestä"
+
+#, c-format
+msgid "E70: Empty %s%%[]"
+msgstr "E70: Tyhjä %s%%[]"
+
+msgid "E339: Pattern too long"
+msgstr "E339: Liian pitkä kuvio"
+
+msgid "E50: Too many \\z("
+msgstr "E50: Liikaa merkkejä \\z("
+
+#, c-format
+msgid "E51: Too many %s("
+msgstr "E51: Liikaa merkkejä %s("
+
+msgid "E52: Unmatched \\z("
+msgstr "E52: Pariton \\z("
+
 #, c-format
 msgid "E59: invalid character after %s@"
-msgstr "E59: virheellinen merkki kohdan %s@ jälkeen"
+msgstr "E59: virheellinen merkki kohdan %s@ jälkeen"
 
 #, c-format
 msgid "E60: Too many complex %s{...}s"
@@ -4711,57 +4717,126 @@ msgstr "E60: Liikaa monimutkaisia ilmauk
 
 #, c-format
 msgid "E61: Nested %s*"
-msgstr "E61: Sisäkkäistetty %s*"
+msgstr "E61: Sisäkkäistetty %s*"
 
 #, c-format
 msgid "E62: Nested %s%c"
-msgstr "E62: Sisäkkäistetty %s%c"
+msgstr "E62: Sisäkkäistetty %s%c"
 
 msgid "E63: invalid use of \\_"
-msgstr "E63: väärinkäytetty \\_"
+msgstr "E63: väärinkäytetty \\_"
 
 #, c-format
 msgid "E64: %s%c follows nothing"
-msgstr "E64: %s%c jälkeen ei minkään"
+msgstr "E64: %s%c jälkeen ei minkään"
 
 msgid "E65: Illegal back reference"
-msgstr "E65: Virheellinen täsmäysviittaus"
-
-msgid "E66: \\z( not allowed here"
-msgstr "E66: \\z( ei ole sallittu tässä"
-
-msgid "E67: \\z1 et al. not allowed here"
-msgstr "E67: \\z1 jne. ei ole sallittu tässä"
+msgstr "E65: Virheellinen täsmäysviittaus"
 
 msgid "E68: Invalid character after \\z"
-msgstr "E68: Virheellinen merkki ilmauksen \\z jälkeen"
-
-#, c-format
-msgid "E69: Missing ] after %s%%["
-msgstr "E69: ] puuttuu merkinnän %s%%[ jäljestä"
-
-#, c-format
-msgid "E70: Empty %s%%[]"
-msgstr "E70: Tyhjä %s%%[]"
+msgstr "E68: Virheellinen merkki ilmauksen \\z jälkeen"
 
 #, c-format
 msgid "E678: Invalid character after %s%%[dxouU]"
-msgstr "E678: Virheellinen merkki merkinnän %s%%[dxouU] jäljessä"
+msgstr "E678: Virheellinen merkki merkinnän %s%%[dxouU] jäljessä"
 
 #, c-format
 msgid "E71: Invalid character after %s%%"
-msgstr "E71: Virheellinen merkki merkinnän %s%% jäljessä"
-
-#, c-format
-msgid "E769: Missing ] after %s["
-msgstr "E769: ] puuttuu merkinnän %s[ jäljestä"
+msgstr "E71: Virheellinen merkki merkinnän %s%% jäljessä"
 
 #, c-format
 msgid "E554: Syntax error in %s{...}"
 msgstr "E554: Syntaksivirhe ilmauksessa %s{...}"
 
 msgid "External submatches:\n"
-msgstr "Ulkoisia alitäsmäyksiä:\n"
+msgstr "Ulkoisia alitäsmäyksiä:\n"
+
+#, c-format
+msgid "E888: (NFA regexp) cannot repeat %s"
+msgstr "E888: (NFA-säänn. ilmaus) ei voi toistaa kohdetta %s"
+
+msgid ""
+"E864: \\%#= can only be followed by 0, 1, or 2. The automatic engine will be "
+"used "
+msgstr ""
+"E864: \\%#=-merkkien perään voi tulla vain 0, 1 tai 2. Käytetään "
+"automaattista engineä "
+
+msgid "Switching to backtracking RE engine for pattern: "
+msgstr "Vaihdetaan käyttämään backtrackkaavaa RE-engineä ilmaukselle: "
+
+msgid "E865: (NFA) Regexp end encountered prematurely"
+msgstr "E865: (NFA) Säännöllisen ilmauksen ennenaikainen loppu"
+
+#, c-format
+msgid "E866: (NFA regexp) Misplaced %c"
+msgstr "E866: (NFA-regexp) %c väärässä paikassa"
+
+#, c-format
+msgid "E877: (NFA regexp) Invalid character class: %ld"
+msgstr "E877: (NFA regexp) Virheellinen merkkiluokka: %ld"
+
+#, c-format
+msgid "E867: (NFA) Unknown operator '\\z%c'"
+msgstr "E867: (NFA) Tuntematon operaattori '\\z%c'"
+
+#, c-format
+msgid "E867: (NFA) Unknown operator '\\%%%c'"
+msgstr "E867: (NFA) Tuntematon operaattori '\\%%%c'"
+
+#. should never happen
+msgid "E868: Error building NFA with equivalence class!"
+msgstr "E868: Virhe NFA:n ekvivalenssiluokkia tekemisessä"
+
+#, c-format
+msgid "E869: (NFA) Unknown operator '\\@%c'"
+msgstr "E869: (NFA) Tuntematon operaattori '\\@%c'"
+
+msgid "E870: (NFA regexp) Error reading repetition limits"
+msgstr "E870: (NFA regexp) Virhe luettaessa toiston määriä"
+
+#. Can't have a multi follow a multi.
+msgid "E871: (NFA regexp) Can't have a multi follow a multi !"
+msgstr "E871: (NFA regexp) Multi ei voi seurata multia"
+
+#. Too many `('
+msgid "E872: (NFA regexp) Too many '('"
+msgstr "E872: (NFA regexp) Liian monta suljetta '('"
+
+msgid "E879: (NFA regexp) Too many \\z("
+msgstr"E879: (NFA regexp) Liikaa merkkejä \\z("
+
+msgid "E873: (NFA regexp) proper termination error"
+msgstr "E873: (NFA regexp) oikea lopetusvirhe"
+
+msgid "E874: (NFA) Could not pop the stack !"
+msgstr "E874: (NFA) Ei voida poistaa pinosta"
+
+msgid ""
+"E875: (NFA regexp) (While converting from postfix to NFA), too many states "
+"left on stack"
+msgstr ""
+"E875: (NFA regexp) (Muunnettaessa postfixistä NFA:ksi), liikaa "
+"tiloja jäljellä pinossa"
+
+msgid "E876: (NFA regexp) Not enough space to store the whole NFA "
+msgstr "E876: (NFA regexp) Tila ei riitä NFA:n tallentamiseen"
+
+msgid "E878: (NFA) Could not allocate memory for branch traversal!"
+msgstr "E878: (NFA) Ei voitu allokoida muistia polkujen läpikäyntiin"
+
+msgid ""
+"Could not open temporary log file for writing, displaying on stderr ... "
+msgstr ""
+"Ei voitu avata väliaikaislokitiedosta kirjoittamista varten, joten virheet "
+"näytetään vakiovirhevirrassa. "
+
+#, c-format
+msgid "(NFA) COULD NOT OPEN %s !"
+msgstr "(NFA) EI VOI AVATA KOHDETTA %s"
+
+msgid "Could not open temporary log file for writing "
+msgstr "Väliaikaislokitiedoston avaus kirjoittamista varten ei onnistu"
 
 # tiloja
 msgid " VREPLACE"
@@ -4771,13 +4846,13 @@ msgid " REPLACE"
 msgstr " KORVAUS"
 
 msgid " REVERSE"
-msgstr " KÄÄNTEIS"
+msgstr " KÄÄNTEIS"
 
 msgid " INSERT"
-msgstr " SYÖTTÖ"
+msgstr " SYÖTTÖ"
 
 msgid " (insert)"
-msgstr " (syöttö)"
+msgstr " (syöttö)"
 
 msgid " (replace)"
 msgstr " (korvaus)"
@@ -4791,9 +4866,6 @@ msgstr " Heprea"
 msgid " Arabic"
 msgstr " Arabia"
 
-msgid " (lang)"
-msgstr " (kieli)"
-
 msgid " (paste)"
 msgstr " (liitos)"
 
@@ -4824,24 +4896,24 @@ msgstr "E383: Viallinen hakujono: %s"
 
 #, c-format
 msgid "E384: search hit TOP without match for: %s"
-msgstr "E384: Haku pääsi alkuun löytämättä jonoa: %s"
+msgstr "E384: Haku pääsi alkuun löytämättä jonoa: %s"
 
 #, c-format
 msgid "E385: search hit BOTTOM without match for: %s"
-msgstr "E385: Haku pääsi loppuun löytämättä jonoa: %s"
+msgstr "E385: Haku pääsi loppuun löytämättä jonoa: %s"
 
 msgid "E386: Expected '?' or '/'  after ';'"
-msgstr "E386: ;:n jälkeen pitää olla ? tai /"
+msgstr "E386: ;:n jälkeen pitää olla ? tai /"
 
 msgid " (includes previously listed match)"
-msgstr " (sisältää viimeksi luetellun täsmäyksen)"
+msgstr " (sisältää viimeksi luetellun täsmäyksen)"
 
 #. cursor at status line
 msgid "--- Included files "
-msgstr "--- Sisällytetyt tiedostot "
+msgstr "--- Sisällytetyt tiedostot "
 
 msgid "not found "
-msgstr "ei löytynyt "
+msgstr "ei löytynyt "
 
 msgid "in path ---\n"
 msgstr "polusta ---\n"
@@ -4850,30 +4922,30 @@ msgid "  (Already listed)"
 msgstr "  (Jo lueteltu)"
 
 msgid "  NOT FOUND"
-msgstr "  EI LÖYTYNYT"
+msgstr "  EI LÖYTYNYT"
 
 #, c-format
 msgid "Scanning included file: %s"
-msgstr "Haku sisälsi tiedoston: %s"
+msgstr "Haku sisälsi tiedoston: %s"
 
 #, c-format
 msgid "Searching included file %s"
-msgstr "Haku sisälsi tiedoston %s"
+msgstr "Haku sisälsi tiedoston %s"
 
 msgid "E387: Match is on current line"
-msgstr "E387: Täsmäys tällä rivillä"
+msgstr "E387: Täsmäys tällä rivillä"
 
 msgid "All included files were found"
-msgstr "Kaikki sisällytetyt rivit löytyivät"
+msgstr "Kaikki sisällytetyt rivit löytyivät"
 
 msgid "No included files"
-msgstr "Ei sisällytettyjä tiedostoja"
+msgstr "Ei sisällytettyjä tiedostoja"
 
 msgid "E388: Couldn't find definition"
-msgstr "E388: Määritelmä ei löydy"
+msgstr "E388: Määritelmä ei löydy"
 
 msgid "E389: Couldn't find pattern"
-msgstr "E389: kuvio ei löydy"
+msgstr "E389: kuvio ei löydy"
 
 msgid "Substitute "
 msgstr "Korvaa "
@@ -4888,35 +4960,64 @@ msgstr ""
 "# Edellinen %sHakulauseke:\n"
 "~"
 
-msgid "E759: Format error in spell file"
-msgstr "E759: Muotoiluvirhe oikolukutiedostossa"
+msgid "E756: Spell checking is not enabled"
+msgstr "E756: Oikaisuluku ei ole päällä"
+
+#, c-format
+msgid "Warning: Cannot find word list \"%s_%s.spl\" or \"%s_ascii.spl\""
+msgstr "Varoitus: Ei löydetty sanalistaa %s_%s.spl tai %s_ascii.spl"
+
+#, c-format
+msgid "Warning: Cannot find word list \"%s.%s.spl\" or \"%s.ascii.spl\""
+msgstr "Varoitus: Ei löydetty sanalistaa %s.%s.spl tai %s.ascii.spl"
+
+#, c-format
+msgid "Warning: region %s not supported"
+msgstr "Varoitus: osaa %s ei tueta"
+
+msgid "Sorry, no suggestions"
+msgstr "ei ehdotuksia"
+
+#, c-format
+msgid "Sorry, only %ld suggestions"
+msgstr "vain %ld ehdotusta"
+
+#. for when 'cmdheight' > 1
+#. avoid more prompt
+#, c-format
+msgid "Change \"%.*s\" to:"
+msgstr "Muuta %.*s:"
+
+#, c-format
+msgid " < \"%.*s\""
+msgstr " < %.*s"
+
+msgid "E752: No previous spell replacement"
+msgstr "E752: Ei edellistä oikaisulukukorjausta"
+
+#, c-format
+msgid "E753: Not found: %s"
+msgstr "E753: Ei löytynyt: %s"
 
 msgid "E758: Truncated spell file"
 msgstr "E758: Oikolukutiedosto katkaistu"
 
 #, c-format
 msgid "Trailing text in %s line %d: %s"
-msgstr "Tekstiä rivin perässä tiedostossa %s rivillä %d: %s"
+msgstr "Tekstiä rivin perässä tiedostossa %s rivillä %d: %s"
 
 #, c-format
 msgid "Affix name too long in %s line %d: %s"
-msgstr "Affiksin nimi on liian pitkä tiedostossa %s rivillä %d: %s"
+msgstr "Affiksin nimi on liian pitkä tiedostossa %s rivillä %d: %s"
 
 msgid "E761: Format error in affix file FOL, LOW or UPP"
 msgstr "E761: Affiksitiedoston FOL-, LOW- tai UPP-muotovirhe "
 
 msgid "E762: Character in FOL, LOW or UPP is out of range"
-msgstr "E762: Merkki FOL:ssä, LOW:ssä tai UPP:ssä ei kuulu arvoalueeseen"
+msgstr "E762: Merkki FOL:ssä, LOW:ssä tai UPP:ssä ei kuulu arvoalueeseen"
 
 msgid "Compressing word tree..."
-msgstr "Tiivistetään sanapuuta..."
-
-msgid "E756: Spell checking is not enabled"
-msgstr "E756: Oikaisuluku ei ole päällä"
-
-#, c-format
-msgid "Warning: Cannot find word list \"%s.%s.spl\" or \"%s.ascii.spl\""
-msgstr "Varoitus: Ei löydetty sanalistaa %s.%s.spl tai %s.ascii.spl"
+msgstr "Tiivistetään sanapuuta..."
 
 #, c-format
 msgid "Reading spell file \"%s\""
@@ -4926,7 +5027,7 @@ msgid "E757: This does not look like a s
 msgstr "E757: Ei vaikuta oikaisulukutiedostolta"
 
 msgid "E771: Old spell file, needs to be updated"
-msgstr "E771: Vanha oikaisulukutiedosto vaatii päivittämistä"
+msgstr "E771: Vanha oikaisulukutiedosto vaatii päivittämistä"
 
 msgid "E772: Spell file is for newer version of Vim"
 msgstr "E772: Oikaisulukutiedosto on uudemmalle Vimille"
@@ -4935,8 +5036,24 @@ msgid "E770: Unsupported section in spel
 msgstr "E770: Tukematon osio oikaisulukutiedostossa"
 
 #, c-format
-msgid "Warning: region %s not supported"
-msgstr "Varoitus: osaa %s ei tueta"
+msgid "E778: This does not look like a .sug file: %s"
+msgstr "E778: Ei vaikuta .sug-tiedostolta: %s"
+
+#, c-format
+msgid "E779: Old .sug file, needs to be updated: %s"
+msgstr "E779: Vanha .sug-tiedosto pitää päivittää: %s"
+
+#, c-format
+msgid "E780: .sug file is for newer version of Vim: %s"
+msgstr "E780: .sug-tiedosto on uudemmalle Vimille: %s"
+
+#, c-format
+msgid "E781: .sug file doesn't match .spl file: %s"
+msgstr "E781: .sug-tiedosto ei täsmää .spl-tiedostoon: %s"
+
+#, c-format
+msgid "E782: error while reading .sug file: %s"
+msgstr "E782: virhe luettaessa .sug-tiedostoa: %s"
 
 #, c-format
 msgid "Reading affix file %s ..."
@@ -4944,7 +5061,7 @@ msgstr "Luetaan affiksitiedostoa %s..."
 
 #, c-format
 msgid "Conversion failure for word in %s line %d: %s"
-msgstr "Muunnosvirhe sanalle %s rivillä %d: %s"
+msgstr "Muunnosvirhe sanalle %s rivillä %d: %s"
 
 #, c-format
 msgid "Conversion in %s not supported: from %s to %s"
@@ -4956,88 +5073,88 @@ msgstr "Muutosta kohteessa %s ei tueta"
 
 #, c-format
 msgid "Invalid value for FLAG in %s line %d: %s"
-msgstr "Tuntematon FLAG kohteessa %s rivillä %d: %s"
+msgstr "Tuntematon FLAG kohteessa %s rivillä %d: %s"
 
 #, c-format
 msgid "FLAG after using flags in %s line %d: %s"
-msgstr "FLAG kohteessa %s lippujen jälkeen rivillä %d: %s"
+msgstr "FLAG kohteessa %s lippujen jälkeen rivillä %d: %s"
 
 #, c-format
 msgid ""
 "Defining COMPOUNDFORBIDFLAG after PFX item may give wrong results in %s line "
 "%d"
 msgstr ""
-"COMPOUNDFORBIDFLAG PFX:n jälkeen voi antaa vääriä tuloksia kohteessa %s "
-"rivillä %d"
+"COMPOUNDFORBIDFLAG PFX:n jälkeen voi antaa vääriä tuloksia kohteessa %s "
+"rivillä %d"
 
 #, c-format
 msgid ""
 "Defining COMPOUNDPERMITFLAG after PFX item may give wrong results in %s line "
 "%d"
 msgstr ""
-"COMPOUNDPERMITFLAG PFX:n jälkeen voi antaa vääriä tuloksia kohteessa %s "
-"rivillä %d"
+"COMPOUNDPERMITFLAG PFX:n jälkeen voi antaa vääriä tuloksia kohteessa %s "
+"rivillä %d"
 
 #, c-format
 msgid "Wrong COMPOUNDRULES value in %s line %d: %s"
-msgstr "Väärä COMPOUNDRULES-arvo kohteessa %s rivillä %d: %s"
+msgstr "Väärä COMPOUNDRULES-arvo kohteessa %s rivillä %d: %s"
 
 #, c-format
 msgid "Wrong COMPOUNDWORDMAX value in %s line %d: %s"
-msgstr "Väärä COMPOUNDWORDMAX-arvo kohteessa %s rivillä %d: %s"
+msgstr "Väärä COMPOUNDWORDMAX-arvo kohteessa %s rivillä %d: %s"
 
 #, c-format
 msgid "Wrong COMPOUNDMIN value in %s line %d: %s"
-msgstr "Väärä COMPOUNDMIN-arvo kohteessa %s rivillä %d: %s"
+msgstr "Väärä COMPOUNDMIN-arvo kohteessa %s rivillä %d: %s"
 
 #, c-format
 msgid "Wrong COMPOUNDSYLMAX value in %s line %d: %s"
-msgstr "Väärä COMPOUNDSYLMAX-arvo kohteessa %s rivillä %d: %s"
+msgstr "Väärä COMPOUNDSYLMAX-arvo kohteessa %s rivillä %d: %s"
 
 #, c-format
 msgid "Wrong CHECKCOMPOUNDPATTERN value in %s line %d: %s"
-msgstr "Väärä CHECKCOMPOUNDPATTERN-arvo kohteessa %s rivillä %d: %s"
+msgstr "Väärä CHECKCOMPOUNDPATTERN-arvo kohteessa %s rivillä %d: %s"
 
 #, c-format
 msgid "Different combining flag in continued affix block in %s line %d: %s"
 msgstr ""
-"Eri yhdistelmälippu jatketussa affiksilohkossa kohteessa %s rivillä %d: %s"
+"Eri yhdistelmälippu jatketussa affiksilohkossa kohteessa %s rivillä %d: %s"
 
 #, c-format
 msgid "Duplicate affix in %s line %d: %s"
-msgstr "Kaksoiskappale affiksista kohteessa %s rivillä %d: %s"
+msgstr "Kaksoiskappale affiksista kohteessa %s rivillä %d: %s"
 
 #, c-format
 msgid ""
 "Affix also used for BAD/RARE/KEEPCASE/NEEDAFFIX/NEEDCOMPOUND/NOSUGGEST in %s "
 "line %d: %s"
 msgstr ""
-"Affiksia käytetty myös BAD-, RARE-, KEEPCASE-, NEEDAFFIX-, NEEDCOMPOUND- tai "
-"NOSUGGEST-arvossa kohteessa %s rivillä %d: %s"
+"Affiksia käytetty myös BAD-, RARE-, KEEPCASE-, NEEDAFFIX-, NEEDCOMPOUND- tai "
+"NOSUGGEST-arvossa kohteessa %s rivillä %d: %s"
 
 #, c-format
 msgid "Expected Y or N in %s line %d: %s"
-msgstr "Odotettiin Y:tä tai N:ää kohteessa %s rivillä %d: %s"
+msgstr "Odotettiin Y:tä tai N:ää kohteessa %s rivillä %d: %s"
 
 #, c-format
 msgid "Broken condition in %s line %d: %s"
-msgstr "Viallinen ehto kohteessa %s rivillä %d: %s"
+msgstr "Viallinen ehto kohteessa %s rivillä %d: %s"
 
 #, c-format
 msgid "Expected REP(SAL) count in %s line %d"
-msgstr "Odotettiin REP(SAL)-arvoa kohteessa %s rivillä %d"
+msgstr "Odotettiin REP(SAL)-arvoa kohteessa %s rivillä %d"
 
 #, c-format
 msgid "Expected MAP count in %s line %d"
-msgstr "Odotettiin MAP-arvoa kohteessa %s rivillä %d"
+msgstr "Odotettiin MAP-arvoa kohteessa %s rivillä %d"
 
 #, c-format
 msgid "Duplicate character in MAP in %s line %d"
-msgstr "Kaksoiskappale merkistä MAP:ssä kohteessa %s rivillä %d"
+msgstr "Kaksoiskappale merkistä MAP:ssä kohteessa %s rivillä %d"
 
 #, c-format
 msgid "Unrecognized or duplicate item in %s line %d: %s"
-msgstr "Tunnistamaton tai kaksoiskappale arvosta kohteessa %s rivillä %d: %s"
+msgstr "Tunnistamaton tai kaksoiskappale arvosta kohteessa %s rivillä %d: %s"
 
 #, c-format
 msgid "Missing FOL/LOW/UPP line in %s"
@@ -5047,13 +5164,13 @@ msgid "COMPOUNDSYLMAX used without SYLLA
 msgstr "COMPOUNDSYLMAX ilman SYLLABLEa"
 
 msgid "Too many postponed prefixes"
-msgstr "Liikaa jälkikäteistettyjä prefiksejä"
+msgstr "Liikaa jälkikäteistettyjä prefiksejä"
 
 msgid "Too many compound flags"
 msgstr "Liikaa yhdyssanalippuja"
 
 msgid "Too many postponed prefixes and/or compound flags"
-msgstr "Liikaa jälkikäteistettyjä prefiksejä tai yhdyssanalippuja"
+msgstr "Liikaa jälkikäteistettyjä prefiksejä tai yhdyssanalippuja"
 
 #, c-format
 msgid "Missing SOFO%s line in %s"
@@ -5065,11 +5182,11 @@ msgstr "SAL- ja SOFO-rivit kohteessa %s"
 
 #, c-format
 msgid "Flag is not a number in %s line %d: %s"
-msgstr "Lippu ei ole lukuarvo kohteessa %s rivillä %d: %s"
+msgstr "Lippu ei ole lukuarvo kohteessa %s rivillä %d: %s"
 
 #, c-format
 msgid "Illegal flag in %s line %d: %s"
-msgstr "Tuntematon lippu kohteessa %s rivillä %d: %s"
+msgstr "Tuntematon lippu kohteessa %s rivillä %d: %s"
 
 #, c-format
 msgid "%s value differs from what is used in another .aff file"
@@ -5089,11 +5206,11 @@ msgstr "rivi %6d, sana %6d - %s"
 
 #, c-format
 msgid "Duplicate word in %s line %d: %s"
-msgstr "Toistettu sana kohteessa %s rivillä %d: %s"
+msgstr "Toistettu sana kohteessa %s rivillä %d: %s"
 
 #, c-format
 msgid "First duplicate word in %s line %d: %s"
-msgstr "Ensimmäinen kappale kohteessa %s rivillä %d: %s"
+msgstr "Ensimmäinen kappale kohteessa %s rivillä %d: %s"
 
 #, c-format
 msgid "%d duplicate word(s) in %s"
@@ -5109,39 +5226,42 @@ msgstr "Luetaan sanatiedostoa %s..."
 
 #, c-format
 msgid "Duplicate /encoding= line ignored in %s line %d: %s"
-msgstr "Toistettu /encoding= ohitettu kohteessa %s rivillä %d: %s"
+msgstr "Toistettu /encoding= ohitettu kohteessa %s rivillä %d: %s"
 
 #, c-format
 msgid "/encoding= line after word ignored in %s line %d: %s"
-msgstr "/encoding= sanojen jälkeen ohitettu kohteessa %s rivillä %d: %s"
+msgstr "/encoding= sanojen jälkeen ohitettu kohteessa %s rivillä %d: %s"
 
 #, c-format
 msgid "Duplicate /regions= line ignored in %s line %d: %s"
-msgstr "Toistettu /regions= ohitettu kohteessa %s rivillä %d: %s"
+msgstr "Toistettu /regions= ohitettu kohteessa %s rivillä %d: %s"
 
 #, c-format
 msgid "Too many regions in %s line %d: %s"
-msgstr "Liikaa regionseja kohteessa %s rivillä %d: %s"
+msgstr "Liikaa regionseja kohteessa %s rivillä %d: %s"
 
 #, c-format
 msgid "/ line ignored in %s line %d: %s"
-msgstr "/ ohitettu kohteessa %s rivillä %d: %s"
+msgstr "/ ohitettu kohteessa %s rivillä %d: %s"
 
 #, c-format
 msgid "Invalid region nr in %s line %d: %s"
-msgstr "Virheellinen region-luku kohteessa %s rivillä %d: %s"
+msgstr "Virheellinen region-luku kohteessa %s rivillä %d: %s"
 
 #, c-format
 msgid "Unrecognized flags in %s line %d: %s"
-msgstr "Tunnistamaton lippu kohteessa %s rivillä %d: %s"
+msgstr "Tunnistamaton lippu kohteessa %s rivillä %d: %s"
 
 #, c-format
 msgid "Ignored %d words with non-ASCII characters"
 msgstr "Ei-ASCIIn takia ohitettuja sanoja %d"
 
+msgid "E845: Insufficient memory, word list will be incomplete"
+msgstr "E845: Muisti ei riitä, sanalista jää keskeneräiseksi"
+
 #, c-format
 msgid "Compressed %d of %d nodes; %d (%d%%) remaining"
-msgstr "Tiivistetty %d/%d noodia. %d (%d %%) jäljellä"
+msgstr "Tiivistetty %d/%d noodia. %d (%d %%) jäljellä"
 
 msgid "Reading back spell file..."
 msgstr "Luetaan taas oikaisulukutiedostoa..."
@@ -5151,15 +5271,15 @@ msgstr "Luetaan taas oikaisulukutiedosto
 #. * the soundfold trie.
 #.
 msgid "Performing soundfolding..."
-msgstr "Ääntämyksen mukaan yhdistellään..."
+msgstr "Ääntämyksen mukaan yhdistellään..."
 
 #, c-format
 msgid "Number of words after soundfolding: %ld"
-msgstr "Sanoja ääntämysyhdistelyn jälkeen: %ld"
+msgstr "Sanoja ääntämysyhdistelyn jälkeen: %ld"
 
 #, c-format
 msgid "Total number of words: %d"
-msgstr "Sanoja yhteensä: %d"
+msgstr "Sanoja yhteensä: %d"
 
 #, c-format
 msgid "Writing suggestion file %s ..."
@@ -5167,20 +5287,20 @@ msgstr "Kirjoitetaan ehdotustiedostoa %s
 
 #, c-format
 msgid "Estimated runtime memory use: %d bytes"
-msgstr "Arvioitu käyttömuisti: %d tavua"
+msgstr "Arvioitu käyttömuisti: %d tavua"
 
 msgid "E751: Output file name must not have region name"
-msgstr "E751: Tulostetiedostonimessä ei saa olla alueen nimeä"
+msgstr "E751: Tulostetiedostonimessä ei saa olla alueen nimeä"
 
 msgid "E754: Only up to 8 regions supported"
-msgstr "E754: Enintään 8 aluetta tuetaan"
+msgstr "E754: Enintään 8 aluetta tuetaan"
 
 #, c-format
 msgid "E755: Invalid region in %s"
 msgstr "E755: Virheellinen alue kohteelle %s"
 
 msgid "Warning: both compounding and NOBREAK specified"
-msgstr "Varoitus: sekä yhdyssanamuodostus että NOBREAK käytössä"
+msgstr "Varoitus: sekä yhdyssanamuodostus että NOBREAK käytössä"
 
 #, c-format
 msgid "Writing spell file %s ..."
@@ -5191,79 +5311,38 @@ msgstr "Valmista."
 
 #, c-format
 msgid "E765: 'spellfile' does not have %ld entries"
-msgstr "E765: spellfile ei sisällä %ld kohtaa"
-
-#, c-format
-msgid "Word removed from %s"
-msgstr "Sana poistettu kohteesta %s"
-
-#, c-format
-msgid "Word added to %s"
-msgstr "Sana lisätty kohteeseen %s"
+msgstr "E765: spellfile ei sisällä %ld kohtaa"
+
+#, c-format
+msgid "Word '%.*s' removed from %s"
+msgstr "Sana %.*s poistettu kohteesta %s"
+
+#, c-format
+msgid "Word '%.*s' added to %s"
+msgstr "Sana %.*s lisätty kohteeseen %s"
 
 msgid "E763: Word characters differ between spell files"
-msgstr "E763: Sanan merkit muuttuvat oikaisulukutiedostojen välillä"
-
-msgid "Sorry, no suggestions"
-msgstr "Sori, ei ehdotuksia"
-
-#, c-format
-msgid "Sorry, only %ld suggestions"
-msgstr "Sori, vain %ld ehdotusta"
-
-#. for when 'cmdheight' > 1
-#. avoid more prompt
-#, c-format
-msgid "Change \"%.*s\" to:"
-msgstr "Muuta %.*s:"
-
-#, c-format
-msgid " < \"%.*s\""
-msgstr " < %.*s"
-
-msgid "E752: No previous spell replacement"
-msgstr "E752: Ei edellistä oikaisulukukorjausta"
-
-#, c-format
-msgid "E753: Not found: %s"
-msgstr "E753: Ei löytynyt: %s"
-
-#, c-format
-msgid "E778: This does not look like a .sug file: %s"
-msgstr "E778: Ei vaikuta .sug-tiedostolta: %s"
-
-#, c-format
-msgid "E779: Old .sug file, needs to be updated: %s"
-msgstr "E779: Vanha .sug-tiedosto pitää päivittää: %s"
-
-#, c-format
-msgid "E780: .sug file is for newer version of Vim: %s"
-msgstr "E780: .sug-tiedosto on uudemmalle Vimille: %s"
-
-#, c-format
-msgid "E781: .sug file doesn't match .spl file: %s"
-msgstr "E781: .sug-tiedosto ei täsmää .spl-tiedostoon: %s"
-
-#, c-format
-msgid "E782: error while reading .sug file: %s"
-msgstr "E782: virhe luettaessa .sug-tiedostoa: %s"
+msgstr "E763: Sanan merkit muuttuvat oikaisulukutiedostojen välillä"
 
 #. This should have been checked when generating the .spl
 #. * file.
 msgid "E783: duplicate char in MAP entry"
-msgstr "E783: kaksoiskappale merkistä MAP-kohdassa"
+msgstr "E783: kaksoiskappale merkistä MAP-kohdassa"
+
+msgid "No Syntax items defined for this buffer"
+msgstr "Ei syntaksikohteita tälle puskurille"
 
 #, c-format
 msgid "E390: Illegal argument: %s"
 msgstr "E390: Virheellinen argumentti: %s"
 
+msgid "syntax iskeyword "
+msgstr "syntax iskeyword "
+
 #, c-format
 msgid "E391: No such syntax cluster: %s"
 msgstr "E391: Syntaksiklusteri puuttuu: %s"
 
-msgid "No Syntax items defined for this buffer"
-msgstr "Ei syntaksikohteita tälle puskurille"
-
 msgid "syncing on C-style comments"
 msgstr "synkkaa C-tyylin kommentteihin"
 
@@ -5274,7 +5353,7 @@ msgid "syncing starts "
 msgstr "synkkaus aloitettu "
 
 msgid " lines before top line"
-msgstr " riviä ennen alkua"
+msgstr " riviä ennen alkua"
 
 msgid ""
 "\n"
@@ -5302,35 +5381,45 @@ msgid "E392: No such syntax cluster: %s"
 msgstr "E392: syntaksiklusteria ei ole: %s"
 
 msgid "minimal "
-msgstr "vähintään "
+msgstr "vähintään "
 
 msgid "maximal "
-msgstr "enitntään "
+msgstr "enitntään "
 
 msgid "; match "
-msgstr "; täsmää "
+msgstr "; täsmää "
 
 msgid " line breaks"
 msgstr " rivinvaihdot"
 
 msgid "E395: contains argument not accepted here"
-msgstr "E395: contains ei sovi tähän"
+msgstr "E395: contains ei sovi tähän"
+
+msgid "E844: invalid cchar value"
+msgstr "E844: Virheellinen cchar-arvo"
 
 msgid "E393: group[t]here not accepted here"
-msgstr "E393: group[t]here ei sovi tähän"
+msgstr "E393: group[t]here ei sovi tähän"
 
 #, c-format
 msgid "E394: Didn't find region item for %s"
-msgstr "E394: Aluetta nimelle %s ei löydy"
+msgstr "E394: Aluetta nimelle %s ei löydy"
 
 msgid "E397: Filename required"
 msgstr "E397: Tiedostonimi puuttuu"
 
+msgid "E847: Too many syntax includes"
+msgstr "E847: Liikaa syntax includeja"
+
 #, c-format
 msgid "E789: Missing ']': %s"
 msgstr "E789: ] puuttuu: %s"
 
 #, c-format
+msgid "E890: trailing char after ']': %s]%s"
+msgstr "E890: Ylimääräisiä merkkejä merkin ] perässä: %s]%s"
+
+#, c-format
 msgid "E398: Missing '=': %s"
 msgstr "E398: = puuttuu: %s"
 
@@ -5338,8 +5427,11 @@ msgstr "E398: = puuttuu: %s"
 msgid "E399: Not enough arguments: syntax region %s"
 msgstr "E399: Argumentteja puuttuu: syntaksialue %s"
 
+msgid "E848: Too many syntax clusters"
+msgstr "E848: Liikaa syntaksiklustereita"
+
 msgid "E400: No cluster specified"
-msgstr "E400: klusteri määrittelemättä"
+msgstr "E400: klusteri määrittelemättä"
 
 #, c-format
 msgid "E401: Pattern delimiter not found: %s"
@@ -5347,10 +5439,10 @@ msgstr "E401: Kuvoin erotin puuttuu: %s"
 
 #, c-format
 msgid "E402: Garbage after pattern: %s"
-msgstr "E402: Roskia kuvion jäljessä: %s"
+msgstr "E402: Roskia kuvion jäljessä: %s"
 
 msgid "E403: syntax sync: line continuations pattern specified twice"
-msgstr "E403: syntax sync: rivinjatkamiskuvio määritelty kahdesti"
+msgstr "E403: syntax sync: rivinjatkamiskuvio määritelty kahdesti"
 
 #, c-format
 msgid "E404: Illegal arguments: %s"
@@ -5362,11 +5454,11 @@ msgstr "E405: = puuttuu: %s"
 
 #, c-format
 msgid "E406: Empty argument: %s"
-msgstr "E406: Tyhjä argumentti: %s"
+msgstr "E406: Tyhjä argumentti: %s"
 
 #, c-format
 msgid "E407: %s not allowed here"
-msgstr "E407: %s ei sovi tähän"
+msgstr "E407: %s ei sovi tähän"
 
 #, c-format
 msgid "E408: %s must be first in contains list"
@@ -5374,18 +5466,23 @@ msgstr "E408: %s kuuluu contains-listan 
 
 #, c-format
 msgid "E409: Unknown group name: %s"
-msgstr "E409: Tuntematon ryhmän nimi: %s"
+msgstr "E409: Tuntematon ryhmän nimi: %s"
 
 #, c-format
 msgid "E410: Invalid :syntax subcommand: %s"
 msgstr "E410: Virheelluinen :syntax-osakomento: %s"
 
+msgid ""
+"  TOTAL      COUNT  MATCH   SLOWEST     AVERAGE   NAME               PATTERN"
+msgstr ""
+"  KAIKKI     MÄÄRÄ  TÄSMÄYS HITAIN      KEKSIARVO NIMI               ILMAUS"
+
 msgid "E679: recursive loop loading syncolor.vim"
-msgstr "E679: rekursiivinen silmukka syncolor.vimissä"
+msgstr "E679: rekursiivinen silmukka syncolor.vimissä"
 
 #, c-format
 msgid "E411: highlight group not found: %s"
-msgstr "E411: korostusryhmää ei löytynyt: %s"
+msgstr "E411: korostusryhmää ei löytynyt: %s"
 
 #, c-format
 msgid "E412: Not enough arguments: \":highlight link %s\""
@@ -5396,7 +5493,7 @@ msgid "E413: Too many arguments: \":high
 msgstr "E413: Liikaa argumentteja: :highlight link %s"
 
 msgid "E414: group has settings, highlight link ignored"
-msgstr "E414: ryhmällä on asetuksia, highlight link -komento ohitetaan"
+msgstr "E414: ryhmällä on asetuksia, highlight link -komento ohitetaan"
 
 #, c-format
 msgid "E415: unexpected equal sign: %s"
@@ -5415,18 +5512,18 @@ msgid "E418: Illegal value: %s"
 msgstr "E418: Viallinen arvo: %s"
 
 msgid "E419: FG color unknown"
-msgstr "E419: edustaväri tuntematon"
+msgstr "E419: edustaväri tuntematon"
 
 msgid "E420: BG color unknown"
-msgstr "E420: taustaväri tuntematon"
+msgstr "E420: taustaväri tuntematon"
 
 #, c-format
 msgid "E421: Color name or number not recognized: %s"
-msgstr "E421: Värin nimi tai numero tuntematon: %s"
+msgstr "E421: Värin nimi tai numero tuntematon: %s"
 
 #, c-format
 msgid "E422: terminal code too long: %s"
-msgstr "E422: terminaalikoodi liian pitkä: %s"
+msgstr "E422: terminaalikoodi liian pitkä: %s"
 
 #, c-format
 msgid "E423: Illegal argument: %s"
@@ -5436,35 +5533,38 @@ msgid "E424: Too many different highligh
 msgstr "E424: Liikaa eri korostusattribuutteja"
 
 msgid "E669: Unprintable character in group name"
-msgstr "E669: Tulostuskelvoton merkki ryhmän nimessä"
+msgstr "E669: Tulostuskelvoton merkki ryhmän nimessä"
 
 msgid "W18: Invalid character in group name"
-msgstr "W18: Virheellinen merkki ryhmän nimessä"
+msgstr "W18: Virheellinen merkki ryhmän nimessä"
+
+msgid "E849: Too many highlight and syntax groups"
+msgstr "E849: Liikaa korostuksia ja syntaksiryhmiä"
 
 msgid "E555: at bottom of tag stack"
-msgstr "E555: tägipinon pohja"
+msgstr "E555: tägipinon pohja"
 
 msgid "E556: at top of tag stack"
-msgstr "E556: tägipinon huippu"
+msgstr "E556: tägipinon huippu"
 
 msgid "E425: Cannot go before first matching tag"
-msgstr "E425: Ei voida mennä ensimmäistä täsmäävää tägiä alummaksi"
+msgstr "E425: Ei voida mennä ensimmäistä täsmäävää tägiä alummaksi"
 
 #, c-format
 msgid "E426: tag not found: %s"
-msgstr "E426: tägi puuttuu: %s"
+msgstr "E426: tägi puuttuu: %s"
 
 msgid "  # pri kind tag"
-msgstr "  # arvo tyyppi tägi"
+msgstr "  # arvo tyyppi tägi"
 
 msgid "file\n"
 msgstr "tiedosto\n"
 
 msgid "E427: There is only one matching tag"
-msgstr "E427: Vain yksi tägi täsmää"
+msgstr "E427: Vain yksi tägi täsmää"
 
 msgid "E428: Cannot go beyond last matching tag"
-msgstr "E428: Ei voida edetä viimeisen täsmäävän tägin ohi"
+msgstr "E428: Ei voida edetä viimeisen täsmäävän tägin ohi"
 
 #, c-format
 msgid "File \"%s\" does not exist"
@@ -5473,13 +5573,13 @@ msgstr "Tiedostoa %s ei ole"
 #. Give an indication of the number of matching tags
 #, c-format
 msgid "tag %d of %d%s"
-msgstr "tägi %d/%d%s"
+msgstr "tägi %d/%d%s"
 
 msgid " or more"
 msgstr " tai useammasta"
 
 msgid "  Using tag with different case!"
-msgstr "  Tägissä eri kirjaintaso"
+msgstr "  Tägissä eri kirjaintaso"
 
 #, c-format
 msgid "E429: File \"%s\" does not exist"
@@ -5491,19 +5591,22 @@ msgid ""
 "  # TO tag         FROM line  in file/text"
 msgstr ""
 "\n"
-"  # TILL tagg          FRÅN LINJE  i fil/text"
+"  # TILL tagg          FRÃ…N LINJE  i fil/text"
 
 #, c-format
 msgid "Searching tags file %s"
-msgstr "Etsitään tägitiedostoa %s"
+msgstr "Etsitään tägitiedostoa %s"
 
 #, c-format
 msgid "E430: Tag file path truncated for %s\n"
-msgstr "E430: Tägitiedoston polku katkaistu kohdassa %s\n"
+msgstr "E430: Tägitiedoston polku katkaistu kohdassa %s\n"
+
+msgid "Ignoring long line in tags file"
+msgstr "Ohitetaan pitkä rivi tägitiedostossa"
 
 #, c-format
 msgid "E431: Format error in tags file \"%s\""
-msgstr "E431: Muotovirh tägitiedostossa %s"
+msgstr "E431: Muotovirh tägitiedostossa %s"
 
 #, c-format
 msgid "Before byte %ld"
@@ -5511,24 +5614,21 @@ msgstr "Ennen tavua %ld"
 
 #, c-format
 msgid "E432: Tags file not sorted: %s"
-msgstr "E432: Tägitiedosto ei ole järjestetty: %s"
+msgstr "E432: Tägitiedosto ei ole järjestetty: %s"
 
 #. never opened any tags file
 msgid "E433: No tags file"
-msgstr "E433: Ei tägitiedostoja"
-
-msgid "Ignoring long line in tags file"
-msgstr "Ohitetaan pitkä rivi tägitiedostossa"
+msgstr "E433: Ei tägitiedostoja"
 
 msgid "E434: Can't find tag pattern"
-msgstr "E434: Tägikuviota ei löydy"
+msgstr "E434: Tägikuviota ei löydy"
 
 msgid "E435: Couldn't find tag, just guessing!"
-msgstr "E435: Tägiä ei löydy, arvataan."
+msgstr "E435: Tägiä ei löydy, arvataan."
 
 #, c-format
 msgid "Duplicate field name: %s"
-msgstr "Kaksoiskappale kentän nimestä: %s"
+msgstr "Kaksoiskappale kentän nimestä: %s"
 
 msgid "' not known. Available builtin terminals are:"
 msgstr " ei tunnettu. Tuetut terminaalit:"
@@ -5540,17 +5640,17 @@ msgid "E557: Cannot open termcap file"
 msgstr "E557: Ei voi avata termcap-tiedostoa"
 
 msgid "E558: Terminal entry not found in terminfo"
-msgstr "E558: Terminaalia ei löytynyt terminfosta"
+msgstr "E558: Terminaalia ei löytynyt terminfosta"
 
 msgid "E559: Terminal entry not found in termcap"
-msgstr "E559: Terminaalia ei löytynyt termcapista"
+msgstr "E559: Terminaalia ei löytynyt termcapista"
 
 #, c-format
 msgid "E436: No \"%s\" entry in termcap"
-msgstr "E436: %s ei löytynyt termcapista"
+msgstr "E436: %s ei löytynyt termcapista"
 
 msgid "E437: terminal capability \"cm\" required"
-msgstr "E437: terminaalilla pitää olla cm kyvyissään"
+msgstr "E437: terminaalilla pitää olla cm kyvyissään"
 
 #. Highlight title
 msgid ""
@@ -5558,21 +5658,24 @@ msgid ""
 "--- Terminal keys ---"
 msgstr ""
 "\n"
-"--- Terminaalinäppäimet ---"
+"--- Terminaalinäppäimet ---"
+
+msgid "Cannot open $VIMRUNTIME/rgb.txt"
+msgstr "Ei voida avata tiedostoa $VIMRUNTIME/rgb.txt"
 
 msgid "new shell started\n"
 msgstr "uusi kuori avattu\n"
 
 msgid "Vim: Error reading input, exiting...\n"
-msgstr "Vim: Virhe luettaessa syötettä, poistutaan...\n"
+msgstr "Vim: Virhe luettaessa syötettä, poistutaan...\n"
 
 msgid "Used CUT_BUFFER0 instead of empty selection"
-msgstr "Käytettiin CUT_BUFFER0:aa tyhjän valinnan sijaan"
+msgstr "Käytettiin CUT_BUFFER0:aa tyhjän valinnan sijaan"
 
 #. This happens when the FileChangedRO autocommand changes the
 #. * file in a way it becomes shorter.
-msgid "E834: Line count changed unexpectedly"
-msgstr "E834: Rivimäärä vaihtui odottamatta"
+msgid "E881: Line count changed unexpectedly"
+msgstr "E881: Rivimäärä vaihtui odottamatta"
 
 #. must display the prompt
 msgid "No undo possible; continue anyway"
@@ -5587,7 +5690,7 @@ msgid "E825: Corrupted undo file (%s): %
 msgstr "E825: Pilaanntunut kumoustiedosto (%s): %s"
 
 msgid "Cannot write undo file in any directory in 'undodir'"
-msgstr "Ei voitu lukea kumoustiedostoa mistään undodir-muuttujan hakemistosta"
+msgstr "Ei voitu lukea kumoustiedostoa mistään undodir-muuttujan hakemistosta"
 
 #, c-format
 msgid "Will not overwrite with undo file, cannot read: %s"
@@ -5595,7 +5698,7 @@ msgstr "Ei ylikirjoitetat kumoustiedosto
 
 #, c-format
 msgid "Will not overwrite, this is not an undo file: %s"
-msgstr "Ei ylikirjoiteta, koska tämä ei ole kumoustiedosto: %s"
+msgstr "Ei ylikirjoiteta, koska tämä ei ole kumoustiedosto: %s"
 
 msgid "Skipping undo file write, nothing to undo"
 msgstr "Ohitetaan kumoustiedoston kirjoitus, koska ei ole peruutettavia"
@@ -5630,7 +5733,7 @@ msgstr "E832: Salaamattomalla tiedostoll
 
 #, c-format
 msgid "E826: Undo file decryption failed: %s"
-msgstr "E826: Kumoustiedoston purku epäonnistui: %s"
+msgstr "E826: Kumoustiedoston purku epäonnistui: %s"
 
 #, c-format
 msgid "E827: Undo file is encrypted: %s"
@@ -5638,11 +5741,11 @@ msgstr "E827: Kumoustiedosto on salattu:
 
 #, c-format
 msgid "E824: Incompatible undo file: %s"
-msgstr "E824: Epäyhteensopiva kumoustiedosto: %s"
+msgstr "E824: Epäyhteensopiva kumoustiedosto: %s"
 
 msgid "File contents changed, cannot use undo info"
-msgstr "Tiedoston sisältö on muuttunut, joen kumoustiedot ovat "
-"käyttökelvottomia"
+msgstr ""
+"Tiedoston sisältö on muuttunut, joen kumoustiedot ovat käyttökelvottomia"
 
 #, c-format
 msgid "Finished reading undo file %s"
@@ -5656,22 +5759,22 @@ msgstr "Nuorimmassa muutoksessa"
 
 #, c-format
 msgid "E830: Undo number %ld not found"
-msgstr "E830: Kumouslukua %ld ei löydy"
+msgstr "E830: Kumouslukua %ld ei löydy"
 
 msgid "E438: u_undo: line numbers wrong"
-msgstr "E438: u_undo: väärät rivinumerot"
+msgstr "E438: u_undo: väärät rivinumerot"
 
 msgid "more line"
-msgstr "rivi lisää"
+msgstr "rivi lisää"
 
 msgid "more lines"
-msgstr "riviä lisää"
+msgstr "riviä lisää"
 
 msgid "line less"
-msgstr "rivi vähemmän"
+msgstr "rivi vähemmän"
 
 msgid "fewer lines"
-msgstr "riviä vähemmän"
+msgstr "riviä vähemmän"
 
 msgid "change"
 msgstr "muutos"
@@ -5679,7 +5782,7 @@ msgstr "muutos"
 msgid "changes"
 msgstr "muutosta"
 
-# eka %s yläpuolelta, toka %s alapuolelta, kolmas %s aika
+# eka %s yläpuolelta, toka %s alapuolelta, kolmas %s aika
 #, c-format
 msgid "%ld %s; %s #%ld  %s"
 msgstr "%ld %s, %s #%ld %s"
@@ -5688,20 +5791,20 @@ msgid "before"
 msgstr "ennen muutosta"
 
 msgid "after"
-msgstr "jälkeen muutoksen"
+msgstr "jälkeen muutoksen"
 
 msgid "Nothing to undo"
 msgstr "Ei kumottavaa"
 
-msgid "number changes  time            saved"
-msgstr "muutoksia       aika            tallennettu"
+msgid "number changes  when               saved"
+msgstr "numero muutoksia aika              tallennettu"
 
 #, c-format
 msgid "%ld seconds ago"
 msgstr "%ld sekuntia sitten"
 
 msgid "E790: undojoin is not allowed after undo"
-msgstr "E790: undojoin ei toimi undon jälkeen"
+msgstr "E790: undojoin ei toimi undon jälkeen"
 
 msgid "E439: undo list corrupt"
 msgstr "E439: kumouslista rikki"
@@ -5709,6 +5812,134 @@ msgstr "E439: kumouslista rikki"
 msgid "E440: undo line missing"
 msgstr "E440: kumousrivi puuttuu"
 
+#, c-format
+msgid "E122: Function %s already exists, add ! to replace it"
+msgstr "E122: Funktio %s on jo olemassa, lisää ! korvataksesi"
+
+msgid "E717: Dictionary entry already exists"
+msgstr "E717: Sanakirja-alkio on jo olemassa"
+
+msgid "E718: Funcref required"
+msgstr "E718: Funcref tarvitaan"
+
+#, c-format
+msgid "E130: Unknown function: %s"
+msgstr "E130: Tuntematon funktio: %s"
+
+#, c-format
+msgid "E125: Illegal argument: %s"
+msgstr "E125: Virheellinen argumentti: %s"
+
+#, c-format
+msgid "E853: Duplicate argument name: %s"
+msgstr "E853: Kaksoiskappale argumentin nimestä: %s"
+
+#, c-format
+msgid "E740: Too many arguments for function %s"
+msgstr "E740: Liikaa argumentteja funktiolle %s"
+
+#, c-format
+msgid "E116: Invalid arguments for function %s"
+msgstr "E116: Vääriä argumentteja funktiolle %s"
+
+msgid "E132: Function call depth is higher than 'maxfuncdepth'"
+msgstr "E132: Funktiokutsujen syvyys on enemmän kuin maxfuncdepth"
+
+#, c-format
+msgid "calling %s"
+msgstr "kutsutaan funktiota %s"
+
+#, c-format
+msgid "%s aborted"
+msgstr "%s keskeytettiin"
+
+#, c-format
+msgid "%s returning #%ld"
+msgstr "%s palaa kohdassa #%ld"
+
+#, c-format
+msgid "%s returning %s"
+msgstr "%s palaa kohdassa %s"
+
+msgid "E699: Too many arguments"
+msgstr "E699: Liikaa argumentteja"
+
+#, c-format
+msgid "E117: Unknown function: %s"
+msgstr "E117: Tuntematon funktio: %s"
+
+#, c-format
+msgid "E933: Function was deleted: %s"
+msgstr "E933: Funktion nimi poistettu: %s"
+
+#, c-format
+msgid "E119: Not enough arguments for function: %s"
+msgstr "E119: Liikaa argumentteja funktiolle %s"
+
+#, c-format
+msgid "E120: Using <SID> not in a script context: %s"
+msgstr "E120: <SID> skriptin ulkopuolella: %s"
+
+#, c-format
+msgid "E725: Calling dict function without Dictionary: %s"
+msgstr "E725: dict-funktio ilman sanakirjaa: %s"
+
+msgid "E129: Function name required"
+msgstr "E129: Funktion nimi puuttuu"
+
+#, c-format
+msgid "E128: Function name must start with a capital or \"s:\": %s"
+msgstr ""
+"E128: Funktion nimen pitää alkaa suuraakkosella tai merkeillä ’s:’: "
+"%s"
+
+#, c-format
+msgid "E884: Function name cannot contain a colon: %s"
+msgstr ""
+"E884: Funktion nimessä ei saa olla kaksoispistettä: "
+"%s"
+
+#, c-format
+msgid "E123: Undefined function: %s"
+msgstr "E123: Tuntematon funktio: %s"
+
+#, c-format
+msgid "E124: Missing '(': %s"
+msgstr "E124: ( puuttuu: %s"
+
+msgid "E862: Cannot use g: here"
+msgstr "E862: g: ei toimi täällä"
+
+#, c-format
+msgid "E932 Closure function should not be at top level: %s"
+msgstr "E932 Sulkeumafunktio ei voi olla uloimmalla tasolla: %s"
+
+msgid "E126: Missing :endfunction"
+msgstr "E126: :endfunction puuttuu"
+
+#, c-format
+msgid "E707: Function name conflicts with variable: %s"
+msgstr "E707: Funktion nimi on ristiriidassa muuttujan kanssa: %s"
+
+#, c-format
+msgid "E127: Cannot redefine function %s: It is in use"
+msgstr "E127: Funktiota %s ei voi määritellä uudestaan, koska se on käytössä"
+
+#, c-format
+msgid "E746: Function name does not match script file name: %s"
+msgstr "E746: Funktion nimi ei ole sama kuin skriptin tiedostonnimi: %s"
+
+#, c-format
+msgid "E131: Cannot delete function %s: It is in use"
+msgstr "E131: Funktiota %s ei voi poistaa"
+
+msgid "E133: :return not inside a function"
+msgstr "E133: :return ei ole funktion sisällä"
+
+#, c-format
+msgid "E107: Missing parentheses: %s"
+msgstr "E107: Sulkeita puuttuu: %s"
+
 #. Only MS VC 4.1 and earlier can do Win32s
 msgid ""
 "\n"
@@ -5753,27 +5984,6 @@ msgstr ""
 
 msgid ""
 "\n"
-"MS-Windows 16-bit version"
-msgstr ""
-"\n"
-"MS-Windows 16-bittinen versio"
-
-msgid ""
-"\n"
-"32-bit MS-DOS version"
-msgstr ""
-"\n"
-"32-bittinen MS-DOS-versio"
-
-msgid ""
-"\n"
-"16-bit MS-DOS version"
-msgstr ""
-"\n"
-"16-bittinen MS-DOS-versio"
-
-msgid ""
-"\n"
 "MacOS X (unix) version"
 msgstr ""
 "\n"
@@ -5795,13 +6005,6 @@ msgstr ""
 
 msgid ""
 "\n"
-"RISC OS version"
-msgstr ""
-"\n"
-"RISC OS-version"
-
-msgid ""
-"\n"
 "OpenVMS version"
 msgstr ""
 "\n"
@@ -5812,13 +6015,14 @@ msgid ""
 "Included patches: "
 msgstr ""
 "\n"
-"Pätsit: "
+"Pätsit: "
 
 msgid ""
 "\n"
 "Extra patches: "
-msgstr "\n"
-"Muita pätsejä: "
+msgstr ""
+"\n"
+"Muita pätsejä: "
 
 msgid "Modified by "
 msgstr "Muokannut "
@@ -5828,7 +6032,7 @@ msgid ""
 "Compiled "
 msgstr ""
 "\n"
-"Kääntänyt "
+"Kääntänyt "
 
 msgid "by "
 msgstr ": "
@@ -5871,6 +6075,9 @@ msgstr ""
 msgid "without GUI."
 msgstr "ilman GUIta."
 
+msgid "with GTK3 GUI."
+msgstr "GTK3-GUIlla."
+
 msgid "with GTK2-GNOME GUI."
 msgstr "GTK2-Gnome-GUIlla."
 
@@ -5899,43 +6106,46 @@ msgid "with Cocoa GUI."
 msgstr "Cocoa-GUIlla."
 
 msgid "with (classic) GUI."
-msgstr "perinteisellä GUIlla."
+msgstr "perinteisellä GUIlla."
 
 msgid "  Features included (+) or not (-):\n"
 msgstr " Ominaisuudet mukana (+) ja poissa (-):\n"
 
 msgid "   system vimrc file: \""
-msgstr "   järjestelmän vimrc: \""
+msgstr "   järjestelmän vimrc: \""
 
 msgid "     user vimrc file: \""
-msgstr "     käyttäjän vimrc: \""
+msgstr "     käyttäjän vimrc: \""
 
 msgid " 2nd user vimrc file: \""
-msgstr " 2. käyttäjän vimrc: \""
+msgstr " 2. käyttäjän vimrc: \""
 
 msgid " 3rd user vimrc file: \""
-msgstr " 3. käyttäjän vimrc: \""
+msgstr " 3. käyttäjän vimrc: \""
 
 msgid "      user exrc file: \""
-msgstr "      käyttäjän exrc: \""
+msgstr "      käyttäjän exrc: \""
 
 msgid "  2nd user exrc file: \""
-msgstr "  2. käyttäjän exrc: \""
+msgstr "  2. käyttäjän exrc: \""
 
 msgid "  system gvimrc file: \""
-msgstr "  järjestelmän gvimrc: \""
+msgstr "  järjestelmän gvimrc: \""
 
 msgid "    user gvimrc file: \""
-msgstr "    käyttäjän gvimrc: \""
+msgstr "    käyttäjän gvimrc: \""
 
 msgid "2nd user gvimrc file: \""
-msgstr "2. käyttäjän gvimrc: \""
+msgstr "2. käyttäjän gvimrc: \""
 
 msgid "3rd user gvimrc file: \""
-msgstr "3. käyttäjän gvimrc: \""
+msgstr "3. käyttäjän gvimrc: \""
+
+msgid "       defaults file: \""
+msgstr "       defaults-tiedosto: \""
 
 msgid "    system menu file: \""
-msgstr "    järjestelmävalikko: \""
+msgstr "    järjestelmävalikko: \""
 
 msgid "  fall-back for $VIM: \""
 msgstr "  $VIMin fallback: \""
@@ -5944,10 +6154,10 @@ msgid " f-b for $VIMRUNTIME: \""
 msgstr " $VIMRUNTIMEn f-b: \""
 
 msgid "Compilation: "
-msgstr "Käännös: "
+msgstr "Käännös: "
 
 msgid "Compiler: "
-msgstr "Käännin: "
+msgstr "Käännin: "
 
 msgid "Linking: "
 msgstr "Linkitys: "
@@ -5962,16 +6172,16 @@ msgid "version "
 msgstr "versio "
 
 msgid "by Bram Moolenaar et al."
-msgstr "tekijät Bram Moolenaar et al."
+msgstr "tekijät Bram Moolenaar et al."
 
 msgid "Vim is open source and freely distributable"
-msgstr "Vim on avointa lähdekoodia ja vapaasti jaossa"
+msgstr "Vim on avointa lähdekoodia ja vapaasti jaossa"
 
 msgid "Help poor children in Uganda!"
-msgstr "Auta Ugandan köyhiä lapsia"
+msgstr "Auta Ugandan köyhiä lapsia"
 
 msgid "type  :help iccf<Enter>       for information "
-msgstr "kirjoita :help iccf<Enter>    lisätietoa varten            "
+msgstr "kirjoita :help iccf<Enter>    lisätietoa varten            "
 
 msgid "type  :q<Enter>               to exit         "
 msgstr "kirjoita :q<Enter>            lopettaaksesi                "
@@ -5992,13 +6202,13 @@ msgid "type  :help cp-default<Enter> for
 msgstr "kirjoita :help cp-default<Enter> ohjetta oletuksista varten"
 
 msgid "menu  Help->Orphans           for information    "
-msgstr "valikko Ohje->Orvot            lisätietoja varten          "
+msgstr "valikko Ohje->Orvot            lisätietoja varten          "
 
 msgid "Running modeless, typed text is inserted"
-msgstr "Suoritetaan tilattomana, kirjoitettu teksti syötetään"
+msgstr "Suoritetaan tilattomana, kirjoitettu teksti syötetään"
 
 msgid "menu  Edit->Global Settings->Toggle Insert Mode  "
-msgstr "valikko Muokkaa->Yleiset asetukset->Vaihda syötetilaa"
+msgstr "valikko Muokkaa->Yleiset asetukset->Vaihda syötetilaa"
 
 msgid "                              for two modes      "
 msgstr "                              kahta tilaa varten "
@@ -6010,97 +6220,100 @@ msgid "                              for
 msgstr "                              Vim-oletuksia varten"
 
 msgid "Sponsor Vim development!"
-msgstr "Tue Vimin kehitystä"
+msgstr "Tue Vimin kehitystä"
 
 msgid "Become a registered Vim user!"
-msgstr "Rekisteröidy Vim-käyttäjäksi."
+msgstr "Rekisteröidy Vim-käyttäjäksi."
 
 msgid "type  :help sponsor<Enter>    for information "
-msgstr "kirjoita :help sponsor<Enter>  lisätietoja varten"
+msgstr "kirjoita :help sponsor<Enter>  lisätietoja varten"
 
 msgid "type  :help register<Enter>   for information "
-msgstr "kirjoita :help register<Enter> lisätietoja varten"
+msgstr "kirjoita :help register<Enter> lisätietoja varten"
 
 msgid "menu  Help->Sponsor/Register  for information    "
-msgstr "valikko Ohje->Sponsoroi/Rekisteröi lisätietoja varten"
+msgstr "valikko Ohje->Sponsoroi/Rekisteröi lisätietoja varten"
 
 msgid "WARNING: Windows 95/98/ME detected"
 msgstr "VAROITUS: Window 95/98/ME havaittu"
 
 msgid "type  :help windows95<Enter>  for info on this"
-msgstr "kirjoita :help windows95<Enter> lisätietoja varten"
+msgstr "kirjoita :help windows95<Enter> lisätietoja varten"
 
 msgid "Already only one window"
-msgstr "Enää yksi ikkuna jäljellä"
+msgstr "Enää yksi ikkuna jäljellä"
 
 msgid "E441: There is no preview window"
 msgstr "E441: Ei esikatseluikkunaa"
 
 msgid "E442: Can't split topleft and botright at the same time"
-msgstr "E442: Ei voi jakaa vasenta ylänurkkaa ja oikeaa alanurkkaa yhtäaikaa"
+msgstr "E442: Ei voi jakaa vasenta ylänurkkaa ja oikeaa alanurkkaa yhtäaikaa"
 
 msgid "E443: Cannot rotate when another window is split"
-msgstr "E443: Ei voi kiertää kun toinen ikkuna on jaettu"
+msgstr "E443: Ei voi kiertää kun toinen ikkuna on jaettu"
 
 msgid "E444: Cannot close last window"
-msgstr "E444: Ei voi sulkea viimeistä ikkunaa"
+msgstr "E444: Ei voi sulkea viimeistä ikkunaa"
 
 msgid "E813: Cannot close autocmd window"
 msgstr "E813: Ei voi sulkea autocmd-ikkunaa"
 
 msgid "E814: Cannot close window, only autocmd window would remain"
-msgstr "E814: Ei voi sulkea viimeistä ikkunaa, joka ei ole autocmd-ikkuna"
+msgstr "E814: Ei voi sulkea viimeistä ikkunaa, joka ei ole autocmd-ikkuna"
 
 msgid "E445: Other window contains changes"
-msgstr "E445: Toinen ikkuna sisältää muutoksia"
+msgstr "E445: Toinen ikkuna sisältää muutoksia"
 
 msgid "E446: No file name under cursor"
-msgstr "E446: Ei tiedostonimeä kursorin alla"
+msgstr "E446: Ei tiedostonimeä kursorin alla"
 
 #, c-format
 msgid "E447: Can't find file \"%s\" in path"
-msgstr "E447: Tiedosto %s ei löydy polulta"
+msgstr "E447: Tiedosto %s ei löydy polulta"
+
+msgid "List or number required"
+msgstr "Lista tai luku tarvitaan"
 
 #, c-format
 msgid "E370: Could not load library %s"
 msgstr "E370: Kirjaston %s lataaminen ei onnistu"
 
 msgid "Sorry, this command is disabled: the Perl library could not be loaded."
-msgstr "Sori, komento ei toimi, Perl kirjastoa ei voinut ladata."
+msgstr "komento ei toimi, Perl kirjastoa ei voinut ladata."
 
 msgid "E299: Perl evaluation forbidden in sandbox without the Safe module"
 msgstr "E299: Perl-suoritus kielletty hiekkalaatikossa ilman Safe-moduulia"
 
 msgid "Edit with &multiple Vims"
-msgstr "&Muokkaa usealla Vimillä"
+msgstr "&Muokkaa usealla Vimillä"
 
 msgid "Edit with single &Vim"
-msgstr "Muokkaa yhdellä &Vimillä"
+msgstr "Muokkaa yhdellä &Vimillä"
 
 msgid "Diff with Vim"
-msgstr "Diffi Vimillä"
+msgstr "Diffi Vimillä"
 
 msgid "Edit with &Vim"
-msgstr "Muokkaa &Vimillä"
+msgstr "Muokkaa &Vimillä"
 
 #. Now concatenate
 msgid "Edit with existing Vim - "
-msgstr "Muokkaa olemassaolevalla Vimillä - "
+msgstr "Muokkaa olemassaolevalla Vimillä - "
 
 msgid "Edits the selected file(s) with Vim"
-msgstr "Muokkaa valittuja tiedostoja Vimillä"
+msgstr "Muokkaa valittuja tiedostoja Vimillä"
 
 msgid "Error creating process: Check if gvim is in your path!"
-msgstr "Virhe prosessin käynnistämisessä, varmista että gvim on polulla"
+msgstr "Virhe prosessin käynnistämisessä, varmista että gvim on polulla"
 
 msgid "gvimext.dll error"
 msgstr "gvimext.dll-virhe"
 
 msgid "Path length too long!"
-msgstr "Liian pitkä polku"
+msgstr "Liian pitkä polku"
 
 msgid "--No lines in buffer--"
-msgstr "--Ei rivejä puskurissa--"
+msgstr "--Ei rivejä puskurissa--"
 
 #.
 #. * The error messages that can be shared are included here.
@@ -6113,15 +6326,15 @@ msgid "E471: Argument required"
 msgstr "E471: Argumentti puuttuu"
 
 msgid "E10: \\ should be followed by /, ? or &"
-msgstr "E10: \\:n jälkeen pitää tulla /, ? tai &"
+msgstr "E10: \\:n jälkeen pitää tulla /, ? tai &"
 
 msgid "E11: Invalid in command-line window; <CR> executes, CTRL-C quits"
 msgstr "E11: Virheellinen komentorivi-ikkuna, <CR> suorittaa, Ctrl C lopettaa"
 
 msgid "E12: Command not allowed from exrc/vimrc in current dir or tag search"
 msgstr ""
-"E12: Komentoa ei tueta exrc:ssä tai vimrc:ssä tässä hakemistossa tai "
-"tägihaussa"
+"E12: Komentoa ei tueta exrc:ssä tai vimrc:ssä tässä hakemistossa tai "
+"tägihaussa"
 
 msgid "E171: Missing :endif"
 msgstr "E171: :endif puuttuu"
@@ -6142,10 +6355,10 @@ msgid "E588: :endfor without :for"
 msgstr "E588: :endfor ilman komentoa :for"
 
 msgid "E13: File exists (add ! to override)"
-msgstr "E13: Tiedosto on jo olemassa (lisää ! ohittaaksesi)"
+msgstr "E13: Tiedosto on jo olemassa (lisää ! ohittaaksesi)"
 
 msgid "E472: Command failed"
-msgstr "E472: Komento epäonnistui"
+msgstr "E472: Komento epäonnistui"
 
 #, c-format
 msgid "E234: Unknown fontset: %s"
@@ -6157,10 +6370,10 @@ msgstr "E235: Tuntematon fontti: %s"
 
 #, c-format
 msgid "E236: Font \"%s\" is not fixed-width"
-msgstr "E236: Fontti %s ei ole tasavälinen"
+msgstr "E236: Fontti %s ei ole tasavälinen"
 
 msgid "E473: Internal error"
-msgstr "E473: Sisäinen virhe"
+msgstr "E473: Sisäinen virhe"
 
 msgid "Interrupted"
 msgstr "Keskeytetty"
@@ -6191,93 +6404,93 @@ msgstr "E17: %s on hakemisto"
 
 #, c-format
 msgid "E364: Library call failed for \"%s()\""
-msgstr "E364: Kirjastukutsu %s() epäonnistui"
+msgstr "E364: Kirjastukutsu %s() epäonnistui"
 
 #, c-format
 msgid "E448: Could not load library function %s"
 msgstr "E448: Ei voitu ladta kirjastofunktiota %s"
 
 msgid "E19: Mark has invalid line number"
-msgstr "E19: Merkillä on virheellinen rivinumero"
+msgstr "E19: Merkillä on virheellinen rivinumero"
 
 msgid "E20: Mark not set"
-msgstr "E20: Merkkiä ei asetettu"
+msgstr "E20: Merkkiä ei asetettu"
 
 msgid "E21: Cannot make changes, 'modifiable' is off"
-msgstr "E21: Ei voi tehdä muutoksia, modifiable on pois päältä"
+msgstr "E21: Ei voi tehdä muutoksia, modifiable on pois päältä"
 
 msgid "E22: Scripts nested too deep"
-msgstr "E22: Liian monta tasoa skripteissä"
+msgstr "E22: Liian monta tasoa skripteissä"
 
 msgid "E23: No alternate file"
 msgstr "E23: Eo vaihtoehtoista tiedostoa"
 
 msgid "E24: No such abbreviation"
-msgstr "E24: Lyhennettä ei ole"
+msgstr "E24: Lyhennettä ei ole"
 
 msgid "E477: No ! allowed"
 msgstr "E477: ! ei sallittu"
 
 msgid "E25: GUI cannot be used: Not enabled at compile time"
-msgstr "E25: GUIta ei voi käyttää, koska sitä ei käännetty mukaan"
+msgstr "E25: GUIta ei voi käyttää, koska sitä ei käännetty mukaan"
 
 msgid "E26: Hebrew cannot be used: Not enabled at compile time\n"
-msgstr "E26: Hepreaa ei voi käyttää, koska sitä ei käännetty mukaan\n"
+msgstr "E26: Hepreaa ei voi käyttää, koska sitä ei käännetty mukaan\n"
 
 msgid "E27: Farsi cannot be used: Not enabled at compile time\n"
-msgstr "E27: Farsia ei voi käyttää, koska sitä ei käännetty mukaan\n"
+msgstr "E27: Farsia ei voi käyttää, koska sitä ei käännetty mukaan\n"
 
 msgid "E800: Arabic cannot be used: Not enabled at compile time\n"
-msgstr "E800: Arabiaa ei voi käyttää, koska sitä ei käännetty mukaan\n"
+msgstr "E800: Arabiaa ei voi käyttää, koska sitä ei käännetty mukaan\n"
 
 #, c-format
 msgid "E28: No such highlight group name: %s"
-msgstr "E28: Korostusryhmää ei ole nimellä: %s"
+msgstr "E28: Korostusryhmää ei ole nimellä: %s"
 
 msgid "E29: No inserted text yet"
-msgstr "E29: Tekstiä ei ole syötetty vielä"
+msgstr "E29: Tekstiä ei ole syötetty vielä"
 
 msgid "E30: No previous command line"
-msgstr "E30: Ei edellistä komentoriviä"
+msgstr "E30: Ei edellistä komentoriviä"
 
 msgid "E31: No such mapping"
 msgstr "E31: Kuvausta ei ole"
 
 msgid "E479: No match"
-msgstr "E479: Ei täsmää"
+msgstr "E479: Ei täsmää"
 
 #, c-format
 msgid "E480: No match: %s"
-msgstr "E480: Ei tsämää: %s"
+msgstr "E480: Ei tsämää: %s"
 
 msgid "E32: No file name"
-msgstr "E32: Ei tiedostonimeä"
+msgstr "E32: Ei tiedostonimeä"
 
 msgid "E33: No previous substitute regular expression"
-msgstr "E33: Ei edellistä korvausta säännölliselle ilmaukselle"
+msgstr "E33: Ei edellistä korvausta säännölliselle ilmaukselle"
 
 msgid "E34: No previous command"
-msgstr "E34: Ei edellistä komentoa"
+msgstr "E34: Ei edellistä komentoa"
 
 msgid "E35: No previous regular expression"
-msgstr "E35: Ei edellistä säännöllistä ilmausta"
+msgstr "E35: Ei edellistä säännöllistä ilmausta"
 
 msgid "E481: No range allowed"
 msgstr "E481: Arvoalue ei sallittu"
 
 msgid "E36: Not enough room"
-msgstr "E36: Tila ei riitä"
+msgstr "E36: Tila ei riitä"
 
 #, c-format
 msgid "E247: no registered server named \"%s\""
-msgstr "E247: palvelinta %s ei ole rekisteröitynä"
+msgstr "E247: palvelinta %s ei ole rekisteröitynä"
 
 #, c-format
 msgid "E482: Can't create file %s"
 msgstr "E482: Tiedostoa %s ei voi luoda"
 
 msgid "E483: Can't get temp file name"
-msgstr "E483: väliaikaistiedoston nimeä ei saada selville"
+msgstr "E483: väliaikaistiedoston nimeä ei saada selville"
 
 #, c-format
 msgid "E484: Can't open file %s"
@@ -6289,52 +6502,55 @@ msgstr "E485: Ei voi lukea tiedostoa %s"
 
 msgid "E37: No write since last change (add ! to override)"
 msgstr ""
-"E37: Viimeisen muutoksen jälkeen ei ole kirjoitettu (lisää ! ohittaaksesi)"
+"E37: Viimeisen muutoksen jälkeen ei ole kirjoitettu (lisää ! ohittaaksesi)"
+
+msgid "E37: No write since last change"
+msgstr "E37: Viimeisimmän muutoksen jälkeen ei ole kirjoitettu mitään"
 
 msgid "E38: Null argument"
 msgstr "E38: Null-argumentti"
 
 msgid "E39: Number expected"
-msgstr "E39: Pitää olla numero"
+msgstr "E39: Pitää olla numero"
 
 #, c-format
 msgid "E40: Can't open errorfile %s"
 msgstr "E40: virhetiedostoa %s ei voi avata"
 
 msgid "E233: cannot open display"
-msgstr "E233: näyttöä ei voi avata"
+msgstr "E233: näyttöä ei voi avata"
 
 msgid "E41: Out of memory!"
 msgstr "E41: Muisti loppui"
 
 msgid "Pattern not found"
-msgstr "Kuviota ei löydy"
+msgstr "Kuviota ei löydy"
 
 #, c-format
 msgid "E486: Pattern not found: %s"
-msgstr "E486: Kuviota ei löydy: %s"
+msgstr "E486: Kuviota ei löydy: %s"
 
 msgid "E487: Argument must be positive"
-msgstr "E487: Argumentin pitää olla positiivinen"
+msgstr "E487: Argumentin pitää olla positiivinen"
 
 msgid "E459: Cannot go back to previous directory"
-msgstr "E459: Ei voi siirtyä edelliseen hakemistoon"
+msgstr "E459: Ei voi siirtyä edelliseen hakemistoon"
 
 # ;-)
 msgid "E42: No Errors"
-msgstr "E42: Ei virheitä"
+msgstr "E42: Ei virheitä"
 
 msgid "E776: No location list"
 msgstr "E776: Ei sijaintilistaa"
 
 msgid "E43: Damaged match string"
-msgstr "E43: Viallinen täsmäysmerkkijono"
+msgstr "E43: Viallinen täsmäysmerkkijono"
 
 msgid "E44: Corrupted regexp program"
 msgstr "E44: Viallinen regexp-ohjelma"
 
 msgid "E45: 'readonly' option is set (add ! to override)"
-msgstr "E45: readonly asetettu (lisää ! ohittaaksesi)"
+msgstr "E45: readonly asetettu (lisää ! ohittaaksesi)"
 
 #, c-format
 msgid "E46: Cannot change read-only variable \"%s\""
@@ -6344,6 +6560,32 @@ msgstr "E46: Kirjoitussuojattua muuttuja
 msgid "E794: Cannot set variable in the sandbox: \"%s\""
 msgstr "E794: Muuttujaa ei voi asettaa hiekkalaatikossa: %s"
 
+msgid "E713: Cannot use empty key for Dictionary"
+msgstr "E713: Sanakirjassa ei voi olla tyhjiä avaimia"
+
+msgid "E715: Dictionary required"
+msgstr "E715: Sanakirja tarvitaan"
+
+#, c-format
+msgid "E684: list index out of range: %ld"
+msgstr "E684: Indeksi %ld luettelon rajojen ulkopuolella"
+
+#, c-format
+msgid "E118: Too many arguments for function: %s"
+msgstr "E118: Liikaa argumentteja funktiolle: %s"
+
+#, c-format
+msgid "E716: Key not present in Dictionary: %s"
+msgstr "E716: Avainta %s ei ole sanakirjassa"
+
+msgid "E714: List required"
+msgstr "E714: Lista tarvitaan"
+
+# datarakenteita
+#, c-format
+msgid "E712: Argument of %s must be a List or Dictionary"
+msgstr "E712: Argumentin %s pitää olla lista tai sanakirja"
+
 msgid "E47: Error while reading errorfile"
 msgstr "E47: Virhe virhetiedostoa luettaessa"
 
@@ -6351,16 +6593,16 @@ msgid "E48: Not allowed in sandbox"
 msgstr "E48: Ei sallittu hiekkalaatikossa"
 
 msgid "E523: Not allowed here"
-msgstr "E523: Ei sallittu täällä"
+msgstr "E523: Ei sallittu täällä"
 
 msgid "E359: Screen mode setting not supported"
-msgstr "E359: Näyttötila-asetus ei tuettu"
+msgstr "E359: Näyttötila-asetus ei tuettu"
 
 msgid "E49: Invalid scroll size"
 msgstr "E49: Virheellinen vierityskoko"
 
 msgid "E91: 'shell' option is empty"
-msgstr "E91: shell-asetus on tyhjä"
+msgstr "E91: shell-asetus on tyhjä"
 
 msgid "E255: Couldn't read in sign data!"
 msgstr "E255: Merkkidatan luku ei onnistu"
@@ -6369,22 +6611,22 @@ msgid "E72: Close error on swap file"
 msgstr "E72: Swap-tiedoston sulkemisvirhe"
 
 msgid "E73: tag stack empty"
-msgstr "E73: tägipino tyhjä"
+msgstr "E73: tägipino tyhjä"
 
 msgid "E74: Command too complex"
 msgstr "E74: Liian monimutkainen komento"
 
 msgid "E75: Name too long"
-msgstr "E75: Liian pitkä nimi"
+msgstr "E75: Liian pitkä nimi"
 
 msgid "E76: Too many ["
 msgstr "E76: Liian monta [:a"
 
 msgid "E77: Too many file names"
-msgstr "E77: Liikaa tiedostonimiä"
+msgstr "E77: Liikaa tiedostonimiä"
 
 msgid "E488: Trailing characters"
-msgstr "E488: Ylimääräisiä merkkejä perässä"
+msgstr "E488: Ylimääräisiä merkkejä perässä"
 
 msgid "E78: Unknown mark"
 msgstr "E78: Tuntematon merkki"
@@ -6418,13 +6660,17 @@ msgstr "E744: NetBeans ei tue muutoksia 
 
 #, c-format
 msgid "E685: Internal error: %s"
-msgstr "E685: Sisäinen virhe: %s"
+msgstr "E685: Sisäinen virhe: %s"
 
 msgid "E363: pattern uses more memory than 'maxmempattern'"
-msgstr "E363: kuvio käyttää enemmän muistia kuin maxmempattern on"
+msgstr "E363: kuvio käyttää enemmän muistia kuin maxmempattern on"
 
 msgid "E749: empty buffer"
-msgstr "E749: tyhjä puskuri"
+msgstr "E749: tyhjä puskuri"
+
+#, c-format
+msgid "E86: Buffer %ld does not exist"
+msgstr "E86: Puskuria %ld ei ole"
 
 msgid "E682: Invalid search pattern or delimiter"
 msgstr "E682: Virheellinen hakulauseke tai erotin"
@@ -6436,91 +6682,278 @@ msgstr "E139: Tiedosto on ladattu toisee
 msgid "E764: Option '%s' is not set"
 msgstr "E764: Asetus %s on asettamatta"
 
+msgid "E850: Invalid register name"
+msgstr "E850: Virheellinen rekisterin nimi"
+
+#, c-format
+msgid "E919: Directory not found in '%s': \"%s\""
+msgstr "E919: Hakemisto puuttuu kohteesta %s: %s"
+
 msgid "search hit TOP, continuing at BOTTOM"
-msgstr "haku pääsi ALKUUN, jatketaan LOPUSTA"
+msgstr "haku pääsi ALKUUN, jatketaan LOPUSTA"
 
 msgid "search hit BOTTOM, continuing at TOP"
-msgstr "haku pääsi LOPPUUN, jatketaan ALUSTA"
+msgstr "haku pääsi LOPPUUN, jatketaan ALUSTA"
 
 #, c-format
 msgid "Need encryption key for \"%s\""
 msgstr "Tarvitaan salausavain kohteelle %s "
 
-msgid "writelines() requires list of strings"
-msgstr "writelines()-komennolle pitää antaa merkkijonolista"
+msgid "empty keys are not allowed"
+msgstr "tyhjiä avaimia ei voi käyttää"
+
+msgid "dictionary is locked"
+msgstr "dictionary on lukittu"
+
+msgid "list is locked"
+msgstr "luettelo on lukittu"
+
+#, c-format
+msgid "failed to add key '%s' to dictionary"
+msgstr "avaimen %s lisääminen sanakirjaan ei onnistu"
+
+#, c-format
+msgid "index must be int or slice, not %s"
+msgstr "indeksin pitää olla int tai slice, ei %s"
+
+#, c-format
+msgid "expected str() or unicode() instance, but got %s"
+msgstr "odottettiin insanssia tyypeistä str() tai unicode(), ei %s"
+
+#, c-format
+msgid "expected bytes() or str() instance, but got %s"
+msgstr "odotettiin instanssia tyypeistä bytes() tai str(), ei %s"
+
+#, c-format
+msgid ""
+"expected int(), long() or something supporting coercing to long(), but got %s"
+msgstr ""
+"odotettiin instanssia tyypeistä int(), long() tai mitä tahansa joka muuntuisi "
+"tyyppiin long(), ei %s"
+
+#, c-format
+msgid "expected int() or something supporting coercing to int(), but got %s"
+msgstr "odotettiin tyyppiä int() tai jotain joka muuntuu tyyppiin int(), ei %s"
+
+msgid "value is too large to fit into C int type"
+msgstr "arvo on liian suuri mahtumaan C:n int-tyyppiin"
+
+msgid "value is too small to fit into C int type"
+msgstr "arvo on liian pieni mahtumaan C:n int-tyyppiin"
+
+msgid "number must be greater than zero"
+msgstr "luvun on oltava nollaa suurempi"
+
+msgid "number must be greater or equal to zero"
+msgstr "luvun on oltava yhtä suuri tai suurempi kuin nolla"
+
+msgid "can't delete OutputObject attributes"
+msgstr "ei voi poistaa OutputObject-attribuutteja"
+
+#, c-format
+msgid "invalid attribute: %s"
+msgstr "virheellinen attribuutti: %s"
 
 msgid "E264: Python: Error initialising I/O objects"
 msgstr "E264: Python: Virhe IO-olioiden alustuksessa"
 
-msgid "no such buffer"
-msgstr "puskuria ei ole"
+msgid "failed to change directory"
+msgstr "hakemistoa ei voitu muuttaa"
+
+#, c-format
+msgid "expected 3-tuple as imp.find_module() result, but got %s"
+msgstr "odotettiin 3-tuplea tuloksena imp.find_module()-kutsulle, ei %s"
+
+#, c-format
+msgid "expected 3-tuple as imp.find_module() result, but got tuple of size %d"
+msgstr "odotettiin 3-tuple tuloksnea imp.find_module()-kutsulle, mutta tuplen "
+"koko onkin %d"
+
+msgid "internal error: imp.find_module returned tuple with NULL"
+msgstr "sisäinen virhe: imp.find_module palautti tuplen joka sisältää nullin"
+
+msgid "cannot delete vim.Dictionary attributes"
+msgstr "ei voi poistaa vim.Dictionary-attribuutteja"
+
+msgid "cannot modify fixed dictionary"
+msgstr "ei voida muuttaa kiinnitettyä sanakirjaa"
+
+#, c-format
+msgid "cannot set attribute %s"
+msgstr "ei voi asettaa attribuuttia %s"
+
+msgid "hashtab changed during iteration"
+msgstr "hashtab muuttui kesken iteraation"
+
+#, c-format
+msgid "expected sequence element of size 2, but got sequence of size %d"
+msgstr "sekvenssin elementin koon pitäisi olla 2, ei %d"
+
+msgid "list constructor does not accept keyword arguments"
+msgstr "listakonstruktori ei tue avainsanaparametrejä"
+
+msgid "list index out of range"
+msgstr "listaindeksi arvoalueen ulkopuolelta"
+
+#. No more suitable format specifications in python-2.3
+#, c-format
+msgid "internal error: failed to get vim list item %d"
+msgstr "sisäinen virhe: ei pystytty hakea vimin listan indeksiä %d"
+
+msgid "slice step cannot be zero"
+msgstr "slicen askel ei voi olla nolla"
+
+#, c-format
+msgid "attempt to assign sequence of size greater than %d to extended slice"
+msgstr "yritettiin sijoittaa sekvenssiä jonka koko on enemmän kuin %d sliceen"
+
+#, c-format
+msgid "internal error: no vim list item %d"
+msgstr "sisäinen virhe: ei vim-listan indeksiä %d"
+
+msgid "internal error: not enough list items"
+msgstr "sisäinen virhe: ei tarpeeksi listan kohtia"
+
+msgid "internal error: failed to add item to list"
+msgstr "sisäinen virhe: ei voitu lisätä kohtaa listaan"
+
+#, c-format
+msgid "attempt to assign sequence of size %d to extended slice of size %d"
+msgstr "yritettiin asettaa sekvenssiä jonka koko on %d sliceen jonka koko on %d"
+
+msgid "failed to add item to list"
+msgstr "ei voitu lisätä kohtaa listaan"
+
+msgid "cannot delete vim.List attributes"
+msgstr "ei voi poistaa vim.List-attribuutteja"
+
+msgid "cannot modify fixed list"
+msgstr "ei voida muokata kiinitettyä listaa"
+
+#, c-format
+msgid "unnamed function %s does not exist"
+msgstr "nimetöntä funktiota %s ei ole"
+
+#, c-format
+msgid "function %s does not exist"
+msgstr "funktiota %s ei ole"
+
+#, c-format
+msgid "failed to run function %s"
+msgstr "ei voitu suorittaa funktiota %s"
+
+msgid "unable to get option value"
+msgstr "ei voitu hakea asetuksen arvoa"
+
+msgid "internal error: unknown option type"
+msgstr "sisäinen virhe: tuntematon asetustyyppi"
+
+msgid "problem while switching windows"
+msgstr "virhe ikkunaa vaihtaessa"
+
+#, c-format
+msgid "unable to unset global option %s"
+msgstr "ei voi tyhjentää yleistä asetusta %s"
+
+#, c-format
+msgid "unable to unset option %s which does not have global value"
+msgstr "ei voi tyhjentää asetusta %s jolla ei ole yleistä arvoa"
+
+msgid "attempt to refer to deleted tab page"
+msgstr "yritettiin viitata poistettuun välilehteen"
+
+msgid "no such tab page"
+msgstr "välilehteä ei ole"
 
 msgid "attempt to refer to deleted window"
 msgstr "yritettiin viitata poistettuun ikkunaan"
 
-msgid "readonly attribute"
-msgstr "kirjoitussuojattu attribuutti"
+msgid "readonly attribute: buffer"
+msgstr "kirjoitussuojausattribuutti: puskuri"
 
 msgid "cursor position outside buffer"
 msgstr "kursorin sijainti puskurin ulkopuolella"
 
-#, c-format
-msgid "<window object (deleted) at %p>"
-msgstr "<ikkunaolio (poistettu) kohdassa %p>"
-
-#, c-format
-msgid "<window object (unknown) at %p>"
-msgstr "<ikkunaolio (tuntematon) kohdassa %p>"
-
-#, c-format
-msgid "<window %d>"
-msgstr "<ikkuna %d>"
-
 msgid "no such window"
 msgstr "ikkunaa ei ole"
 
 msgid "attempt to refer to deleted buffer"
 msgstr "yritettiin viitata poistettuun puskuriin"
 
-# New Line eli uusi rivinvaihtomerkki (ei CR, LF tai CR LF)
-#~ msgid "[NL found]"
-#~ msgstr "[NL puuttuu]"
-
-#~ msgid "Vim dialog..."
-#~ msgstr "Vim-ikkuna..."
-
-#~ msgid "Font Selection"
-#~ msgstr "Fontin valinta"
-
-#~ msgid "E569: maximum number of cscope connections reached"
-#~ msgstr "E569: enimmäismäärä cscope-yhteyksiä otettu"
-
-#~ msgid "-name <name>\t\tUse resource as if vim was <name>"
-#~ msgstr "-name <nimi>\t\tKäytä resurssia vim <nimenä>"
-
-#~ msgid "\t\t\t  (Unimplemented)\n"
-#~ msgstr "\t\t\t  (toteuttamatta)\n"
-
-#~ msgid "E290: over-the-spot style requires fontset"
-#~ msgstr "E290: over-the-spot-tyylissä pitää olla fontset"
-
-#~ msgid "E291: Your GTK+ is older than 1.2.3. Status area disabled"
-#~ msgstr "E291: GTK+-versio vanhempi kuin 1.2.3: Tila-alue poistettu käytöstä"
-
-#~ msgid "E292: Input Method Server is not running"
-#~ msgstr "E292: Syötemetodipalvelin ei ole käynnissä"
-
-#~ msgid "E396: containedin argument not accepted here"
-#~ msgstr "E396: containedin ei sovi tähän"
-
-#~ msgid "with GTK-GNOME GUI."
-#~ msgstr "GTK-Gnome-GUIlla."
-
-#~ msgid "with GTK GUI."
-#~ msgstr "GTK-GUIlla."
-
-#~ msgid "-V[N]\t\tVerbose level"
-#~ msgstr "-V[N]\t\tMonisanaisuustaso"
-
-#~ msgid "...(truncated)"
-#~ msgstr "...(katkaistu)"
+msgid "failed to rename buffer"
+msgstr "ei voity uudelleennimetä puskuria"
+
+msgid "mark name must be a single character"
+msgstr "merkin nimen pitää olla yksi merkki"
+
+#, c-format
+msgid "expected vim.Buffer object, but got %s"
+msgstr "odotettiin vim.Buffer-oliota, ei %s"
+
+#, c-format
+msgid "failed to switch to buffer %d"
+msgstr "ei voitu vaihtaa puskuriin %d"
+
+#, c-format
+msgid "expected vim.Window object, but got %s"
+msgstr "odotettiin vim.Window-oliota, saatiin %s"
+
+msgid "failed to find window in the current tab page"
+msgstr "ei voitu löytää ikkunaa nykyiselle välilehtisivulle"
+
+msgid "did not switch to the specified window"
+msgstr "ei vaihdettu annettuun ikkunaan"
+
+#, c-format
+msgid "expected vim.TabPage object, but got %s"
+msgstr "odotettiin vim.TabPage-oliota, saatiin %s"
+
+msgid "did not switch to the specified tab page"
+msgstr "ei voitu vaihtaa annetulle välilehtisivulle"
+
+msgid "failed to run the code"
+msgstr "ei voitu suorittaa koodia"
+
+msgid "E858: Eval did not return a valid python object"
+msgstr "E858: Eval ei palauttanut python-oliota"
+
+msgid "E859: Failed to convert returned python object to vim value"
+msgstr "E859: Ei voitu konvertoida python-oliota vim-arvoksi"
+
+#, c-format
+msgid "unable to convert %s to vim dictionary"
+msgstr "ei voitu konvertoida oliota %s vim-sanakirjaksi"
+
+#, c-format
+msgid "unable to convert %s to vim list"
+msgstr "ei voitu konvertoida tyypistä %s vim-listaksi"
+
+#, c-format
+msgid "unable to convert %s to vim structure"
+msgstr "ei voi konvertoida oliota %s vim-tietorakenteeksi"
+
+msgid "internal error: NULL reference passed"
+msgstr "sisäinen virhe: NULL-viite annettu"
+
+msgid "internal error: invalid value type"
+msgstr "sisäinen virhe: huono arvotyyppi"
+
+msgid ""
+"Failed to set path hook: sys.path_hooks is not a list\n"
+"You should now do the following:\n"
+"- append vim.path_hook to sys.path_hooks\n"
+"- append vim.VIM_SPECIAL_PATH to sys.path\n"
+msgstr ""
+"Ei voitu asettaa polkukoukkua: sys.path_hooks ei ole lista\n"
+"Koeta seuraavaa:\n"
+"- lisää vim.path_hook muuttujaan sys.path_hooks\n"
+"- lisää vim.VIM_SPECIAL_PATH muuttujaan sys.path\n"
+
+
+msgid ""
+"Failed to set path: sys.path is not a list\n"
+"You should now append vim.VIM_SPECIAL_PATH to sys.path"
+msgstr ""
+"Ei onnistuttu asettaman polkua: sys.path ei ole list\n"
+"Lisää vim.VIM_SPECIAL_PATH muuttujaan sys.path"
+