changeset 2965:f2de38a019a2

Updated runtime files. Add missing test82 files.
author Bram Moolenaar <bram@vim.org>
date Mon, 18 Jul 2011 19:40:27 +0200
parents 39cb812cf477
children aa998de9f959
files runtime/doc/eval.txt runtime/doc/indent.txt runtime/doc/mbyte.txt runtime/doc/options.txt runtime/doc/syntax.txt runtime/doc/tags runtime/doc/todo.txt runtime/filetype.vim runtime/ftplugin/help.vim runtime/indent/dtd.vim runtime/syntax/bindzone.vim runtime/syntax/c.vim runtime/syntax/dnsmasq.vim runtime/syntax/dosini.vim runtime/syntax/gnash.vim runtime/syntax/help.vim runtime/tutor/tutor.fr runtime/tutor/tutor.fr.utf-8 src/INSTALLpc.txt src/po/eo.po src/po/fr.po src/testdir/test82.in src/testdir/test82.ok
diffstat 23 files changed, 453 insertions(+), 238 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.3.  Last change: 2011 Jun 19
+*eval.txt*	For Vim version 7.3.  Last change: 2011 Jul 13
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -2277,7 +2277,8 @@ char2nr({expr})						*char2nr()*
 <		The current 'encoding' is used.  Example for "utf-8": >
 			char2nr("á")		returns 225
 			char2nr("á"[0])		returns 195
-<		|nr2char()| does the opposite.
+<		A combining character is a separate character.
+		|nr2char()| does the opposite.
 
 cindent({lnum})						*cindent()*
 		Get the amount of indent for line {lnum} according the C
@@ -5968,7 +5969,7 @@ virtcol({expr})						*virtcol()*
 		When 'virtualedit' is used {expr} can be [lnum, col, off], where
 		"off" is the offset in screen columns from the start of the
 		character.  E.g., a position within a <Tab> or after the last
-		character.
+		character.  When "off" is omitted zero is used.
 		When Virtual editing is active in the current mode, a position
 		beyond the end of the line can be returned. |'virtualedit'|
 		The accepted positions are:
--- a/runtime/doc/indent.txt
+++ b/runtime/doc/indent.txt
@@ -1,4 +1,4 @@
-*indent.txt*    For Vim version 7.3.  Last change: 2011 May 31
+*indent.txt*    For Vim version 7.3.  Last change: 2011 Jul 15
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -486,9 +486,10 @@ The examples below assume a 'shiftwidth'
 		     )				   )
 <
 				*java-cinoptions* *java-indenting* *cino-j*
