changeset 14668:34fd018452ed

Update runtime files. commit https://github.com/vim/vim/commit/20aac6c1126988339611576d425965a25a777658 Author: Bram Moolenaar <Bram@vim.org> Date: Sun Sep 2 21:07:30 2018 +0200 Update runtime files.
author Christian Brabandt <cb@256bit.org>
date Sun, 02 Sep 2018 21:15:05 +0200
parents 289d3fac3399
children 63d5ae57a663
files runtime/autoload/ccomplete.vim runtime/autoload/dist/ft.vim runtime/autoload/tar.vim runtime/compiler/stack.vim runtime/doc/eval.txt runtime/doc/gui_x11.txt runtime/doc/if_pyth.txt runtime/doc/options.txt runtime/doc/tags runtime/doc/todo.txt runtime/ftplugin/cmake.vim runtime/indent/dosbatch.vim runtime/indent/teraterm.vim runtime/syntax/teraterm.vim runtime/tutor/tutor.es runtime/tutor/tutor.es.utf-8 runtime/tutor/tutor.ru.utf-8 src/po/eo.po src/po/fr.po
diffstat 19 files changed, 552 insertions(+), 386 deletions(-) [+]
line wrap: on
line diff
--- a/runtime/autoload/ccomplete.vim
+++ b/runtime/autoload/ccomplete.vim
@@ -1,7 +1,7 @@
 " Vim completion script
 " Language:	C
 " Maintainer:	Bram Moolenaar <Bram@vim.org>
-" Last Change:	2012 Jun 20
+" Last Change:	2018 Aug 20
 
 let s:cpo_save = &cpo
 set cpo&vim
@@ -72,8 +72,10 @@ function! ccomplete#Complete(findstart, 
   " Split item in words, keep empty word after "." or "->".
   " "aa" -> ['aa'], "aa." -> ['aa', ''], "aa.bb" -> ['aa', 'bb'], etc.
   " We can't use split, because we need to skip nested [...].
+  " "aa[...]" -> ['aa', '[...]'], "aa.bb[...]" -> ['aa', 'bb', '[...]'], etc.
   let items = []
   let s = 0
+  let arrays = 0
   while 1
     let e = match(base, '\.\|->\|\[', s)
     if e < 0
@@ -107,6 +109,7 @@ function! ccomplete#Complete(findstart, 
       endwhile
       let e += 1
       call add(items, strpart(base, s, e - s))
+      let arrays += 1
       let s = e
     endif
   endwhile
@@ -161,15 +164,26 @@ function! ccomplete#Complete(findstart, 
 	endif
       endif
       let res = [{'match': match, 'tagline' : '', 'kind' : kind, 'info' : line}]
+    elseif len(items) == arrays + 1
+      " Completing one word and it's a local array variable: build tagline
+      " from declaration line
+      let match = items[0]
+      let kind = 'v'
+      let tagline = "\t/^" . line . '$/'
+      let res = [{'match': match, 'tagline' : tagline, 'kind' : kind, 'info' : line}]
     else
       " Completing "var.", "var.something", etc.
       let res = s:Nextitem(strpart(line, 0, col), items[1:], 0, 1)
     endif
   endif
 
-  if len(items) == 1
+  if len(items) == 1 || len(items) == arrays + 1
     " Only one part, no "." or "->": complete from tags file.
-    let tags = taglist('^' . base)
+    if len(items) == 1
+      let tags = taglist('^' . base)
+    else
+      let tags = taglist('^' . items[0] . '$')
+    endif
 
     " Remove members, these can't appear without something in front.
     call filter(tags, 'has_key(v:val, "kind") ? v:val["kind"] != "m" : 1')
@@ -516,11 +530,24 @@ function! s:StructMembers(typename, item
     endif
   endif
 
+  " Skip over [...] items
+  let idx = 0
+  while 1
+    if idx >= len(a:items)
+      let target = ''		" No further items, matching all members
+      break
+    endif
+    if a:items[idx][0] != '['
+      let target = a:items[idx]
+      break
+    endif
+    let idx += 1
+  endwhile
   " Put matching members in matches[].
   let matches = []
   for l in qflist
     let memb = matchstr(l['text'], '[^\t]*')
-    if memb =~ '^' . a:items[0]
+    if memb =~ '^' . target
       " Skip matches local to another file.
       if match(l['text'], "\tfile:") < 0 || bufnr('%') == bufnr(matchstr(l['text'], '\t\zs[^\t]*'))
 	let item = {'match': memb, 'tagline': l['text']}
@@ -540,8 +567,8 @@ function! s:StructMembers(typename, item
   endfor
 
   if len(matches) > 0
-    " Skip over [...] items
-    let idx = 1
+    " Skip over next [...] items
+    let idx += 1
     while 1
       if idx >= len(a:items)
 	return matches		" No further items, return the result.
--- a/runtime/autoload/dist/ft.vim
+++ b/runtime/autoload/dist/ft.vim
@@ -632,7 +632,7 @@ endfunc
 " Choose context, plaintex, or tex (LaTeX) based on these rules:
 " 1. Check the first line of the file for "%&<format>".
 " 2. Check the first 1000 non-comment lines for LaTeX or ConTeXt keywords.
-" 3. Default to "latex" or to g:tex_flavor, can be set in user's vimrc.
+" 3. Default to "plain" or to g:tex_flavor, can be set in user's vimrc.
 func dist#ft#FTtex()
   let firstline = getline(1)
   if firstline =~ '^%&\s*\a\+'
--- a/runtime/autoload/tar.vim
+++ b/runtime/autoload/tar.vim
@@ -152,13 +152,16 @@ fun! tar#Browse(tarfile)
    " assuming cygwin
    let tarfile=substitute(system("cygpath -u ".shellescape(tarfile,0)),'\n$','','e')
   endif
+
+  let gzip_command = s:get_gzip_command(tarfile)
+
   let curlast= line("$")
   if tarfile =~# '\.\(gz\|tgz\)$'
 "   call Decho("1: exe silent r! gzip -d -c -- ".shellescape(tarfile,1)." | ".g:tar_cmd." -".g:tar_browseoptions." - ")
-   exe "sil! r! bzip2 -d -c -- ".shellescape(tarfile,1)." | ".g:tar_cmd." -".g:tar_browseoptions." - "
+   exe "sil! r! " . gzip_command . " -d -c -- ".shellescape(tarfile,1)." | ".g:tar_cmd." -".g:tar_browseoptions." - "
   elseif tarfile =~# '\.lrp'
 "   call Decho("2: exe silent r! cat -- ".shellescape(tarfile,1)."|gzip -d -c -|".g:tar_cmd." -".g:tar_browseoptions." - ")
-   exe "sil! r! cat -- ".shellescape(tarfile,1)."|gzip -d -c -|".g:tar_cmd." -".g:tar_browseoptions." - "
+   exe "sil! r! cat -- ".shellescape(tarfile,1)."|" . gzip_command . " -d -c -|".g:tar_cmd." -".g:tar_browseoptions." - "
   elseif tarfile =~# '\.\(bz2\|tbz\|tb2\)$'
 "   call Decho("3: exe silent r! bzip2 -d -c -- ".shellescape(tarfile,1)." | ".g:tar_cmd." -".g:tar_browseoptions." - ")
    exe "sil! r! bzip2 -d -c -- ".shellescape(tarfile,1)." | ".g:tar_cmd." -".g:tar_browseoptions." - "
@@ -287,15 +290,18 @@ fun! tar#Read(fname,mode)
   else
    let tar_secure= " "
   endif
+
+  let gzip_command = s:get_gzip_command(tarfile)
+
   if tarfile =~# '\.bz2$'
 "   call Decho("7: exe silent r! bzip2 -d -c ".shellescape(tarfile,1)."| ".g:tar_cmd." -".g:tar_readoptions." - ".tar_secure.shellescape(fname,1).decmp)
    exe "sil! r! bzip2 -d -c -- ".shellescape(tarfile,1)."| ".g:tar_cmd." -".g:tar_readoptions." - ".tar_secure.shellescape(fname,1).decmp
   elseif tarfile =~# '\.\(gz\|tgz\)$'
 "   call Decho("5: exe silent r! gzip -d -c -- ".shellescape(tarfile,1)."| ".g:tar_cmd.' -'.g:tar_readoptions.' - '.tar_secure.shellescape(fname,1))
-   exe "sil! r! bzip2 -d -c -- ".shellescape(tarfile,1)."| ".g:tar_cmd." -".g:tar_readoptions." - ".tar_secure.shellescape(fname,1).decmp
+   exe "sil! r! " . gzip_command . " -d -c -- ".shellescape(tarfile,1)."| ".g:tar_cmd." -".g:tar_readoptions." - ".tar_secure.shellescape(fname,1).decmp
   elseif tarfile =~# '\.lrp$'
 "   call Decho("6: exe silent r! cat ".shellescape(tarfile,1)." | gzip -d -c - | ".g:tar_cmd." -".g:tar_readoptions." - ".tar_secure.shellescape(fname,1).decmp)
-   exe "sil! r! cat -- ".shellescape(tarfile,1)." | gzip -d -c - | ".g:tar_cmd." -".g:tar_readoptions." - ".tar_secure.shellescape(fname,1).decmp
+   exe "sil! r! cat -- ".shellescape(tarfile,1)." | " . gzip_command . " -d -c - | ".g:tar_cmd." -".g:tar_readoptions." - ".tar_secure.shellescape(fname,1).decmp
   elseif tarfile =~# '\.lzma$'
 "   call Decho("7: exe silent r! lzma -d -c ".shellescape(tarfile,1)."| ".g:tar_cmd." -".g:tar_readoptions." - ".tar_secure.shellescape(fname,1).decmp)
    exe "sil! r! lzma -d -c -- ".shellescape(tarfile,1)."| ".g:tar_cmd." -".g:tar_readoptions." - ".tar_secure.shellescape(fname,1).decmp
@@ -389,6 +395,8 @@ fun! tar#Write(fname)
   let tarfile = substitute(b:tarfile,'tarfile:\(.\{-}\)::.*$','\1','')
   let fname   = substitute(b:tarfile,'tarfile:.\{-}::\(.*\)$','\1','')
 
+  let gzip_command = s:get_gzip_command(tarfile)
+
   " handle compressed archives
   if tarfile =~# '\.bz2'
    call system("bzip2 -d -- ".shellescape(tarfile,0))
@@ -396,12 +404,12 @@ fun! tar#Write(fname)
    let compress= "bzip2 -- ".shellescape(tarfile,0)
 "   call Decho("compress<".compress.">")
   elseif tarfile =~# '\.gz'
-   call system("gzip -d -- ".shellescape(tarfile,0))
+   call system(gzip_command . " -d -- ".shellescape(tarfile,0))
    let tarfile = substitute(tarfile,'\.gz','','e')
    let compress= "gzip -- ".shellescape(tarfile,0)
 "   call Decho("compress<".compress.">")
   elseif tarfile =~# '\.tgz'
-   call system("gzip -d -- ".shellescape(tarfile,0))
+   call system(gzip_command . " -d -- ".shellescape(tarfile,0))
    let tarfile = substitute(tarfile,'\.tgz','.tar','e')
    let compress= "gzip -- ".shellescape(tarfile,0)
    let tgz     = 1
@@ -581,7 +589,9 @@ fun! tar#Vimuntar(...)
 
   " if necessary, decompress the tarball; then, extract it
   if tartail =~ '\.tgz'
-   if executable("gunzip")
+   if executable("bzip2")
+    silent exe "!bzip2 -d ".shellescape(tartail)
+   elseif executable("gunzip")
     silent exe "!gunzip ".shellescape(tartail)
    elseif executable("gzip")
     silent exe "!gzip -d ".shellescape(tartail)
@@ -619,6 +629,15 @@ fun! tar#Vimuntar(...)
 "  call Dret("tar#Vimuntar")
 endfun
 
+func s:get_gzip_command(file)
+  if a:file =~# 'z$' && executable('bzip2')
+    " Some .tgz files are actually compressed with bzip2.  Since bzip2 can
+    " handle the format from gzip, use it if the command exists.
+    return 'bzip2'
+  endif
+  return 'gzip'
+endfunc
+
 " =====================================================================
 " Modelines And Restoration: {{{1
 let &cpo= s:keepcpo
new file mode 100644
--- /dev/null
+++ b/runtime/compiler/stack.vim
@@ -0,0 +1,37 @@
+" Vim compiler file
+" Compiler:         Haskell Stack
+" Maintainer:       Daniel Campoverde <alx@sillybytes.net>
+" Latest Revision:  2018-08-27
+
+if exists("current_compiler")
+  finish
+endif
+let current_compiler = "stack"
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+
+CompilerSet errorformat=
+    \%-G%.%#:\ build\ %.%#,
+    \%-G%.%#:\ configure\ %.%#,
+    \%-G[%.%#]%.%#,
+    \%-G%.%#preprocessing\ %.%#,
+    \%-G%.%#configuring\ %.%#,
+    \%-G%.%#building\ %.%#,
+    \%-G%.%#linking\ %.%#,
+    \%-G%.%#installing\ %.%#,
+    \%-G%.%#registering\ %.%#,
+    \%-G%.%#:\ copy/register%.%#,
+    \%-G%.%#process\ exited\ %.%#,
+    \%-G%.%#--builddir=%.%#,
+    \%-G--%.%#,
+    \%-G%.%#\|%.%#,
+    \%E%f:%l:%c:\ error:,%+Z\ \ \ \ %m,
+    \%E%f:%l:%c:\ error:\ %m,%-Z,
+    \%W%f:%l:%c:\ warning:,%+Z\ \ \ \ %m,
+    \%W%f:%l:%c:\ warning:\ %m,%-Z,
+
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
--- a/runtime/doc/eval.txt
+++ b/runtime/doc/eval.txt
@@ -8013,7 +8013,7 @@ substitute({expr}, {pat}, {sub}, {flags}
 		|submatch()| returns.  Example: >
 		   :echo substitute(s, '%\(\x\x\)', {m -> '0x' . m[1]}, 'g')
 
-swapinfo({fname})					swapinfo()
+swapinfo({fname})					*swapinfo()*
 		The result is a dictionary, which holds information about the
 		swapfile {fname}. The available fields are:
 			version VIM version
--- a/runtime/doc/gui_x11.txt
+++ b/runtime/doc/gui_x11.txt
@@ -376,8 +376,8 @@ you might have to use the file ~/.gtkrc-
 distribution.
 
 For GTK+ 3, an effect similar to the above can be obtained by adding the
-following snippet of CSS code to $XDG_HOME_DIR/gtk-3.0/gtk.css (usually,
-$HOME/.config/gtk-3.0/gtk.css):
+following snippet of CSS code to $XDG_HOME_DIR/gtk-3.0/gtk.css (see the next
+section):
 
 For GTK+ 3 < 3.20: >
 
@@ -408,6 +408,10 @@ stable support for GTK+ CSS:
 GTK+ uses CSS for styling and layout of widgets.  In this subsection, we'll
 have a quick look at GTK+ CSS through simple, illustrative examples.
 
+You can usually edit the config with: >
+	vim $HOME/.config/gtk-3.0/gtk.css
+
+
 Example 1.  Empty Space Adjustment ~
 
 By default, the toolbar and the tabline of the GTK+ 3 GUI are somewhat larger
@@ -492,6 +496,16 @@ unexpectedly less attractive or even det
 in mind always when you try improving a theme.
 
 
+Example 3.  border color
+
+To eliminate borders when maximized: >
+
+    @define-color bg_color #1B2B34;
+    #vim-main-window {
+	background-color: @bg_color;
+    }
+
+
 Using Vim as a GTK+ plugin ~
 							*gui-gtk-socketid*
 When the GTK+ version of Vim starts up normally, it creates its own top level
--- a/runtime/doc/if_pyth.txt
+++ b/runtime/doc/if_pyth.txt
@@ -82,6 +82,18 @@ Examples:
 	:pydo return "%s\t%d" % (line[::-1], len(line))
 	:pydo if line: return "%4d: %s" % (linenr, line)
 <
+One can use `:pydo` in possible conjunction with `:py` to filter a range using
+python. For example: >
+
+	:py3 << EOF
+	needle = vim.eval('@a')
+	replacement = vim.eval('@b')
+
+	def py_vim_string_replace(str):
+		return str.replace(needle, replacement)
+	EOF
+	:'<,'>py3do return py_vim_string_replace(line)
+<
 							*:pyfile* *:pyf*
 :[range]pyf[ile] {file}
 			Execute the Python script in {file}.  The whole
--- a/runtime/doc/options.txt
+++ b/runtime/doc/options.txt
@@ -846,6 +846,8 @@ A jump table for the options with a shor
 	'{A-Z0-9}, or `{A-Z0-9} command takes one to another file.
 	Note that for some commands the 'autowrite' option is not used, see
 	'autowriteall' for that.
+	Some buffers will not be written, specifically when 'buttype' is
+	"nowrite", "nofile", "terminal" or "prompt".
 
 			 *'autowriteall'* *'awa'* *'noautowriteall'* *'noawa'*
 'autowriteall' 'awa'	boolean	(default off)
--- a/runtime/doc/tags
+++ b/runtime/doc/tags
@@ -5408,6 +5408,7 @@ catch-order	eval.txt	/*catch-order*
 catch-text	eval.txt	/*catch-text*
 cc	change.txt	/*cc*
 ceil()	eval.txt	/*ceil()*
+cfilter-plugin	quickfix.txt	/*cfilter-plugin*
 ch.vim	syntax.txt	/*ch.vim*
 ch_canread()	eval.txt	/*ch_canread()*
 ch_close()	eval.txt	/*ch_close()*
@@ -8659,6 +8660,7 @@ swap-file	recover.txt	/*swap-file*
 swapchoice-variable	eval.txt	/*swapchoice-variable*
 swapcommand-variable	eval.txt	/*swapcommand-variable*
 swapfile-changed	version4.txt	/*swapfile-changed*
+swapinfo()	eval.txt	/*swapinfo()*
 swapname-variable	eval.txt	/*swapname-variable*
 sybase	ft_sql.txt	/*sybase*
 syn-sync-grouphere	syntax.txt	/*syn-sync-grouphere*
@@ -9639,6 +9641,7 @@ windows98	os_win32.txt	/*windows98*
 windowsme	os_win32.txt	/*windowsme*
 winheight()	eval.txt	/*winheight()*
 winid	windows.txt	/*winid*
+winlayout()	eval.txt	/*winlayout()*
 winline()	eval.txt	/*winline()*
 winnr()	eval.txt	/*winnr()*
 winrestcmd()	eval.txt	/*winrestcmd()*
--- a/runtime/doc/todo.txt
+++ b/runtime/doc/todo.txt
@@ -43,6 +43,7 @@ browser use: https://github.com/vim/vim/
 - :s/foo  using CTRL-G moves to another line, should not happen, or use the
   correct line (it uses the last but one line) (Lifepillar, Aug 18, #3345)
 - Also support range: :/foo/,/bar/delete
+- Also support for user command, e.g. Cfilter
 - :%s/foo should take the first match below the cursor line, unless there
   isn't one?
   Then :%s?foo should take the first match above the cursor line.
@@ -109,27 +110,12 @@ Improve fallback for menu translations, 
 files that source the actual file.  E.g. menu_da_de -> menu_da
 Include part of #3242?
 
-Using ":file" in quickfix window during an autocommand doesn't work. 
-(Jason Franklin, 2018 May 23) Allow for using it when there is no argument.
-Patch should now work. (Jason Franklin, 2018 Aug 12)
-
-Include Chinese-Taiwan translations. (bystar, #3261)
-
-Screendump test fails even though characters are the same.
-Some attribute difference that isn't included in the screenshot?
-(Elimar Riesebieter, 2018 Aug 21)
-
 Completion mixes results from the current buffer with tags and other files.
 Happens when typing CTRL-N while still search for results.  E.g., type "b_" in
 terminal.c and then CTRL-N twice.
 Should do current file first and not split it up when more results are found.
 (Also #1890)
 
-Patch to support VTP better. (Nobuhiro Takasaki, 2018 Aug 19, #3347)
-
-Patch with improvement for ccomplete: #3350
-Try it out.  Perhaps write a test?
-
 More warnings from static analysis:
 https://lgtm.com/projects/g/vim/vim/alerts/?mode=list
 
@@ -195,8 +181,22 @@ Adjust windows installer explanation of 
 Set g:actual_curbuf when evaluating 'statusline', not just with an expression.
 (Daniel Hahler, 2018 Aug 8, #3299)
 
+Using an external diff is inefficient.  Not all systems have a good diff
+program available (esp. MS-Windows).  Would be nice to have in internal diff
+implementation.  Can then also use this for displaying changes within a line.
+Olaf Dabrunz is working on this. (10 Jan 2016)
+9   Instead invoking an external diff program, use builtin code.  One can be
+    found here: http://www.ioplex.com/~miallen/libmba/dl/src/diff.c
+    It's complicated and badly documented.
+Alternative: use the xdiff library.  Unfinished Patch from Christian Brabandt,
+2018 Mar 20, #2732)
+
 Difference between two regexp engines: #3373
 
+Patch to add arguments to argc() and argv(). (Yegappan Lakshmanan, 2016 Jan
+24, #832)  Also need a way to get the global arg list?  Update later on Jan 24
+Update Mar 5. Update Apr 7.  Update Jun 5.
+
 When the last line wraps, selecting with the mouse below that line only
 includes the first screen line. (2018 Aug 23, #3368)
 
@@ -245,6 +245,9 @@ 20, #2481)
 Also see #2352, want better control over balloon, perhaps set the position.
 Should also be possible to add highlighting, like in the status line?
 
+Patch to fix that executable() may fail on very long filename in MS-Windows.
+(Ken Takata, 2016 Feb 1)
+
 Try out background make plugin: 
   https://github.com/AndrewVos/vim-make-background
 or asyncmake: 
@@ -430,16 +433,6 @@ CTRL-X on zero gets stuck on 0xfffffffff
 Invalid range error when using BufWinLeave for closing terminal.
 (Gabriel Barta, 2017 Nov 15, #2339)
 
-Using an external diff is inefficient.  Not all systems have a good diff
-program available (esp. MS-Windows).  Would be nice to have in internal diff
-implementation.  Can then also use this for displaying changes within a line.
-Olaf Dabrunz is working on this. (10 Jan 2016)
-9   Instead invoking an external diff program, use builtin code.  One can be
-    found here: http://www.ioplex.com/~miallen/libmba/dl/src/diff.c
-    It's complicated and badly documented.
-Alternative: use the xdiff library.  Unfinished Patch from Christian Brabandt,
-2018 Mar 20, #2732)
-
 ml_get errors with buggy script. (Dominique, 2017 Apr 30)
 
 Error in emsg with buggy script. (Dominique, 2017 Apr 30)
@@ -1128,9 +1121,6 @@ Patch to add <restore> to :windo, :bufdo
 6, 2nd message)
 Alternative: ":keeppos" command modifier: ":keeppos windo {cmd}".
 
-Patch to fix that executable() may fail on very long filename in MS-Windows.
-(Ken Takata, 2016 Feb 1)
-
 Patch to fix display of listchars on the cursorline. (Nayuri Aohime, 2013)
 Update suggested by Yasuhiro Matsumoto, 2014 Nov 25:
 https://gist.github.com/presuku/d3d6b230b9b6dcfc0477
@@ -1192,10 +1182,6 @@ I can't recommend it though.
 Build with Python on Mac does not always use the right library.
 (Kazunobu Kuriyama, 2015 Mar 28)
 
-Patch to add arguments to argc() and argv(). (Yegappan Lakshmanan, 2016 Jan
-24)  Also need a way to get the global arg list?  Update later on Jan 24
-Update Mar 5. Update Apr 7.  Update Jun 5.
-
 To support Thai (and other languages) word boundaries, include the ICU
 library:  http://userguide.icu-project.org/boundaryanalysis
 
--- a/runtime/ftplugin/cmake.vim
+++ b/runtime/ftplugin/cmake.vim
@@ -1,16 +1,34 @@
 " Vim filetype plugin
 " Language:    CMake
 " Maintainer:  Keith Smiley <keithbsmiley@gmail.com>
-" Last Change: 2017 Dec 24
+" Last Change: 2018 Aug 30
 
 " Only do this when not done yet for this buffer
 if exists("b:did_ftplugin")
   finish
 endif
 
+" save 'cpo' for restoration at the end of this file
+let s:cpo_save = &cpo
+set cpo&vim
+
 " Don't load another plugin for this buffer
 let b:did_ftplugin = 1
 
 let b:undo_ftplugin = "setl commentstring<"
 
+if exists('loaded_matchit')
+  let b:match_words = '\<if\>:\<elseif\>\|\<else\>:\<endif\>'
+        \ . ',\<foreach\>\|\<while\>:\<break\>:\<endforeach\>\|\<endwhile\>'
+        \ . ',\<macro\>:\<endmacro\>'
+        \ . ',\<function\>:\<endfunction\>'
+  let b:match_ignorecase = 1
+
+  let b:undo_ftplugin .= "| unlet b:match_words"
+endif
+
 setlocal commentstring=#\ %s
+
+" restore 'cpo' and clean up buffer variable
+let &cpo = s:cpo_save
+unlet s:cpo_save
new file mode 100644
--- /dev/null
+++ b/runtime/indent/dosbatch.vim
@@ -0,0 +1,59 @@
+" Vim indent file
+" Language:	MSDOS batch file (with NT command extensions)
+" Maintainer:	Ken Takata
+" URL:		https://github.com/k-takata/vim-dosbatch-indent
+" Last Change:	2017 May 10
+" Filenames:	*.bat
+" License:	VIM License
+
+if exists("b:did_indent")
+  finish
+endif
+let b:did_indent = 1
+
+setlocal nosmartindent
+setlocal noautoindent
+setlocal indentexpr=GetDosBatchIndent(v:lnum)
+setlocal indentkeys=!^F,o,O
+setlocal indentkeys+=0=)
+
+if exists("*GetDosBatchIndent")
+  finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+function! GetDosBatchIndent(lnum)
+  let l:prevlnum = prevnonblank(a:lnum-1)
+  if l:prevlnum == 0
+    " top of file
+    return 0
+  endif
+
+  " grab the previous and current line, stripping comments.
+  let l:prevl = substitute(getline(l:prevlnum), '\c^\s*\%(@\s*\)\?rem\>.*$', '', '')
+  let l:thisl = getline(a:lnum)
+  let l:previ = indent(l:prevlnum)
+
+  let l:ind = l:previ
+
+  if l:prevl =~? '^\s*@\=if\>.*(\s*$' ||
+        \ l:prevl =~? '\<do\>\s*(\s*$' ||
+        \ l:prevl =~? '\<else\>\s*\%(if\>.*\)\?(\s*$' ||
+        \ l:prevl =~? '^.*\(&&\|||\)\s*(\s*$'
+    " previous line opened a block
+    let l:ind += shiftwidth()
+  endif
+  if l:thisl =~ '^\s*)'
+    " this line closed a block
+    let l:ind -= shiftwidth()
+  endif
+
+  return l:ind
+endfunction
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
+
+" vim: ts=8 sw=2 sts=2
--- a/runtime/indent/teraterm.vim
+++ b/runtime/indent/teraterm.vim
@@ -1,9 +1,9 @@
 " Vim indent file
 " Language:	Tera Term Language (TTL)
-"		Based on Tera Term Version 4.92
+"		Based on Tera Term Version 4.100
 " Maintainer:	Ken Takata
 " URL:		https://github.com/k-takata/vim-teraterm
-" Last Change:	2017 Jun 13
+" Last Change:	2018-08-31
 " Filenames:	*.ttl
 " License:	VIM License
 
--- a/runtime/syntax/teraterm.vim
+++ b/runtime/syntax/teraterm.vim
@@ -1,9 +1,9 @@
 " Vim syntax file
 " Language:	Tera Term Language (TTL)
-"		Based on Tera Term Version 4.92
+"		Based on Tera Term Version 4.100
 " Maintainer:	Ken Takata
 " URL:		https://github.com/k-takata/vim-teraterm
-" Last Change:	2016 Aug 17
+" Last Change:	2018-08-31
 " Filenames:	*.ttl
 " License:	VIM License
 
@@ -75,12 +75,13 @@ syn keyword ttlCommunicationCommand cont
 			\ logrotate logstart logwrite quickvanrecv
 			\ quickvansend recvln restoresetup scprecv scpsend
 			\ send sendbreak sendbroadcast sendfile sendkcode
-			\ sendln sendlnbroadcast sendmulticast setbaud
-			\ setdebug setdtr setecho setmulticastname setrts
-			\ setsync settitle showtt testlink unlink wait
-			\ wait4all waitevent waitln waitn waitrecv waitregex
-			\ xmodemrecv xmodemsend ymodemrecv ymodemsend
-			\ zmodemrecv zmodemsend
+			\ sendln sendlnbroadcast sendlnmulticast sendmulticast
+			\ setbaud setdebug setdtr setecho setflowctrl
+			\ setmulticastname setrts setspeed setsync settitle
+			\ showtt testlink unlink wait wait4all waitevent
+			\ waitln waitn waitrecv waitregex xmodemrecv
+			\ xmodemsend ymodemrecv ymodemsend zmodemrecv
+			\ zmodemsend
 syn keyword ttlStringCommand contained
 			\ code2str expandenv int2str regexoption sprintf
 			\ sprintf2 str2code str2int strcompare strconcat
--- a/runtime/tutor/tutor.es
+++ b/runtime/tutor/tutor.es
@@ -76,7 +76,7 @@ Nota: Las teclas de movimiento del cursor tambin funcionan. Pero usando
   1. Mueva el cursor a la lnea de abajo sealada con --->.
 
   2. Para corregir los errores, mueva el cursor hasta que est bajo el
-     carcter que va aser borrado.
+     carcter que va a ser borrado.
 
   3. Pulse la tecla  x	para borrar el carcter sobrante.
 
--- a/runtime/tutor/tutor.es.utf-8
+++ b/runtime/tutor/tutor.es.utf-8
@@ -76,7 +76,7 @@ Nota: Las teclas de movimiento del cursor también funcionan. Pero usando
   1. Mueva el cursor a la línea de abajo señalada con --->.
 
   2. Para corregir los errores, mueva el cursor hasta que esté bajo el
-     carácter que va aser borrado.
+     carácter que va a ser borrado.
 
   3. Pulse la tecla  x	para borrar el carácter sobrante.
 
--- a/runtime/tutor/tutor.ru.utf-8
+++ b/runtime/tutor/tutor.ru.utf-8
@@ -540,7 +540,7 @@
 
 ---> "ошшшибка" это не способ написания слова `ошибка';  ошшшибка это ошибка.
 
-Замечание! Если при поиске будет достигнут конц файла, то поиск будет продолжен
+Замечание! Если при поиске будет достигнут конец файла, то поиск будет продолжен
 	с начала.
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -607,15 +607,15 @@
      парную скобку.
 
   4. Для подстановки `стало' вместо первого `было' в строке, наберите
-	:s/old/new
+	:s/было/стало
      Для подстановки `стало' вместо всех `было' в строке, наберите
-	:s/old/new/g
+	:s/было/стало/g
      Для замены в интервале между двумя строками, наберите
-	:#,#s/old/new/g
+	:#,#s/было/стало/g
      Для замены всех вхождений `было' на `стало' в файле, наберите
-	:%s/old/new/g
+	:%s/было/стало/g
      Чтобы редактор каждый раз запрашивал подтверждение, добавьте 'c'
-	:%s/old/new/gc
+	:%s/было/стало/gc
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 		    Урок 5.1: КАК ВЫПОЛНИТЬ ВНЕШНЮЮ КОМАНДУ
--- a/src/po/eo.po
+++ b/src/po/eo.po
@@ -15,15 +15,15 @@
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: Vim(Esperanto)\n"
+"Project-Id-Version: Vim 8.1\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2018-04-30 19:32+0200\n"
-"PO-Revision-Date: 2018-05-07 23:01+0200\n"
+"POT-Creation-Date: 2018-09-01 18:15+0200\n"
+"PO-Revision-Date: 2018-09-01 18:38+0200\n"
 "Last-Translator: Dominique PELLÉ <dominique.pelle@gmail.com>\n"
-"Language-Team: \n"
+"Language-Team: Esperanto\n"
 "Language: eo\n"
 "MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
+"Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
@@ -73,26 +73,23 @@ msgstr "E516: Neniu bufro estis forviŝita"
 msgid "E517: No buffers were wiped out"
 msgstr "E517: Neniu bufro estis detruita"
 
-msgid "1 buffer unloaded"
-msgstr "1 bufro malŝargita"
-
-#, c-format
-msgid "%d buffers unloaded"
-msgstr "%d bufroj malŝargitaj"
-
-msgid "1 buffer deleted"
-msgstr "1 bufro forviŝita"
-
-#, c-format
-msgid "%d buffers deleted"
-msgstr "%d bufroj forviŝitaj"
-
-msgid "1 buffer wiped out"
-msgstr "1 bufro detruita"
-
-#, c-format
-msgid "%d buffers wiped out"
-msgstr "%d bufroj detruitaj"
+#, c-format
+msgid "%d buffer unloaded"
+msgid_plural "%d buffers unloaded"
+msgstr[0] "%d bufro malŝargita"
+msgstr[1] "%d bufroj malŝargitaj"
+
+#, c-format
+msgid "%d buffer deleted"
+msgid_plural "%d buffers deleted"
+msgstr[0] "%d bufro forviŝita"
+msgstr[1] "%d bufroj forviŝitaj"
+
+#, c-format
+msgid "%d buffer wiped out"
+msgid_plural "%d buffers wiped out"
+msgstr[0] "%d bufro detruita"
+msgstr[1] "%d bufroj detruitaj"
 
 msgid "E90: Cannot unload last buffer"
 msgstr "E90: Ne eblas malŝargi la lastan bufron"
@@ -168,12 +165,10 @@ msgid "[readonly]"
 msgstr "[nurlegebla]"
 
 #, c-format
-msgid "1 line --%d%%--"
-msgstr "1 linio --%d%%--"
-
-#, c-format
-msgid "%ld lines --%d%%--"
-msgstr "%ld linioj --%d%%--"
+msgid "%ld line --%d%%--"
+msgid_plural "%ld lines --%d%%--"
+msgstr[0] "%ld linio --%d%%--"
+msgstr[1] "%ld linioj --%d%%--"
 
 #, c-format
 msgid "line %ld of %ld --%d%%-- col "
@@ -210,6 +205,9 @@ msgstr ""
 msgid "E382: Cannot write, 'buftype' option is set"
 msgstr "E382: Ne eblas skribi, opcio 'buftype' estas ŝaltita"
 
+msgid "[Prompt]"
+msgstr "[Invito]"
+
 msgid "[Scratch]"
 msgstr "[Malneto]"
 
@@ -747,6 +745,9 @@ msgstr "E916: nevalida tasko"
 msgid "E701: Invalid type for len()"
 msgstr "E701: Nevalida datumtipo de len()"
 
+msgid "E957: Invalid window number"
+msgstr "E957: Nevalida numero de vindozo"
+
 #, c-format
 msgid "E798: ID is reserved for \":match\": %ld"
 msgstr "E798: ID estas rezervita por \":match\": %ld"
@@ -844,12 +845,11 @@ msgstr "> %d, Deksesuma %08x, Okuma %o"
 msgid "E134: Move lines into themselves"
 msgstr "E134: Movas liniojn en ilin mem"
 
-msgid "1 line moved"
-msgstr "1 linio movita"
-
-#, c-format
-msgid "%ld lines moved"
-msgstr "%ld linioj movitaj"
+#, c-format
+msgid "%ld line moved"
+msgid_plural "%ld lines moved"
+msgstr[0] "%ld linio movita"
+msgstr[1] "%ld linioj movitaj"
 
 #, c-format
 msgid "%ld lines filtered"
@@ -1001,26 +1001,29 @@ msgstr "ĉu anstataŭigi per %s (y/n/a/q/l/^E/^Y)?"
 msgid "(Interrupted) "
 msgstr "(Interrompita) "
 
-msgid "1 match"
-msgstr "1 kongruo"
-
-msgid "1 substitution"
-msgstr "1 anstataŭigo"
-
-#, c-format
-msgid "%ld matches"
-msgstr "%ld kongruoj"
-
-#, c-format
-msgid "%ld substitutions"
-msgstr "%ld anstataŭigoj"
-
-msgid " on 1 line"
-msgstr " en 1 linio"
-
-#, c-format
-msgid " on %ld lines"
-msgstr " en %ld linioj"
+#, c-format
+msgid "%ld match on %ld line"
+msgid_plural "%ld matches on %ld line"
+msgstr[0] "%ld kongruo en %ld linio"
+msgstr[1] "%ld kongruoj en %ld linio"
+
+#, c-format
+msgid "%ld substitution on %ld line"
+msgid_plural "%ld substitutions on %ld line"
+msgstr[0] "%ld anstataŭigo en %ld linio"
+msgstr[1] "%ld anstataŭigoj en %ld linio"
+
+#, c-format
+msgid "%ld match on %ld lines"
+msgid_plural "%ld matches on %ld lines"
+msgstr[0] "%ld kongruo en %ld linioj"
+msgstr[1] "%ld kongruoj en %ld linioj"
+
+#, c-format
+msgid "%ld substitution on %ld lines"
+msgid_plural "%ld substitutions on %ld lines"
+msgstr[0] "%ld anstataŭigo en %ld linioj"
+msgstr[1] "%ld anstataŭigoj en %ld linioj"
 
 msgid "E147: Cannot do :global recursive with a range"
 msgstr "E147: Ne eblas fari \":global\" rekursie kun amplekso"
@@ -1333,19 +1336,17 @@ msgstr "E943: Tabulo de komandoj estas ĝisdatigenda, lanĉu 'make cmdidx'"
 msgid "E319: Sorry, the command is not available in this version"
 msgstr "E319: Bedaŭrinde, tiu komando ne haveblas en tiu versio"
 
-msgid "1 more file to edit.  Quit anyway?"
-msgstr "1 plia redaktenda dosiero. Ĉu tamen eliri?"
-
-#, c-format
-msgid "%d more files to edit.  Quit anyway?"
-msgstr "%d pliaj redaktendaj dosieroj. Ĉu tamen eliri?"
-
-msgid "E173: 1 more file to edit"
-msgstr "E173: 1 plia redaktenda dosiero"
-
-#, c-format
-msgid "E173: %ld more files to edit"
-msgstr "E173: %ld pliaj redaktendaj dosieroj"
+#, c-format
+msgid "%d more file to edit.  Quit anyway?"
+msgid_plural "%d more files to edit.  Quit anyway?"
+msgstr[0] "%d plia redaktenda dosiero. Ĉu tamen eliri?"
+msgstr[1] "%d pliaj redaktendaj dosieroj. Ĉu tamen eliri?"
+
+#, c-format
+msgid "E173: %ld more file to edit"
+msgid_plural "E173: %ld more files to edit"
+msgstr[0] "E173: %ld plia redaktenda dosiero"
+msgstr[1] "E173: %ld pliaj redaktendaj dosieroj"
 
 msgid "E174: Command already exists: add ! to replace it"
 msgstr "E174: La komando jam ekzistas: aldonu ! por anstataŭigi ĝin"
@@ -1427,6 +1428,9 @@ msgstr "E784: Ne eblas fermi lastan lang
 msgid "Already only one tab page"
 msgstr "Jam nur unu langeto"
 
+msgid "Edit File in new tab page"
+msgstr "Redakti Dosieron en nova langeto"
+
 msgid "Edit File in new window"
 msgstr "Redakti Dosieron en nova fenestro"
 
@@ -1726,9 +1730,6 @@ msgstr "Legado el stdin..."
 msgid "E202: Conversion made file unreadable!"
 msgstr "E202: Konverto igis la dosieron nelegebla!"
 
-msgid "[fifo/socket]"
-msgstr "[rektvica memoro/kontaktoskatolo]"
-
 msgid "[fifo]"
 msgstr "[rektvica memoro]"
 
@@ -1904,19 +1905,17 @@ msgstr "[unikso]"
 msgid "[unix format]"
 msgstr "[formato unikso]"
 
-msgid "1 line, "
-msgstr "1 linio, "
-
-#, c-format
-msgid "%ld lines, "
-msgstr "%ld linioj, "
-
-msgid "1 character"
-msgstr "1 signo"
-
-#, c-format
-msgid "%lld characters"
-msgstr "%lld signoj"
+#, c-format
+msgid "%ld line, "
+msgid_plural "%ld lines, "
+msgstr[0] "%ld linio, "
+msgstr[1] "%ld linioj, "
+
+#, c-format
+msgid "%lld character"
+msgid_plural "%lld characters"
+msgstr[0] "%lld signo"
+msgstr[1] "%lld signoj"
 
 msgid "[noeol]"
 msgstr "[sen EOL]"
@@ -2294,11 +2293,11 @@ msgstr "&Malfari"
 msgid "Open tab..."
 msgstr "Malfermi langeton..."
 
-msgid "Find string (use '\\\\' to find  a '\\')"
-msgstr "Trovi ĉenon (uzu '\\\\' por trovi '\\')"
-
-msgid "Find & Replace (use '\\\\' to find  a '\\')"
-msgstr "Trovi kaj anstataŭigi (uzu '\\\\' por trovi '\\')"
+msgid "Find string"
+msgstr "Trovi ĉenon"
+
+msgid "Find & Replace"
+msgstr "Trovi & Anstataŭigi"
 
 msgid "Not Used"
 msgstr "Ne uzata"
@@ -3977,19 +3976,17 @@ msgstr ""
 msgid "Type number and <Enter> (empty cancels): "
 msgstr "Tajpu nombron kaj <Enenklavon> (malpleno rezignas): "
 
-msgid "1 more line"
-msgstr "1 plia linio"
-
-msgid "1 line less"
-msgstr "1 malplia linio"
-
-#, c-format
-msgid "%ld more lines"
-msgstr "%ld pliaj linioj"
-
-#, c-format
-msgid "%ld fewer lines"
-msgstr "%ld malpliaj linioj"
+#, c-format
+msgid "%ld more line"
+msgid_plural "%ld more lines"
+msgstr[0] "%ld plia linio"
+msgstr[1] "%ld pliaj linioj"
+
+#, c-format
+msgid "%ld line less"
+msgid_plural "%ld fewer lines"
+msgstr[0] "%ld malplia linio"
+msgstr[1] "%ld malpliaj linioj"
 
 msgid " (Interrupted)"
 msgstr " (Interrompita)"
@@ -4127,31 +4124,26 @@ msgstr ""
 "Vim"
 
 #, c-format
-msgid "1 line %sed 1 time"
-msgstr "1 linio %sita 1 foje"
-
-#, c-format
-msgid "1 line %sed %d times"
-msgstr "1 linio %sita %d foje"
-
-#, c-format
-msgid "%ld lines %sed 1 time"
-msgstr "%ld linio %sita 1 foje"
-
-#, c-format
-msgid "%ld lines %sed %d times"
-msgstr "%ld linioj %sitaj %d foje"
+msgid "%ld line %sed %d time"
+msgid_plural "%ld line %sed %d times"
+msgstr[0] "%ld linio %sita %d foje"
+msgstr[1] "%ld linio %sita %d foje"
+
+#, c-format
+msgid "%ld lines %sed %d time"
+msgid_plural "%ld lines %sed %d times"
+msgstr[0] "%ld linioj %sitaj %d foje"
+msgstr[1] "%ld linioj %sitaj %d foje"
 
 #, c-format
 msgid "%ld lines to indent... "
 msgstr "%ld krommarĝenendaj linioj... "
 
-msgid "1 line indented "
-msgstr "1 linio krommarĝenita "
-
-#, c-format
-msgid "%ld lines indented "
-msgstr "%ld linioj krommarĝenitaj "
+#, c-format
+msgid "%ld line indented "
+msgid_plural "%ld lines indented "
+msgstr[0] "%ld linio krommarĝenita "
+msgstr[1] "%ld linioj krommarĝenitaj "
 
 msgid "E748: No previously used register"
 msgstr "E748: Neniu reĝistro antaŭe uzata"
@@ -4159,12 +4151,11 @@ msgstr "E748: Neniu reĝistro antaŭe uzata"
 msgid "cannot yank; delete anyway"
 msgstr "ne eblas kopii; tamen forviŝi"
 
-msgid "1 line changed"
-msgstr "1 linio ŝanĝita"
-
-#, c-format
-msgid "%ld lines changed"
-msgstr "%ld linioj ŝanĝitaj"
+#, c-format
+msgid "%ld line changed"
+msgid_plural "%ld lines changed"
+msgstr[0] "%ld linio ŝanĝita"
+msgstr[1] "%ld linioj ŝanĝitaj"
 
 #, c-format
 msgid "freeing %ld lines"
@@ -4175,20 +4166,16 @@ msgid " into \"%c"
 msgstr " en \"%c"
 
 #, c-format
-msgid "block of 1 line yanked%s"
-msgstr "bloko de 1 linio kopiita%s"
-
-#, c-format
-msgid "1 line yanked%s"
-msgstr "1 linio kopiita%s"
-
-#, c-format
-msgid "block of %ld lines yanked%s"
-msgstr "bloko de %ld linioj kopiita%s"
-
-#, c-format
-msgid "%ld lines yanked%s"
-msgstr "%ld linioj kopiitaj%s"
+msgid "block of %ld line yanked%s"
+msgid_plural "block of %ld lines yanked%s"
+msgstr[0] "bloko de %ld linio kopiita%s"
+msgstr[1] "bloko de %ld linioj kopiitaj%s"
+
+#, c-format
+msgid "%ld line yanked%s"
+msgid_plural "%ld lines yanked%s"
+msgstr[0] "%ld linio kopiita%s"
+msgstr[1] "%ld linioj kopiitaj%s"
 
 #, c-format
 msgid "E353: Nothing in register %s"
@@ -4781,6 +4768,9 @@ msgstr "E69: Mankas ] malantaŭ %s%%["
 msgid "E70: Empty %s%%[]"
 msgstr "E70: Malplena %s%%[]"
 
+msgid "E956: Cannot use pattern recursively"
+msgstr "E956: Ne eblas uzi ŝablonon rekursie"
+
 msgid "E65: Illegal back reference"
 msgstr "E65: Nevalida retro-referenco"
 
@@ -4898,6 +4888,11 @@ msgstr "E879: (NFA-regulesprimo) tro da 
 msgid "E873: (NFA regexp) proper termination error"
 msgstr "E873: (NFA-regulesprimo) propra end-eraro"
 
+msgid "Could not open temporary log file for writing, displaying on stderr... "
+msgstr ""
+"Ne povis malfermi provizoran protokolan dosieron por skribi, nun montras sur "
+"stderr..."
+
 msgid "E874: (NFA) Could not pop the stack!"
 msgstr "E874: (NFA) Ne povis elpreni de la staplo!"
 
@@ -4914,19 +4909,6 @@ msgstr "E876: (NFA-regulesprimo) ne sufiĉa spaco por enmemorigi la tutan NFA "
 msgid "E878: (NFA) Could not allocate memory for branch traversal!"
 msgstr "E878: (NFA) Ne povis asigni memoron por traigi branĉojn!"
 
-msgid ""
-"Could not open temporary log file for writing, displaying on stderr... "
-msgstr ""
-"Ne povis malfermi provizoran protokolan dosieron por skribi, nun montras sur "
-"stderr..."
-
-#, c-format
-msgid "(NFA) COULD NOT OPEN %s !"
-msgstr "(NFA) NE POVIS MALFERMI %s!"
-
-msgid "Could not open temporary log file for writing "
-msgstr "Ne povis malfermi la provizoran protokolan dosieron por skribi "
-
 msgid " VREPLACE"
 msgstr " V-ANSTATAŬIGO"
 
@@ -5414,6 +5396,9 @@ msgstr "E783: ripetita signo en rikordo 
 msgid "No Syntax items defined for this buffer"
 msgstr "Neniu sintaksa elemento difinita por tiu bufro"
 
+msgid "'redrawtime' exceeded, syntax highlighting disabled"
+msgstr "'redrawtime' transpasita, sintaksa emfazo malŝaltita"
+
 msgid "syntax conceal on"
 msgstr "sintakso de conceal ŝaltata"
 
@@ -5443,6 +5428,9 @@ msgstr ""
 msgid "syntax iskeyword "
 msgstr "sintakso iskeyword "
 
+msgid "syntax iskeyword not set"
+msgstr "sintakso iskeyword ne ŝaltita"
+
 #, c-format
 msgid "E391: No such syntax cluster: %s"
 msgstr "E391: Nenia sintaksa fasko: %s"
@@ -5922,8 +5910,10 @@ msgid "number changes  when             
 msgstr "numero ŝanĝoj   tempo              konservita"
 
 #, c-format
-msgid "%ld seconds ago"
-msgstr "antaŭ %ld sekundoj"
+msgid "%ld second ago"
+msgid_plural "%ld seconds ago"
+msgstr[0] "antaŭ %ld sekundo"
+msgstr[1] "antaŭ %ld sekundoj"
 
 msgid "E790: undojoin is not allowed after undo"
 msgstr "E790: undojoin estas nepermesebla post malfaro"
@@ -6062,6 +6052,10 @@ msgstr "E133: \":return\" ekster funkcio
 msgid "E107: Missing parentheses: %s"
 msgstr "E107: Mankas krampoj: %s"
 
+#, c-format
+msgid "%s (%s, compiled %s)"
+msgstr "%s (%s, kompilita %s)"
+
 msgid ""
 "\n"
 "MS-Windows 64-bit GUI version"
--- a/src/po/fr.po
+++ b/src/po/fr.po
@@ -10,15 +10,15 @@
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: Vim(Franais)\n"
+"Project-Id-Version: Vim 8.1\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2018-05-08 09:00+0200\n"
-"PO-Revision-Date: 2018-05-08 09:17+0200\n"
+"POT-Creation-Date: 2018-09-01 14:20+0200\n"
+"PO-Revision-Date: 2018-09-01 17:15+0200\n"
 "Last-Translator: Dominique Pell <dominique.pelle@gmail.com>\n"
-"Language-Team: \n"
+"Language-Team: French\n"
 "Language: fr\n"
 "MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=ISO_8859-15\n"
+"Content-Type: text/plain; charset=ISO-8859-15\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n > 1);\n"
 
@@ -73,26 +73,23 @@ msgstr "E516: Aucun tampon n'a t effac"
 msgid "E517: No buffers were wiped out"
 msgstr "E517: Aucun tampon n'a t dtruit"
 
-msgid "1 buffer unloaded"
-msgstr "1 tampon a t dcharg"
-
-#, c-format
-msgid "%d buffers unloaded"
-msgstr "%d tampons ont t dchargs"
-
-msgid "1 buffer deleted"
-msgstr "1 tampon a t effac"
-
-#, c-format
-msgid "%d buffers deleted"
-msgstr "%d tampons ont t effacs"
-
-msgid "1 buffer wiped out"
-msgstr "1 tampon a t dtruit"
-
-#, c-format
-msgid "%d buffers wiped out"
-msgstr "%d tampons ont t dtruits"
+#, c-format
+msgid "%d buffer unloaded"
+msgid_plural "%d buffers unloaded"
+msgstr[0] "%d tampon a t dcharg"
+msgstr[1] "%d tampons ont t dchargs"
+
+#, c-format
+msgid "%d buffer deleted"
+msgid_plural "%d buffers deleted"
+msgstr[0] "%d tampon a t effac"
+msgstr[1] "%d tampons ont t effacs"
+
+#, c-format
+msgid "%d buffer wiped out"
+msgid_plural "%d buffers wiped out"
+msgstr[0] "%d tampon a t dtruit"
+msgstr[1] "%d tampons ont t dtruits"
 
 msgid "E90: Cannot unload last buffer"
 msgstr "E90: Impossible de dcharger le dernier tampon"
@@ -176,12 +173,10 @@ msgid "[readonly]"
 msgstr "[lecture-seule]"
 
 #, c-format
-msgid "1 line --%d%%--"
-msgstr "1 ligne --%d%%--"
-
-#, c-format
-msgid "%ld lines --%d%%--"
-msgstr "%ld lignes --%d%%--"
+msgid "%ld line --%d%%--"
+msgid_plural "%ld lines --%d%%--"
+msgstr[0] "%ld ligne --%d%%--"
+msgstr[1] "%ld lignes --%d%%--"
 
 # AB - Faut-il remplacer "sur" par "de" ?
 # DB - Mon avis : oui.
@@ -228,6 +223,9 @@ msgstr ""
 msgid "E382: Cannot write, 'buftype' option is set"
 msgstr "E382: criture impossible, l'option 'buftype' est active"
 
+msgid "[Prompt]"
+msgstr "[Invite]"
+
 msgid "[Scratch]"
 msgstr "[Brouillon]"
 
@@ -820,6 +818,9 @@ msgstr "E916: tche invalide"
 msgid "E701: Invalid type for len()"
 msgstr "E701: Type invalide avec len()"
 
+msgid "E957: Invalid window number"
+msgstr "E957: numro de fentre invalide"
+
 #, c-format
 msgid "E798: ID is reserved for \":match\": %ld"
 msgstr "E798: ID est rserv pour \":match\": %ld"
@@ -921,12 +922,11 @@ msgstr "> %d, Hexa %08x, Octal %o"
 msgid "E134: Move lines into themselves"
 msgstr "E134: La destination est dans la plage d'origine"
 
-msgid "1 line moved"
-msgstr "1 ligne dplace"
-
-#, c-format
-msgid "%ld lines moved"
-msgstr "%ld lignes dplaces"
+#, c-format
+msgid "%ld line moved"
+msgid_plural "%ld lines moved"
+msgstr[0] "%ld ligne dplace"
+msgstr[1] "%ld lignes dplaces"
 
 #, c-format
 msgid "%ld lines filtered"
@@ -1134,26 +1134,29 @@ msgstr "remplacer par %s (y/n/a/q/l/^E/^
 msgid "(Interrupted) "
 msgstr "(Interrompu) "
 
-msgid "1 match"
-msgstr "1 correspondance"
-
-msgid "1 substitution"
-msgstr "1 substitution"
-
-#, c-format
-msgid "%ld matches"
-msgstr "%ld correspondances"
-
-#, c-format
-msgid "%ld substitutions"
-msgstr "%ld substitutions"
-
-msgid " on 1 line"
-msgstr " sur 1 ligne"
-
-#, c-format
-msgid " on %ld lines"
-msgstr " sur %ld lignes"
+#, c-format
+msgid "%ld match on %ld line"
+msgid_plural "%ld matches on %ld line"
+msgstr[0] "%ld correspondance sur %ld ligne"
+msgstr[1] "%ld correspondances sur %ld ligne"
+
+#, c-format
+msgid "%ld substitution on %ld line"
+msgid_plural "%ld substitutions on %ld line"
+msgstr[0] "%ld substitution sur %ld ligne"
+msgstr[1] "%ld substitutions sur %ld ligne"
+
+#, c-format
+msgid "%ld match on %ld lines"
+msgid_plural "%ld matches on %ld lines"
+msgstr[0] "%ld correspondance sur %ld lignes"
+msgstr[1] "%ld correspondances sur %ld lignes"
+
+#, c-format
+msgid "%ld substitution on %ld lines"
+msgid_plural "%ld substitutions on %ld lines"
+msgstr[0] "%ld substitution sur %ld lignes"
+msgstr[1] "%ld substitutions sur %ld lignes"
 
 # AB - Il faut respecter l'esprit plus que la lettre.
 # AB - Ce message devrait contenir une rfrence  :vglobal.
@@ -1503,19 +1506,17 @@ msgstr ""
 msgid "E319: Sorry, the command is not available in this version"
 msgstr "E319: Dsol, cette commande n'est pas disponible dans cette version"
 
-msgid "1 more file to edit.  Quit anyway?"
-msgstr "Encore 1 fichier  diter. Quitter tout de mme ?"
-
-#, c-format
-msgid "%d more files to edit.  Quit anyway?"
-msgstr "Encore %d fichiers  diter. Quitter tout de mme ?"
-
-msgid "E173: 1 more file to edit"
-msgstr "E173: encore 1 fichier  diter"
-
-#, c-format
-msgid "E173: %ld more files to edit"
-msgstr "E173: encore %ld fichiers  diter"
+#, c-format
+msgid "%d more file to edit.  Quit anyway?"
+msgid_plural "%d more files to edit.  Quit anyway?"
+msgstr[0] "Encore %d fichier  diter. Quitter tout de mme ?"
+msgstr[1] "Encore %d fichiers  diter. Quitter tout de mme ?"
+
+#, c-format
+msgid "E173: %ld more file to edit"
+msgid_plural "E173: %ld more files to edit"
+msgstr[0] "E173: encore %ld fichier  diter"
+msgstr[1] "E173: encore %ld fichiers  diter"
 
 msgid "E174: Command already exists: add ! to replace it"
 msgstr "E174: La commande existe dj : ajoutez ! pour la redfinir"
@@ -1596,6 +1597,9 @@ msgstr "E784: Impossible de fermer le de
 msgid "Already only one tab page"
 msgstr "Il ne reste dj plus qu'un seul onglet"
 
+msgid "Edit File in new tab page"
+msgstr "Ouvrir un fichier dans un nouvel onglet"
+
 msgid "Edit File in new window"
 msgstr "Ouvrir un fichier dans une nouvelle fentre - Vim"
 
@@ -1903,9 +1907,6 @@ msgstr "Lecture de stdin..."
 msgid "E202: Conversion made file unreadable!"
 msgstr "E202: La conversion a rendu le fichier illisible !"
 
-msgid "[fifo/socket]"
-msgstr "[fifo/socket]"
-
 msgid "[fifo]"
 msgstr "[fifo]"
 
@@ -2090,19 +2091,17 @@ msgstr "[unix]"
 msgid "[unix format]"
 msgstr "[format unix]"
 
-msgid "1 line, "
-msgstr "1 ligne, "
-
-#, c-format
-msgid "%ld lines, "
-msgstr "%ld lignes, "
-
-msgid "1 character"
-msgstr "1 caractre"
-
-#, c-format
-msgid "%lld characters"
-msgstr "%lld caractres"
+#, c-format
+msgid "%ld line, "
+msgid_plural "%ld lines, "
+msgstr[0] "%ld ligne, "
+msgstr[1] "%ld lignes, "
+
+#, c-format
+msgid "%lld character"
+msgid_plural "%lld characters"
+msgstr[0] "%lld caractre"
+msgstr[1] "%lld caractres"
 
 msgid "[noeol]"
 msgstr "[noeol]"
@@ -2488,11 +2487,11 @@ msgstr "Ann&uler"
 msgid "Open tab..."
 msgstr "Ouvrir dans un onglet..."
 
-msgid "Find string (use '\\\\' to find  a '\\')"
-msgstr "Chercher une chane (utilisez '\\\\' pour chercher un '\\')"
-
-msgid "Find & Replace (use '\\\\' to find  a '\\')"
-msgstr "Chercher et remplacer (utilisez '\\\\' pour trouver un '\\')"
+msgid "Find string"
+msgstr "Trouver une chane"
+
+msgid "Find & Replace"
+msgstr "Trouver & remplacer"
 
 # DB - Traduction non indispensable puisque le code indique qu'il s'agit d'un
 #      paramtrage bidon afin de slectionner un rpertoire plutt qu'un
@@ -4201,19 +4200,17 @@ msgstr "Tapez un nombre et <Entre> ou cliquez avec la souris (rien annule) :"
 msgid "Type number and <Enter> (empty cancels): "
 msgstr "Tapez un nombre et <Entre> (rien annule) :"
 
-msgid "1 more line"
-msgstr "1 ligne en plus"
-
-msgid "1 line less"
-msgstr "1 ligne en moins"
-
-#, c-format
-msgid "%ld more lines"
-msgstr "%ld lignes en plus"
-
-#, c-format
-msgid "%ld fewer lines"
-msgstr "%ld lignes en moins"
+#, c-format
+msgid "%ld more line"
+msgid_plural "%ld more lines"
+msgstr[0] "%ld ligne en plus"
+msgstr[1] "%ld lignes en plus"
+
+#, c-format
+msgid "%ld line less"
+msgid_plural "%ld fewer lines"
+msgstr[0] "%ld ligne en moins"
+msgstr[1] "%ld lignes en moins"
 
 msgid " (Interrupted)"
 msgstr " (Interrompu)"
@@ -4351,31 +4348,26 @@ msgstr ""
 "Vim"
 
 #, c-format
-msgid "1 line %sed 1 time"
-msgstr "1 ligne %se 1 fois"
-
-#, c-format
-msgid "1 line %sed %d times"
-msgstr "1 ligne %se %d fois"
-
-#, c-format
-msgid "%ld lines %sed 1 time"
-msgstr "%ld lignes %ses 1 fois"
-
-#, c-format
-msgid "%ld lines %sed %d times"
-msgstr "%ld lignes %ses %d fois"
+msgid "%ld line %sed %d time"
+msgid_plural "%ld line %sed %d times"
+msgstr[0] "%ld lignes %ses %d fois"
+msgstr[1] "%ld lignes %ses %d fois"
+
+#, c-format
+msgid "%ld lines %sed %d time"
+msgid_plural "%ld lines %sed %d times"
+msgstr[0] "%ld lignes %ses %d fois"
+msgstr[1] "%ld lignes %ses %d fois"
 
 #, c-format
 msgid "%ld lines to indent... "
 msgstr "%ld lignes  indenter... "
 
-msgid "1 line indented "
-msgstr "1 ligne indente "
-
-#, c-format
-msgid "%ld lines indented "
-msgstr "%ld lignes indentes "
+#, c-format
+msgid "%ld line indented "
+msgid_plural "%ld lines indented "
+msgstr[0] "%ld ligne indente "
+msgstr[1] "%ld lignes indentes "
 
 msgid "E748: No previously used register"
 msgstr "E748: Aucun registre n'a t prcdemment utilis"
@@ -4384,12 +4376,11 @@ msgstr "E748: Aucun registre n'a t prcdemment utilis"
 msgid "cannot yank; delete anyway"
 msgstr "impossible de raliser une copie ; effacer tout de mme"
 
-msgid "1 line changed"
-msgstr "1 ligne modifie"
-
-#, c-format
-msgid "%ld lines changed"
-msgstr "%ld lignes modifies"
+#, c-format
+msgid "%ld line changed"
+msgid_plural "%ld lines changed"
+msgstr[0] "%ld ligne modifie"
+msgstr[1] "%ld lignes modifies"
 
 #, c-format
 msgid "freeing %ld lines"
@@ -4400,20 +4391,16 @@ msgid " into \"%c"
 msgstr " dans \"%c"
 
 #, c-format
-msgid "block of 1 line yanked%s"
-msgstr "bloc de 1 ligne copi%s"
-
-#, c-format
-msgid "1 line yanked%s"
-msgstr "1 ligne copie%s"
-
-#, c-format
-msgid "block of %ld lines yanked%s"
-msgstr "bloc de %ld lignes copi%s"
-
-#, c-format
-msgid "%ld lines yanked%s"
-msgstr "%ld lignes copies%s"
+msgid "block of %ld line yanked%s"
+msgid_plural "block of %ld lines yanked%s"
+msgstr[0] "bloc de %ld ligne copi%s"
+msgstr[1] "bloc de %ld lignes copi%s"
+
+#, c-format
+msgid "%ld line yanked%s"
+msgid_plural "%ld lines yanked%s"
+msgstr[0] "%ld ligne copie%s"
+msgstr[1] "%ld lignes copies%s"
 
 #, c-format
 msgid "E353: Nothing in register %s"
@@ -5013,6 +5000,9 @@ msgstr "E69: ']' manquant aprs %s%%["
 msgid "E70: Empty %s%%[]"
 msgstr "E70: %s%%[] vide"
 
+msgid "E956: Cannot use pattern recursively"
+msgstr "E956: Impossible d'utiliser le motif rcursivement"
+
 msgid "E65: Illegal back reference"
 msgstr "E65: post-rfrence invalide"
 
@@ -5128,6 +5118,11 @@ msgstr "E879: (regexp NFA) Trop de \\z("
 msgid "E873: (NFA regexp) proper termination error"
 msgstr "E873: (NFA regexp) erreur de terminaison"
 
+msgid "Could not open temporary log file for writing, displaying on stderr... "
+msgstr ""
+"Impossible d'ouvrir le fichier de log temporaire en criture, affichage sur "
+"stderr... "
+
 msgid "E874: (NFA) Could not pop the stack!"
 msgstr "E874: (NFA) Impossible de dpiler !"
 
@@ -5145,19 +5140,6 @@ msgid "E878: (NFA) Could not allocate me
 msgstr ""
 "E878: (NFA) Impossible d'allouer la mmoire pour parcourir les branches !"
 
-msgid ""
-"Could not open temporary log file for writing, displaying on stderr... "
-msgstr ""
-"Impossible d'ouvrir le fichier de log temporaire en criture, affichage sur "
-"stderr... "
-
-#, c-format
-msgid "(NFA) COULD NOT OPEN %s !"
-msgstr "(NFA) IMPOSSIBLE D'OUVRIR %s !"
-
-msgid "Could not open temporary log file for writing "
-msgstr "Impossible d'ouvrir le fichier de log en criture"
-
 msgid " VREPLACE"
 msgstr " VREMPLACEMENT"
 
@@ -5653,6 +5635,9 @@ msgstr "E783: caractre dupliqu dans l'entre MAP"
 msgid "No Syntax items defined for this buffer"
 msgstr "Aucun lment de syntaxe dfini pour ce tampon"
 
+msgid "'redrawtime' exceeded, syntax highlighting disabled"
+msgstr "'redrawtime' coul, surbrillance de syntaxe dsactive"
+
 msgid "syntax conceal on"
 msgstr "\"syntax conceal\" active"
 
@@ -5683,6 +5668,9 @@ msgstr ""
 msgid "syntax iskeyword "
 msgstr "syntaxe iskeyword "
 
+msgid "syntax iskeyword not set"
+msgstr "iskeyword n'est pas activ"
+
 #, c-format
 msgid "E391: No such syntax cluster: %s"
 msgstr "E391: Aucune grappe de syntaxe %s"
@@ -6174,8 +6162,10 @@ msgid "number changes  when             
 msgstr "numro modif.   instant            enregistr"
 
 #, c-format
-msgid "%ld seconds ago"
-msgstr "il y a %ld secondes"
+msgid "%ld second ago"
+msgid_plural "%ld seconds ago"
+msgstr[0] "il y a %ld seconde"
+msgstr[1] "il y a %ld secondes"
 
 msgid "E790: undojoin is not allowed after undo"
 msgstr "E790: undojoin n'est pas autoris aprs une annulation"
@@ -6333,6 +6323,10 @@ msgstr "E133: :return en dehors d'une fo
 msgid "E107: Missing parentheses: %s"
 msgstr "E107: Parenthses manquantes : %s"
 
+#, c-format
+msgid "%s (%s, compiled %s)"
+msgstr "%s (%s, compil %s)"
+
 msgid ""
 "\n"
 "MS-Windows 64-bit GUI version"