-	jN    Indent java anonymous classes correctly.  The value 'N' is
-	      currently unused but must be non-zero (e.g. 'j1').  'j1' will
-	      indent for example the following code snippet correctly: >
+	jN    Indent Java anonymous classes correctly.  Also works well for
+	      Javascript.  The value 'N' is currently unused but must be
+	      non-zero (e.g. 'j1').  'j1' will indent for example the
+	      following code snippet correctly: >
 
 		object.add(new ChangeListener() {
 		    public void stateChanged(ChangeEvent e) {
@@ -499,7 +500,8 @@ The examples below assume a 'shiftwidth'
 			*javascript-cinoptions* *javascript-indenting* *cino-J*
 	JN    Indent JavaScript object declarations correctly by not confusing
 	      them with labels.  The value 'N' is currently unused but must be 
-	      non-zero (e.g. 'J1'). >
+	      non-zero (e.g. 'J1').  If you enable this you probably also want
+	      to set |cino-j|. >
 
 		var bar = {
 		    foo: {
--- a/runtime/doc/mbyte.txt
+++ b/runtime/doc/mbyte.txt
@@ -1,4 +1,4 @@
-*mbyte.txt*     For Vim version 7.3.  Last change: 2011 Feb 01
+*mbyte.txt*     For Vim version 7.3.  Last change: 2011 Jul 18
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar et al.
@@ -1306,8 +1306,8 @@ character.  However, search patterns may
 character.)  An exception is NUL (zero) which is displayed as "<00>".
 
 In the file and buffer the full range of Unicode characters can be used (31
-bits).  However, displaying only works for 16 bit characters, and only for the
-characters present in the selected font.
+bits).  However, displaying only works for the characters present in the
+selected font.
 
 Useful commands:
 - "ga" shows the decimal, hexadecimal and octal value of the character under
--- a/runtime/doc/options.txt
+++ b/runtime/doc/options.txt
@@ -1,4 +1,4 @@
-*options.txt*	For Vim version 7.3.  Last change: 2011 Jun 12
+*options.txt*	For Vim version 7.3.  Last change: 2011 Jul 07
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -6002,7 +6002,8 @@ A jump table for the options with a shor
 			{not in Vi}
 	When on, use temp files for shell commands.  When off use a pipe.
 	When using a pipe is not possible temp files are used anyway.
-	Currently a pipe is only supported on Unix.  You can check it with: >
+	Currently a pipe is only supported on Unix and MS-Windows 2K and
+	later.  You can check it with: >
 		:if has("filterpipe")
 <	The advantage of using a pipe is that nobody can read the temp file
 	and the 'shell' command does not need to support redirection.
--- a/runtime/doc/syntax.txt
+++ b/runtime/doc/syntax.txt
@@ -1,4 +1,4 @@
-*syntax.txt*	For Vim version 7.3.  Last change: 2011 May 06
+*syntax.txt*	For Vim version 7.3.  Last change: 2011 Jul 18
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -866,13 +866,13 @@ used.
 Detecting whether a file is csh or tcsh is notoriously hard.  Some systems
 symlink /bin/csh to /bin/tcsh, making it almost impossible to distinguish
 between csh and tcsh.  In case VIM guesses wrong you can set the
-"filetype_csh" variable.  For using csh: >
-
-	:let filetype_csh = "csh"
+"filetype_csh" variable.  For using csh:  *g:filetype_csh*
+>
+	:let g:filetype_csh = "csh"
 
 For using tcsh: >
 
-	:let filetype_csh = "tcsh"
+	:let g:filetype_csh = "tcsh"
 
 Any script with a tcsh extension or a standard tcsh filename (.tcshrc,
 tcsh.tcshrc, tcsh.login) will have filetype tcsh.  All other tcsh/csh scripts
@@ -2372,6 +2372,12 @@ This will make the syntax synchronizatio
 displayed line.  The default value is 10.  The disadvantage of using a larger
 number is that redrawing can become slow.
 
+Vim tries to guess what type a ".r" file is.  If it can't be detected (from
+comment lines), the default is "r".  To make the default rexx add this line to
+your .vimrc:  *g:filetype_r*
+>
+	:let g:filetype_r = "r"
+
 
 RUBY						*ruby.vim* *ft-ruby-syntax*
 
--- a/runtime/doc/tags
+++ b/runtime/doc/tags
@@ -5096,6 +5096,7 @@ cpo-+	options.txt	/*cpo-+*
 cpo--	options.txt	/*cpo--*
 cpo-.	options.txt	/*cpo-.*
 cpo-/	options.txt	/*cpo-\/*
+cpo-;	options.txt	/*cpo-;*
 cpo-<	options.txt	/*cpo-<*
 cpo->	options.txt	/*cpo->*
 cpo-A	options.txt	/*cpo-A*
@@ -5784,6 +5785,8 @@ g:decada.Error_Format	ft_ada.txt	/*g:dec
 g:decada.Make()	ft_ada.txt	/*g:decada.Make()*
 g:decada.Make_Command	ft_ada.txt	/*g:decada.Make_Command*
 g:decada.Unit_Name()	ft_ada.txt	/*g:decada.Unit_Name()*
+g:filetype_csh	syntax.txt	/*g:filetype_csh*
+g:filetype_r	syntax.txt	/*g:filetype_r*
 g:gnat	ft_ada.txt	/*g:gnat*
 g:gnat.Error_Format	ft_ada.txt	/*g:gnat.Error_Format*
 g:gnat.Find()	ft_ada.txt	/*g:gnat.Find()*
--- a/runtime/doc/todo.txt
+++ b/runtime/doc/todo.txt
@@ -1,4 +1,4 @@
-*todo.txt*      For Vim version 7.3.  Last change: 2011 Jun 19
+*todo.txt*      For Vim version 7.3.  Last change: 2011 Jul 15
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -40,52 +40,11 @@ Crash in autocomplete, valgrind log. (Gr
 
 Discussion about canonicalization of Hebrew. (Ron Aaron, 2011 April 10)
 
-Patch to fix gj with count. (James Vega, 2011 Jun 13)
-
-Patch to disallow fork() when __APPLE__ is defined. (Hisashi T Fujinaka, 2010
-Nov 25)
-
-7   Output for ":scriptnames" and ":breaklist" should shorten the file names:
-    use "~/" when possible.
-Patch by Jean-Rene David, 2011 May 1.
-
-Cindent wrong after patch 7.3.202. (Lech Lorens, issue 9)
-
-Patch for cindent fix with closing brace placement, including tests.
-(Lech Lorens, issue 10, 2011 Jun 12)
-
-Patch for better #if 0 syntax highlighting for C code. (Ben Schmidt, 2011 Jan
-20)
-Change to C syntax folding to make it work much faster, but a bit less
-reliable. (Lech Lorens, 2009 Nov 9)  Enable with an option?
-Most time is spent in in_id_list().
-Updated to merge both patches. (Ben Schmidt, 2011 May 2)
-
-GTK: Patch to fix menu popping down. (Hong Xu, 2010 Dec 4, Dec 5)
-Update 2011 Feb 3.
-
-Patch to use pipes on Win32.  (Vincent Berthoux, 2011 Feb 28)
-Update Mar 1 using 'shelltemp'.
-
-Patch to fix CTRL-R CTRL-W in the command line when the cursor is not at the
-end. (Tyru, 2011 Jun 6)
-
 Patch to support UTF-8 for Hangul. (Shawn Y.H. Kim, 2011 May 1)
 Needs more work.
 
-Patch to make ";" not get stuck on "t" command. (Christian Brabandt, 2011 May
-23)
-
-Patch to do more testing of Javascript indenting.  Some items are srong.
-(Luc Deschenaux, 2011 Jun 14)
-
-"gh<Del>" deletes the current line, except when it's the last line.
-Hint by Christian Brabandt, 2011 Mar 22
-
-"echo 'abc' > ''" returns 0 or 1, depending on 'ignorecase'.
-mb_strnicmp() checks for illegal and truncated bytes are wrong.
-Should also not assume that byte length is equal before case folding.
-Patch by Ivan Krasilnikov, 2011 May 27.
+With "unamedplus" in 'clipboard' pasting in Visual mode causes error for empty
+register. (Michael Seiwald, 2011 Jun 28)
 
 The :z command doesn't work exactly as it should. (ChangZhuo Chen, 2011 Mar 2)
 Compare with how old Vi works and with posix spec.  terminal is 80 x 24,
@@ -94,6 +53,7 @@ Compare with how old Vi works and with p
 'cursorline' is displayed too short when there are concealed characters and
 'list' is set.  (Dennis Preiser)
 Patch 7.3.116 was the wrong solution.
+Christian Brabandt has another incomplete patch. (2011 Jul 13)
 
 With concealed text mouse click doesn't put the cursor in the right position.
 (Herb Sitz)  Fix by Christian Brabandt, 2011 Jun 16.  Doesn't work properly,
@@ -119,8 +79,13 @@ Bug in repeating Visual "u". (Lawrence K
 Patch to automatically get version number into NSIS. (Guopeng Wen, 2011 May
 27)
 
+Patch to add more command completions (Dominique Pelle, 2011 Jun 25)
+
+Patch to have GvimExt not use "edit with existing Vim" entries.
+(Jerome Vuarand, 2011 Jun 22)
+
 Patch to make character classes work with multi-byte characters.
-(Dominique Pelle, 2011 May 31)
+(Dominique Pelle, 2011 May 31, update July 11)
 
 In GTK Gvim, setting 'lines' and 'columns' to 99999 causes a crash (Tony
 Mechelynck, 2011 Apr 25).  Can reproduce the crash sometimes:
@@ -143,6 +108,9 @@ Need for CursorHold that retriggers.  Us
 function that resets did_cursorhold.
 Patch by Christian Brabandt, 2011 May 6.
 
+popup completion menu closes quickly when there is a fold in the buffer. (Jan
+Christoph Ebersbach, 2011 Jul 3)
+
 CursorHold repeats typed key when it's the start of a mapping.
 (Will Gray, 2011 Mar 23)
 Christian Brabandt: problem is that OP_PENDING isn't set.
@@ -192,6 +160,10 @@ Bug in try/catch: return with invalid co
 Highlighting stops working after changing it many times.  Script to reproduce
 it: Pablo Contreras, 2010 Oct 12  Windows XP and 7.  Font is never freed?
 
+When setting a local option value from the global value, add a script ID that
+indicates this, so that ":verbose set" can give a hint.  Check with options in
+the help file.
+
 After patch 7.3.097 still get E15. (Yukihiro Nakadaira, 2011 Jan 18)
 Also for another example (ZyX, 2011 Jan 24)
 
@@ -251,6 +223,9 @@ New esperanto spell file can't be proces
 "L'Italie" noted as a spell error at start of the sentence. (Dominique Pelle,
 2011 Feb 27)
 
+Patch to fail if configure can't find an interface, such as Python.
+(Shlomi Fish, 2011 Jul 11)
+
 Copy/paste between Vim and Google chrome doesn't work well for multi-byte
 characters. (Ben Haskell, 2010 Sep 17)
 When putting text in the cut buffer (when exiting) and conversion doesn't work
@@ -341,7 +316,7 @@ When writing a file > 2Gbyte, the report
 (Antonio Colombo, 2010 Dec 18)
 
 Patch: Let rare word highlighting overrule good word highlighting.
-(Jakson A. Aquino, 2010 Jul 30)
+(Jakson A. Aquino, 2010 Jul 30, again 2011 Jul 2)
 
 Patch to make more characters work in dialogs. (Yankwei Jia, 2010 Aug 4)
 
@@ -429,6 +404,9 @@ characters. (2010 Aug 14, bootleq)
 
 Problem with stop directory in findfile(). (Adam Simpkins, 2009 Aug 26)
 
+Using ']' as the end of a range in a pattern requires double escaping:
+     /[@-\\]]  (Andy Wokula, 2011 Jun 28)
+
 Undo problem: line not removed as expected when using setline() from Insert
 mode. (Israel Chauca, 2010 May 13, more in second msg)
 Break undo when CTRL-R = changes the text?  Or save more lines?
@@ -1525,6 +1503,7 @@ 7   Completion of network shares, patch 
 -   Patch for 'breakindent' option: repeat indent for wrapped line. (Vaclav
     Smilauer, 2004 Sep 13, fix Oct 31, update 2007 May 30)
     Version for latest MacVim: Tobia Conforto, 2009 Nov 23
+    More recent version: https://retracile.net/wiki/VimBreakIndent
 8   Add a few more command names to the menus.  Patch from Jiri Brezina
     (28 feb 2002).  Will mess the translations...
 7   ATTENTION dialog choices are more logical when "Delete it' appears
--- 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:	2011 Jun 13
+" Last Change:	2011 Jul 17
 
 " Listen very carefully, I will say this only once
 if exists("did_load_filetypes")
@@ -1588,8 +1588,13 @@ func! s:FTr()
     endif
   endfor
 
-  " Nothing recognized, assume Rexx
-  setf rexx
+  " Nothing recognized, use user default or assume Rexx
+  if exists("g:filetype_r")
+    exe "setf " . g:filetype_r
+  else
+    " Rexx used to be the default, but R appears to be much more popular.
+    setf r
+  endif
 endfunc
 
 " Remind
--- a/runtime/ftplugin/help.vim
+++ b/runtime/ftplugin/help.vim
@@ -13,7 +13,10 @@ set cpo&vim
 
 let b:undo_ftplugin = "setl fo< tw< cole< cocu<"
 
-setlocal formatoptions+=tcroql textwidth=78 cole=2 cocu=nc
+setlocal formatoptions+=tcroql textwidth=78
+if has("conceal")
+  setlocal cole=2 cocu=nc
+endif
 
 let &cpo = s:cpo_save
 unlet s:cpo_save
--- a/runtime/indent/dtd.vim
+++ b/runtime/indent/dtd.vim
@@ -1,7 +1,7 @@
 " Vim indent file
 " Language:	    DTD (Document Type Definition for XML)
 " Maintainer:       Nikolai Weibull <now@bitwi.se>
-" Latest Revision:  2010-09-21
+" Latest Revision:  2011-07-08
 
 let s:cpo_save = &cpo
 set cpo&vim
@@ -52,7 +52,7 @@ function s:indent_to_innermost_parenthes
   let end = a:end
   let parentheses = [end - 1]
   while token != ""
-    let [token, end] = s:lex(a:line, end, '^\%([(),|]\|[A-Za-z0-9_-]\+\|#PCDATA\|%[A-Za-z0-9_-]\+;\)[?*+]\=')
+    let [token, end] = s:lex(a:line, end, '^\%([(),|]\|[A-Za-z0-9_-]\+\|#P\=CDATA\|%[A-Za-z0-9_-]\+;\)[?*+]\=')
     if token[0] == '('
       call add(parentheses, end - 1)
     elseif token[0] == ')'
--- a/runtime/syntax/bindzone.vim
+++ b/runtime/syntax/bindzone.vim
@@ -1,13 +1,13 @@
 " Vim syntax file
-" Language:     BIND zone files (RFC1035)
+" Language:     BIND zone files (RFC 1035)
 " Maintainer:   Julian Mehnle <julian@mehnle.net>
 " URL:          http://www.mehnle.net/source/odds+ends/vim/syntax/
-" Last Change:  Thu 2006-04-20 12:30:45 UTC
+" Last Change:  Thu 2011-07-16 20:42:00 UTC
 " 
 " Based on an earlier version by Ð’ÑчеÑлав Горбанев (Slava Gorbanev), with
 " heavy modifications.
 " 
-" $Id: bindzone.vim,v 1.2 2006/04/20 22:06:21 vimboss Exp $
+" $Id: bindzone.vim 12 2011-07-16 21:09:57Z julian $
 
 " For version 5.x: Clear all syntax items
 " For version 6.x: Quit when a syntax file was already loaded
@@ -23,7 +23,7 @@ syn case match
 syn region      zoneRRecord     start=/^/ end=/$/ contains=zoneOwnerName,zoneSpecial,zoneTTL,zoneClass,zoneRRType,zoneComment,zoneUnknown
 
 syn match       zoneDirective   /^\$ORIGIN\s\+/   nextgroup=zoneOrigin,zoneUnknown
-syn match       zoneDirective   /^\$TTL\s\+/      nextgroup=zoneNumber,zoneUnknown
+syn match       zoneDirective   /^\$TTL\s\+/      nextgroup=zoneTTL,zoneUnknown
 syn match       zoneDirective   /^\$INCLUDE\s\+/  nextgroup=zoneText,zoneUnknown
 syn match       zoneDirective   /^\$GENERATE\s/
 
@@ -34,9 +34,9 @@ syn match       zoneOrigin      containe
 syn match       zoneDomain      contained  /[^[:space:]!"#$%&'()*+,\/:;<=>?@[\]\^`{|}~]\+\(\s\|;\|$\)\@=/
 
 syn match       zoneSpecial     contained /^[@*.]\s/
-syn match       zoneTTL         contained /\<\d[0-9HhWwDd]*\>/  nextgroup=zoneClass,zoneRRType skipwhite
-syn keyword     zoneClass       contained IN CHAOS              nextgroup=zoneRRType,zoneTTL   skipwhite
-syn keyword     zoneRRType      contained A AAAA CNAME HINFO MX NS PTR SOA SRV TXT nextgroup=zoneRData skipwhite
+syn match       zoneTTL         contained /\s\@<=\d[0-9WwDdHhMmSs]*\(\s\|$\)\@=/ nextgroup=zoneClass,zoneRRType skipwhite
+syn keyword     zoneClass       contained IN CHAOS nextgroup=zoneRRType,zoneTTL skipwhite
+syn keyword     zoneRRType      contained A AAAA CNAME DNAME HINFO MX NS PTR SOA SRV TXT SPF nextgroup=zoneRData skipwhite
 syn match       zoneRData       contained /[^;]*/ contains=zoneDomain,zoneIPAddr,zoneIP6Addr,zoneText,zoneNumber,zoneParen,zoneUnknown
 
 syn match       zoneIPAddr      contained /\<[0-9]\{1,3}\(\.[0-9]\{1,3}\)\{,3}\>/
@@ -66,7 +66,7 @@ syn match       zoneNumber      containe
 syn match       zoneSerial      contained /\<[0-9]\{9,10}\(\s\|;\|$\)\@=/
 
 syn match       zoneErrParen    /)/
-syn region      zoneParen       contained start="(" end=")" contains=zoneSerial,zoneNumber,zoneComment
+syn region      zoneParen       contained start="(" end=")" contains=zoneSerial,zoneTTL,zoneNumber,zoneComment
 syn match       zoneComment     /;.*/
 
 " Define the default highlighting.
--- a/runtime/syntax/c.vim
+++ b/runtime/syntax/c.vim
@@ -1,7 +1,7 @@
 " Vim syntax file
 " Language:	C
 " Maintainer:	Bram Moolenaar <Bram@vim.org>
-" Last Change:	2009 Nov 17
+" Last Change:	2011 May 2
 
 " Quit when a (custom) syntax file was already loaded
 if exists("b:current_syntax")
@@ -72,7 +72,7 @@ endif
 " This should be before cErrInParen to avoid problems with #define ({ xxx })
 if exists("c_curly_error")
   syntax match cCurlyError "}"
-  syntax region	cBlock		start="{" end="}" contains=ALLBUT,cCurlyError,@cParenGroup,cErrInParen,cCppParen,cErrInBracket,cCppBracket,cCppString,@Spell fold
+  syntax region	cBlock		start="{" end="}" contains=ALLBUT,cBadBlock,cCurlyError,@cParenGroup,cErrInParen,cCppParen,cErrInBracket,cCppBracket,cCppString,@Spell fold
 else
   syntax region	cBlock		start="{" end="}" transparent fold
 endif
@@ -80,31 +80,33 @@ endif
 "catch errors caused by wrong parenthesis and brackets
 " also accept <% for {, %> for }, <: for [ and :> for ] (C99)
 " But avoid matching <::.
-syn cluster	cParenGroup	contains=cParenError,cIncluded,cSpecial,cCommentSkip,cCommentString,cComment2String,@cCommentGroup,cCommentStartError,cUserCont,cUserLabel,cBitField,cOctalZero,cCppOut,cCppOut2,cCppSkip,cFormat,cNumber,cFloat,cOctal,cOctalError,cNumbersCom
+syn cluster	cParenGroup	contains=cParenError,cIncluded,cSpecial,cCommentSkip,cCommentString,cComment2String,@cCommentGroup,cCommentStartError,cUserCont,cUserLabel,cBitField,cOctalZero,@cCppOutInGroup,cFormat,cNumber,cFloat,cOctal,cOctalError,cNumbersCom
 if exists("c_no_curly_error")
-  syn region	cParen		transparent start='(' end=')' contains=ALLBUT,@cParenGroup,cCppParen,cCppString,@Spell
+  syn region	cParen		transparent start='(' end=')' end='}'me=s-1 contains=ALLBUT,cBlock,@cParenGroup,cCppParen,cCppString,@Spell
   " cCppParen: same as cParen but ends at end-of-line; used in cDefine
   syn region	cCppParen	transparent start='(' skip='\\$' excludenl end=')' end='$' contained contains=ALLBUT,@cParenGroup,cParen,cString,@Spell
   syn match	cParenError	display ")"
   syn match	cErrInParen	display contained "^[{}]\|^<%\|^%>"
 elseif exists("c_no_bracket_error")
-  syn region	cParen		transparent start='(' end=')' contains=ALLBUT,@cParenGroup,cCppParen,cCppString,@Spell
+  syn region	cParen		transparent start='(' end=')' end='}'me=s-1 contains=ALLBUT,cBlock,@cParenGroup,cCppParen,cCppString,@Spell
   " cCppParen: same as cParen but ends at end-of-line; used in cDefine
   syn region	cCppParen	transparent start='(' skip='\\$' excludenl end=')' end='$' contained contains=ALLBUT,@cParenGroup,cParen,cString,@Spell
   syn match	cParenError	display ")"
   syn match	cErrInParen	display contained "[{}]\|<%\|%>"
 else
-  syn region	cParen		transparent start='(' end=')' contains=ALLBUT,@cParenGroup,cCppParen,cErrInBracket,cCppBracket,cCppString,@Spell
+  syn region	cParen		transparent start='(' end=')' end='}'me=s-1 contains=ALLBUT,cBlock,@cParenGroup,cCppParen,cErrInBracket,cCppBracket,cCppString,@Spell
   " cCppParen: same as cParen but ends at end-of-line; used in cDefine
   syn region	cCppParen	transparent start='(' skip='\\$' excludenl end=')' end='$' contained contains=ALLBUT,@cParenGroup,cErrInBracket,cParen,cBracket,cString,@Spell
   syn match	cParenError	display "[\])]"
   syn match	cErrInParen	display contained "[\]{}]\|<%\|%>"
-  syn region	cBracket	transparent start='\[\|<::\@!' end=']\|:>' contains=ALLBUT,@cParenGroup,cErrInParen,cCppParen,cCppBracket,cCppString,@Spell
+  syn region	cBracket	transparent start='\[\|<::\@!' end=']\|:>' end='}'me=s-1 contains=ALLBUT,cBlock,@cParenGroup,cErrInParen,cCppParen,cCppBracket,cCppString,@Spell
   " cCppBracket: same as cParen but ends at end-of-line; used in cDefine
   syn region	cCppBracket	transparent start='\[\|<::\@!' skip='\\$' excludenl end=']\|:>' end='$' contained contains=ALLBUT,@cParenGroup,cErrInParen,cParen,cBracket,cString,@Spell
   syn match	cErrInBracket	display contained "[);{}]\|<%\|%>"
 endif
 
+syntax region	cBadBlock	keepend extend start="{" end="}" contained containedin=cParen,cBracket,cBadBlock transparent fold
+
 "integer number, or floating point number without a dot and with "f".
 syn case ignore
 syn match	cNumbers	display transparent "\<\d\|\.\d" contains=cNumber,cFloat,cOctalError,cOctal
@@ -270,27 +272,39 @@ if !exists("c_no_c99") " ISO C99
 endif
 
 " Accept %: for # (C99)
-syn region      cPreCondit      start="^\s*\(%:\|#\)\s*\(if\|ifdef\|ifndef\|elif\)\>" skip="\\$" end="$"  keepend contains=cComment,cCommentL,cCppString,cCharacter,cCppParen,cParenError,cNumbers,cCommentError,cSpaceError
-syn match	cPreCondit	display "^\s*\(%:\|#\)\s*\(else\|endif\)\>"
+syn region	cPreCondit	start="^\s*\(%:\|#\)\s*\(if\|ifdef\|ifndef\|elif\)\>" skip="\\$" end="$" keepend contains=cComment,cCommentL,cCppString,cCharacter,cCppParen,cParenError,cNumbers,cCommentError,cSpaceError
+syn match	cPreConditMatch	display "^\s*\(%:\|#\)\s*\(else\|endif\|elif\)\>"
 if !exists("c_no_if0")
+  syn cluster	cCppOutInGroup	contains=cCppInIf,cCppInElse,cCppInElse2,cCppOutIf,cCppOutIf2,cCppOutElse,cCppInSkip,cCppOutSkip
+  syn region	cCppOutWrapper	start="^\s*\(%:\|#\)\s*if\s\+0\+\s*\($\|//\|/\*\|&\)" end=".\@=\|$" contains=cCppOutIf,cCppOutElse
+  syn region	cCppOutIf	contained start="0\+" matchgroup=cCppOutWrapper end="^\s*\(%:\|#\)\s*endif\>" contains=cCppOutIf2,cCppOutElse
   if !exists("c_no_if0_fold")
-    syn region	cCppOut		start="^\s*\(%:\|#\)\s*if\s\+0\+\>" end=".\@=\|$" contains=cCppOut2 fold
+    syn region	cCppOutIf2	contained matchgroup=cCppOutWrapper start="0\+" end="^\s*\(%:\|#\)\s*\(else\>\|elif\s\+\(0\+\s*\($\|//\|/\*\|&\)\)\@!\|endif\>\)"me=s-1 contains=cSpaceError,cCppOutSkip
   else
-    syn region	cCppOut		start="^\s*\(%:\|#\)\s*if\s\+0\+\>" end=".\@=\|$" contains=cCppOut2
+    syn region	cCppOutIf2	contained matchgroup=cCppOutWrapper start="0\+" end="^\s*\(%:\|#\)\s*\(else\>\|elif\s\+\(0\+\s*\($\|//\|/\*\|&\)\)\@!\|endif\>\)"me=s-1 contains=cSpaceError,cCppOutSkip fold
   endif
-  syn region	cCppOut2	contained start="0" end="^\s*\(%:\|#\)\s*\(endif\>\|else\>\|elif\>\)" contains=cSpaceError,cCppSkip
-  syn region	cCppSkip	contained start="^\s*\(%:\|#\)\s*\(if\>\|ifdef\>\|ifndef\>\)" skip="\\$" end="^\s*\(%:\|#\)\s*endif\>" contains=cSpaceError,cCppSkip
+  syn region	cCppOutElse	contained matchgroup=cCppOutWrapper start="^\s*\(%:\|#\)\s*\(else\|elif\)" end="^\s*\(%:\|#\)\s*endif\>"me=s-1 contains=TOP,cPreCondit
+  syn region	cCppInWrapper	start="^\s*\(%:\|#\)\s*if\s\+0*[1-9]\d*\s*\($\|//\|/\*\||\)" end=".\@=\|$" contains=cCppInIf,cCppInElse
+  syn region	cCppInIf	contained matchgroup=cCppInWrapper start="\d\+" end="^\s*\(%:\|#\)\s*endif\>" contains=TOP,cPreCondit
+  if !exists("c_no_if0_fold")
+    syn region	cCppInElse	contained start="^\s*\(%:\|#\)\s*\(else\>\|elif\s\+\(0*[1-9]\d*\s*\($\|//\|/\*\||\)\)\@!\)" end=".\@=\|$" containedin=cCppInIf contains=cCppInElse2 fold
+  else
+    syn region	cCppInElse	contained start="^\s*\(%:\|#\)\s*\(else\>\|elif\s\+\(0*[1-9]\d*\s*\($\|//\|/\*\||\)\)\@!\)" end=".\@=\|$" containedin=cCppInIf contains=cCppInElse2
+  endif
+  syn region	cCppInElse2	contained matchgroup=cCppInWrapper start="^\s*\(%:\|#\)\s*\(else\|elif\)\([^/]\|/[^/*]\)*" end="^\s*\(%:\|#\)\s*endif\>"me=s-1 contains=cSpaceError,cCppOutSkip
+  syn region	cCppOutSkip	contained start="^\s*\(%:\|#\)\s*\(if\>\|ifdef\>\|ifndef\>\)" skip="\\$" end="^\s*\(%:\|#\)\s*endif\>" contains=cSpaceError,cCppOutSkip
+  syn region	cCppInSkip	contained matchgroup=cCppInWrapper start="^\s*\(%:\|#\)\s*\(if\s\+\(\d\+\s*\($\|//\|/\*\||\|&\)\)\@!\|ifdef\>\|ifndef\>\)" skip="\\$" end="^\s*\(%:\|#\)\s*endif\>" containedin=cCppOutElse,cCppInIf,cCppInSkip contains=TOP,cPreProc
 endif
 syn region	cIncluded	display contained start=+"+ skip=+\\\\\|\\"+ end=+"+
 syn match	cIncluded	display contained "<[^>]*>"
 syn match	cInclude	display "^\s*\(%:\|#\)\s*include\>\s*["<]" contains=cIncluded
 "syn match cLineSkip	"\\$"
-syn cluster	cPreProcGroup	contains=cPreCondit,cIncluded,cInclude,cDefine,cErrInParen,cErrInBracket,cUserLabel,cSpecial,cOctalZero,cCppOut,cCppOut2,cCppSkip,cFormat,cNumber,cFloat,cOctal,cOctalError,cNumbersCom,cString,cCommentSkip,cCommentString,cComment2String,@cCommentGroup,cCommentStartError,cParen,cBracket,cMulti
+syn cluster	cPreProcGroup	contains=cPreCondit,cIncluded,cInclude,cDefine,cErrInParen,cErrInBracket,cUserLabel,cSpecial,cOctalZero,cCppOutWrapper,cCppInWrapper,@cCppOutInGroup,cFormat,cNumber,cFloat,cOctal,cOctalError,cNumbersCom,cString,cCommentSkip,cCommentString,cComment2String,@cCommentGroup,cCommentStartError,cParen,cBracket,cMulti
 syn region	cDefine		start="^\s*\(%:\|#\)\s*\(define\|undef\)\>" skip="\\$" end="$" keepend contains=ALLBUT,@cPreProcGroup,@Spell
 syn region	cPreProc	start="^\s*\(%:\|#\)\s*\(pragma\>\|line\>\|warning\>\|warn\>\|error\>\)" skip="\\$" end="$" keepend contains=ALLBUT,@cPreProcGroup,@Spell
 
 " Highlight User Labels
-syn cluster	cMultiGroup	contains=cIncluded,cSpecial,cCommentSkip,cCommentString,cComment2String,@cCommentGroup,cCommentStartError,cUserCont,cUserLabel,cBitField,cOctalZero,cCppOut,cCppOut2,cCppSkip,cFormat,cNumber,cFloat,cOctal,cOctalError,cNumbersCom,cCppParen,cCppBracket,cCppString
+syn cluster	cMultiGroup	contains=cIncluded,cSpecial,cCommentSkip,cCommentString,cComment2String,@cCommentGroup,cCommentStartError,cUserCont,cUserLabel,cBitField,cOctalZero,cCppOutWrapper,cCppInWrapper,@cCppOutInGroup,cFormat,cNumber,cFloat,cOctal,cOctalError,cNumbersCom,cCppParen,cCppBracket,cCppString
 syn region	cMulti		transparent start='?' skip='::' end=':' contains=ALLBUT,@cMultiGroup,@Spell
 " Avoid matching foo::bar() in C++ by requiring that the next char is not ':'
 syn cluster	cLabelGroup	contains=cUserLabel
@@ -354,6 +368,9 @@ hi def link cDefine		Macro
 hi def link cIncluded		cString
 hi def link cError		Error
 hi def link cStatement		Statement
+hi def link cCppInWrapper	cCppOutWrapper
+hi def link cCppOutWrapper	cPreCondit
+hi def link cPreConditMatch	cPreCondit
 hi def link cPreCondit		PreCondit
 hi def link cType		Type
 hi def link cConstant		Constant
@@ -365,8 +382,10 @@ hi def link cComment		Comment
 hi def link cSpecial		SpecialChar
 hi def link cTodo		Todo
 hi def link cBadContinuation	Error
-hi def link cCppSkip		cCppOut
-hi def link cCppOut2		cCppOut
+hi def link cCppOutSkip		cCppOutIf2
+hi def link cCppInElse2		cCppOutIf2
+hi def link cCppOutIf2		cCppOut2  " Old syntax group for #if 0 body
+hi def link cCppOut2		cCppOut  " Old syntax group for #if of #if 0
 hi def link cCppOut		Comment
 
 let b:current_syntax = "c"
--- a/runtime/syntax/dnsmasq.vim
+++ b/runtime/syntax/dnsmasq.vim
@@ -1,7 +1,7 @@
 " Vim syntax file
 " Language:	dnsmasq(8) configuration file
 " Maintainer:	Thilo Six <T.Six@gmx.de>
-" Last Change:	17 May 2011
+" Last Change:	2011 Jul 14
 " Credits:	This file is a mix of cfg.vim, wget.vim and xf86conf.vim, credits go to:
 "		Igor N. Prischepoff
 "		Doug Kearns
@@ -58,7 +58,7 @@ syn match   DnsmasqString   "'.*'"
 syn match   DnsmasqComment  "^#.*$"   contains=DnsmasqTodo
 syn match   DnsmasqComment  "\s#.*$"  contains=DnsmasqTodo
 
-syn keyword DnsmasqTodo	    FIXME TODO XXX NOT contained
+syn keyword DnsmasqTodo	    FIXME TODO XXX NOTE contained
 
 syn match DnsmasqKeywordSpecial    "\<set\>:"me=e-1
 syn match DnsmasqKeywordSpecial    "\<tag\>:"me=e-1
--- a/runtime/syntax/dosini.vim
+++ b/runtime/syntax/dosini.vim
@@ -3,7 +3,8 @@
 " Version Info: @(#)dosini.vim 1.6 97/12/15 08:54:12
 " Author:       Sean M. McKee <mckee@misslink.net>
 " Maintainer:   Nima Talebi <nima@it.net.au>
-" Last Change:	Mon, 26 Jun 2006 22:07:28 +1000
+" Updated By:   Hong Xu
+" Last Change:	2011 Jul 16
 
 
 " For version 5.x: Clear all syntax items
@@ -19,7 +20,7 @@ syn case ignore
 
 syn match  dosiniLabel		"^.\{-}="
 syn region dosiniHeader		start="^\[" end="\]"
-syn match  dosiniComment	"^;.*$"
+syn match  dosiniComment	"^[#;].*$"
 
 " Define the default highlighting.
 " For version 5.7 and earlier: only when not done already
--- a/runtime/syntax/gnash.vim
+++ b/runtime/syntax/gnash.vim
@@ -2,7 +2,7 @@
 " Language: 	gnash(1) configuration files
 "		http://www.gnu.org/software/gnash/manual/gnashuser.html#gnashrc
 " Maintainer: 	Thilo Six <T.Six@gmx.de>
-" Last Change: 	17 May 2011
+" Last Change: 	2011 Jul 02
 " Credidts:	derived from readline.vim
 "		Nikolai Weibull
 "
@@ -32,6 +32,7 @@ syn case match
 syn match GnashSet	    '^\s*set\>'
 syn match GnashSet	    '^\s*append\>'
 
+syn case ignore
 syn match GnashKeyword	    '\<CertDir\>'
 syn match GnashKeyword      '\<ASCodingErrorsVerbosity\>'
 syn match GnashKeyword      '\<CertFile\>'
--- a/runtime/syntax/help.vim
+++ b/runtime/syntax/help.vim
@@ -1,7 +1,7 @@
 " Vim syntax file
 " Language:	Vim help file
 " Maintainer:	Bram Moolenaar (Bram@vim.org)
-" Last Change:	2010 Nov 03
+" Last Change:	2011 Jul 11
 
 " Quit when a (custom) syntax file was already loaded
 if exists("b:current_syntax")
@@ -21,8 +21,13 @@ else
   syn match helpHyperTextEntry	"\*[#-)!+-~]\+\*\s"he=e-1 contains=helpStar
   syn match helpHyperTextEntry	"\*[#-)!+-~]\+\*$" contains=helpStar
 endif
-syn match helpBar		contained "|" conceal
-syn match helpStar		contained "\*" conceal
+if has("conceal")
+  syn match helpBar		contained "|" conceal
+  syn match helpStar		contained "\*" conceal
+else
+  syn match helpBar		contained "|"
+  syn match helpStar		contained "\*"
+endif
 syn match helpNormal		"|.*====*|"
 syn match helpNormal		":|vim:|"	" for :help modeline
 syn match helpVim		"Vim version [0-9.a-z]\+"
@@ -31,7 +36,11 @@ syn match helpOption		"'[a-z]\{2,\}'"
 syn match helpOption		"'t_..'"
 syn match helpHeader		"\s*\zs.\{-}\ze\s\=\~$" nextgroup=helpIgnore
 syn match helpGraphic		".* \ze`$" nextgroup=helpIgnore
-syn match helpIgnore		"." contained conceal
+if has("conceal")
+  syn match helpIgnore		"." contained conceal
+else
+  syn match helpIgnore		"." contained
+endif
 syn keyword helpNote		note Note NOTE note: Note: NOTE: Notes Notes:
 syn match helpSpecial		"\<N\>"
 syn match helpSpecial		"\<N\.$"me=e-1
--- a/runtime/tutor/tutor.fr
+++ b/runtime/tutor/tutor.fr
@@ -1,5 +1,5 @@
 ===============================================================================
-= B i e n v e n u e  dans le  T u t o r i e l  de  V I M  -  Version 1.7.fr.2 =
+=    B i e n v e n u e  dans  l e  T u t o r i e l  de  V I M  -  Version 1.7 =
 ===============================================================================
 
      Vim est un éditeur très puissant qui a trop de commandes pour pouvoir
@@ -67,7 +67,7 @@ NOTE : Les touches fléchées devraient également fonctionner. Mais en utilisant
   4. Si vous avez mémorisé ces étapes et êtes confiant, effectuez les étapes
      1 à 3 pour sortir puis rentrer dans l'éditeur.
 
-NOTE :  :q! <Entrée> annule tous les changements que vous avez fait. Dans
+NOTE :  :q! <Entrée> annule tous les changements que vous avez faits. Dans
          quelques leçons, vous apprendrez à enregistrer les changements.
 
   5. Déplacez le curseur à la Leçon 1.3.
@@ -260,7 +260,7 @@ NOTE : La lettre  d  apparaîtra sur la dernière ligne de l'écran lors de
 
   Une courte liste de mouvements :
     w - jusqu'au début du prochain mot, en EXCLUANT son premier caractère.
-    e - jusqu'à la fin du mot courant, en EXCLUANT son denier caractère.
+    e - jusqu'à la fin du mot courant, en EXCLUANT son dernier caractère.
     $ - jusqu'à la fin de la ligne, en INCLUANT son dernier caractère.
 
   Ainsi, taper  de  va effacer depuis le curseur jusqu'à la fin du mot.
@@ -299,7 +299,7 @@ NOTE : Le seul appui d'un mouvement en mode Normal, sans commande, déplace le
 
   Outre la combinaison de l'opérateur d'effacement avec un déplacement
   mentionné ci-dessus, vous pouvez insérer un nombre (quantificateur)
-  pour effacez encore plus :
+  pour effacer encore plus :
        d   nombre   déplacement
 
   1. Déplacez le curseur vers le premier mot en MAJUSCULES dans la ligne
@@ -704,7 +704,7 @@ NOTE : Si vous quittez Vim et le redémarrez de nouveau avec le fichier TEST,
   3. Appuyez  :  . En bas de l'écran  :'<,'> va apparaître.
 
   4. Tapez   w TEST  , où TEST est un nom de fichier qui n'existe pas.
-     Vérifiez que vous voyez  :'<,'>w TEST  avant de d'appuyer sur Entrée.
+     Vérifiez que vous voyez  :'<,'>w TEST  avant de d'appuyer sur <Entrée>.
 
   5. Vim va enregistrer les lignes sélectionnées dans le fichier TEST.
      Utilisez  :!dir  ou  !ls pour le voir. Ne l'effacez pas encore !
@@ -725,7 +725,7 @@ NOTE : L'appui de  v  démarre la sélection Visuelle. Vous pouvez déplacer le
   1. Placez le curseur juste au-dessus de cette ligne.
 
 NOTE :  Après avoir exécuté l'étape 2 vous verrez du texte de la Leçon 5.3.
-        Puis déplacez vous vers le bas pour voir cette leçon à nouveau.
+        Puis déplacez-vous vers le bas pour voir cette leçon à nouveau.
 
   2. Maintenant récupérez votre fichier TEST en utilisant la commande  :r TEST
      où TEST est le nom de votre fichier.
@@ -854,7 +854,7 @@ NOTE : Le mode Remplacement est comme le
   5. Tapez  p  pour coller le texte. Puis tapez :  un second <Échap> .
 
   6. Utilisez le mode Visuel pour sélectionner "élément", copiez le avec  y  ,
-     déplacez vous à la fin de la ligne suivant avec  j$  et collez le texte
+     déplacez-vous à la fin de la ligne suivant avec  j$  et collez le texte
      à cet endroit avec  p .
 
 --->  a) ceci est le premier élément.
@@ -1012,8 +1012,8 @@ NOTE : Le complètement fonctionne pour de nombreuses commandes. Essayez
   Ceci conclut le Tutoriel Vim. Le but était de vous donner un bref aperçu de
   l'éditeur Vim, juste assez pour vous permettre d'utiliser l'éditeur
   relativement facilement. Il est loin d'être complet, vu que Vim a beaucoup
-  beaucoup plus de commandes. Un Manuel de l'utilisateur est disponible en
-  anglais :  :help user-manual .
+  plus de commandes. Un Manuel de l'utilisateur est disponible en anglais :
+    :help user-manual
 
   Pour continuer à découvrir et à apprendre Vim, il existe un livre traduit en
   français. Il parle plus de Vi que de Vim, mais pourra vous être utile.
@@ -1030,9 +1030,9 @@ NOTE : Le complètement fonctionne pour de nombreuses commandes. Essayez
   Université d'État du Colorado. E-mail : bware@mines.colorado.edu.
 
   Modifié pour Vim par Bram Moolenar.
-  Traduit en Français par Adrien Beau, en avril 2001.
+  Traduit en français par Adrien Beau, en avril 2001.
   Dernières mises à jour par Dominique Pellé.
 
   E-mail :      dominique.pelle@gmail.com
-  Last Change : 2010 May 23
+  Last Change : 2011 Jun 25
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
--- a/runtime/tutor/tutor.fr.utf-8
+++ b/runtime/tutor/tutor.fr.utf-8
@@ -1,5 +1,5 @@
 ===============================================================================
-= B i e n v e n u e  dans le  T u t o r i e l  de  V I M  -  Version 1.7.fr.2 =
+=    B i e n v e n u e  dans  l e  T u t o r i e l  de  V I M  -  Version 1.7 =
 ===============================================================================
 
      Vim est un éditeur très puissant qui a trop de commandes pour pouvoir
@@ -67,7 +67,7 @@ NOTE : Les touches fléchées devraient également fonctionner. Mais en utilisant
   4. Si vous avez mémorisé ces étapes et êtes confiant, effectuez les étapes
      1 à 3 pour sortir puis rentrer dans l'éditeur.
 
-NOTE :  :q! <Entrée> annule tous les changements que vous avez fait. Dans
+NOTE :  :q! <Entrée> annule tous les changements que vous avez faits. Dans
          quelques leçons, vous apprendrez à enregistrer les changements.
 
   5. Déplacez le curseur à la Leçon 1.3.
@@ -260,7 +260,7 @@ NOTE : La lettre  d  apparaîtra sur la dernière ligne de l'écran lors de
 
   Une courte liste de mouvements :
     w - jusqu'au début du prochain mot, en EXCLUANT son premier caractère.
-    e - jusqu'à la fin du mot courant, en EXCLUANT son denier caractère.
+    e - jusqu'à la fin du mot courant, en EXCLUANT son dernier caractère.
     $ - jusqu'à la fin de la ligne, en INCLUANT son dernier caractère.
 
   Ainsi, taper  de  va effacer depuis le curseur jusqu'à la fin du mot.
@@ -299,7 +299,7 @@ NOTE : Le seul appui d'un mouvement en mode Normal, sans commande, déplace le
 
   Outre la combinaison de l'opérateur d'effacement avec un déplacement
   mentionné ci-dessus, vous pouvez insérer un nombre (quantificateur)
-  pour effacez encore plus :
+  pour effacer encore plus :
        d   nombre   déplacement
 
   1. Déplacez le curseur vers le premier mot en MAJUSCULES dans la ligne
@@ -704,7 +704,7 @@ NOTE : Si vous quittez Vim et le redémarrez de nouveau avec le fichier TEST,
   3. Appuyez  :  . En bas de l'écran  :'<,'> va apparaître.
 
   4. Tapez   w TEST  , où TEST est un nom de fichier qui n'existe pas.
-     Vérifiez que vous voyez  :'<,'>w TEST  avant de d'appuyer sur Entrée.
+     Vérifiez que vous voyez  :'<,'>w TEST  avant de d'appuyer sur <Entrée>.
 
   5. Vim va enregistrer les lignes sélectionnées dans le fichier TEST.
      Utilisez  :!dir  ou  !ls pour le voir. Ne l'effacez pas encore !
@@ -725,7 +725,7 @@ NOTE : L'appui de  v  démarre la sélection Visuelle. Vous pouvez déplacer le
   1. Placez le curseur juste au-dessus de cette ligne.
 
 NOTE :  Après avoir exécuté l'étape 2 vous verrez du texte de la Leçon 5.3.
-        Puis déplacez vous vers le bas pour voir cette leçon à nouveau.
+        Puis déplacez-vous vers le bas pour voir cette leçon à nouveau.
 
   2. Maintenant récupérez votre fichier TEST en utilisant la commande  :r TEST
      où TEST est le nom de votre fichier.
@@ -854,7 +854,7 @@ NOTE : Le mode Remplacement est comme le
   5. Tapez  p  pour coller le texte. Puis tapez :  un second <Échap> .
 
   6. Utilisez le mode Visuel pour sélectionner "élément", copiez le avec  y  ,
-     déplacez vous à la fin de la ligne suivant avec  j$  et collez le texte
+     déplacez-vous à la fin de la ligne suivant avec  j$  et collez le texte
      à cet endroit avec  p .
 
 --->  a) ceci est le premier élément.
@@ -1012,8 +1012,8 @@ NOTE : Le complètement fonctionne pour de nombreuses commandes. Essayez
   Ceci conclut le Tutoriel Vim. Le but était de vous donner un bref aperçu de
   l'éditeur Vim, juste assez pour vous permettre d'utiliser l'éditeur
   relativement facilement. Il est loin d'être complet, vu que Vim a beaucoup
-  beaucoup plus de commandes. Un Manuel de l'utilisateur est disponible en
-  anglais :  :help user-manual .
+  plus de commandes. Un Manuel de l'utilisateur est disponible en anglais :
+    :help user-manual
 
   Pour continuer à découvrir et à apprendre Vim, il existe un livre traduit en
   français. Il parle plus de Vi que de Vim, mais pourra vous être utile.
@@ -1030,9 +1030,9 @@ NOTE : Le complètement fonctionne pour de nombreuses commandes. Essayez
   Université d'État du Colorado. E-mail : bware@mines.colorado.edu.
 
   Modifié pour Vim par Bram Moolenar.
-  Traduit en Français par Adrien Beau, en avril 2001.
+  Traduit en français par Adrien Beau, en avril 2001.
   Dernières mises à jour par Dominique Pellé.
 
   E-mail :      dominique.pelle@gmail.com
-  Last Change : 2010 May 23
+  Last Change : 2011 Jun 25
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
--- a/src/INSTALLpc.txt
+++ b/src/INSTALLpc.txt
@@ -410,8 +410,8 @@ Windows exe (GUI or console mode), or a 
 NOTE: multi-byte support is broken in the Borland libraries, not everything
 will work properly!  Esp. handling multi-byte file names.
 
-If you get all kinds of strange error messages when compiling, try adding
-changing the file format from "unix" to "dos".
+If you get all kinds of strange error messages when compiling, try changing
+the file format from "unix" to "dos".
 
 
 10. Installing after building from sources
@@ -451,7 +451,7 @@ correct directory structure.
   Move the "vim73" subdirectory into the subdirectory where you want Vim
   to be installed.  Typically, this subdirectory will be named "vim".  
   If you already have a "vim73" subdirectory in "vim", delete it first
-  by running its unstal.exe program.  
+  by running its uninstal.exe program.  
 
   D.  Install Vim
   ---------------
--- a/src/po/eo.po
+++ b/src/po/eo.po
@@ -23,8 +23,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Vim(Esperanto)\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-01-26 22:14+0100\n"
-"PO-Revision-Date: 2011-01-26 22:23+0200\n"
+"POT-Creation-Date: 2011-06-21 17:23+0200\n"
+"PO-Revision-Date: 2011-06-21 17:26+0200\n"
 "Last-Translator: Dominique PELLÉ <dominique.pelle@gmail.com>\n"
 "Language-Team: \n"
 "MIME-Version: 1.0\n"
@@ -575,6 +575,9 @@ msgstr "E725: Alvoko de funkcio dict sen
 msgid "E808: Number or Float required"
 msgstr "E808: Nombro aÅ­ Glitpunktnombro bezonata"
 
+msgid "add() argument"
+msgstr "argumento de add()"
+
 msgid "E699: Too many arguments"
 msgstr "E699: Tro da argumentoj"
 
@@ -589,10 +592,19 @@ msgstr "E785: complete() uzeblas nur en Enmeta reÄimo"
 msgid "&Ok"
 msgstr "&Bone"
 
+msgid "extend() argument"
+msgstr "argumento de extend()"
+
 #, c-format
 msgid "E737: Key already exists: %s"
 msgstr "E737: Åœlosilo jam ekzistas: %s"
 
+msgid "map() argument"
+msgstr "argumento de map()"
+
+msgid "filter() argument"
+msgstr "argumento de filter()"
+
 #, c-format
 msgid "+-%s%3ld lines: "
 msgstr "+-%s%3ld linioj: "
@@ -611,6 +623,9 @@ msgstr ""
 msgid "called inputrestore() more often than inputsave()"
 msgstr "alvokis inputrestore() pli ofte ol inputsave()"
 
+msgid "insert() argument"
+msgstr "argumento de insert()"
+
 msgid "E786: Range not allowed"
 msgstr "E786: Amplekso malpermesita"
 
@@ -636,12 +651,21 @@ msgstr "E241: Ne eblas sendi al %s"
 msgid "E277: Unable to read a server reply"
 msgstr "E277: Ne eblas legi respondon de servilo"
 
+msgid "remove() argument"
+msgstr "argumento de remove()"
+
 msgid "E655: Too many symbolic links (cycle?)"
 msgstr "E655: Tro da simbolaj ligiloj (ĉu estas ciklo?)"
 
+msgid "reverse() argument"
+msgstr "argumento de reverse()"
+
 msgid "E258: Unable to send to client"
 msgstr "E258: Ne eblas sendi al kliento"
 
+msgid "sort() argument"
+msgstr "argumento de sort()"
+
 msgid "E702: Sort compare function failed"
 msgstr "E702: Ordiga funkcio fiaskis"
 
@@ -676,14 +700,6 @@ msgid "E806: using Float as a String"
 msgstr "E806: uzo de Glitpunktnombro kiel Ĉeno"
 
 #, c-format
-msgid "E704: Funcref variable name must start with a capital: %s"
-msgstr "E704: Nomo de variablo Funcref ekendas per majusklo: %s"
-
-#, c-format
-msgid "E705: Variable name conflicts with existing function: %s"
-msgstr "E705: Nomo de variablo konfliktas kun ekzistanta funkcio: %s"
-
-#, c-format
 msgid "E706: Variable type mismatch for: %s"
 msgstr "E706: Nekongrua datumtipo de variablo: %s"
 
@@ -692,6 +708,14 @@ msgid "E795: Cannot delete variable %s"
 msgstr "E795: Ne eblas forviÅi variablon %s"
 
 #, c-format
+msgid "E704: Funcref variable name must start with a capital: %s"
+msgstr "E704: Nomo de variablo Funcref devas finiÄi per majusklo: %s"
+
+#, c-format
+msgid "E705: Variable name conflicts with existing function: %s"
+msgstr "E705: Nomo de variablo konfliktas kun ekzistanta funkcio: %s"
+
+#, c-format
 msgid "E741: Value is locked: %s"
 msgstr "E741: Valoro estas Ålosita: %s"
 
@@ -1639,6 +1663,9 @@ msgstr "[NE konvertita]"
 msgid "[converted]"
 msgstr "[konvertita]"
 
+msgid "[blowfish]"
+msgstr "[blowfish]"
+
 msgid "[crypted]"
 msgstr "[ĉifrita]"
 
@@ -1816,6 +1843,7 @@ msgstr "1 signo"
 msgid "%lld characters"
 msgstr "%lld signoj"
 
+#. Explicit typecast avoids warning on Mac OS X 10.6
 #, c-format
 msgid "%ld characters"
 msgstr "%ld signoj"
@@ -2090,7 +2118,7 @@ msgstr "AnstataÅ­igi per:"
 
 #. whole word only button
 msgid "Match whole word only"
-msgstr "Kongrui nur plenan vorton"
+msgstr "Kongrui kun nur plena vorto"
 
 #. match case button
 msgid "Match case"
@@ -2654,7 +2682,7 @@ msgid "E273: unknown longjmp status %d"
 msgstr "E273: nekonata stato de longjmp: %d"
 
 msgid "Toggle implementation/definition"
-msgstr "Baskuli realigon/difinon"
+msgstr "Baskuligi realigon/difinon"
 
 msgid "Show base class of"
 msgstr "Vidigi bazan klason de"
@@ -2748,7 +2776,7 @@ msgid "invalid buffer number"
 msgstr "nevalida numero de bufro"
 
 msgid "not implemented yet"
-msgstr "ne jam realigita"
+msgstr "ankoraÅ­ ne realigita"
 
 #. ???
 msgid "cannot set line(s)"
@@ -3020,7 +3048,7 @@ msgid "-r\t\t\tList swap files and exit"
 msgstr "-r\t\t\tListigi permutodosierojn .swp kaj eliri"
 
 msgid "-r (with file name)\tRecover crashed session"
-msgstr "-r (kun dosiernomo)\tRestaÅ­ri kolapsitan seancon"
+msgstr "-r (kun dosiernomo)\tRestaÅ­ri kolapsintan seancon"
 
 msgid "-L\t\t\tSame as -r"
 msgstr "-L\t\t\tKiel -r"
@@ -3216,19 +3244,6 @@ msgstr "-xrm <rimedo>\tAgordi la specifi
 
 msgid ""
 "\n"
-"Arguments recognised by gvim (RISC OS version):\n"
-msgstr ""
-"\n"
-"Argumentoj agnoskitaj de gvim (versio RISC OS):\n"
-
-msgid "--columns <number>\tInitial width of window in columns"
-msgstr "--columns <nombro>\tKomenca larÄo de fenestro en kolumnoj"
-
-msgid "--rows <number>\tInitial height of window in rows"
-msgstr "--rows <nombro>\tKomenca alto de fenestro en vicoj"
-
-msgid ""
-"\n"
 "Arguments recognised by gvim (GTK+ version):\n"
 msgstr ""
 "\n"
@@ -3634,7 +3649,7 @@ msgstr ""
 "        proceza ID: "
 
 msgid " (still running)"
-msgstr " (ankoraÅ­ rulas)"
+msgstr " (ankoraÅ­ ruliÄas)"
 
 msgid ""
 "\n"
@@ -3736,24 +3751,20 @@ msgstr "      PLI NOVA ol permutodosiero
 #. * 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"
+"(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."
 msgstr ""
 "\n"
 "(1) Alia programo eble redaktas la saman dosieron.\n"
 "    Se jes, estu singarda por ne havi du malsamajn\n"
-"    aperojn de la sama dosiero, kiam vi faros ÅanÄojn.\n"
-
-msgid "    Quit, or continue with caution.\n"
-msgstr "    Eliru, aÅ­ daÅ­rigu singarde.\n"
-
-msgid ""
-"\n"
-"(2) An edit session for this file crashed.\n"
-msgstr ""
-"\n"
-"(2) Redakta seanco de tiu dosiero kolapsis.\n"
+"    aperojn de la sama dosiero, kiam vi faros ÅanÄojn."
+
+msgid "  Quit, or continue with caution.\n"
+msgstr "  Eliru, aÅ­ daÅ­rigu singarde.\n"
+
+msgid "(2) An edit session for this file crashed.\n"
+msgstr "(2) Redakta seanco de tiu dosiero kolapsis.\n"
 
 msgid "    If this is the case, use \":recover\" or \"vim -r "
 msgstr "    Se veras, uzu \":recover\" aÅ­ \"vim -r "
@@ -4094,8 +4105,9 @@ msgstr "E838: netbeans ne estas subtenat
 msgid "E511: netbeans already connected"
 msgstr "E511: nebeans jam konektata"
 
-msgid "E505: "
-msgstr "E505: "
+#, c-format
+msgid "E505: %s is read-only (add ! to override)"
+msgstr "E505: %s estas nurlegebla (aldonu ! por transpasi)"
 
 msgid "E349: No identifier under cursor"
 msgstr "E349: Neniu identigilo sub la kursoro"
@@ -4260,6 +4272,9 @@ msgstr "E519: Opcio ne subtenata"
 msgid "E520: Not allowed in a modeline"
 msgstr "E520: Ne permesita en reÄimlinio"
 
+msgid "E846: Key code not set"
+msgstr "E846: Klavkodo ne agordita"
+
 msgid "E521: Number required after ="
 msgstr "E521: Nombro bezonata malantaÅ­ ="
 
@@ -5183,6 +5198,9 @@ msgstr "Nekonata flago en %s linio %d: %
 msgid "Ignored %d words with non-ASCII characters"
 msgstr "Ignoris %d vorto(j)n kun neaskiaj signoj"
 
+msgid "E845: Insufficient memory, word list will be incomplete"
+msgstr "E845: Ne sufiĉe da memoro, vortlisto estos nekompleta."
+
 #, c-format
 msgid "Compressed %d of %d nodes; %d (%d%%) remaining"
 msgstr "Densigis %d de %d nodoj; %d (%d%%) restantaj"
@@ -5373,6 +5391,9 @@ msgstr "E394: Ne trovis regionan element
 msgid "E397: Filename required"
 msgstr "E397: Dosiernomo bezonata"
 
+msgid "E847: Too many syntax includes"
+msgstr "E847: Tro da sintaksaj inkluzivoj"
+
 #, c-format
 msgid "E789: Missing ']': %s"
 msgstr "E789: Mankas ']': %s"
@@ -5385,6 +5406,9 @@ msgstr "E398: Mankas '=': %s"
 msgid "E399: Not enough arguments: syntax region %s"
 msgstr "E399: Ne sufiĉaj argumentoj: sintaksa regiono %s"
 
+msgid "E848: Too many syntax clusters"
+msgstr "E848: Tro da sintaksaj grupoj"
+
 msgid "E400: No cluster specified"
 msgstr "E400: Neniu fasko specifita"
 
@@ -5488,6 +5512,9 @@ msgstr "E669: Nepresebla signo en nomo d
 msgid "W18: Invalid character in group name"
 msgstr "W18: Nevalida signo en nomo de grupo"
 
+msgid "E849: Too many highlight and syntax groups"
+msgstr "E849: Tro da emfazaj kaj sintaksaj grupoj"
+
 msgid "E555: at bottom of tag stack"
 msgstr "E555: ĉe subo de stako de etikedoj"
 
@@ -5662,7 +5689,7 @@ msgstr "Ne legas malfaran dosieron, pose
 
 #, c-format
 msgid "Reading undo file: %s"
-msgstr "Legado de de malfara dosiero: %s"
+msgstr "Legado de malfara dosiero: %s"
 
 #, c-format
 msgid "E822: Cannot open undo file for reading: %s"
@@ -5841,13 +5868,6 @@ msgstr ""
 
 msgid ""
 "\n"
-"RISC OS version"
-msgstr ""
-"\n"
-"Versio RISC operaciumo"
-
-msgid ""
-"\n"
 "OpenVMS version"
 msgstr ""
 "\n"
@@ -6035,7 +6055,7 @@ msgid "type  :help version7<Enter>   for
 msgstr "tajpu  :help version7<Enenklavo>  por informo de versio"
 
 msgid "Running in Vi compatible mode"
-msgstr "Rulas en reÄimo kongrua kun Vi"
+msgstr "RuliÄas en reÄimo kongrua kun Vi"
 
 # DP: atentu al la spacetoj: ĉiuj ĉenoj devas havi la saman longon
 msgid "type  :set nocp<Enter>        for Vim defaults"
@@ -6050,11 +6070,11 @@ msgid "menu  Help->Orphans           for
 msgstr "menuo  Help->Orfinoj              por pliaj informoj   "
 
 msgid "Running modeless, typed text is inserted"
-msgstr "Rulas senreÄime, tajpita teksto estas enmetita"
+msgstr "RuliÄas senreÄime, tajpita teksto estas enmetita"
 
 # DP: atentu al la spacetoj: ĉiuj ĉenoj devas havi la saman longon
 msgid "menu  Edit->Global Settings->Toggle Insert Mode  "
-msgstr "menuo Redakti->Mallokaj Agordoj->Baskuli Enmetan ReÄimon"
+msgstr "menuo Redakti->Mallokaj Agordoj->Baskuligi Enmetan ReÄimon"
 
 # DP: atentu al la spacetoj: ĉiuj ĉenoj devas havi la saman longon
 msgid "                              for two modes      "
@@ -6063,7 +6083,7 @@ msgstr "                                  por du reÄimoj       "
 # DP: tiu ĉeno pli longas (mi ne volas igi ĉiujn aliajn ĉenojn
 #     pli longajn)
 msgid "menu  Edit->Global Settings->Toggle Vi Compatible"
-msgstr "menuo Redakti->Mallokaj Agordoj->Baskuli ReÄimon Kongruan kun Vi"
+msgstr "menuo Redakti->Mallokaj Agordoj->Baskuligi ReÄimon Kongruan kun Vi"
 
 # DP: atentu al la spacetoj: ĉiuj ĉenoj devas havi la saman longon
 msgid "                              for Vim defaults   "
@@ -6500,6 +6520,9 @@ msgstr "E139: Dosiero estas Åargita en alia bufro"
 msgid "E764: Option '%s' is not set"
 msgstr "E764: La opcio '%s' ne estas Åaltita"
 
+msgid "E850: Invalid register name"
+msgstr "E850: Nevalida nomo de reÄistro"
+
 msgid "search hit TOP, continuing at BOTTOM"
 msgstr "serĉo atingis SUPRON, daŭrigonte al SUBO"
 
@@ -6545,3 +6568,23 @@ msgstr "ne estas tia fenestro"
 
 msgid "attempt to refer to deleted buffer"
 msgstr "provo de referenco al forviÅita bufro"
+
+#~ msgid ""
+#~ "\n"
+#~ "Arguments recognised by gvim (RISC OS version):\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Argumentoj agnoskitaj de gvim (versio RISC OS):\n"
+
+#~ msgid "--columns <number>\tInitial width of window in columns"
+#~ msgstr "--columns <nombro>\tKomenca larÄo de fenestro en kolumnoj"
+
+#~ msgid "--rows <number>\tInitial height of window in rows"
+#~ msgstr "--rows <nombro>\tKomenca alto de fenestro en vicoj"
+
+#~ msgid ""
+#~ "\n"
+#~ "RISC OS version"
+#~ msgstr ""
+#~ "\n"
+#~ "Versio RISC operaciumo"
--- a/src/po/fr.po
+++ b/src/po/fr.po
@@ -15,8 +15,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Vim(Français)\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-01-26 22:14+0100\n"
-"PO-Revision-Date: 2011-10-27 19:41+0200\n"
+"POT-Creation-Date: 2011-06-21 17:23+0200\n"
+"PO-Revision-Date: 2011-06-21 17:26+0200\n"
 "Last-Translator: Dominique Pellé <dominique.pelle@gmail.com>\n"
 "Language-Team: \n"
 "MIME-Version: 1.0\n"
@@ -639,6 +639,9 @@ msgstr "E725: Appel d'une fonction « dict » sans Dictionnaire : %s"
 msgid "E808: Number or Float required"
 msgstr "E808: Nombre ou Flottant requis"
 
+msgid "add() argument"
+msgstr "argument de add()"
+
 msgid "E699: Too many arguments"
 msgstr "E699: Trop d'arguments"
 
@@ -655,10 +658,19 @@ msgstr "E785: complete() n'est utilisabl
 msgid "&Ok"
 msgstr "&Ok"
 
+msgid "extend() argument"
+msgstr "argument de extend()"
+
 #, c-format
 msgid "E737: Key already exists: %s"
 msgstr "E737: un mappage existe déjà pour %s"
 
+msgid "map() argument"
+msgstr "argument de map()"
+
+msgid "filter() argument"
+msgstr "argument de filter()"
+
 #, c-format
 msgid "+-%s%3ld lines: "
 msgstr "+-%s%3ld lignes : "
@@ -679,6 +691,9 @@ msgstr ""
 msgid "called inputrestore() more often than inputsave()"
 msgstr "inputrestore() a été appelé plus de fois qu'inputsave()"
 
+msgid "insert() argument"
+msgstr "argument de insert()"
+
 msgid "E786: Range not allowed"
 msgstr "E786: Les plages ne sont pas autorisées"
 
@@ -707,13 +722,22 @@ msgstr "E241: L'envoi au serveur %s à échoué"
 msgid "E277: Unable to read a server reply"
 msgstr "E277: Impossible de lire la réponse du serveur"
 
+msgid "remove() argument"
+msgstr "argument de remove()"
+
 msgid "E655: Too many symbolic links (cycle?)"
 msgstr "E655: Trop de liens symboliques (cycle ?)"
 
+msgid "reverse() argument"
+msgstr "argument de reverse()"
+
 # AB - La version française est meilleure que la version anglaise.
 msgid "E258: Unable to send to client"
 msgstr "E258: La réponse n'a pas pu être envoyée au client"
 
+msgid "sort() argument"
+msgstr "argument de sort()"
+
 msgid "E702: Sort compare function failed"
 msgstr "E702: La fonction de comparaison de sort() a échoué"
 
@@ -747,14 +771,6 @@ msgstr "E731: Utilisation d'un Dictionnaire comme une Chaîne"
 msgid "E806: using Float as a String"
 msgstr "E806: Utilisation d'un Flottant comme une Chaîne"
 
-#, c-format
-msgid "E704: Funcref variable name must start with a capital: %s"
-msgstr "E704: Le nom d'une Funcref doit commencer par une majuscule : %s"
-
-#, c-format
-msgid "E705: Variable name conflicts with existing function: %s"
-msgstr "E705: Le nom d'une variable entre en conflit avec la fonction %s"
-
 # DB : On doit pouvoir trouver nettement mieux que ça.
 #, c-format
 msgid "E706: Variable type mismatch for: %s"
@@ -765,6 +781,14 @@ msgid "E795: Cannot delete variable %s"
 msgstr "E795: Impossible de supprimer la variable %s"
 
 #, c-format
+msgid "E704: Funcref variable name must start with a capital: %s"
+msgstr "E704: Le nom d'une Funcref doit commencer par une majuscule : %s"
+
+#, c-format
+msgid "E705: Variable name conflicts with existing function: %s"
+msgstr "E705: Le nom d'une variable entre en conflit avec la fonction %s"
+
+#, c-format
 msgid "E741: Value is locked: %s"
 msgstr "E741: La valeur de %s est verrouillée"
 
@@ -1468,7 +1492,8 @@ msgid "E183: User defined commands must 
 msgstr "E183: Les commandes utilisateur doivent commencer par une majuscule"
 
 msgid "E841: Reserved name, cannot be used for user defined command"
-msgstr "E841: Nom réservé, ne peux pas être utilisé pour une commande utilisateur"
+msgstr ""
+"E841: Nom réservé, ne peux pas être utilisé pour une commande utilisateur"
 
 #, c-format
 msgid "E184: No such user-defined command: %s"
@@ -1760,7 +1785,7 @@ msgid "E199: Active window or buffer del
 msgstr "E199: Fenêtre ou tampon actif effacé"
 
 msgid "E812: Autocommands changed buffer or buffer name"
-msgstr "E812: Des autocommandes on changé le tampon ou le nom du tampon"
+msgstr "E812: Des autocommandes ont changé le tampon ou le nom du tampon"
 
 msgid "Illegal file name"
 msgstr "Nom de fichier invalide"
@@ -1831,6 +1856,9 @@ msgstr "[NON converti]"
 msgid "[converted]"
 msgstr "[converti]"
 
+msgid "[blowfish]"
+msgstr "[blowfish]"
+
 msgid "[crypted]"
 msgstr "[chiffré]"
 
@@ -2018,6 +2046,7 @@ msgstr "1 caractère"
 msgid "%lld characters"
 msgstr "%lld caractères"
 
+#. Explicit typecast avoids warning on Mac OS X 10.6
 #, c-format
 msgid "%ld characters"
 msgstr "%ld caractères"
@@ -2170,7 +2199,7 @@ msgid "E220: Missing }."
 msgstr "E220: } manquant."
 
 msgid "E490: No fold found"
-msgstr "E490: Aucune repli trouvé"
+msgstr "E490: Aucun repli trouvé"
 
 msgid "E350: Cannot create fold with current 'foldmethod'"
 msgstr "E350: Impossible de créer un repli avec la 'foldmethod'e actuelle"
@@ -3443,19 +3472,6 @@ msgstr "-xrm <ressource>\tConfigurer la <ressource> spécifiée"
 
 msgid ""
 "\n"
-"Arguments recognised by gvim (RISC OS version):\n"
-msgstr ""
-"\n"
-"Arguments reconnus par gvim (version RISC OS) :\n"
-
-msgid "--columns <number>\tInitial width of window in columns"
-msgstr "--columns <nombre>\tNombre de colonnes initial de la fenêtre"
-
-msgid "--rows <number>\tInitial height of window in rows"
-msgstr "--rows <nombre>\tNombre de lignes initial de la fenêtre"
-
-msgid ""
-"\n"
 "Arguments recognised by gvim (GTK+ version):\n"
 msgstr ""
 "\n"
@@ -3971,24 +3987,20 @@ msgstr "      PLUS RÉCENT que le fichier d'échange !\n"
 #. * 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"
+"(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."
 msgstr ""
 "\n"
 "(1) Un autre programme est peut-être en train d'éditer ce fichier.\n"
 "    Si c'est le cas, faites attention à ne pas vous retrouver avec\n"
-"    deux version différentes du même fichier en faisant des modifications.\n"
-
-msgid "    Quit, or continue with caution.\n"
-msgstr "    Quittez, ou continuez prudemment.\n"
-
-msgid ""
-"\n"
-"(2) An edit session for this file crashed.\n"
-msgstr ""
-"\n"
-"(2) Une session d'édition de ce fichier a planté.\n"
+"    deux versions différentes du même fichier en faisant des modifications."
+
+msgid "  Quit, or continue with caution.\n"
+msgstr "  Quittez, ou continuez prudemment.\n"
+
+msgid "(2) An edit session for this file crashed.\n"
+msgstr "(2) Une session d'édition de ce fichier a planté.\n"
 
 msgid "    If this is the case, use \":recover\" or \"vim -r "
 msgstr "    Si c'est le cas, utilisez \":recover\" ou \"vim -r "
@@ -4331,8 +4343,9 @@ msgstr "E838: netbeans n'est pas supporté avec cette interface graphique"
 msgid "E511: netbeans already connected"
 msgstr "E511: netbeans déjà connecté"
 
-msgid "E505: "
-msgstr "E505: "
+#, c-format
+msgid "E505: %s is read-only (add ! to override)"
+msgstr "E505: %s est en lecture seule (ajoutez ! pour passer outre)"
 
 msgid "E349: No identifier under cursor"
 msgstr "E349: Aucun identifiant sous le curseur"
@@ -4500,6 +4513,9 @@ msgstr "E519: Option non supportée"
 msgid "E520: Not allowed in a modeline"
 msgstr "E520: Non autorisé dans une ligne de mode"
 
+msgid "E846: Key code not set"
+msgstr "E846: Le code de touche n'est pas configuré"
+
 msgid "E521: Number required after ="
 msgstr "E521: Nombre requis après ="
 
@@ -5152,7 +5168,7 @@ msgid "All included files were found"
 msgstr "Tous les fichiers inclus ont été trouvés"
 
 msgid "No included files"
-msgstr "Aucun fichiers inclus"
+msgstr "Aucun fichier inclus"
 
 msgid "E388: Couldn't find definition"
 msgstr "E388: Impossible de trouver la définition"
@@ -5296,7 +5312,7 @@ msgstr ""
 
 #, c-format
 msgid "Duplicate affix in %s line %d: %s"
-msgstr "Affixe dupliquée dans %s ligne %d : %s"
+msgstr "Affixe dupliqué dans %s ligne %d : %s"
 
 #, c-format
 msgid ""
@@ -5431,6 +5447,9 @@ msgstr "Drapeaux non reconnus dans %s li
 msgid "Ignored %d words with non-ASCII characters"
 msgstr "%d mot(s) ignoré(s) avec des caractères non-ASCII"
 
+msgid "E845: Insufficient memory, word list will be incomplete"
+msgstr "E845: mémoire insuffisante, liste de mots peut-être incomplète"
+
 #, c-format
 msgid "Compressed %d of %d nodes; %d (%d%%) remaining"
 msgstr "%d noeuds compressés sur %d ; %d (%d%%) restants "
@@ -5496,7 +5515,7 @@ msgstr "Mot ajouté dans %s"
 
 msgid "E763: Word characters differ between spell files"
 msgstr ""
-"E763: Les caractères de mots diffèrent entre les fichier orthographiques"
+"E763: Les caractères de mots diffèrent entre les fichiers orthographiques"
 
 msgid "Sorry, no suggestions"
 msgstr "Désolé, aucune suggestion"
@@ -5627,6 +5646,9 @@ msgstr "E394: Aucun élément de type région trouvé pour %s"
 msgid "E397: Filename required"
 msgstr "E397: Nom de fichier requis"
 
+msgid "E847: Too many syntax includes"
+msgstr "E847: Trop d'inclusions de syntaxe"
+
 #, c-format
 msgid "E789: Missing ']': %s"
 msgstr "E789: ']' manquant : %s"
@@ -5639,6 +5661,9 @@ msgstr "E398: '=' manquant : %s"
 msgid "E399: Not enough arguments: syntax region %s"
 msgstr "E399: Pas assez d'arguments : syntax region %s"
 
+msgid "E848: Too many syntax clusters"
+msgstr "E848: Trop de grappes de syntaxe"
+
 msgid "E400: No cluster specified"
 msgstr "E400: Aucune grappe spécifiée"
 
@@ -5744,6 +5769,9 @@ msgstr "E669: Caractère non-imprimable dans un nom de groupe"
 msgid "W18: Invalid character in group name"
 msgstr "W18: Caractère invalide dans un nom de groupe"
 
+msgid "E849: Too many highlight and syntax groups"
+msgstr "E849: Trop de groupes de surbrillance et de syntaxe"
+
 msgid "E555: at bottom of tag stack"
 msgstr "E555: En bas de la pile de marqueurs"
 
@@ -5899,7 +5927,7 @@ msgstr ""
 
 #, c-format
 msgid "Will not overwrite with undo file, cannot read: %s"
-msgstr "Le fichier d'annulations de sera pas écrasé, impossible de lire : %s"
+msgstr "Le fichier d'annulations ne sera pas écrasé, impossible de lire : %s"
 
 #, c-format
 msgid "Will not overwrite, this is not an undo file: %s"
@@ -6104,13 +6132,6 @@ msgstr ""
 
 msgid ""
 "\n"
-"RISC OS version"
-msgstr ""
-"\n"
-"Version RISC OS"
-
-msgid ""
-"\n"
 "OpenVMS version"
 msgstr ""
 "\n"
@@ -6762,6 +6783,9 @@ msgstr "E139: Le fichier est chargé dans un autre tampon"
 msgid "E764: Option '%s' is not set"
 msgstr "E764: L'option '%s' n'est pas activée"
 
+msgid "E850: Invalid register name"
+msgstr "E850: Nom de registre invalide"
+
 msgid "search hit TOP, continuing at BOTTOM"
 msgstr "La recherche a atteint le HAUT, et continue en BAS"
 
@@ -6807,3 +6831,26 @@ msgstr "Cette fenêtre n'existe pas"
 
 msgid "attempt to refer to deleted buffer"
 msgstr "tentative de référencer un tampon effacé"
+
+#~ msgid ""
+#~ "\n"
+#~ "Arguments recognised by gvim (RISC OS version):\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Arguments reconnus par gvim (version RISC OS) :\n"
+
+#~ msgid "--columns <number>\tInitial width of window in columns"
+#~ msgstr "--columns <nombre>\tNombre de colonnes initial de la fenêtre"
+
+#~ msgid "--rows <number>\tInitial height of window in rows"
+#~ msgstr "--rows <nombre>\tNombre de lignes initial de la fenêtre"
+
+#~ msgid ""
+#~ "\n"
+#~ "RISC OS version"
+#~ msgstr ""
+#~ "\n"
+#~ "Version RISC OS"
+
+#~ msgid "E505: "
+#~ msgstr "E505: "
new file mode 100644
--- /dev/null
+++ b/src/testdir/test82.in
@@ -0,0 +1,93 @@
+Tests for case-insensitive UTF-8 comparisons (utf_strnicmp() in mbyte.c)
+
+STARTTEST
+:so small.vim
+:if !has("multi_byte")
+: e! test.ok
+: w! test.out
+: qa!
+:endif
+:set enc=utf8
+ggdG
+:
+:function! Ch(a, op, b, expected)
+:  if eval(printf('"%s" %s "%s"', a:a, a:op, a:b)) != a:expected
+:    call append(line('$'), printf('"%s" %s "%s" should return %d', a:a, a:op, a:b, a:expected))
+:  else
+:    let b:passed += 1
+:  endif
+:endfunction
+:
+:function! Chk(a, b, result)
+:  if a:result == 0
+:    call Ch(a:a, '==?', a:b, 1)
+:    call Ch(a:a, '!=?', a:b, 0)
+:    call Ch(a:a, '<=?', a:b, 1)
+:    call Ch(a:a, '>=?', a:b, 1)
+:    call Ch(a:a, '<?', a:b, 0)
+:    call Ch(a:a, '>?', a:b, 0)
+:  elseif a:result > 0
+:    call Ch(a:a, '==?', a:b, 0)
+:    call Ch(a:a, '!=?', a:b, 1)
+:    call Ch(a:a, '<=?', a:b, 0)
+:    call Ch(a:a, '>=?', a:b, 1)
+:    call Ch(a:a, '<?', a:b, 0)
+:    call Ch(a:a, '>?', a:b, 1)
+:  else
+:    call Ch(a:a, '==?', a:b, 0)
+:    call Ch(a:a, '!=?', a:b, 1)
+:    call Ch(a:a, '<=?', a:b, 1)
+:    call Ch(a:a, '>=?', a:b, 0)
+:    call Ch(a:a, '<?', a:b, 1)
+:    call Ch(a:a, '>?', a:b, 0)
+:  endif
+:endfunction
+:
+:function! Check(a, b, result)
+:  call Chk(a:a, a:b, a:result)
+:  call Chk(a:b, a:a, -a:result)
+:endfunction
+:
+:function! LT(a, b)
+:  call Check(a:a, a:b, -1)
+:endfunction
+:
+:function! GT(a, b)
+:  call Check(a:a, a:b, 1)
+:endfunction
+:
+:function! EQ(a, b)
+:  call Check(a:a, a:b, 0)
+:endfunction
+:
+:let b:passed=0
+:call EQ('', '')
+:call LT('', 'a')
+:call EQ('abc', 'abc')
+:call EQ('Abc', 'abC')
+:call LT('ab', 'abc')
+:call LT('AB', 'abc')
+:call LT('ab', 'aBc')
+:call EQ('\xd0\xb9\xd1\x86\xd1\x83\xd0\xba\xd0\xb5\xd0\xbd', '\xd0\xb9\xd0\xa6\xd0\xa3\xd0\xba\xd0\x95\xd0\xbd')
+:call LT('\xd0\xb9\xd1\x86\xd1\x83\xd0\xba\xd0\xb5\xd0\xbd', '\xd0\xaf\xd1\x86\xd1\x83\xd0\xba\xd0\xb5\xd0\xbd')
+:call EQ('\xe2\x84\xaa', 'k')
+:call LT('\xe2\x84\xaa', 'kkkkkk')
+:call EQ('\xe2\x84\xaa\xe2\x84\xaa\xe2\x84\xaa', 'kkk')
+:call LT('kk', '\xe2\x84\xaa\xe2\x84\xaa\xe2\x84\xaa')
+:call EQ('\xe2\x84\xaa\xe2\x84\xa6k\xe2\x84\xaak\xcf\x89', 'k\xcf\x89\xe2\x84\xaakk\xe2\x84\xa6')
+:call EQ('Abc\x80', 'AbC\x80')
+:call LT('Abc\x80', 'AbC\x81')
+:call LT('Abc', 'AbC\x80')
+:call LT('abc\x80DEF', 'abc\x80def')  " case folding stops at the first bad character
+:call LT('\xc3XYZ', '\xc3xyz')
+:call EQ('\xef\xbc\xba', '\xef\xbd\x9a')  " FF3A (upper), FF5A (lower)
+:call GT('\xef\xbc\xba', '\xef\xbc\xff')  " first string is ok and equals \xef\xbd\x9a after folding, second string is illegal and was left unchanged, then the strings were bytewise compared
+:call LT('\xc3', '\xc3\x83')
+:call EQ('\xc3\xa3xYz', '\xc3\x83XyZ')
+:for n in range(0x60, 0xFF) | call LT(printf('xYz\x%.2X', n-1), printf('XyZ\x%.2X', n)) | endfor
+:for n in range(0x80, 0xBF) | call EQ(printf('xYz\xc2\x%.2XUvW', n), printf('XyZ\xc2\x%.2XuVw', n)) | endfor
+:for n in range(0xC0, 0xFF) | call LT(printf('xYz\xc2\x%.2XUvW', n), printf('XyZ\xc2\x%.2XuVw', n)) | endfor
+:call append(0, printf('%d checks passed', b:passed))
+:wq! test.out
+ENDTEST
+
new file mode 100644
--- /dev/null
+++ b/src/testdir/test82.ok
@@ -0,0 +1,2 @@
+3732 checks passed
+