changeset 1125:96cd8222a819

updated for version 7.1a
author vimboss
date Sat, 05 May 2007 18:24:42 +0000
parents da2a955f150a
children c5c164b4c95c
files Contents README_amisrc.txt README_bindos.txt README_lang.txt README_os2.txt README_src.txt README_srcdos.txt README_vms.txt README_w32s.txt runtime/autoload/ada.vim runtime/autoload/gnat.vim runtime/autoload/netrwFileHandlers.vim runtime/autoload/tar.vim runtime/colors/koehler.vim runtime/compiler/decada.vim runtime/compiler/gnat.vim runtime/compiler/mcs.vim runtime/doc/ada.txt runtime/doc/arabic.txt runtime/doc/farsi.txt runtime/doc/filetype.txt runtime/doc/hebrew.txt runtime/doc/howto.txt runtime/doc/intro.txt runtime/doc/os_amiga.txt runtime/doc/os_dos.txt runtime/doc/os_win32.txt runtime/doc/pattern.txt runtime/doc/pi_spec.txt runtime/doc/quotes.txt runtime/doc/remote.txt runtime/doc/repeat.txt runtime/doc/scroll.txt runtime/doc/spell.txt runtime/doc/sql.txt runtime/doc/starting.txt runtime/doc/syntax.txt runtime/doc/tagsrch.txt runtime/doc/todo.txt runtime/doc/usr_01.txt runtime/doc/usr_04.txt runtime/doc/usr_05.txt runtime/doc/usr_06.txt runtime/doc/usr_07.txt runtime/doc/usr_11.txt runtime/doc/usr_12.txt runtime/doc/usr_20.txt runtime/doc/usr_23.txt runtime/doc/usr_27.txt runtime/doc/usr_28.txt runtime/doc/usr_30.txt runtime/doc/usr_40.txt runtime/doc/various.txt runtime/doc/version7.txt runtime/doc/workshop.txt runtime/doc/xxd-it.UTF-8.1 runtime/doc/xxd-ru.1 runtime/doc/xxd.1 runtime/filetype.vim runtime/ftplugin/fvwm.vim runtime/ftplugin/help.vim runtime/ftplugin/htmldjango.vim runtime/ftplugin/javascript.vim runtime/ftplugin/man.vim runtime/ftplugin/php.vim runtime/ftplugin/vim.vim runtime/indent/bst.vim runtime/indent/cobol.vim runtime/indent/fortran.vim runtime/indent/hamster.vim runtime/lang/menu_chinese_gb.936.vim runtime/lang/menu_pt_br.vim runtime/lang/menu_sl_si.utf-8.vim runtime/lang/menu_zh_cn.gb2312.vim runtime/macros/less.vim runtime/macros/matchit.vim runtime/plugin/getscriptPlugin.vim runtime/spell/pt/main.aap runtime/spell/pt/pt_BR.diff runtime/syntax/ada.vim runtime/syntax/bst.vim runtime/syntax/cobol.vim runtime/syntax/dosini.vim runtime/syntax/doxygen.vim runtime/syntax/freebasic.vim runtime/syntax/help.vim runtime/syntax/html.vim runtime/syntax/htmldjango.vim runtime/syntax/lisp.vim runtime/syntax/mail.vim runtime/syntax/messages.vim runtime/syntax/mrxvtrc.vim runtime/syntax/pod.vim runtime/syntax/python.vim runtime/syntax/tcl.vim runtime/syntax/zsh.vim runtime/tutor/tutor.de runtime/tutor/tutor.gr runtime/tutor/tutor.gr.cp737 runtime/tutor/tutor.no runtime/tutor/tutor.sk.utf-8 runtime/vimrc_example.vim src/if_mzsch.c src/if_tcl.c src/link.sh src/po/README.txt src/po/pl.po src/proto/edit.pro src/proto/ex_cmds.pro src/proto/ex_cmds2.pro src/proto/gui_beval.pro src/proto/gui_motif.pro src/proto/gui_x11.pro src/proto/hangulin.pro src/proto/if_perl.pro src/proto/if_python.pro src/proto/if_ruby.pro src/proto/if_xcmdsrv.pro src/proto/mbyte.pro src/proto/memline.pro src/proto/misc1.pro src/proto/move.pro src/proto/os_msdos.pro src/proto/os_unix.pro src/proto/os_win32.pro src/proto/quickfix.pro src/proto/screen.pro src/proto/search.pro src/proto/term.pro src/proto/termlib.pro src/testdir/test55.in
diffstat 131 files changed, 9165 insertions(+), 2767 deletions(-) [+]
line wrap: on
line diff
--- a/Contents
+++ b/Contents
@@ -9,10 +9,10 @@ Vim		Vi IMproved.  A clone of the UNIX t
 		messages, shows current file name in window title, on-line
 		help, rectangular cut/paste, etc., etc., etc...
 
-		Version 7.0.  Also runs under UNIX, MSDOS and other systems.
-		vim70rt.tgz  contains the documentation and syntax files.
-		vim70bin.tgz contains the binaries.
-		vim70src.tgz contains the sources.
+		Version 7.1a.  Also runs under UNIX, MSDOS and other systems.
+		vim71art.tgz  contains the documentation and syntax files.
+		vim71abin.tgz contains the binaries.
+		vim71asrc.tgz contains the sources.
 		Author: Bram Moolenaar et al.
 
 
--- a/README_amisrc.txt
+++ b/README_amisrc.txt
@@ -1,4 +1,4 @@
-README_amisrc.txt for version 7.0 of Vim: Vi IMproved.
+README_amisrc.txt for version 7.1a of Vim: Vi IMproved.
 
 See "README.txt" for general information about Vim.
 See "README_ami.txt" for installation instructions for the Amiga.
--- a/README_bindos.txt
+++ b/README_bindos.txt
@@ -1,4 +1,4 @@
-README_bindos.txt for version 7.0 of Vim: Vi IMproved.
+README_bindos.txt for version 7.1a of Vim: Vi IMproved.
 
 See "README.txt" for general information about Vim.
 See "README_dos.txt" for installation instructions for MS-DOS and MS-Windows.
--- a/README_lang.txt
+++ b/README_lang.txt
@@ -1,4 +1,4 @@
-README_lang.txt for version 7.0 of Vim: Vi IMproved.
+README_lang.txt for version 7.1a of Vim: Vi IMproved.
 
 This file contains files for non-English languages:
 - Translated messages.
--- a/README_os2.txt
+++ b/README_os2.txt
@@ -1,32 +1,32 @@
-README_os2.txt for version 7.0 of Vim: Vi IMproved.
+README_os2.txt for version 7.1a of Vim: Vi IMproved.
 
 This file explains the installation of Vim on OS/2 systems.
 See "README.txt" for general information about Vim.
 
 
 NOTE: You will need two archives:
-  vim70rt.zip	contains the runtime files (same as for the PC version)
-  vim70os2.zip	contains the OS/2 executables
+  vim71art.zip	contains the runtime files (same as for the PC version)
+  vim71aos2.zip	contains the OS/2 executables
 
 1. Go to the directory where you want to put the Vim files.  Examples:
 	cd C:\
 	cd D:\editors
 
-2. Unpack the zip archives.  This will create a new directory "vim/vim70",
+2. Unpack the zip archives.  This will create a new directory "vim/vim71a",
    in which all the distributed Vim files are placed.  Since the directory
    name includes the version number, it is unlikely that you overwrite
    existing files.
    Examples:
-	pkunzip -d vim70os2.zip
-	unzip vim70os2.zip
+	pkunzip -d vim71aos2.zip
+	unzip vim71aos2.zip
 
    After you unpacked the files, you can still move the whole directory tree
    to another location.
 
 3. Add the directory where vim.exe is to your path.  The simplest is to add a
    line to your autoexec.bat.  Examples:
-	set path=%path%;C:\vim\vim70
-	set path=%path%;D:\editors\vim\vim70
+	set path=%path%;C:\vim\vim71a
+	set path=%path%;D:\editors\vim\vim71a
 
 That's it!
 
@@ -41,10 +41,10 @@ Extra remarks:
 	C:\vim\_viminfo			Dynamic info for 'viminfo'.
 	C:\vim\...			Other files you made.
   Distributed files:
-	C:\vim\vim70\vim.exe		The Vim version 7.0 executable.
-	C:\vim\vim70\doc\*.txt		The version 7.0 documentation files.
-	C:\vim\vim70\bugreport.vim	A Vim version 7.0 script.
-	C:\vim\vim70\...		Other version 7.0 distributed files.
+	C:\vim\vim71a\vim.exe		The Vim version 7.1a executable.
+	C:\vim\vim71a\doc\*.txt		The version 7.1a documentation files.
+	C:\vim\vim71a\bugreport.vim	A Vim version 7.1a script.
+	C:\vim\vim71a\...		Other version 7.1a distributed files.
   In this case the $VIM environment variable would be set like this:
 	set VIM=C:\vim
 
--- a/README_src.txt
+++ b/README_src.txt
@@ -1,4 +1,4 @@
-README_src.txt for version 7.0 of Vim: Vi IMproved.
+README_src.txt for version 7.1a of Vim: Vi IMproved.
 
 The source archive contains the files needed to compile Vim on Unix systems.
 It is packed for Unix systems (NL line separator).  It is also used for other
--- a/README_srcdos.txt
+++ b/README_srcdos.txt
@@ -1,4 +1,4 @@
-README_srcdos.txt for version 7.0 of Vim: Vi IMproved.
+README_srcdos.txt for version 7.1a of Vim: Vi IMproved.
 
 See "README.txt" for general information about Vim.
 See "README_dos.txt" for installation instructions for MS-DOS and MS-Windows.
--- a/README_vms.txt
+++ b/README_vms.txt
@@ -1,4 +1,4 @@
-README_vms.txt for version 7.0 of Vim: Vi IMproved.
+README_vms.txt for version 7.1a of Vim: Vi IMproved.
 
 This file explains the installation of Vim on VMS systems.
 See "README.txt" in the runtime archive for information about Vim.
--- a/README_w32s.txt
+++ b/README_w32s.txt
@@ -1,4 +1,4 @@
-README_w32s.txt for version 7.0 of Vim: Vi IMproved.
+README_w32s.txt for version 7.1a of Vim: Vi IMproved.
 
 This archive contains the gvim.exe that was specifically compiled for use in
 the Win32s subsystem in MS-Windows 3.1 and 3.11.
new file mode 100644
--- /dev/null
+++ b/runtime/autoload/ada.vim
@@ -0,0 +1,595 @@
+"------------------------------------------------------------------------------
+"  Description: Perform Ada specific completion & tagging.
+"     Language: Ada (2005)
+"	   $Id$
+"   Maintainer: Martin Krischik
+"		Neil Bird <neil@fnxweb.com>
+"      $Author$
+"	 $Date$
+"      Version: 4.2
+"    $Revision$
+"     $HeadURL: https://svn.sourceforge.net/svnroot/gnuada/trunk/tools/vim/autoload/ada.vim $
+"      History: 24.05.2006 MK Unified Headers
+"		26.05.2006 MK ' should not be in iskeyword.
+"		16.07.2006 MK Ada-Mode as vim-ball
+"		02.10.2006 MK Better folding.
+"		15.10.2006 MK Bram's suggestion for runtime integration
+"		05.11.2006 MK Bram suggested not to use include protection for
+"			      autoload
+"		05.11.2006 MK Bram suggested to save on spaces
+"    Help Page: ft-ada-functions
+"------------------------------------------------------------------------------
+
+if version < 700
+   finish
+endif 
+
+" Section: Constants {{{1
+"
+let g:ada#DotWordRegex	   = '\a\w*\(\_s*\.\_s*\a\w*\)*'
+let g:ada#WordRegex	   = '\a\w*'
+let g:ada#Comment	   = "\\v^(\"[^\"]*\"|'.'|[^\"']){-}\\zs\\s*--.*"
+let g:ada#Keywords	   = []
+
+" Section: g:ada#Keywords {{{1
+"
+" Section: add Ada keywords {{{2
+"
+for Item in ['abort', 'else', 'new', 'return', 'abs', 'elsif', 'not', 'reverse', 'abstract', 'end', 'null', 'accept', 'entry', 'select', 'access', 'exception', 'of', 'separate', 'aliased', 'exit', 'or', 'subtype', 'all', 'others', 'synchronized', 'and', 'for', 'out', 'array', 'function', 'overriding', 'tagged', 'at', 'task', 'generic', 'package', 'terminate', 'begin', 'goto', 'pragma', 'then', 'body', 'private', 'type', 'if', 'procedure', 'case', 'in', 'protected', 'until', 'constant', 'interface', 'use', 'is', 'raise', 'declare', 'range', 'when', 'delay', 'limited', 'record', 'while', 'delta', 'loop', 'rem', 'with', 'digits', 'renames', 'do', 'mod', 'requeue', 'xor']
+    let g:ada#Keywords += [{
+	    \ 'word':  Item,
+	    \ 'menu':  'keyword',
+	    \ 'info':  'Ada keyword.',
+	    \ 'kind':  'k',
+	    \ 'icase': 1}]
+endfor
+
+" Section: GNAT Project Files {{{3
+"
+if exists ('g:ada_with_gnat_project_files')
+    for Item in ['project']
+       let g:ada#Keywords += [{
+	       \ 'word':  Item,
+	       \ 'menu':  'keyword',
+	       \ 'info':  'GNAT projectfile keyword.',
+	       \ 'kind':  'k',
+	       \ 'icase': 1}]
+    endfor
+endif
+
+" Section: add	standart exception {{{2
+"
+for Item in ['Constraint_Error', 'Program_Error', 'Storage_Error', 'Tasking_Error', 'Status_Error', 'Mode_Error', 'Name_Error', 'Use_Error', 'Device_Error', 'End_Error', 'Data_Error', 'Layout_Error', 'Length_Error', 'Pattern_Error', 'Index_Error', 'Translation_Error', 'Time_Error', 'Argument_Error', 'Tag_Error', 'Picture_Error', 'Terminator_Error', 'Conversion_Error', 'Pointer_Error', 'Dereference_Error', 'Update_Error']
+    let g:ada#Keywords += [{
+	    \ 'word':  Item,
+	    \ 'menu':  'exception',
+	    \ 'info':  'Ada standart exception.',
+	    \ 'kind':  'x',
+	    \ 'icase': 1}]
+endfor
+
+" Section: add	GNAT exception {{{3
+"
+if exists ('g:ada_gnat_extensions')
+    for Item in ['Assert_Failure']
+	let g:ada#Keywords += [{
+		\ 'word':  Item,
+		\ 'menu':  'exception',
+		\ 'info':  'GNAT exception.',
+		\ 'kind':  'x',
+		\ 'icase': 1}]
+    endfor
+endif
+
+" Section: add Ada buildin types {{{2
+"
+for Item in ['Boolean', 'Integer', 'Natural', 'Positive', 'Float', 'Character', 'Wide_Character', 'Wide_Wide_Character', 'String', 'Wide_String', 'Wide_Wide_String', 'Duration']
+    let g:ada#Keywords += [{
+	    \ 'word':  Item,
+	    \ 'menu':  'type',
+	    \ 'info':  'Ada buildin type.',
+	    \ 'kind':  't',
+	    \ 'icase': 1}]
+endfor
+
+" Section: add GNAT buildin types {{{3
+"
+if exists ('g:ada_gnat_extensions')
+    for Item in ['Short_Integer', 'Short_Short_Integer', 'Long_Integer', 'Long_Long_Integer', 'Short_Float', 'Short_Short_Float', 'Long_Float', 'Long_Long_Float']
+	let g:ada#Keywords += [{
+		\ 'word':  Item,
+		\ 'menu':  'type',
+		\ 'info':  'GNAT buildin type.',
+		\ 'kind':  't',
+		\ 'icase': 1}]
+    endfor
+endif
+
+" Section: add Ada Attributes {{{2
+"
+for Item in ['''Access', '''Address', '''Adjacent', '''Aft', '''Alignment', '''Base', '''Bit_Order', '''Body_Version', '''Callable', '''Caller', '''Ceiling', '''Class', '''Component_Size', '''Compose', '''Constrained', '''Copy_Sign', '''Count', '''Definite', '''Delta', '''Denorm', '''Digits', '''Emax', '''Exponent', '''External_Tag', '''Epsilon', '''First', '''First_Bit', '''Floor', '''Fore', '''Fraction', '''Identity', '''Image', '''Input', '''Large', '''Last', '''Last_Bit', '''Leading_Part', '''Length', '''Machine', '''Machine_Emax', '''Machine_Emin', '''Machine_Mantissa', '''Machine_Overflows', '''Machine_Radix', '''Machine_Rounding', '''Machine_Rounds', '''Mantissa', '''Max', '''Max_Size_In_Storage_Elements', '''Min', '''Mod', '''Model', '''Model_Emin', '''Model_Epsilon', '''Model_Mantissa', '''Model_Small', '''Modulus', '''Output', '''Partition_ID', '''Pos', '''Position', '''Pred', '''Priority', '''Range', '''Read', '''Remainder', '''Round', '''Rounding', '''Safe_Emax', '''Safe_First', '''Safe_Large', '''Safe_Last', '''Safe_Small', '''Scale', '''Scaling', '''Signed_Zeros', '''Size', '''Small', '''Storage_Pool', '''Storage_Size', '''Stream_Size', '''Succ', '''Tag', '''Terminated', '''Truncation', '''Unbiased_Rounding', '''Unchecked_Access', '''Val', '''Valid', '''Value', '''Version', '''Wide_Image', '''Wide_Value', '''Wide_Wide_Image', '''Wide_Wide_Value', '''Wide_Wide_Width', '''Wide_Width', '''Width', '''Write']
+    let g:ada#Keywords += [{
+	    \ 'word':  Item,
+	    \ 'menu':  'attribute',
+	    \ 'info':  'Ada attribute.',
+	    \ 'kind':  'a',
+	    \ 'icase': 1}]
+endfor
+
+" Section: add GNAT Attributes {{{3
+"
+if exists ('g:ada_gnat_extensions')
+    for Item in ['''Abort_Signal', '''Address_Size', '''Asm_Input', '''Asm_Output', '''AST_Entry', '''Bit', '''Bit_Position', '''Code_Address', '''Default_Bit_Order', '''Elaborated', '''Elab_Body', '''Elab_Spec', '''Emax', '''Enum_Rep', '''Epsilon', '''Fixed_Value', '''Has_Access_Values', '''Has_Discriminants', '''Img', '''Integer_Value', '''Machine_Size', '''Max_Interrupt_Priority', '''Max_Priority', '''Maximum_Alignment', '''Mechanism_Code', '''Null_Parameter', '''Object_Size', '''Passed_By_Reference', '''Range_Length', '''Storage_Unit', '''Target_Name', '''Tick', '''To_Address', '''Type_Class', '''UET_Address', '''Unconstrained_Array', '''Universal_Literal_String', '''Unrestricted_Access', '''VADS_Size', '''Value_Size', '''Wchar_T_Size', '''Word_Size']
+    let g:ada#Keywords += [{
+	    \ 'word':  Item,
+	    \ 'menu':  'attribute',
+	    \ 'info':  'GNAT attribute.',
+	    \ 'kind':  'a',
+	    \ 'icase': 1}]
+    endfor
+endif
+
+" Section: add Ada Pragmas {{{2
+"
+for Item in ['All_Calls_Remote', 'Assert', 'Assertion_Policy', 'Asynchronous', 'Atomic', 'Atomic_Components', 'Attach_Handler', 'Controlled', 'Convention', 'Detect_Blocking', 'Discard_Names', 'Elaborate', 'Elaborate_All', 'Elaborate_Body', 'Export', 'Import', 'Inline', 'Inspection_Point', 'Interface (Obsolescent)', 'Interrupt_Handler', 'Interrupt_Priority', 'Linker_Options', 'List', 'Locking_Policy', 'Memory_Size (Obsolescent)', 'No_Return', 'Normalize_Scalars', 'Optimize', 'Pack', 'Page', 'Partition_Elaboration_Policy', 'Preelaborable_Initialization', 'Preelaborate', 'Priority', 'Priority_Specific_Dispatching', 'Profile', 'Pure', 'Queueing_Policy', 'Relative_Deadline', 'Remote_Call_Interface', 'Remote_Types', 'Restrictions', 'Reviewable', 'Shared (Obsolescent)', 'Shared_Passive', 'Storage_Size', 'Storage_Unit (Obsolescent)', 'Suppress', 'System_Name (Obsolescent)', 'Task_Dispatching_Policy', 'Unchecked_Union', 'Unsuppress', 'Volatile', 'Volatile_Components']
+    let g:ada#Keywords += [{
+	    \ 'word':  Item,
+	    \ 'menu':  'pragma',
+	    \ 'info':  'Ada pragma.',
+	    \ 'kind':  'p',
+	    \ 'icase': 1}]
+endfor
+
+" Section: add GNAT Pragmas {{{3
+"
+if exists ('g:ada_gnat_extensions')
+    for Item in ['Abort_Defer', 'Ada_83', 'Ada_95', 'Ada_05', 'Annotate', 'Ast_Entry', 'C_Pass_By_Copy', 'Comment', 'Common_Object', 'Compile_Time_Warning', 'Complex_Representation', 'Component_Alignment', 'Convention_Identifier', 'CPP_Class', 'CPP_Constructor', 'CPP_Virtual', 'CPP_Vtable', 'Debug', 'Elaboration_Checks', 'Eliminate', 'Export_Exception', 'Export_Function', 'Export_Object', 'Export_Procedure', 'Export_Value', 'Export_Valued_Procedure', 'Extend_System', 'External', 'External_Name_Casing', 'Finalize_Storage_Only', 'Float_Representation', 'Ident', 'Import_Exception', 'Import_Function', 'Import_Object', 'Import_Procedure', 'Import_Valued_Procedure', 'Initialize_Scalars', 'Inline_Always', 'Inline_Generic', 'Interface_Name', 'Interrupt_State', 'Keep_Names', 'License', 'Link_With', 'Linker_Alias', 'Linker_Section', 'Long_Float', 'Machine_Attribute', 'Main_Storage', 'Obsolescent', 'Passive', 'Polling', 'Profile_Warnings', 'Propagate_Exceptions', 'Psect_Object', 'Pure_Function', 'Restriction_Warnings', 'Source_File_Name', 'Source_File_Name_Project', 'Source_Reference', 'Stream_Convert', 'Style_Checks', 'Subtitle', 'Suppress_All', 'Suppress_Exception_Locations', 'Suppress_Initialization', 'Task_Info', 'Task_Name', 'Task_Storage', 'Thread_Body', 'Time_Slice', 'Title', 'Unimplemented_Unit', 'Universal_Data', 'Unreferenced', 'Unreserve_All_Interrupts', 'Use_VADS_Size', 'Validity_Checks', 'Warnings', 'Weak_External']
+	let g:ada#Keywords += [{
+		\ 'word':  Item,
+		\ 'menu':  'pragma',
+		\ 'info':  'GNAT pragma.',
+		\ 'kind':  'p',
+		\ 'icase': 1}]
+    endfor
+endif
+" 1}}}
+
+" Section: g:ada#Ctags_Kinds {{{1
+"
+let g:ada#Ctags_Kinds = {
+   \ 'P': ["packspec",	  "package specifications"],
+   \ 'p': ["package",	  "packages"],
+   \ 'T': ["typespec",	  "type specifications"],
+   \ 't': ["type",	  "types"],
+   \ 'U': ["subspec",	  "subtype specifications"],
+   \ 'u': ["subtype",	  "subtypes"],
+   \ 'c': ["component",   "record type components"],
+   \ 'l': ["literal",	  "enum type literals"],
+   \ 'V': ["varspec",	  "variable specifications"],
+   \ 'v': ["variable",	  "variables"],
+   \ 'f': ["formal",	  "generic formal parameters"],
+   \ 'n': ["constant",	  "constants"],
+   \ 'x': ["exception",   "user defined exceptions"],
+   \ 'R': ["subprogspec", "subprogram specifications"],
+   \ 'r': ["subprogram",  "subprograms"],
+   \ 'K': ["taskspec",	  "task specifications"],
+   \ 'k': ["task",	  "tasks"],
+   \ 'O': ["protectspec", "protected data specifications"],
+   \ 'o': ["protected",   "protected data"],
+   \ 'E': ["entryspec",   "task/protected data entry specifications"],
+   \ 'e': ["entry",	  "task/protected data entries"],
+   \ 'b': ["label",	  "labels"],
+   \ 'i': ["identifier",  "loop/declare identifiers"],
+   \ 'a': ["autovar",	  "automatic variables"],
+   \ 'y': ["annon",	  "loops and blocks with no identifier"]}
+
+" Section: ada#Word (...) {{{1
+"
+" Extract current Ada word across multiple lines
+" AdaWord ([line, column])\
+"
+function ada#Word (...)
+   if a:0 > 1
+      let l:Line_Nr    = a:1
+      let l:Column_Nr  = a:2 - 1
+   else
+      let l:Line_Nr    = line('.')
+      let l:Column_Nr  = col('.') - 1
+   endif
+
+   let l:Line = substitute (getline (l:Line_Nr), g:ada#Comment, '', '' )
+
+   " Cope with tag searching for items in comments; if we are, don't loop
+   " backards looking for previous lines
+   if l:Column_Nr > strlen(l:Line)
+      " We were in a comment
+      let l:Line = getline(l:Line_Nr)
+      let l:Search_Prev_Lines = 0
+   else
+      let l:Search_Prev_Lines = 1
+   endif
+
+   " Go backwards until we find a match (Ada ID) that *doesn't* include our
+   " location - i.e., the previous ID. This is because the current 'correct'
+   " match will toggle matching/not matching as we traverse characters
+   " backwards. Thus, we have to find the previous unrelated match, exclude
+   " it, then use the next full match (ours).
+   " Remember to convert vim column 'l:Column_Nr' [1..n] to string offset [0..(n-1)]
+   " ... but start, here, one after the required char.
+   let l:New_Column = l:Column_Nr + 1
+   while 1
+      let l:New_Column = l:New_Column - 1
+      if l:New_Column < 0
+	 " Have to include previous l:Line from file
+	 let l:Line_Nr = l:Line_Nr - 1
+	 if l:Line_Nr < 1  ||  !l:Search_Prev_Lines
+	    " Start of file or matching in a comment
+	    let l:Line_Nr     = 1
+	    let l:New_Column  = 0
+	    let l:Our_Match   = match (l:Line, g:ada#WordRegex )
+	    break
+	 endif
+	 " Get previous l:Line, and prepend it to our search string
+	 let l:New_Line    = substitute (getline (l:Line_Nr), g:ada#Comment, '', '' )
+	 let l:New_Column  = strlen (l:New_Line) - 1
+	 let l:Column_Nr   = l:Column_Nr + l:New_Column
+	 let l:Line	   = l:New_Line . l:Line
+      endif
+      " Check to see if this is a match excluding 'us'
+      let l:Match_End = l:New_Column +
+		      \ matchend (strpart (l:Line,l:New_Column), g:ada#WordRegex ) - 1
+      if l:Match_End >= l:New_Column  &&
+       \ l:Match_End < l:Column_Nr
+	 " Yes
+	 let l:Our_Match = l:Match_End+1 +
+			 \ match (strpart (l:Line,l:Match_End+1), g:ada#WordRegex )
+	 break
+      endif
+   endwhile
+
+   " Got anything?
+   if l:Our_Match < 0
+      return ''
+   else
+      let l:Line = strpart (l:Line, l:Our_Match)
+   endif
+
+   " Now simply add further lines until the match gets no bigger
+   let l:Match_String = matchstr (l:Line, g:ada#WordRegex)
+   let l:Last_Line    = line ('$')
+   let l:Line_Nr      = line ('.') + 1
+   while l:Line_Nr <= l:Last_Line
+      let l:Last_Match = l:Match_String
+      let l:Line = l:Line .
+	 \ substitute (getline (l:Line_Nr), g:ada#Comment, '', '')
+      let l:Match_String = matchstr (l:Line, g:ada#WordRegex)
+      if l:Match_String == l:Last_Match
+	 break
+      endif
+   endwhile
+
+   " Strip whitespace & return
+   return substitute (l:Match_String, '\s\+', '', 'g')
+endfunction ada#Word
+
+" Section: ada#List_Tag (...) {{{1
+"
+"  List tags in quickfix window
+"
+function ada#List_Tag (...)
+   if a:0 > 1
+      let l:Tag_Word = ada#Word (a:1, a:2)
+   elseif a:0 > 0
+      let l:Tag_Word = a:1
+   else
+      let l:Tag_Word = ada#Word ()
+   endif
+
+   echo "Searching for" l:Tag_Word
+
+   let l:Pattern = '^' . l:Tag_Word . '$'
+   let l:Tag_List = taglist (l:Pattern)
+   let l:Error_List = []
+   "
+   " add symbols
+   "
+   for Tag_Item in l:Tag_List
+      if l:Tag_Item['kind'] == ''
+	 let l:Tag_Item['kind'] = 's'
+      endif
+
+      let l:Error_List += [
+	 \ l:Tag_Item['filename'] . '|' .
+	 \ l:Tag_Item['cmd']	  . '|' .
+	 \ l:Tag_Item['kind']	  . "\t" .
+	 \ l:Tag_Item['name'] ]
+   endfor
+   set errorformat=%f\|%l\|%m
+   cexpr l:Error_List
+   cwindow
+endfunction ada#List_Tag
+
+" Section: ada#Jump_Tag (Word, Mode) {{{1
+"
+" Word tag - include '.' and if Ada make uppercase
+"
+function ada#Jump_Tag (Word, Mode)
+   if a:Word == ''
+      " Get current word
+      let l:Word = ada#Word()
+      if l:Word == ''
+	 throw "NOT_FOUND: no identifier found."
+      endif
+   else
+      let l:Word = a:Word
+   endif
+
+   echo "Searching for " . l:Word
+
+   try
+      execute a:Mode l:Word
+   catch /.*:E426:.*/
+      let ignorecase = &ignorecase
+      set ignorecase
+      execute a:Mode l:Word
+      let &ignorecase = ignorecase
+   endtry
+
+   return
+endfunction ada#Jump_Tag
+
+" Section: ada#Insert_Backspace () {{{1
+"
+" Backspace at end of line after auto-inserted commentstring '-- ' wipes it
+"
+function ada#Insert_Backspace ()
+   let l:Line = getline ('.')
+   if col ('.') > strlen (l:Line) &&
+    \ match (l:Line, '-- $') != -1 &&
+    \ match (&comments,'--') != -1
+      return "\<bs>\<bs>\<bs>"
+   else
+      return "\<bs>"
+   endif
+
+   return
+endfunction ada#InsertBackspace
+
+" Section: Insert Completions {{{1
+"
+" Section: ada#User_Complete(findstart, base) {{{2
+"
+" This function is used for the 'complete' option.
+"
+function! ada#User_Complete(findstart, base)
+   if a:findstart == 1
+      "
+      " locate the start of the word
+      "
+      let line = getline ('.')
+      let start = col ('.') - 1
+      while start > 0 && line[start - 1] =~ '\i\|'''
+	 let start -= 1
+      endwhile
+      return start
+   else
+      "
+      " look up matches
+      "
+      let l:Pattern = '^' . a:base . '.*$'
+      "
+      " add keywords
+      "
+      for Tag_Item in g:ada#Keywords
+	 if l:Tag_Item['word'] =~? l:Pattern
+	    if complete_add (l:Tag_Item) == 0
+	       return []
+	    endif
+	    if complete_check ()
+	       return []
+	    endif
+	 endif
+      endfor
+      return []
+   endif
+endfunction ada#User_Complete
+
+" Section: ada#Completion (cmd) {{{2
+"
+" Word completion (^N/^R/^X^]) - force '.' inclusion
+function ada#Completion (cmd)
+   set iskeyword+=46
+   return a:cmd . "\<C-R>=ada#Completion_End ()\<CR>"
+endfunction ada#Completion
+
+" Section: ada#Completion_End () {{{2
+"
+function ada#Completion_End ()
+   set iskeyword-=46
+   return ''
+endfunction ada#Completion_End
+
+" Section: ada#Create_Tags {{{1
+"
+function ada#Create_Tags (option)
+   if a:option == 'file'
+      let l:Filename = fnamemodify (bufname ('%'), ':p')
+   elseif a:option == 'dir'
+      let l:Filename =
+	 \ fnamemodify (bufname ('%'), ':p:h') . "*.ada " .
+	 \ fnamemodify (bufname ('%'), ':p:h') . "*.adb " .
+	 \ fnamemodify (bufname ('%'), ':p:h') . "*.ads"
+   else
+      let l:Filename = a:option
+   endif
+   execute '!ctags --excmd=number ' . l:Filename
+endfunction ada#Create_Tags
+
+function ada#Switch_Session (New_Session)   "{{{1
+   if a:New_Session != v:this_session
+      "
+      "  We actualy got a new session - otherwise there
+      "  is nothing to do.
+      "
+      if strlen (v:this_session) > 0
+	 execute 'mksession! ' . v:this_session
+      endif
+
+      let v:this_session = a:New_Session
+
+      if filereadable (v:this_session)
+	 execute 'source ' . v:this_session
+      endif
+
+      augroup ada_session
+	 autocmd!
+	 autocmd VimLeavePre * execute 'mksession! ' . v:this_session
+      augroup END
+   endif
+
+   return
+endfunction ada#Switch_Session	 "}}}1
+
+" Section: GNAT Pretty Printer folding {{{1
+"
+if exists('g:ada_folding') && g:ada_folding[0] == 'g'
+   "
+   " Lines consisting only of ')' ';' are due to a gnat pretty bug and
+   " have the same level as the line above (can't happen in the first
+   " line).
+   "
+   let s:Fold_Collate = '^\([;)]*$\|'
+
+   "
+   " some lone statements are folded with the line above
+   "
+   if stridx (g:ada_folding, 'i') >= 0
+      let s:Fold_Collate .= '\s\+\<is\>$\|'
+   endif
+   if stridx (g:ada_folding, 'b') >= 0
+      let s:Fold_Collate .= '\s\+\<begin\>$\|'
+   endif
+   if stridx (g:ada_folding, 'p') >= 0
+      let s:Fold_Collate .= '\s\+\<private\>$\|'
+   endif
+   if stridx (g:ada_folding, 'x') >= 0
+      let s:Fold_Collate .= '\s\+\<exception\>$\|'
+   endif
+
+   " We also handle empty lines and
+   " comments here.
+   let s:Fold_Collate .= '--\)'
+
+   function ada#Pretty_Print_Folding (Line)			     " {{{2
+      let l:Text = getline (a:Line)
+
+      if l:Text =~ s:Fold_Collate
+	 "
+	 "  fold with line above
+	 "
+	 let l:Level = "="
+      elseif l:Text =~ '^\s\+('
+	 "
+	 " gnat outdents a line which stards with a ( by one characters so
+	 " that parameters which follow are aligned.
+	 "
+	 let l:Level = (indent (a:Line) + 1) / &shiftwidth
+      else
+	 let l:Level = indent (a:Line) / &shiftwidth
+      endif
+
+      return l:Level
+   endfunction ada#Pretty_Print_Folding				     " }}}2
+endif
+
+" Section: Options and Menus {{{1
+"
+" Section: ada#Switch_Syntax_Options {{{2
+"
+function ada#Switch_Syntax_Option (option)
+   syntax off
+   if exists ('g:ada_' . a:option)
+      unlet g:ada_{a:option}
+      echo  a:option . 'now off'
+   else
+      let g:ada_{a:option}=1
+      echo  a:option . 'now on'
+   endif
+   syntax on
+endfunction ada#Switch_Syntax_Option
+
+" Section: ada#Map_Menu {{{2
+"
+function ada#Map_Menu (Text, Keys, Command)
+   if a:Keys[0] == ':'
+      execute
+	\ "50amenu " .
+	\ "Ada."     . escape(a:Text, ' ') .
+	\ "<Tab>"    . a:Keys .
+	\ " :"	     . a:Command . "<CR>"
+      execute
+	\ "command -buffer " .
+	\ a:Keys[1:] .
+	\" :" . a:Command . "<CR>"
+   elseif a:Keys[0] == '<'
+      execute
+	\ "50amenu " .
+	\ "Ada."     . escape(a:Text, ' ') .
+	\ "<Tab>"    . a:Keys .
+	\ " :"	     . a:Command . "<CR>"
+      execute
+	\ "nnoremap <buffer> "	 .
+	\ a:Keys		 .
+	\" :" . a:Command . "<CR>"
+      execute
+	\ "inoremap <buffer> "	 .
+	\ a:Keys		 .
+	\" <C-O>:" . a:Command . "<CR>"
+   else
+      execute
+	\ "50amenu " .
+	\ "Ada."  . escape(a:Text, ' ') .
+	\ "<Tab>" . escape(g:mapleader . "a" . a:Keys , '\') .
+	\ " :"	  . a:Command . "<CR>"
+      execute
+	\ "nnoremap <buffer>" .
+	\ escape(g:mapleader . "a" . a:Keys , '\') .
+	\" :" . a:Command
+      execute
+	\ "inoremap <buffer>" .
+	\ escape(g:mapleader . "a" . a:Keys , '\') .
+	\" <C-O>:" . a:Command
+   endif
+   return
+endfunction
+
+" Section: ada#Map_Popup {{{2
+"
+function ada#Map_Popup (Text, Keys, Command)
+   execute
+     \ "50amenu " .
+     \ "PopUp."   . escape(a:Text, ' ') .
+     \ "<Tab>"	  . escape(g:mapleader . "a" . a:Keys , '\') .
+     \ " :"	  . a:Command . "<CR>"
+
+   call ada#Map_Menu (a:Text, a:Keys, a:Command)
+   return
+endfunction ada#Map_Popup
+
+" }}}1
+
+lockvar  g:ada#WordRegex
+lockvar  g:ada#DotWordRegex
+lockvar  g:ada#Comment
+lockvar! g:ada#Keywords
+lockvar! g:ada#Ctags_Kinds
+
+finish " 1}}}
+
+"------------------------------------------------------------------------------
+"   Copyright (C) 2006	Martin Krischik
+"
+"   Vim is Charityware - see ":help license" or uganda.txt for licence details.
+"------------------------------------------------------------------------------
+" vim: textwidth=78 wrap tabstop=8 shiftwidth=3 softtabstop=3 noexpandtab
+" vim: foldmethod=marker
new file mode 100644
--- /dev/null
+++ b/runtime/autoload/gnat.vim
@@ -0,0 +1,139 @@
+"------------------------------------------------------------------------------
+"  Description: Vim Ada/GNAT compiler file
+"     Language: Ada (GNAT)
+"          $Id$
+"    Copyright: Copyright (C) 2006 Martin Krischik
+"   Maintainer:	Martin Krischik
+"      $Author$
+"        $Date$
+"      Version: 4.2
+"    $Revision$
+"     $HeadURL: https://svn.sourceforge.net/svnroot/gnuada/trunk/tools/vim/autoload/gnat.vim $
+"      History: 24.05.2006 MK Unified Headers
+"		16.07.2006 MK Ada-Mode as vim-ball
+"		05.08.2006 MK Add session support
+"               15.10.2006 MK Bram's suggestion for runtime integration
+"               05.11.2006 MK Bram suggested not to use include protection for
+"                             autoload
+"		05.11.2006 MK Bram suggested to save on spaces
+"    Help Page: compiler-gnat
+"------------------------------------------------------------------------------
+
+if version < 700
+    finish
+endif
+
+function gnat#Make () dict					     " {{{1
+   let &l:makeprg	 = self.Get_Command('Make')
+   let &l:errorformat = self.Error_Format
+   wall
+   make
+   copen
+   set wrap
+   wincmd W
+endfunction gnat#Make						     " }}}1
+
+function gnat#Pretty () dict					     " {{{1
+   execute "!" . self.Get_Command('Pretty')
+endfunction gnat#Make						     " }}}1
+
+function gnat#Find () dict					     " {{{1
+   execute "!" . self.Get_Command('Find')
+endfunction gnat#Find						     " }}}1
+
+function gnat#Tags () dict					     " {{{1
+   execute "!" . self.Get_Command('Tags')
+   edit tags
+   call gnat#Insert_Tags_Header ()
+   update
+   quit
+endfunction gnat#Tags						     " }}}1
+
+function gnat#Set_Project_File (...) dict			     " {{{1
+   if a:0 > 0
+      let self.Project_File = a:1
+
+      if ! filereadable (self.Project_File)
+	 let self.Project_File = findfile (
+	    \ fnamemodify (self.Project_File, ':r'),
+	    \ $ADA_PROJECT_PATH,
+	    \ 1)
+      endif
+   elseif strlen (self.Project_File) > 0
+      let self.Project_File = browse (0, 'GNAT Project File?', '', self.Project_File)
+   elseif expand ("%:e") == 'gpr'
+      let self.Project_File = browse (0, 'GNAT Project File?', '', expand ("%:e"))
+   else
+      let self.Project_File = browse (0, 'GNAT Project File?', '', 'default.gpr')
+   endif
+
+   if strlen (v:this_session) > 0
+      execute 'mksession! ' . v:this_session
+   endif
+
+   if strlen (self.Project_File) > 0
+      call ada#Switch_Session (
+	 \ expand('~') . "/vimfiles/session/" .
+	 \ fnamemodify (self.Project_File, ":t:r") . ".vim")
+   else
+      call ada#Switch_Session ('')
+   endif
+
+   return
+endfunction gnat#Set_Project_File				     " }}}1
+
+function gnat#Get_Command (Command) dict			     " {{{1
+   let l:Command = eval ('self.' . a:Command . '_Command')
+   return eval (l:Command)
+endfunction gnat#Get_Command					     " }}}1
+
+function gnat#Set_Session (...) dict				     " {{{1
+   if argc() == 1 && fnamemodify (argv(0), ':e') == 'gpr'
+      call self.Set_Project_File (argv(0))
+   elseif  strlen (v:servername) > 0
+      call self.Set_Project_File (v:servername . '.gpr')
+   endif
+endfunction gnat#Set_Session					     " }}}1
+
+function gnat#New ()						     " {{{1
+   let l:Retval = {
+      \ 'Make'	      : function ('gnat#Make'),
+      \ 'Pretty'	      : function ('gnat#Pretty'),
+      \ 'Find'	      : function ('gnat#Find'),
+      \ 'Tags'	      : function ('gnat#Tags'),
+      \ 'Set_Project_File' : function ('gnat#Set_Project_File'),
+      \ 'Set_Session'      : function ('gnat#Set_Session'),
+      \ 'Get_Command'      : function ('gnat#Get_Command'),
+      \ 'Project_File'     : '',
+      \ 'Make_Command'     : '"gnat make -P " . self.Project_File . "  -F -gnatef  "',
+      \ 'Pretty_Command'   : '"gnat pretty -P " . self.Project_File . " "',
+      \ 'Find_Program'     : '"gnat find -P " . self.Project_File . " -F "',
+      \ 'Tags_Command'     : '"gnat xref -P " . self.Project_File . " -v  *.AD*"',
+      \ 'Error_Format'     : '%f:%l:%c: %trror: %m,'   .
+			   \ '%f:%l:%c: %tarning: %m,' .
+			   \ '%f:%l:%c: (%ttyle) %m'}
+
+   return l:Retval
+endfunction gnat#New						  " }}}1
+
+function gnat#Insert_Tags_Header ()				  " {{{1
+   1insert
+!_TAG_FILE_FORMAT       1	 /extended format; --format=1 will not append ;" to lines/
+!_TAG_FILE_SORTED       1	 /0=unsorted, 1=sorted, 2=foldcase/
+!_TAG_PROGRAM_AUTHOR    AdaCore	 /info@adacore.com/
+!_TAG_PROGRAM_NAME      gnatxref //
+!_TAG_PROGRAM_URL       http://www.adacore.com  /official site/
+!_TAG_PROGRAM_VERSION   5.05w   //
+.
+   return
+endfunction gnat#Insert_Tags_Header				  " }}}1
+
+finish " 1}}}
+
+"------------------------------------------------------------------------------
+"   Copyright (C) 2006  Martin Krischik
+"
+"   Vim is Charityware - see ":help license" or uganda.txt for licence details.
+"------------------------------------------------------------------------------
+" vim: textwidth=0 wrap tabstop=8 shiftwidth=3 softtabstop=3 noexpandtab
+" vim: foldmethod=marker
--- a/runtime/autoload/netrwFileHandlers.vim
+++ b/runtime/autoload/netrwFileHandlers.vim
@@ -1,8 +1,8 @@
 " netrwFileHandlers: contains various extension-based file handlers for
 "                    netrw's browsers' x command ("eXecute launcher")
 " Author:	Charles E. Campbell, Jr.
-" Date:		May 01, 2006
-" Version:	8
+" Date:		May 30, 2006
+" Version:	9
 " Copyright:    Copyright (C) 1999-2005 Charles E. Campbell, Jr. {{{1
 "               Permission is hereby granted to use and distribute this code,
 "               with or without modifications, provided that this copyright
@@ -22,16 +22,41 @@ if exists("g:loaded_netrwFileHandlers") 
 endif
 let s:keepcpo= &cpo
 set cpo&vim
-let g:loaded_netrwFileHandlers= "v8"
+let g:loaded_netrwFileHandlers= "v9"
 
 " ---------------------------------------------------------------------
 " netrwFileHandlers#Invoke: {{{1
 fun! netrwFileHandlers#Invoke(exten,fname)
 "  call Dfunc("netrwFileHandlers#Invoke(exten<".a:exten."> fname<".a:fname.">)")
+  let fname= a:fname
+  " list of supported special characters.  Consider rcs,v --- that can be
+  " supported with a NFH_rcsCOMMAv() handler
+  if a:fname =~ '[@:,$!=\-+%?;~]'
+   let specials= {
+\   '@' : 'AT',
+\   ':' : 'COLON',
+\   ',' : 'COMMA',
+\   '$' : 'DOLLAR',
+\   '!' : 'EXCLAMATION',
+\   '=' : 'EQUAL',
+\   '-' : 'MINUS',
+\   '+' : 'PLUS',
+\   '%' : 'PERCENT',
+\   '?' : 'QUESTION',
+\   ';' : 'SEMICOLON',
+\   '~' : 'TILDE'}
+   let fname= substitute(a:fname,'[@:,$!=\-+%?;~]','\=specials[submatch(0)]','ge')
+"   call Decho('fname<'.fname.'> done with dictionary')
+  endif
 
-  if a:exten != "" && exists("*s:NFH_".a:exten)
-"   call Decho("let ret= netrwFileHandlers#NFH_".a:exten.'("'.a:fname.'")')
-   exe "let ret= s:NFH_".a:exten.'("'.a:fname.'")'
+  if a:exten != "" && exists("*NFH_".a:exten)
+   " support user NFH_*() functions
+"   call Decho("let ret= netrwFileHandlers#NFH_".a:exten.'("'.fname.'")')
+   exe "let ret= NFH_".a:exten.'("'.fname.'")'
+  elseif a:exten != "" && exists("*s:NFH_".a:exten)
+   " use builtin-NFH_*() functions
+"   call Decho("let ret= netrwFileHandlers#NFH_".a:exten.'("'.fname.'")')
+   exe "let ret= s:NFH_".a:exten.'("'.fname.'")'
   endif
   
 "  call Dret("netrwFileHandlers#Invoke 0 : ret=".ret)
@@ -48,10 +73,10 @@ fun! s:NFH_html(pagefile)
 
   if executable("mozilla")
 "   call Decho("executing !mozilla ".page)
-   exe "!mozilla \"".page.'"'
+   exe "!mozilla ".g:netrw_shq.page.g:netrw_shq
   elseif executable("netscape")
 "   call Decho("executing !netscape ".page)
-   exe "!netscape \"".page.'"'
+   exe "!netscape ".g:netrw_shq..page.g:netrw_shq
   else
 "   call Dret("s:NFH_html 0")
    return 0
@@ -71,10 +96,10 @@ fun! s:NFH_htm(pagefile)
 
   if executable("mozilla")
 "   call Decho("executing !mozilla ".page)
-   exe "!mozilla \"".page.'"'
+   exe "!mozilla ".g:netrw_shq.page.g:netrw_shq
   elseif executable("netscape")
 "   call Decho("executing !netscape ".page)
-   exe "!netscape \"".page.'"'
+   exe "!netscape ".g:netrw_shq.page.g:netrw_shq
   else
 "   call Dret("s:NFH_htm 0")
    return 0
@@ -90,10 +115,10 @@ fun! s:NFH_jpg(jpgfile)
 "  call Dfunc("s:NFH_jpg(jpgfile<".a:jpgfile.">)")
 
   if executable("gimp")
-   exe "silent! !gimp -s ".a:jpgfile
+   exe "silent! !gimp -s ".g:netrw_shq.a:jpgfile.g:netrw_shq
   elseif executable(expand("$SystemRoot")."/SYSTEM32/MSPAINT.EXE")
 "   call Decho("silent! !".expand("$SystemRoot")."/SYSTEM32/MSPAINT ".escape(a:jpgfile," []|'"))
-   exe "!".expand("$SystemRoot")."/SYSTEM32/MSPAINT \"".a:jpgfile.'"'
+   exe "!".expand("$SystemRoot")."/SYSTEM32/MSPAINT ".g:netrw_shq.a:jpgfile.g:netrw_shq
   else
 "   call Dret("s:NFH_jpg 0")
    return 0
@@ -109,9 +134,9 @@ fun! s:NFH_gif(giffile)
 "  call Dfunc("s:NFH_gif(giffile<".a:giffile.">)")
 
   if executable("gimp")
-   exe "silent! !gimp -s ".a:giffile
+   exe "silent! !gimp -s ".g:netrw_shq.a:giffile.g:netrw_shq
   elseif executable(expand("$SystemRoot")."/SYSTEM32/MSPAINT.EXE")
-   exe "silent! !".expand("$SystemRoot")."/SYSTEM32/MSPAINT \"".a:giffile.'"'
+   exe "silent! !".expand("$SystemRoot")."/SYSTEM32/MSPAINT ".g:netrw_shq.a:giffile.g:netrw_shq
   else
 "   call Dret("s:NFH_gif 0")
    return 0
@@ -127,9 +152,9 @@ fun! s:NFH_png(pngfile)
 "  call Dfunc("s:NFH_png(pngfile<".a:pngfile.">)")
 
   if executable("gimp")
-   exe "silent! !gimp -s ".a:pngfile
+   exe "silent! !gimp -s ".g:netrw_shq.a:pngfile.g:netrw_shq
   elseif executable(expand("$SystemRoot")."/SYSTEM32/MSPAINT.EXE")
-   exe "silent! !".expand("$SystemRoot")."/SYSTEM32/MSPAINT \"".a:pngfile.'"'
+   exe "silent! !".expand("$SystemRoot")."/SYSTEM32/MSPAINT ".g:netrw_shq.a:pngfile.g:netrw_shq
   else
 "   call Dret("s:NFH_png 0")
    return 0
@@ -145,9 +170,9 @@ fun! s:NFH_pnm(pnmfile)
 "  call Dfunc("s:NFH_pnm(pnmfile<".a:pnmfile.">)")
 
   if executable("gimp")
-   exe "silent! !gimp -s ".a:pnmfile
+   exe "silent! !gimp -s ".g:netrw_shq.a:pnmfile.g:netrw_shq
   elseif executable(expand("$SystemRoot")."/SYSTEM32/MSPAINT.EXE")
-   exe "silent! !".expand("$SystemRoot")."/SYSTEM32/MSPAINT \"".a:pnmfile.'"'
+   exe "silent! !".expand("$SystemRoot")."/SYSTEM32/MSPAINT ".g:netrw_shq.a:pnmfile.g:netrw_shq
   else
 "   call Dret("s:NFH_pnm 0")
    return 0
@@ -165,7 +190,7 @@ fun! s:NFH_bmp(bmpfile)
   if executable("gimp")
    exe "silent! !gimp -s ".a:bmpfile
   elseif executable(expand("$SystemRoot")."/SYSTEM32/MSPAINT.EXE")
-   exe "silent! !".expand("$SystemRoot")."/SYSTEM32/MSPAINT \"".a:bmpfile.'"'
+   exe "silent! !".expand("$SystemRoot")."/SYSTEM32/MSPAINT ".g:netrw_shq.a:bmpfile.g:netrw_shq
   else
 "   call Dret("s:NFH_bmp 0")
    return 0
@@ -180,7 +205,9 @@ endfun
 fun! s:NFH_pdf(pdf)
 "  call Dfunc("s:NFH_pdf(pdf<".a:pdf.">)")
   if executable("gs")
-   exe 'silent! !gs "'.a:pdf.'"'
+   exe 'silent! !gs '.g:netrw_shq.a:pdf.g:netrw_shq
+  elseif executable("pdftotext")
+   exe 'silent! pdftotext -nopgbrk '.g:netrw_shq.a:pdf.g:netrw_shq
   else
 "  call Dret("s:NFH_pdf 0")
    return 0
@@ -196,7 +223,7 @@ fun! s:NFH_doc(doc)
 "  call Dfunc("s:NFH_doc(doc<".a:doc.">)")
 
   if executable("oowriter")
-   exe 'silent! !oowriter "'.a:doc.'"'
+   exe 'silent! !oowriter '.g:netrw_shq.a:doc.g:netrw_shq
    redraw!
   else
 "  call Dret("s:NFH_doc 0")
@@ -213,7 +240,7 @@ fun! s:NFH_sxw(sxw)
 "  call Dfunc("s:NFH_sxw(sxw<".a:sxw.">)")
 
   if executable("oowriter")
-   exe 'silent! !oowriter "'.a:sxw.'"'
+   exe 'silent! !oowriter '.g:netrw_shq.a:sxw.g:netrw_shq
    redraw!
   else
 "   call Dret("s:NFH_sxw 0")
@@ -230,7 +257,7 @@ fun! s:NFH_xls(xls)
 "  call Dfunc("s:NFH_xls(xls<".a:xls.">)")
 
   if executable("oocalc")
-   exe 'silent! !oocalc "'.a:xls.'"'
+   exe 'silent! !oocalc '.g:netrw_shq.a:xls.g:netrw_shq
    redraw!
   else
 "  call Dret("s:NFH_xls 0")
@@ -247,15 +274,15 @@ fun! s:NFH_ps(ps)
 "  call Dfunc("s:NFH_ps(ps<".a:ps.">)")
   if executable("gs")
 "   call Decho("exe silent! !gs ".a:ps)
-   exe "silent! !gs ".a:ps
+   exe "silent! !gs ".g:netrw_shq.a:ps.g:netrw_shq
    redraw!
   elseif executable("ghostscript")
 "   call Decho("exe silent! !ghostscript ".a:ps)
-   exe "silent! !ghostscript ".a:ps
+   exe "silent! !ghostscript ".g:netrw_shq.a:ps.g:netrw_shq
    redraw!
   elseif executable("gswin32")
-"   call Decho("exe silent! !gswin32 \"".a:ps.'"')
-   exe "silent! !gswin32 \"".a:ps.'"'
+"   call Decho("exe silent! !gswin32 ".g:netrw_shq.a:ps.g:netrw_shq)
+   exe "silent! !gswin32 ".g:netrw_shq.a:ps.g:netrw_shq
    redraw!
   else
 "   call Dret("s:NFH_ps 0")
@@ -271,16 +298,16 @@ endfun
 fun! s:NFH_eps(eps)
 "  call Dfunc("s:NFH_eps()")
   if executable("gs")
-   exe "silent! !gs ".a:eps
+   exe "silent! !gs ".g:netrw_shq.a:eps.g:netrw_shq
    redraw!
   elseif executable("ghostscript")
-   exe "silent! !ghostscript ".a:eps
+   exe "silent! !ghostscript ".g:netrw_shq.a:eps.g:netrw_shq
    redraw!
   elseif executable("ghostscript")
-   exe "silent! !ghostscript ".a:eps
+   exe "silent! !ghostscript ".g:netrw_shq.a:eps.g:netrw_shq
    redraw!
   elseif executable("gswin32")
-   exe "silent! !gswin32 \"".a:eps.'"'
+   exe "silent! !gswin32 ".g:netrw_shq.a:eps.g:netrw_shq
    redraw!
   else
 "   call Dret("s:NFH_eps 0")
@@ -325,4 +352,4 @@ endfun
 let &cpo= s:keepcpo
 " ---------------------------------------------------------------------
 "  Modelines: {{{1
-"  vim: ts=4 fdm=marker
+"  vim: fdm=marker
--- a/runtime/autoload/tar.vim
+++ b/runtime/autoload/tar.vim
@@ -1,8 +1,8 @@
 " tar.vim: Handles browsing tarfiles
 "            AUTOLOAD PORTION
-" Date:			May 02, 2006
-" Version:		9
-" Maintainer:	Charles E Campbell, Jr <drchipNOSPAM at campbellfamily dot biz>
+" Date:			Sep 29, 2006
+" Version:		11
+" Maintainer:	Charles E Campbell, Jr <NdrOchip@ScampbellPfamily.AbizM-NOSPAM>
 " License:		Vim License  (see vim's :help license)
 "
 "	Contains many ideas from Michael Toren's <tar.vim>
@@ -18,13 +18,13 @@
 "               of this software.
 
 " ---------------------------------------------------------------------
-" Initialization: {{{1
+" Load Once: {{{1
 let s:keepcpo= &cpo
 set cpo&vim
-if exists("g:loaded_tar")
+if &cp || exists("g:loaded_tar") || v:version < 700
  finish
 endif
-let g:loaded_tar= "v9"
+let g:loaded_tar= "v11"
 "call Decho("loading autoload/tar.vim")
 
 " ---------------------------------------------------------------------
@@ -41,6 +41,13 @@ endif
 if !exists("g:tar_writeoptions")
  let g:tar_writeoptions= "uf"
 endif
+if !exists("g:tar_shq")
+ if has("unix")
+  let g:tar_shq= "'"
+ else
+  let g:tar_shq= '"'
+ endif
+endif
 
 " ----------------
 "  Functions: {{{1
@@ -55,8 +62,9 @@ fun! tar#Browse(tarfile)
 
   " sanity checks
   if !executable(g:tar_cmd)
+   redraw!
    echohl Error | echo '***error*** (tar#Browse) "'.g:tar_cmd.'" not available on your system'
-   call inputsave()|call input("Press <cr> to continue")|call inputrestore()
+"   call inputsave()|call input("Press <cr> to continue")|call inputrestore()
    let &report= repkeep
 "   call Dret("tar#Browse")
    return
@@ -65,8 +73,9 @@ fun! tar#Browse(tarfile)
 "   call Decho('a:tarfile<'.a:tarfile.'> not filereadable')
    if a:tarfile !~# '^\a\+://'
     " if its an url, don't complain, let url-handlers such as vim do its thing
+    redraw!
     echohl Error | echo "***error*** (tar#Browse) File not readable<".a:tarfile.">" | echohl None
-    call inputsave()|call input("Press <cr> to continue")|call inputrestore()
+"    call inputsave()|call input("Press <cr> to continue")|call inputrestore()
    endif
    let &report= repkeep
 "   call Dret("tar#Browse : file<".a:tarfile."> not readable")
@@ -99,30 +108,26 @@ fun! tar#Browse(tarfile)
   endif
   let curlast= line("$")
   if tarfile =~# '\.\(gz\|tgz\)$'
-"   call Decho("exe silent r! gzip -d -c '".tarfile."'| tar -".g:tar_browseoptions." - ")
-   exe "silent r! gzip -d -c '".tarfile."'| tar -".g:tar_browseoptions." - "
+"   call Decho("exe silent r! gzip -d -c ".g:tar_shq.tarfile.g:tar_shq."| ".g:tar_cmd." -".g:tar_browseoptions." - ")
+   exe "silent r! gzip -d -c ".g:tar_shq.tarfile.g:tar_shq."| ".g:tar_cmd." -".g:tar_browseoptions." - "
   elseif tarfile =~# '\.bz2$'
-"   call Decho("exe silent r! bzip2 -d -c '".tarfile."'| tar -".g:tar_browseoptions." - ")
-   exe "silent r! bzip2 -d -c '".tarfile."'| tar -".g:tar_browseoptions." - "
+"   call Decho("exe silent r! bzip2 -d -c ".g:tar_shq.tarfile.g:tar_shq."| ".g:tar_cmd." -".g:tar_browseoptions." - ")
+   exe "silent r! bzip2 -d -c ".g:tar_shq.tarfile.g:tar_shq."| ".g:tar_cmd." -".g:tar_browseoptions." - "
   else
-"   call Decho("exe silent r! ".g:tar_cmd." -".g:tar_browseoptions." '".tarfile."'")
-   exe "silent r! ".g:tar_cmd." -".g:tar_browseoptions." '".tarfile."'"
+"   call Decho("exe silent r! ".g:tar_cmd." -".g:tar_browseoptions." ".g:tar_shq.tarfile.g:tar_shq)
+   exe "silent r! ".g:tar_cmd." -".g:tar_browseoptions." ".g:tar_shq.tarfile.g:tar_shq
   endif
   if v:shell_error != 0
+   redraw!
    echohl WarningMsg | echo "***warning*** (tar#Browse) please check your g:tar_browseoptions<".g:tar_browseoptions.">"
-   call inputsave()|call input("Press <cr> to continue")|call inputrestore()
+"   call inputsave()|call input("Press <cr> to continue")|call inputrestore()
 "   call Dret("tar#Browse : a:tarfile<".a:tarfile.">")
-   silent %d
-   let eikeep= &ei
-   set ei=BufReadCmd,FileReadCmd
-   exe "r ".a:tarfile
-   let &ei= eikeep
-   1d
    return
   endif
-  if line("$") == curlast || ( line("$") == (curlast + 1) && getline("$") =~? '\c\%(warning\|error\|inappropriate\|unrecognized\)')
+  if line("$") == curlast || ( line("$") == (curlast + 1) && getline("$") =~ '\c\%(warning\|error\|inappropriate\|unrecognized\)')
+   redraw!
    echohl WarningMsg | echo "***warning*** (tar#Browse) ".a:tarfile." doesn't appear to be a tar file" | echohl None
-   call inputsave()|call input("Press <cr> to continue")|call inputrestore()
+"   call inputsave()|call input("Press <cr> to continue")|call inputrestore()
    silent %d
    let eikeep= &ei
    set ei=BufReadCmd,FileReadCmd
@@ -190,14 +195,14 @@ fun! tar#Read(fname,mode)
 "  call Decho("fname<".fname.">")
 
   if tarfile =~# '\.\(gz\|tgz\)$'
-"   call Decho("exe silent r! gzip -d -c '".tarfile."'| tar -OPxf - '".fname."'")
-   exe "silent r! gzip -d -c '".tarfile."'| tar -".g:tar_readoptions." - '".fname."'"
+"   call Decho("exe silent r! gzip -d -c ".g:tar_shq.tarfile.g:tar_shq."| ".g:tar_cmd." -OPxf - '".fname."'")
+   exe "silent r! gzip -d -c ".g:tar_shq.tarfile.g:tar_shq."| ".g:tar_cmd." -".g:tar_readoptions." - '".fname."'"
   elseif tarfile =~# '\.bz2$'
-"   call Decho("exe silent r! bzip2 -d -c '".tarfile."'| tar -".g:tar_readoptions." - '".fname."'")
-   exe "silent r! bzip2 -d -c '".tarfile."'| tar -".g:tar_readoptions." - '".fname."'"
+"   call Decho("exe silent r! bzip2 -d -c ".g:tar_shq.tarfile.g:tar_shq."| ".g:tar_cmd." -".g:tar_readoptions." - '".fname."'")
+   exe "silent r! bzip2 -d -c ".g:tar_shq.tarfile.g:tar_shq."| ".g:tar_cmd." -".g:tar_readoptions." - '".fname."'"
   else
-"   call Decho("exe silent r! tar -".g:tar_readoptions." '".tarfile."' '".fname."'")
-   exe "silent r! ".g:tar_cmd." -".g:tar_readoptions." '".tarfile."' '".fname."'"
+"   call Decho("exe silent r! ".g:tar_cmd." -".g:tar_readoptions." ".g:tar_shq.tarfile.g:tar_shq." ".g:tar_shq.fname.g:tar_shq)
+   exe "silent r! ".g:tar_cmd." -".g:tar_readoptions." ".g:tar_shq.tarfile.g:tar_shq." ".g:tar_shq.fname.g:tar_shq
   endif
   let w:tarfile= a:fname
   exe "file tarfile:".fname
@@ -219,15 +224,17 @@ fun! tar#Write(fname)
 
   " sanity checks
   if !executable(g:tar_cmd)
+   redraw!
    echohl Error | echo '***error*** (tar#Browse) "'.g:tar_cmd.'" not available on your system'
-   call inputsave()|call input("Press <cr> to continue")|call inputrestore()
+"   call inputsave()|call input("Press <cr> to continue")|call inputrestore()
    let &report= repkeep
 "   call Dret("tar#Write")
    return
   endif
   if !exists("*mkdir")
+   redraw!
    echohl Error | echo "***error*** (tar#Write) sorry, mkdir() doesn't work on your system" | echohl None
-   call inputsave()|call input("Press <cr> to continue")|call inputrestore()
+"   call inputsave()|call input("Press <cr> to continue")|call inputrestore()
    let &report= repkeep
 "   call Dret("tar#Write")
    return
@@ -246,8 +253,9 @@ fun! tar#Write(fname)
   try
    exe "cd ".escape(tmpdir,' \')
   catch /^Vim\%((\a\+)\)\=:E344/
+   redraw!
    echohl Error | echo "***error*** (tar#Write) cannot cd to temporary directory" | Echohl None
-   call inputsave()|call input("Press <cr> to continue")|call inputrestore()
+"   call inputsave()|call input("Press <cr> to continue")|call inputrestore()
    let &report= repkeep
 "   call Dret("tar#Write")
    return
@@ -282,8 +290,9 @@ fun! tar#Write(fname)
   endif
 
   if v:shell_error != 0
+   redraw!
    echohl Error | echo "***error*** (tar#Write) sorry, unable to update ".tarfile." with ".fname | echohl None
-   call inputsave()|call input("Press <cr> to continue")|call inputrestore()
+"   call inputsave()|call input("Press <cr> to continue")|call inputrestore()
   else
 
 "   call Decho("tarfile<".tarfile."> fname<".fname.">")
@@ -309,16 +318,18 @@ fun! tar#Write(fname)
 "   call Decho("tar --delete -f '".tarfile."' '".fname."'")
    call system("tar --delete -f '".tarfile."' '".fname."'")
    if v:shell_error != 0
+    redraw!
     echohl Error | echo "***error*** (tar#Write) sorry, unable to update ".tarfile." with ".fname | echohl None
-    call inputsave()|call input("Press <cr> to continue")|call inputrestore()
+"    call inputsave()|call input("Press <cr> to continue")|call inputrestore()
    else
  
     " update tarfile with new file 
 "    call Decho("tar -".g:tar_writeoptions." '".tarfile."' '".fname."'")
     call system("tar -".g:tar_writeoptions." '".tarfile."' '".fname."'")
     if v:shell_error != 0
+     redraw!
      echohl Error | echo "***error*** (tar#Write) sorry, unable to update ".tarfile." with ".fname | echohl None
-     call inputsave()|call input("Press <cr> to continue")|call inputrestore()
+"     call inputsave()|call input("Press <cr> to continue")|call inputrestore()
     elseif exists("compress")
 "     call Decho("call system(".compress.")")
      call system(compress)
@@ -376,4 +387,4 @@ endfun
 " Modelines And Restoration: {{{1
 let &cpo= s:keepcpo
 unlet s:keepcpo
-" vim:ts=8 fdm=marker
+"  vim:ts=8 fdm=marker
--- a/runtime/colors/koehler.vim
+++ b/runtime/colors/koehler.vim
@@ -2,7 +2,7 @@
 " vim: tw=0 ts=4 sw=4
 " Vim color file
 " Maintainer:	Ron Aaron <ron@ronware.org>
-" Last Change:	2006 Mar 26
+" Last Change:	2006 Dec 10
 
 hi clear
 set background=dark
@@ -13,11 +13,11 @@ let g:colors_name = "koehler"
 hi Normal		  guifg=white  guibg=black
 hi Scrollbar	  guifg=darkcyan guibg=cyan
 hi Menu			  guifg=black guibg=cyan
-hi SpecialKey	  term=bold  cterm=bold  ctermfg=darkred  guifg=Blue
-hi NonText		  term=bold  cterm=bold  ctermfg=darkred  gui=bold	guifg=Blue
-hi Directory	  term=bold  cterm=bold  ctermfg=brown	guifg=Blue
-hi ErrorMsg		  term=standout  cterm=bold  ctermfg=grey  ctermbg=blue  guifg=White  guibg=Red
-hi Search		  term=reverse	ctermfg=white  ctermbg=red	guifg=white  guibg=Red
+hi SpecialKey	  term=bold  cterm=bold  ctermfg=darkred  guifg=#cc0000
+hi NonText		  term=bold  cterm=bold  ctermfg=darkred  gui=bold      guifg=#cc0000
+hi Directory	  term=bold  cterm=bold  ctermfg=brown  guifg=#cc8000
+hi ErrorMsg		  term=standout  cterm=bold  ctermfg=grey  ctermbg=red  guifg=White  guibg=Red
+hi Search		  term=reverse  ctermfg=white  ctermbg=red      guifg=white  guibg=Red
 hi MoreMsg		  term=bold  cterm=bold  ctermfg=darkgreen	gui=bold  guifg=SeaGreen
 hi ModeMsg		  term=bold  cterm=bold  gui=bold  guifg=White	guibg=Blue
 hi LineNr		  term=underline  cterm=bold  ctermfg=darkcyan	guifg=Yellow
@@ -26,20 +26,20 @@ hi StatusLine	  term=bold,reverse  cterm
 hi StatusLineNC   term=reverse	ctermfg=white ctermbg=lightblue guifg=white guibg=blue
 hi Title		  term=bold  cterm=bold  ctermfg=darkmagenta  gui=bold	guifg=Magenta
 hi Visual		  term=reverse	cterm=reverse  gui=reverse
-hi WarningMsg	  term=standout  cterm=bold  ctermfg=darkblue  guifg=Red
+hi WarningMsg	  term=standout  cterm=bold  ctermfg=darkred guifg=Red
 hi Cursor		  guifg=bg	guibg=Green
 hi Comment		  term=bold  cterm=bold ctermfg=cyan  guifg=#80a0ff
 hi Constant		  term=underline  cterm=bold ctermfg=magenta  guifg=#ffa0a0
 hi Special		  term=bold  cterm=bold ctermfg=red  guifg=Orange
 hi Identifier	  term=underline   ctermfg=brown  guifg=#40ffff
 hi Statement	  term=bold  cterm=bold ctermfg=yellow	gui=bold  guifg=#ffff60
-hi PreProc		  term=underline  ctermfg=darkblue	guifg=#ff80ff
+hi PreProc		  term=underline  ctermfg=darkmagenta   guifg=#ff80ff
 hi Type			  term=underline  cterm=bold ctermfg=lightgreen  gui=bold  guifg=#60ff60
 hi Error		  term=reverse	ctermfg=darkcyan  ctermbg=black  guifg=Red	guibg=Black
 hi Todo			  term=standout  ctermfg=black	ctermbg=darkcyan  guifg=Blue  guibg=Yellow
-hi CursorLine	  term=underline  guibg=#555555
-hi CursorColumn	  term=underline  guibg=#555555
-hi MatchParen	  term=reverse  guibg=Blue
+hi CursorLine	  term=underline  guibg=#555555 cterm=underline
+hi CursorColumn	  term=underline  guibg=#555555 cterm=underline
+hi MatchParen	  term=reverse  ctermfg=blue guibg=Blue
 hi TabLine		  term=bold,reverse  cterm=bold ctermfg=lightblue ctermbg=white gui=bold guifg=blue guibg=white
 hi TabLineFill	  term=bold,reverse  cterm=bold ctermfg=lightblue ctermbg=white gui=bold guifg=blue guibg=white
 hi TabLineSel	  term=reverse	ctermfg=white ctermbg=lightblue guifg=white guibg=blue
new file mode 100644
--- /dev/null
+++ b/runtime/compiler/decada.vim
@@ -0,0 +1,54 @@
+"------------------------------------------------------------------------------
+"  Description: Vim Ada/Dec Ada compiler file
+"     Language: Ada (Dec Ada)
+"          $Id$
+"    Copyright: Copyright (C) 2006 Martin Krischik
+"   Maintainer:	Martin Krischik
+"      $Author$
+"        $Date$
+"      Version: 4.2
+"    $Revision$
+"     $HeadURL: https://svn.sourceforge.net/svnroot/gnuada/trunk/tools/vim/compiler/decada.vim $
+"      History: 21.07.2006 MK New Dec Ada
+"               15.10.2006 MK Bram's suggestion for runtime integration
+"    Help Page: compiler-decada
+"------------------------------------------------------------------------------
+
+if (exists("current_compiler")	    &&
+   \ current_compiler == "decada")  ||
+   \ version < 700
+   finish
+endif
+
+let current_compiler = "decada"
+
+if !exists("g:decada")
+   let g:decada = decada#New ()
+endif
+
+if exists(":CompilerSet") != 2
+   "
+   " plugin loaded by other means then the "compiler" command
+   "
+   command -nargs=* CompilerSet setlocal <args>
+endif
+
+call g:decada.Set_Session ()
+
+execute "CompilerSet makeprg="     . escape (g:decada.Make_Command, ' ')
+execute "CompilerSet errorformat=" . escape (g:decada.Error_Format, ' ')
+
+call ada#Map_Menu (
+  \'Dec Ada.Build',
+  \'<F7>',
+  \'call decada.Make ()')
+
+finish " 1}}}
+
+"------------------------------------------------------------------------------
+"   Copyright (C) 2006  Martin Krischik
+"
+"   Vim is Charityware - see ":help license" or uganda.txt for licence details.
+"------------------------------------------------------------------------------
+" vim: textwidth=78 wrap tabstop=8 shiftwidth=3 softtabstop=3 noexpandtab
+" vim: foldmethod=marker
new file mode 100644
--- /dev/null
+++ b/runtime/compiler/gnat.vim
@@ -0,0 +1,71 @@
+"------------------------------------------------------------------------------
+"  Description: Vim Ada/GNAT compiler file
+"     Language: Ada (GNAT)
+"          $Id$
+"    Copyright: Copyright (C) 2006 Martin Krischik
+"   Maintainer:	Martin Krischik
+"      $Author$
+"        $Date$
+"      Version: 4.2
+"    $Revision$
+"     $HeadURL: https://svn.sourceforge.net/svnroot/gnuada/trunk/tools/vim/compiler/gnat.vim $
+"      History: 24.05.2006 MK Unified Headers
+"		16.07.2006 MK Ada-Mode as vim-ball
+"               15.10.2006 MK Bram's suggestion for runtime integration
+"    Help Page: compiler-gnat
+"------------------------------------------------------------------------------
+
+if (exists("current_compiler")	    &&
+   \ current_compiler == "gnat")    ||
+   \ version < 700
+   finish
+endif
+
+let current_compiler = "gnat"
+
+if !exists("g:gnat")
+   let g:gnat = gnat#New ()
+
+   call ada#Map_Menu (
+      \ 'GNAT.Build',
+      \ '<F7>',
+      \ 'call gnat.Make ()')
+   call ada#Map_Menu (
+      \ 'GNAT.Pretty Print',
+      \ ':GnatPretty',
+      \ 'call gnat.Pretty ()')
+   call ada#Map_Menu (
+      \ 'GNAT.Tags',
+      \ ':GnatTags',
+      \ 'call gnat.Tags ()')
+   call ada#Map_Menu (
+      \ 'GNAT.Find',
+      \ ':GnatFind',
+      \ 'call gnat.Find ()')
+   call ada#Map_Menu (
+      \ 'GNAT.Set Projectfile\.\.\.',
+      \ ':SetProject',
+      \ 'call gnat.Set_Project_File ()')
+endif
+
+if exists(":CompilerSet") != 2
+   "
+   " plugin loaded by other means then the "compiler" command
+   "
+   command -nargs=* CompilerSet setlocal <args>
+endif
+
+call g:gnat.Set_Session ()
+
+execute "CompilerSet makeprg="     . escape (g:gnat.Get_Command('Make'), ' ')
+execute "CompilerSet errorformat=" . escape (g:gnat.Error_Format, ' ')
+
+finish " 1}}}
+
+"------------------------------------------------------------------------------
+"   Copyright (C) 2006  Martin Krischik
+"
+"   Vim is Charityware - see ":help license" or uganda.txt for licence details.
+"------------------------------------------------------------------------------
+" vim: textwidth=0 wrap tabstop=8 shiftwidth=3 softtabstop=3 noexpandtab
+" vim: foldmethod=marker
new file mode 100644
--- /dev/null
+++ b/runtime/compiler/mcs.vim
@@ -0,0 +1,24 @@
+" Vim compiler file
+" Compiler:    Mono C# Compiler
+" Maintainer:  Jarek Sobiecki <harijari@go2.pl>
+" Latest Revision: 2006-06-18
+
+if exists("current_compiler")
+  finish
+endif
+let current_compiler = "mcs"
+
+let s:cpo_save = &cpo
+set cpo-=C
+
+setlocal errorformat=
+         \%E%f(%l\\,%c):\ error\ CS%n:%m,
+         \%W%f(%l\\,%c):\ warning\ CS%n:%m,
+         \%E%>syntax\ error\\,%m,%Z%f(%l\\,%c):\ error\ CS%n:%m,
+         \%D%*\\a[%*\\d]:\ Entering\ directory\ `%f',
+         \%X%*\\a[%*\\d]:\ Leaving\ directory\ `%f',
+         \%DMaking\ %*\\a\ in\ %f,
+         \%G-%.%#
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
new file mode 100644
--- /dev/null
+++ b/runtime/doc/ada.txt
@@ -0,0 +1,515 @@
+*ada.txt*	For Vim version 7.1a.  Last change: 2006 Nov 12
+
+
+		    ADA FILE TYPE PLUG-INS REFERENCE MANUAL~
+
+ADA								      *ada.vim*
+
+1.  Syntax Highlighting			    |ft-ada-syntax|
+2.  Plug-in				    |ft-ada-plugin|
+3.  Omni Completion			    |ft-ada-omni|
+    3.1 Omni Completion with "gnat xref"	|gnat-xref|
+    3.2 Omni Completion with "ctags"		|ada-ctags|
+4.  Compiler Support			    |ada-compiler|
+    4.1 GNAT					|compiler-gnat|
+    4.1 Dec Ada					|compiler-decada|
+5.  References				    |ada-reference|
+    5.1 Options					|ft-ada-options|
+    5.2 Functions				|ft-ada-functions|
+    5.3 Commands				|ft-ada-commands|
+    5.4 Variables				|ft-ada-variables|
+    5.5 Constants				|ft-ada-constants|
+8.  Extra Plug-ins			    |ada-extra-plugins|
+
+==============================================================================
+1. Syntax Highlighting ~
+							       *ft-ada-syntax*
+
+This mode is designed for the 2005 edition of Ada ("Ada 2005"), which includes
+support for objected-programming, protected types, and so on.  It handles code
+written for the original Ada language ("Ada83", "Ada87", "Ada95") as well,
+though code which uses Ada 2005-only keywords will be wrongly colored (such
+code should be fixed anyway).  For more information about Ada, see
+http://www.adapower.com.
+
+The Ada mode handles a number of situations cleanly.
+
+For example, it knows that the "-" in "-5" is a number, but the same character
+in "A-5" is an operator.  Normally, a "with" or "use" clause referencing
+another compilation unit is coloured the same way as C's "#include" is coloured.
+If you have "Conditional" or "Repeat" groups coloured differently, then "end
+if" and "end loop" will be coloured as part of those respective groups.
+
+You can set these to different colours using vim's "highlight" command (e.g.,
+to change how loops are displayed, enter the command ":hi Repeat" followed by
+the colour specification; on simple terminals the colour specification
+ctermfg=White often shows well).
+
+There are several options you can select in this Ada mode. See|ft-ada-options|
+for a complete list.
+
+To enable them, assign a value to the option.  For example, to turn one on:
+ >
+    > let g:ada_standard_types = 1
+>
+To disable them use ":unlet".  Example:
+>
+    > unlet g:ada_standard_types
+
+You can just use ":" and type these into the command line to set these
+temporarily before loading an Ada file.  You can make these option settings
+permanent by adding the "let" command(s), without a colon, to your "~/.vimrc"
+file.
+
+Even on a slow (90Mhz) PC this mode works quickly, but if you find the
+performance unacceptable, turn on |g:ada_withuse_ordinary|.
+
+Syntax folding instructions (|fold-syntax|) are added when |g:ada_folding| is
+set.
+
+==============================================================================
+2. File type Plug-in ~
+					       *ft-ada-indent* *ft-ada-plugin*
+
+The Ada plug-in provides support for:
+
+ - auto indenting	(|indent.txt|)
+ - insert completion	(|i_CTRL-N|)
+ - user completion	(|i_CTRL-X_CTRL-U|)
+ - tag searches		(|tagsrch.txt|)
+ - Quick Fix		(|quickfix.txt|)
+ - backspace handling	(|'backspace'|)
+ - comment handling	(|'comments'|, |'commentstring'|)
+
+The plug-in only activates the features of the Ada mode whenever an Ada
+files is opened and add adds Ada related entries to the main and pop-up menu.
+
+==============================================================================
+3. Omni Completion ~
+								 *ft-ada-omni*
+
+The Ada omni-completions (|i_CTRL-X_CTRL-O|) uses tags database created either
+by "gnat xref -v" or the "exuberant Ctags (http://ctags.sourceforge.net).  The
+complete function will automatically detect which tool was used to create the
+tags file.
+
+------------------------------------------------------------------------------
+3.1 Omni Completion with "gnat xref" ~
+								   *gnat-xref*
+
+GNAT XREF uses the compiler internal informations (ali-files) to produce the
+tags file. This has the advantage to be 100% correct and the option of deep
+nested analysis. However the code must compile, the generator is quite
+slow and the created tags file contains only the basic Ctags informations for
+each entry - not enough for some of the more advanced Vim code browser
+plug-ins.
+
+NOTE: "gnat xref -v" is very tricky to use as it has almost no diagnostic
+       output - If nothing is printed then usually the parameters are wrong.
+       Here some important tips:
+
+1)  You need to compile your code first and use the "-aO" option to point to
+    your .ali files.
+2)  "gnat xref -v ../Include/adacl.ads" won't work - use  the "gnat xref -v
+    -aI../Include adacl.ads" instead.
+3)  "gnat xref -v -aI../Include *.ad?" won't work - use "cd ../Include" and
+    then "gnat xref -v *.ad?"
+4)  Project manager support is completely broken - don't even try "gnat xref
+    -Padacl.gpr".
+5)  VIM is faster when the tags file is sorted - use "sort --unique
+    --ignore-case --output=tags tags" .
+6)  Remember to insert "!_TAG_FILE_SORTED 2 %sort ui" as first line to mark
+    the file assorted.
+
+------------------------------------------------------------------------------
+3.2 Omni Completion with "ctags"~
+								   *ada-ctags*
+
+Exuberant Ctags uses it's own multi-language code parser. The parser is quite
+fast, produces a lot of extra informations (hence the name "Exuberant Ctags")
+and can run on files which currently do not compile.
+
+There are also lots of other Vim-tools which use exuberant Ctags.
+
+You will need to install a version of the Exuberant Ctags which has Ada
+support patched in. Such a version is available from the GNU Ada Project
+(http://gnuada.sourceforge.net).
+
+The Ada parser for Exuberant Ctags is fairly new - don't expect complete
+support yet.
+
+==============================================================================
+4.  Compiler Support ~
+								*ada-compiler*
+
+The Ada mode supports more then one Ada compiler and will automatically load the
+compiler set in|g:ada_default_compiler|whenever an Ada source is opened. The
+provided compiler plug-ins are split into the actual compiler plug-in and a
+collection of support functions and variables. This allows the easy
+development of specialized compiler plug-ins fine tuned to your development
+environment.
+
+------------------------------------------------------------------------------
+4.1 GNAT ~
+							       *compiler-gnat*
+
+GNAT is the only free (beer and speech) Ada compiler available. There are
+several version available which differentiate in the licence terms used.
+
+The GNAT compiler plug-in will perform a compile on pressing <F7> and then
+immediately shows the result. You can set the project file to be used by
+setting:
+ >
+ > call g:gnat.Set_Project_File ('my_project.gpr')
+
+Setting a project file will also create a Vim session (|views-sessions|) so -
+like with the GPS - opened files, window positions etc. will remembered
+separately for all projects.
+
+								*gnat_members*
+GNAT OBJECT ~
+
+							       *g:gnat.Make()*
+g:gnat.Make()
+		Calls|g:gnat.Make_Command|and displays the result inside a
+               |quickfix| window.
+
+							     *g:gnat.Pretty()*
+g:gnat.Pretty()
+		Calls|g:gnat.Pretty_Command|
+
+							       *g:gnat.Find()*
+g:gnat.Find()
+		Calls|g:gnat.Find_Command|
+
+							       *g:gnat.Tags()*
+g:gnat.Tags()
+		Calls|g:gnat.Tags_Command|
+
+						   *g:gnat.Set_Project_File()*
+g:gnat.Set_Project_File([{file}])
+		Set gnat project file and load associated session.  An open
+		project will be closed and the session written.  If called
+		without file name the file selector opens for selection of a
+		project file. If called with an empty string then the project
+		and associated session are closed.
+
+							 *g:gnat.Project_File*
+g:gnat.Project_File	string
+		Current project file.
+
+							 *g:gnat.Make_Command*
+g:gnat.Make_Command	string
+		External command used for|g:gnat.Make()| (|'makeprg'|).
+
+						       *g:gnat.Pretty_Program*
+g:gnat.Pretty_Program	string
+		External command used for|g:gnat.Pretty()|
+
+							 *g:gnat.Find_Program*
+g:gnat.Find_Program	string
+		External command used for|g:gnat.Find()|
+
+							 *g:gnat.Tags_Command*
+g:gnat.Tags_Command	string
+		External command used for|g:gnat.Tags()|
+
+							 *g:gnat.Error_Format*
+g:gnat.Error_Format	string
+		Error format (|'errorformat'|)
+
+------------------------------------------------------------------------------
+4.2 Dec Ada ~
+					    *compiler-hpada* *compiler-decada*
+					*compiler-vaxada* *compiler-compaqada*
+
+Dec Ada (also known by - in chronological order - VAX Ada, Dec Ada, Compaq Ada
+and HP Ada) is a fairly dated Ada 83 compiler. Support is basic: <F7> will
+compile the current unit.
+
+The Dec Ada compiler expects the package name and not the file name to be
+passed a parameter. The compiler plug-in supports the usual file name
+convention to convert the file into a unit name. For separates both '-' and
+'__' are allowed.
+
+							      *decada_members*
+DEC ADA OBJECT ~
+
+							     *g:decada.Make()*
+g:decada.Make()		function
+		Calls|g:decada.Make_Command|and displays the result inside a
+               |quickfix| window.
+
+							*g:decada.Unit_Name()*
+g:decada.Unit_Name()	function
+		Get the Unit name for the current file.
+
+						       *g:decada.Make_Command*
+g:decada.Make_Command	string
+		External command used for|g:decadat.Make()| (|'makeprg'|).
+
+						       *g:decada.Error_Format*
+g:decada.Error_Format|	string
+		Error format (|'errorformat'|).
+
+==============================================================================
+5. References ~
+							       *ada-reference*
+
+------------------------------------------------------------------------------
+5.1 Options ~
+							      *ft-ada-options*
+
+							*g:ada_standard_types*
+g:ada_standard_types	bool (true when exists)
+		Highlight types in package Standard (e.g., "Float")
+
+							  *g:ada_space_errors*
+						  *g:ada_no_trail_space_error*
+						    *g:ada_no_tab_space_error*
+							 *g:ada_all_tab_usage*
+g:ada_space_errors	 bool (true when exists)
+		Highlight extraneous errors in spaces ...
+		g:ada_no_trail_space_error
+		    - but ignore trailing spaces at the end of a line
+		g:ada_no_tab_space_error
+		    - but ignore tabs after spaces
+		g:ada_all_tab_usage
+		    - highlight all tab use
+
+							   *g:ada_line_errors*
+g:ada_line_errors	  bool (true when exists)
+		Highlight lines which are to long. Note: This highlighting
+		option is quite CPU intensive.
+
+							 *g:ada_rainbow_color*
+g:ada_rainbow_color	  bool (true when exists)
+		Use rainbow colours for '(' and ')'. You need the
+		rainbow_parenthesis for this to work
+
+							       *g:ada_folding*
+g:ada_folding		  set ('sigpft')
+		Use folding for Ada sources.
+		    's':    activate syntax folding on load
+			'p':    fold packages
+			'f':    fold functions and procedures
+			't':    fold types
+			'c':    fold conditionals
+		    'g':    activate gnat pretty print folding on load
+			'i':    lone 'is' folded with line above
+			'b':	lone 'begin' folded with line above
+			'p':	lone 'private' folded with line above
+			'x':	lone 'exception' folded with line above
+		    'i':    activate indent folding on load
+
+		Note: Syntax folding is in an early (unuseable) stage and
+		      indent or gnat pretty folding is suggested.
+
+		For gnat pretty folding to work the following settings are
+		suggested: -cl3 -M79 -c2 -c3 -c4 -A1 -A2 -A3 -A4 -A5
+
+		For indent folding to work the following settings are
+		suggested: shiftwidth=3 softtabstop=3
+
+								*g:ada_abbrev*
+g:ada_abbrev		  bool (true when exists)
+		Add some abbreviations. This feature more or less superseded
+		by the various completion methods.
+
+						      *g:ada_withuse_ordinary*
+g:ada_withuse_ordinary	  bool (true when exists)
+		Show "with" and "use" as ordinary keywords (when used to
+		reference other compilation units they're normally highlighted
+		specially).
+
+							 *g:ada_begin_preproc*
+g:ada_begin_preproc	  bool (true when exists)
+		Show all begin-like keywords using the colouring of C
+		preprocessor commands.
+
+						    *g:ada_omni_with_keywords*
+g:ada_omni_with_keywords
+		Add Keywords, Pragmas, Attributes to omni-completions
+		(|compl-omni|). Note: You can always complete then with user
+		completion (|i_CTRL-X_CTRL-U|).
+
+						      *g:ada_extended_tagging*
+g:ada_extended_tagging	  enum ('jump', 'list')
+		use extended tagging, two options are available
+		    'jump': use tjump to jump.
+		    'list': add tags quick fix list.
+		Normal tagging does not support function or operator
+		overloading as these features are not available in C and
+		tagging was originally developed for C.
+
+						   *g:ada_extended_completion*
+g:ada_extended_completion
+		Uses extended completion for <C-N> and <C-R> completions
+		(|i_CTRL-N|). In this mode the '.' is used as part of the
+		identifier so that 'Object.Method' or 'Package.Procedure' are
+		completed together.
+
+						       *g:ada_gnat_extensions*
+g:ada_gnat_extensions	  bool (true when exists)
+		 Support GNAT extensions.
+
+					       *g:ada_with_gnat_project_files*
+g:ada_with_gnat_project_files	 bool (true when exists)
+		 Add gnat project file keywords and Attributes.
+
+						      *g:ada_default_compiler*
+g:ada_default_compiler	  string
+		set default compiler. Currently supported is 'gnat' and
+		'decada'.
+
+An "exists" type is a boolean is considered true when the variable is defined
+and false when the variable is undefined. The value which the variable is
+set makes no difference.
+
+------------------------------------------------------------------------------
+5.3 Commands ~
+							     *ft-ada-commands*
+
+:AdaRainbow							 *:AdaRainbow*
+		Toggles rainbow colour (|g:ada_rainbow_color|) mode for
+		'(' and ')'
+
+:AdaLines							   *:AdaLines*
+		Toggles line error (|g:ada_line_errors|) display
+
+:AdaSpaces							  *:AdaSpaces*
+		Toggles space error (|g:ada_space_errors|) display.
+
+:AdaTagDir							  *:AdaTagDir*
+		Creates tags file for the directory of the current file.
+
+:AdaTagFile							 *:AdaTagFile*
+		Creates tags file for the current file.
+
+:AdaTypes							   *:AdaTypes*
+		Toggles standard types (|g:ada_standard_types|) colour.
+
+:GnatFind							   *:GnatFind*
+		Calls |g:gnat.Find()|
+
+:GnatPretty							 *:GnatPretty*
+		Calls |g:gnat.Pretty()|
+
+:GnatTags							   *:GnatTags*
+		Calls |g:gnat.Tags()|
+
+------------------------------------------------------------------------------
+5.3 Variables ~
+							    *ft-ada-variables*
+
+								      *g:gnat*
+g:gnat			    object
+		Control object which manages GNAT compiles.  The object
+		is created when the first Ada source code is loaded provided
+		that |g:ada_default_compiler|is set to 'gnat'. See|gnat_members|
+		for details.
+
+								    *g:decada*
+g:decada		      object
+		Control object which manages Dec Ada compiles.	The object
+		is created when the first Ada source code is loaded provided
+		that |g:ada_default_compiler|is set to 'decada'. See
+	       |decada_members|for details.
+
+------------------------------------------------------------------------------
+5.4 Constants ~
+							    *ft-ada-constants*
+
+All constants are locked. See |:lockvar| for details.
+
+							     *g:ada#WordRegex*
+g:ada#WordRegex		string
+		Regular expression to search for Ada words
+
+							  *g:ada#DotWordRegex*
+g:ada#DotWordRegex	string
+		Regular expression to search for Ada words separated by dots.
+
+							       *g:ada#Comment*
+g:ada#Comment		string
+		Regular expression to search for Ada comments
+
+							      *g:ada#Keywords*
+g:ada#Keywords		list of dictionaries
+		List of keywords, attributes etc. pp. in the format used by
+		omni completion. See |complete-items| for details.
+
+							   *g:ada#Ctags_Kinds*
+g:ada#Ctags_Kinds	dictionary of lists
+		Dictionary of the various kinds of items which the Ada support
+		for Ctags generates.
+
+------------------------------------------------------------------------------
+5.2 Functions ~
+							    *ft-ada-functions*
+
+ada#Word([{line}, {col}])					  *ada#Word()*
+		Return full name of Ada entity under the cursor (or at given
+		line/column), stripping white space/newlines as necessary.
+
+ada#List_Tag([{line}, {col}])				      *ada#Listtags()*
+		List all occurrences of the Ada entity under the cursor (or at
+		given line/column) inside the quick-fix window
+
+ada#Jump_Tag ({ident}, {mode})				      *ada#Jump_Tag()*
+		List all occurrences of the Ada entity under the cursor (or at
+		given line/column) in the tag jump list. Mode can either be
+		'tjump' or 'stjump'.
+
+ada#Create_Tags ({option})				   *ada#Create_Tags()*
+		Creates tag file using Ctags. The option can either be 'file'
+		for the current file, 'dir' for the directory of the current
+		file or a file name.
+
+gnat#Insert_Tags_Header()			   *gnat#Insert_Tags_Header()*
+		Adds the tag file header (!_TAG_) informations to the current
+		file which are missing from the GNAT XREF output.
+
+ada#Switch_Syntax_Option ({option})		  *ada#Switch_Syntax_Option()*
+		Toggles highlighting options on or off. Used for the Ada menu.
+
+								  *gnat#New()*
+gnat#New ()
+		Create a new gnat object. See |g:gnat| for details.
+
+
+==============================================================================
+8. Extra Plugins ~
+							   *ada-extra-plugins*
+
+You can optionally install the following extra plug-in. They work well with Ada
+and enhance the ability of the Ada mode.:
+
+backup.vim
+	http://www.vim.org/scripts/script.php?script_id=1537
+	Keeps as many backups as you like so you don't have to.
+
+rainbow_parenthsis.vim
+	http://www.vim.org/scripts/script.php?script_id=1561
+	Very helpful since Ada uses only '(' and ')'.
+
+nerd_comments.vim
+	http://www.vim.org/scripts/script.php?script_id=1218
+	Excellent commenting and uncommenting support for almost any
+	programming language.
+
+matchit.vim
+	http://www.vim.org/scripts/script.php?script_id=39
+	'%' jumping for any language. The normal '%' jump only works for '{}'
+	style languages. The Ada mode will set the needed search patters.
+
+taglist.vim
+	http://www.vim.org/scripts/script.php?script_id=273
+	Source code explorer sidebar. There is a patch for Ada available.
+
+The GNU Ada Project distribution (http://gnuada.sourceforge.net) of Vim
+contains all of the above.
+
+==============================================================================
+vim: textwidth=78 nowrap tabstop=8 shiftwidth=4 softtabstop=4 noexpandtab
+vim: filetype=help encoding=latin1
--- a/runtime/doc/arabic.txt
+++ b/runtime/doc/arabic.txt
@@ -1,4 +1,4 @@
-*arabic.txt*	For Vim version 7.0.  Last change: 2005 Mar 29
+*arabic.txt*	For Vim version 7.1a.  Last change: 2005 Mar 29
 
 
 		  VIM REFERENCE MANUAL	  by Nadim Shaikli
--- a/runtime/doc/farsi.txt
+++ b/runtime/doc/farsi.txt
@@ -1,4 +1,4 @@
-*farsi.txt*     For Vim version 7.0.  Last change: 2005 Mar 29
+*farsi.txt*     For Vim version 7.1a.  Last change: 2005 Mar 29
 
 
 		  VIM REFERENCE MANUAL    by Mortaza Ghassab Shiran
--- a/runtime/doc/filetype.txt
+++ b/runtime/doc/filetype.txt
@@ -1,4 +1,4 @@
-*filetype.txt*  For Vim version 7.0.  Last change: 2006 Apr 28
+*filetype.txt*  For Vim version 7.1a.  Last change: 2007 Mar 24
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -43,6 +43,8 @@ Detail: The ":filetype on" command will 
 	BufNewFile and BufRead events.  If the file type is not found by the
 	name, the file $VIMRUNTIME/scripts.vim is used to detect it from the
 	contents of the file.
+	When the GUI is running or will start soon, the menu.vim script is
+	also sourced.  See |'go-M'| about avoiding that.
 
 To add your own file types, see |new-filetype| below.  To search for help on a
 filetype prepend "ft-" and optionally append "-syntax", "-indent" or
@@ -304,24 +306,28 @@ all loaded.  For example, if this comman
 
 	set runtimepath
 
-produces this output: >
+produces this output:
 
-	runtimepath=/etc/vim,~/.vim,/usr/local/share/vim/vim60
+	runtimepath=/etc/vim,~/.vim,/usr/local/share/vim/vim60 ~
 
-then Vim will load all plugins in these directories: >
+then Vim will load all plugins in these directories and below:
 
-	/etc/vim/plugin/
-	~/.vim/plugin/
-	/usr/local/share/vim/vim60/plugin/
+	/etc/vim/plugin/  ~
+	~/.vim/plugin/  ~
+	/usr/local/share/vim/vim60/plugin/  ~
 
 Note that the last one is the value of $VIMRUNTIME which has been expanded.
 
 What if it looks like your plugin is not being loaded?  You can find out what
 happens when Vim starts up by using the |-V| argument: >
-	vim -V1
+
+	vim -V2
+
 You will see a lot of messages, in between them is a remark about loading the
-plugins.  It starts with: >
-	Searching for "plugin/*.vim" in
+plugins.  It starts with:
+
+	Searching for "plugin/**/*.vim" in ~
+
 There you can see where Vim looks for your plugin scripts.
 
 ==============================================================================
--- a/runtime/doc/hebrew.txt
+++ b/runtime/doc/hebrew.txt
@@ -1,4 +1,4 @@
-*hebrew.txt*    For Vim version 7.0.  Last change: 2003 May 11
+*hebrew.txt*    For Vim version 7.1a.  Last change: 2003 May 11
 
 
 	   VIM REFERENCE MANUAL    by Ron Aaron (and Avner Lottem)
--- a/runtime/doc/howto.txt
+++ b/runtime/doc/howto.txt
@@ -1,4 +1,4 @@
-*howto.txt*	For Vim version 7.0.  Last change: 2006 Apr 02
+*howto.txt*	For Vim version 7.1a.  Last change: 2006 Apr 02
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
--- a/runtime/doc/intro.txt
+++ b/runtime/doc/intro.txt
@@ -1,4 +1,4 @@
-*intro.txt*     For Vim version 7.0.  Last change: 2006 Apr 20
+*intro.txt*     For Vim version 7.1a.  Last change: 2006 Apr 20
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
--- a/runtime/doc/os_amiga.txt
+++ b/runtime/doc/os_amiga.txt
@@ -1,4 +1,4 @@
-*os_amiga.txt*  For Vim version 7.0.  Last change: 2005 Mar 29
+*os_amiga.txt*  For Vim version 7.1a.  Last change: 2005 Mar 29
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
--- a/runtime/doc/os_dos.txt
+++ b/runtime/doc/os_dos.txt
@@ -1,4 +1,4 @@
-*os_dos.txt*    For Vim version 7.0.  Last change: 2006 Mar 30
+*os_dos.txt*    For Vim version 7.1a.  Last change: 2006 Mar 30
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
--- a/runtime/doc/os_win32.txt
+++ b/runtime/doc/os_win32.txt
@@ -1,4 +1,4 @@
-*os_win32.txt*  For Vim version 7.0.  Last change: 2006 Apr 30
+*os_win32.txt*  For Vim version 7.1a.  Last change: 2007 Apr 22
 
 
 		  VIM REFERENCE MANUAL    by George Reilly
@@ -269,7 +269,7 @@ A. When writing a file Vim renames the o
 Q. How do I get to see the output of ":make" while it's running?
 A. Basically what you need is to put a tee program that will copy its input
    (the output from make) to both stdout and to the errorfile.  You can find a
-   copy of tee (and a number of other GNU tools tools) at
+   copy of tee (and a number of other GNU tools) at
    http://gnuwin32.sourceforge.net or http://unxutils.sourceforge.net
    Alternatively, try the more recent Cygnus version of the GNU tools at
    http://www.cygwin.com  Other Unix-style tools for Win32 are listed at
--- a/runtime/doc/pattern.txt
+++ b/runtime/doc/pattern.txt
@@ -1,4 +1,4 @@
-*pattern.txt*   For Vim version 7.0.  Last change: 2006 Apr 30
+*pattern.txt*   For Vim version 7.1a.  Last change: 2007 Apr 24
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -587,7 +587,7 @@ overview.
 	{Vi does not have any of these}
 
 	n and m are positive decimal numbers or zero
-
+								*non-greedy*
 	If a "-" appears immediately after the "{", then a shortest match
 	first algorithm is used (see example below).  In particular, "\{-}" is
 	the same as "*" but uses the shortest match first algorithm.  BUT: A
@@ -969,7 +969,7 @@ x	A single character, with no special me
 	[xyz]		any 'x', 'y' or 'z'
 	[a-zA-Z]$	any alphabetic character at the end of a line
 	\c[a-z]$	same
-
+								*/[\n]*
 	With "\_" prepended the collection also includes the end-of-line.
 	The same can be done by including "\n" in the collection.  The
 	end-of-line is also matched when the collection starts with "^"!  Thus
@@ -1042,6 +1042,7 @@ x	A single character, with no special me
 		\t	<Tab>
 		\r	<CR>	(NOT end-of-line!)
 		\b	<BS>
+		\n	line break, see above |/[\n]|
 		\d123	decimal number of character
 		\o40	octal number of character up to 0377
 		\x20	hexadecimal number of character up to 0xff
@@ -1068,6 +1069,8 @@ x	A single character, with no special me
 	You don't often have to use it, but it is possible.  Example: >
 		/\<r\%[[eo]ad]\>
 <	Matches the words "r", "re", "ro", "rea", "roa", "read" and "road".
+	There can be no \(\), \%(\) or \z(\) items inside the [] and \%[] does
+	not nest.
 	{not available when compiled without the +syntax feature}
 
 				*/\%d* */\%x* */\%o* */\%u* */\%U* *E678*
@@ -1145,7 +1148,7 @@ composing character by itself, except th
 this.
 
 The order of composing characters matters, even though changing the order
-doen't change what a character looks like.  This may change in the future.
+doesn't change what a character looks like.  This may change in the future.
 
 ==============================================================================
 9. Compare with Perl patterns				*perl-patterns*
@@ -1219,6 +1222,10 @@ 10. Highlighting matches				*match-highl
 		'ignorecase' does not apply, use |/\c| in the pattern to
 		ignore case.  Otherwise case is not ignored.
 
+		When matching end-of-line and Vim redraws only part of the
+		display you may get unexpected results.  That is because Vim
+		looks for a match in the line where redrawing starts.
+
 		Also see |matcharg()|, it returns the highlight group and
 		pattern of a previous :match command.
 
--- a/runtime/doc/pi_spec.txt
+++ b/runtime/doc/pi_spec.txt
@@ -1,4 +1,4 @@
-*pi_spec.txt*   For Vim version 7.0.  Last change: 2006 Apr 24
+*pi_spec.txt*   For Vim version 7.1a.  Last change: 2006 Apr 24
 
 by Gustavo Niemeyer ~
 
--- a/runtime/doc/quotes.txt
+++ b/runtime/doc/quotes.txt
@@ -1,4 +1,4 @@
-*quotes.txt*    For Vim version 7.0.  Last change: 2006 Apr 24
+*quotes.txt*    For Vim version 7.1a.  Last change: 2006 Apr 24
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
--- a/runtime/doc/remote.txt
+++ b/runtime/doc/remote.txt
@@ -1,4 +1,4 @@
-*remote.txt*    For Vim version 7.0.  Last change: 2006 Apr 30
+*remote.txt*    For Vim version 7.1a.  Last change: 2006 Apr 30
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
--- a/runtime/doc/repeat.txt
+++ b/runtime/doc/repeat.txt
@@ -1,4 +1,4 @@
-*repeat.txt*    For Vim version 7.0.  Last change: 2006 Apr 30
+*repeat.txt*    For Vim version 7.1a.  Last change: 2007 Jan 07
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -53,6 +53,13 @@ 2. Multiple repeats					*multi-repeat*
 :[range]v[global]/{pattern}/[cmd]
 			Same as :g!.
 
+Instead of the '/' which surrounds the {pattern}, you can use any other
+single byte character, but not an alphanumeric character, '\', '"' or '|'.
+This is useful if you want to include a '/' in the search pattern or
+replacement string.
+
+For the definition of a pattern, see |pattern|.
+
 The global commands work by first scanning through the [range] lines and
 marking each line where a match occurs (for a multi-line pattern, only the
 start of the match matters).
@@ -656,4 +663,7 @@ mind there are various things that may c
 - Profiling may give weird results on multi-processor systems, when sleep
   mode kicks in or the processor frequency is reduced to save power.
 
+- The "self" time is wrong when a function is used recursively.
+
+
  vim:tw=78:ts=8:ft=help:norl:
--- a/runtime/doc/scroll.txt
+++ b/runtime/doc/scroll.txt
@@ -1,4 +1,4 @@
-*scroll.txt*    For Vim version 7.0.  Last change: 2006 Apr 24
+*scroll.txt*    For Vim version 7.1a.  Last change: 2006 Aug 27
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -223,7 +223,7 @@ jump to a location where the current win
 behavior can be changed by clearing the 'jump' flag from the 'scrollopt'
 option.
 
-							*syncbind* *:syncbind*
+						*syncbind* *:syncbind* *:sync*
 :syncbind		Force all 'scrollbind' windows to have the same
 			relative offset.  I.e., when any of the 'scrollbind'
 			windows is scrolled to the top of its buffer, all of
--- a/runtime/doc/spell.txt
+++ b/runtime/doc/spell.txt
@@ -1,4 +1,4 @@
-*spell.txt*	For Vim version 7.0.  Last change: 2006 Apr 30
+*spell.txt*	For Vim version 7.1a.  Last change: 2007 Apr 22
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -16,6 +16,10 @@ 4. Spell file format		|spell-file-format
 Spell checking is not available when the |+syntax| feature has been disabled
 at compile time.
 
+Note: There also is a vimspell plugin.  If you have it you can do ":help
+vimspell" to find about it.  But you will probably want to get rid of the
+plugin and use the 'spell' option instead, it works better.
+
 ==============================================================================
 1. Quick start						*spell-quickstart*
 
@@ -409,6 +413,7 @@ 3.  everywhere but specific items  use "
 For the second method adding the @NoSpell cluster will disable spell checking
 again.  This can be used, for example, to add @Spell to the comments of a
 program, and add @NoSpell for items that shouldn't be checked.
+Also see |:syn-spell| for text that is not in a syntax item.
 
 
 VIM SCRIPTS
@@ -465,7 +470,7 @@ the word list and keeps it small.
 You can create a Vim spell file from the .aff and .dic files that Myspell
 uses.  Myspell is used by OpenOffice.org and Mozilla.  You should be able to
 find them here:
-	http://lingucomponent.openoffice.org/spell_dic.html
+	http://wiki.services.openoffice.org/wiki/Dictionaries
 You can also use a plain word list.  The results are the same, the choice
 depends on what word lists you can find.
 
@@ -546,7 +551,7 @@ 1. Obtain the xx_YY.aff and xx_YY.dic fi
 2. Make a copy of these files to xx_YY.orig.aff and xx_YY.orig.dic.
 3. Change the xx_YY.aff and xx_YY.dic files to remove bad words, add missing
    words, define word characters with FOL/LOW/UPP, etc.  The distributed
-   "src/spell/*.diff" files can be used.
+   "*.diff" files can be used.
 4. Start Vim with the right locale and use |:mkspell| to generate the Vim
    spell file.
 5. Try out the spell file with ":set spell spelllang=xx" if you wrote it in
@@ -646,7 +651,7 @@ exceptions:
   only ASCII letters for most of the words.
 
 The default "spellfile.vim" plugin uses this autocommand, if you define your
-autocommand afterwars you may want to use ":au! SpellFileMissing" to overrule
+autocommand afterwards you may want to use ":au! SpellFileMissing" to overrule
 it.  If you define your autocommand before the plugin is loaded it will notice
 this and not do anything.
 
@@ -1332,7 +1337,7 @@ With the example "ideeen" has three syll
 
 Only case-folded letters need to be included.
 
-Above another way to restrict compounding was mentioned above: Adding the
+Another way to restrict compounding was mentioned above: Adding the
 |spell-COMPOUNDFORBIDFLAG| flag to an affix causes all words that are made
 with that affix not be be used for compounding.
 
@@ -1510,7 +1515,7 @@ COMPLEXPREFIXES  (Hunspell)				*spell-CO
 		Enables using two prefixes.  Not supported.
 
 COMPOUND	(Hunspell)				*spell-COMPOUND*
-		This is one line with the count of COMPOUND items, followd by
+		This is one line with the count of COMPOUND items, followed by
 		that many COMPOUND lines with a pattern.
 		Remove the first line with the count and rename the other
 		items to COMPOUNDRULE |spell-COMPOUNDRULE|
--- a/runtime/doc/sql.txt
+++ b/runtime/doc/sql.txt
@@ -1,4 +1,4 @@
-*sql.txt*	For Vim version 7.0.  Last change: Wed Apr 26 2006 3:05:33 PM
+*sql.txt*	For Vim version 7.1a.  Last change: Wed Apr 26 2006 3:05:33 PM
 
 by David Fishburn
 
@@ -632,7 +632,7 @@ your |vimrc|: >
 	- When completing tables, procedure or views and using dbext.vim 3.00
 	  or higher the list of objects will also include the owner name.
 	  When completing these objects and omni_sql_include_owner is enabled
-	  the owner name will be be replaced. >
+	  the owner name will be replaced. >
 
     omni_sql_precache_syntax_groups
 <	- Default:
--- a/runtime/doc/starting.txt
+++ b/runtime/doc/starting.txt
@@ -1,4 +1,4 @@
-*starting.txt*  For Vim version 7.0.  Last change: 2006 Apr 25
+*starting.txt*  For Vim version 7.1a.  Last change: 2007 Apr 22
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -311,12 +311,16 @@ a slash.  Thus "-R" means recovery and "
 		Messages will be given for each file that is ":source"d and
 		for reading or writing a viminfo file.  Can be used to find
 		out what is happening upon startup and exit.  {not in Vi}
+		Example: >
+			vim -V8 foobar
 
 -V[N]{filename}
 		Like -V and set 'verbosefile' to {filename}.  The result is
 		that messages are not displayed but written to the file
 		{filename}.  {filename} must not start with a digit.
-
+		Example: >
+			vim -V20vimlog foobar
+<
 							*-D*
 -D		Debugging.  Go to debugging mode when executing the first
 		command from a script. |debug-mode|
@@ -537,7 +541,7 @@ a slash.  Thus "-R" means recovery and "
 		See |--remote-expr|. {not in Vi}
 
 --serverlist	Output a list of Vim server names and exit.  See
-		See |--serverlist|. {not in Vi}
+		|--serverlist|. {not in Vi}
 
 --socketid {id}						*--socketid*
 		GTK+ GUI Vim only.  Make gvim try to use GtkPlug mechanism, so
@@ -905,9 +909,10 @@ set, it will be set to 'nocompatible'.  
 resetting other options (see 'compatible').  But only the options that have
 not been set or reset will be changed.  This has the same effect like the
 value of 'compatible' had this value when starting Vim.  Note that this
-doesn't happen for the system-wide vimrc file.  It does also happen for gvimrc
-files.  The $MYVIMRC or $MYGVIMRC file will be set to the first found vimrc
-and/or gvimrc file.
+doesn't happen for the system-wide vimrc file nor when Vim was started with
+the |-u| command line argument.  It does also happen for gvimrc files.  The
+$MYVIMRC or $MYGVIMRC file will be set to the first found vimrc and/or gvimrc
+file.
 
 But there is a side effect of setting or resetting 'compatible' at the moment
 a .vimrc file is found: Mappings are interpreted the moment they are
@@ -1200,8 +1205,8 @@ 7. Reloads the buffer list, with the las
    including hidden and unloaded buffers.  Otherwise only buffers in windows
    are restored.
 8. Restores all windows with the same layout.  If 'sessionoptions' contains
-   contains "help", help windows are restored.  If 'sessionoptions' contains
-   "blank", windows editing a buffer without a name will be restored.
+   "help", help windows are restored.  If 'sessionoptions' contains "blank",
+   windows editing a buffer without a name will be restored.
    If 'sessionoptions' contains "winsize" and no (help/blank) windows were
    left out, the window sizes are restored (relative to the screen size).
    Otherwise, the windows are just given sensible sizes.
--- a/runtime/doc/syntax.txt
+++ b/runtime/doc/syntax.txt
@@ -1,4 +1,4 @@
-*syntax.txt*	For Vim version 7.0.  Last change: 2006 Apr 30
+*syntax.txt*	For Vim version 7.1a.  Last change: 2007 May 03
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -467,52 +467,9 @@ abel_obsolete_ok		obsolete keywords are 
 abel_cpp_comments_illegal	do not interpret '//' as inline comment leader
 
 
-ADA						*ada.vim* *ft-ada-syntax*
-
-This mode is designed for the 1995 edition of Ada ("Ada95"), which
-includes support for objected-programming, protected types, and so on.
-It handles code written for the original Ada language
-("Ada83" or "Ada87") as well, though Ada83 code which uses Ada95-only
-keywords will be wrongly colored (such code should be fixed anyway).
-For more information about Ada, see http://www.adapower.com.
-
-The Ada mode handles a number of situations cleanly.
-For example, it knows that the "-" in "-5" is a number, but the same
-character in "A-5" is an operator.  Normally, a "with" or "use" clause
-referencing another compilation unit is colored the same way as C's
-"#include" is colored.	If you have "Conditional" or "Repeat"
-groups colored differently, then "end if" and "end loop" will be
-colored as part of those respective groups.
-You can set these to different colors using vim's "highlight" command
-(e.g., to change how loops are displayed, enter the command
-":hi Repeat" followed by the color specification; on simple terminals
-the color specification ctermfg=White often shows well).
-
-There are several options you can select in this Ada mode.
-To enable them, assign a value to the option.  For example, to turn one on:
-   let ada_standard_types = 1
-To disable them use ":unlet".  Example:
-   unlet ada_standard_types = 1
-You can just use ":" and type these into the command line to set these
-temporarily before loading an Ada file.  You can make these option settings
-permanent by adding the "let" command(s), without a colon,
-to your "~/.vimrc" file.
-
-Here are the Ada mode options:
-
-Variable		 Action	~
-ada_standard_types	 Highlight types in package Standard (e.g., "Float")
-ada_space_errors	 Highlight extraneous errors in spaces...
-ada_no_trail_space_error   but ignore trailing spaces at the end of a line
-ada_no_tab_space_error	   but ignore tabs after spaces
-ada_withuse_ordinary	 Show "with" and "use" as ordinary keywords
-			   (when used to reference other compilation units
-			   they're normally highlighted specially).
-ada_begin_preproc	 Show all begin-like keywords using the coloring
-			   of C preprocessor commands.
-
-Even on a slow (90Mhz) PC this mode works quickly, but if you find
-the performance unacceptable, turn on ada_withuse_ordinary.
+ADA
+
+See |ft-ada-syntax|
 
 
 ANT						*ant.vim* *ft-ant-syntax*
@@ -903,10 +860,6 @@ or in a modeline by appending '.doxygen'
 or >
 	// vim:syntax=c.doxygen
 
-To use doxygen formatting on top of any filetype, add the following to your
-.vimrc for each filetype, replacing {filetype} with the relevent value. >
-	:let g:syntax_extra_{filetype}='doxygen'
-
 It can also be done automaticly for c, cpp and idl files by setting the global
 or buffer-local variable load_doxygen_syntax.  This is done by adding the
 following to your .vimrc. >
@@ -2339,6 +2292,8 @@ Folding can be enabled by defining "ruby
 
 This will set the 'foldmethod' option to "syntax" and allow folding of
 classes, modules, methods, code blocks, heredocs and comments.
+
+
 SCHEME						*scheme.vim* *ft-scheme-syntax*
 
 By default only R5RS keywords are highlighted and properly indented.
@@ -2598,6 +2553,16 @@ If you have a slow computer, you may wis
 increase them.	This primarily affects synchronizing (i.e. just what group,
 if any, is the text at the top of the screen supposed to be in?).
 
+*tex-morecommands* *tex-package*
+Wish To Highlight More Commmands? ~
+
+LaTeX is a programmable language, and so there are thousands of packages full
+of specialized LaTeX commands, syntax, and fonts.  If you're using such a
+package you'll often wish that the distributed syntax/tex.vim would support
+it.  However, clearly this is impractical.  So please consider using the
+techniques in |mysyntaxfile-add| to extend or modify the highlighting provided
+by syntax/tex.vim.
+
 *tex-error*
 Excessive Error Highlighting? ~
 
@@ -4396,7 +4361,7 @@ Put these lines in your Makefile:
 # Make a highlight file for types.  Requires Exuberant ctags and awk
 types: types.vim
 types.vim: *.[ch]
-	ctags -i=gstuS -o- *.[ch] |\
+	ctags --c-kinds=gstu -o- *.[ch] |\
 		awk 'BEGIN{printf("syntax keyword Type\t")}\
 			{printf("%s ", $$1)}END{print ""}' > $@
 
@@ -4504,7 +4469,7 @@ You probably want to use these X resourc
 
 [Note: The cursorColor is required to work around a bug, which changes the
 cursor color to the color of the last drawn text.  This has been fixed by a
-newer version of xterm, but not everybody is it using yet.]
+newer version of xterm, but not everybody is using it yet.]
 
 To get these right away, reload the .Xdefaults file to the X Option database
 Manager (you only need to do this when you just changed the .Xdefaults file): >
@@ -4520,7 +4485,7 @@ these resources:
 	XTerm*cursorColor:	White
 
 							*hpterm-color*
-These settings work (more or less) for a hpterm, which only supports 8
+These settings work (more or less) for an hpterm, which only supports 8
 foreground colors: >
    :if has("terminfo")
    :  set t_Co=8
--- a/runtime/doc/tagsrch.txt
+++ b/runtime/doc/tagsrch.txt
@@ -1,4 +1,4 @@
-*tagsrch.txt*   For Vim version 7.0.  Last change: 2006 Apr 24
+*tagsrch.txt*   For Vim version 7.1a.  Last change: 2006 Apr 24
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
--- a/runtime/doc/todo.txt
+++ b/runtime/doc/todo.txt
@@ -1,4 +1,4 @@
-*todo.txt*      For Vim version 7.0.  Last change: 2006 May 07
+*todo.txt*      For Vim version 7.1a.  Last change: 2007 May 05
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -30,9 +30,476 @@ be worked on, but only if you sponsor Vi
 							*known-bugs*
 -------------------- Known bugs and current work -----------------------
 
+Patch to make virtcol([123, '$']) do the right thing. (Michael Schaap)
+
+Insert mode completion: CTRL-N and CTRL-P work differently and they both don't
+work as expected. (Bernhard Walle, 2007 Feb 27)
+
+glob() doesn't work correctly with single quotes and 'shell' set to /bin/sh.
+(Adri Verhoef, Charles Campbell 2007 Mar 26)
+
+Splitting quickfix window messes up window layout. (Marius Gedminas, 2007 Apr
+25)
+
+Replace ccomplete.vim by cppcomplete.vim from www.vim.org?  script 1520
+(Martin Stubenschrott)
+    ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .
+
+Making the German sharp s uppercase doesn't work properly: one character less
+is uppercased in "gUe".
+Also: latin2 has the same character but it isn't uppercased there.
+
+Mac: After a ":vsplit" the left scrollbar doesn't appear until 'columns' is
+changed or the window is resized.
+
+Mac: Patch for Mac GUI tabline. (Nicolas Weber, 2006 Jul 18, Update 2007 Feb)
+    New update v6 ~/tmp/guitab.v6.diff (Kyle Wheeler)
+
+When 'virtualedit' is set a "p" of a block just past the end of the line
+inserts before the cursor. (Engelke)
+
+Using Aap to build Vim: add remarks about how to set personal preferences.
+Example on http://www.calmar.ws/tmp/aap.html
+
+GTK: 'bsdir' doesn't work.  Sometimes get a "gtk critical error".
+Moved some code to append file name to further down in gui_gtk.c
+gui_mch_browse(), but "last" value of 'bsdir' still doesn't work.
+
+C syntax: "#define x {"  The macro should terminate at the end of the line,
+not continue in the next line. (Kelvin Lee, 2006 May 24)
+
+C syntax: {} inside () causes following {} to be highlighted as error.
+(Michalis Giannakidis, 2006 Jun 1)
+
+Gnome improvements: Edward Catmur, 2007 Jan 7
+    Also use Save/Discard for other GUIs
+
+New PHP syntax file, use it? (Peter Hodge)
+
+'foldcolumn' in modeline applied to wrong window when using a session. (Teemu
+Likonen, March 19)
+
+Syntax highlighting wrong for transparent region. (Doug Kearns, 2007 Feb 26)
+
+More AmigaOS4 patches. (Peter Bengtsson, Nov 9)
+
+Add v:searchforward variable.  Patch by Yakov Lerner, 2006 Nov 18.
+
+Redraw problem in loop. (Yakov Lerner, 2006 Sep 7)
+
+Add option settings to help ftplugin. (David Eggum, 2006 Dec 18)
+
+Use new dutch wordlist for spelling?  http://www.opentaal.org/
+See remarks from Adri, 2007 Feb 9.
+
+When opening quickfix window, disable spell checking?
+
+Win32: When 'encoding' is "latin1" 'ignorecase' doesn't work for characters
+with umlaut. (Joachim Hofmann)  toupper_tab[] and tolower_tab[] are not filled
+properly?
+
+Completion: Scanning for tags doesn't check for typed key now and then?
+Hangs for about 5 seconds.  Appears to be caused by finding include files with
+"foo/**" in 'path'.  (Kalisiak, 2006 July 15)
+
+Completion: When 'completeopt' has "longest" and there is one match the
+message is "back at original" and typing a char doesn't leave completion mode.
+(Igor Prischepoff, 2006 Oct 5)
+
+Completion: When using CTRL-X O and there is only "struct." before the cursor,
+typing one char to reduce the matches, then BS completion stops.  Should keep
+completion if still no less than what we started with.
+
+Completion: don't stop completion when typing a space when completing full
+lines?  Also when completing file names?  Only stop completion when there are
+no matches?
+After using BS completion only stops when typing a space.  Many people want to
+stop at non-word characters, e.g., '('.  Add an option for this?  Or check
+vim_iswordc() before calling ins_compl_addleader()?
+
+searchpos() doesn't use match under cursor at start of line. (Viktor
+Kojouharov, 2006 Nov 16)
+
+When FEAT_BYTEOFF is defined but FEAT_NETBEANS_INTG is not compiling fails.
+Add FEAT_BYTEOFF to the check at line 1180 in feature.h
+
+Color for cUserLabel should differ from case label, so that a mistake in a
+switch list is noticed:
+    switch (i)
+    {
+    case 1:
+    foobar:
+    }
+
+":s" command removes combining characters. (Ron Aaron, 2006 May 17, 2006 Dec 7)
+
+Look at http://www.gtk-server.org/ .  It has a Vim script implementation.
+
+Changes for Win32 makefile. (Mike Williams, 2007 Jan 22, Alexei Alexandrov,
+2007 Feb 8)
+
+Patch for Win32 clipboard under Cygwin. (Frodak Baksik, Feb 15)
+    Sutcliffe says it works well.
+
+Win32: Patch for convert_filterW(). (Taro Muraoka, 2007 Mar 2)
+
+Win32: XPM support only works with path without spaces.  Patch by Mathias
+Michaelis, 2006 Jun 9.  Another patch for more path names, 2006 May 31.
+New version: http://members.tcnet.ch/michaelis/vim/patches.zip (also for other
+patches by Mathias, see mail Feb 22)
+
+Win32: compiling with normal features and OLE fails.  Patch by Mathias
+Michaelis, 2006 Jun 4.
+
+Win32: echo doesn't work for gvim.exe.mnf.  Use inline file.  Patch by Mathias
+Michaelis.  http://groups.yahoo.com/group/vimdev/message/43765
+Patch that includes this and does more by George Reilly, 2007 Feb 12
+
+Win16: include patches to make Win16 version work. (Vince Negri, 2006 May 22)
+
+Win32: after "[I" showing matches, scroll wheel messes up screen. (Tsakiridis,
+2007 Feb 18)
+
+Win32: using CTRL-S in Insert mode doesn't remove the "+" from the tab pages
+label.  (Tsakiridis, 2007 Feb 18)
+
+Win32: remote editing doesn't work when the current directory name contains
+"[]". (Ivan Tishchenko, 2007 March 1)
+
+Win64: diff.exe crashes on Win64. (Julianne Bailey, 2006 Dec 12)
+Build another diff.exe somehow?
+
+Win64: Seek error in swap file for a very big file (3 Gbyte).  Check storing
+pointer in long and seek offset in 64 bit var.
+
+When doing "gvim --remote-tab foo" while gvim is minimized the tab pages line
+only shows the current label, not the others.
+
+Problem finding swap file for recovery. (Gautam Iyer, 2006 May 16)
+
+When setting 'keymap' twice the b:keymap_name variable isn't set. (Milan
+Berta, 2007 Mar 9)  Has something to do with 'iminsert'.
+
+Problem with CursorHoldI?  (Max Dyckhoff, 2006 Nov 10)
+
+UTF-8: mapping a multi-byte key where the second byte is 0x80 doesn't appear
+to work. (Tony Mechelynck, 2007 March 2)
+
+The str2special() function doesn't handle multi-byte characters properly.
+Patch from Vladimir Vichniakov, 2007 Apr 24.
+find_special_key() also has this problem.
+
+In debug mode, using CTRL-R = to evaluate a function causes stepping through
+the function. (Hari Krishna Dara, 2006 Jun 28)
+
+":let &shiftwidth = 'asdf'" doesn't produce an error message.
+
+C++ indenting wrong with "=". (James Kanze, 2007 Jan 26)
+
+"zug" reports wrong file. problem with Namebuff? (Lawrence Kesteloot, 2006 Sep
+10)
+
+":lockvar" should use copyID to avoid endless loop.
+
+Gvim: dialog for closing Vim should check if Vim is busy writing a file.  Then
+use a different dialog: "busy saving, really quit? yes / no".
+
+Win32: editing remote file d:\a[1]\aa.txt doesn't work. (Liu Yubao, 2006 May
+29)
+
+"zw" doesn't appear to work. (Luis A Florit, 2006 Jun 23, 24)
+
+"dw" in a line with one character deletes the line.  Vi and nvi don't do this.
+Is it intentional or not? (Kjell Arne Rekaa)
+
+Check other interfaces for changing curbuf in a wrong way.  Patch like for
+if_ruby.c.
+
+Spell checking in popup menu: If the only problem is the case of the first
+character, don't offer "ignore" and "add to word list".
+
+":helpgrep" should use the directory from 'helpfile'.
+
+The need_fileinfo flag is messy.  Instead make the message right away and put
+it in keep_msg?
+
+More-prompt is skipped when doing this; (Randall W. Morris, Jun 17)
+    :au
+    <Space>
+    b
+    <Space>
+
+Editing a file remotely that matches 'wildignore' results in a "no match"
+error.  Should only happen when there are wildards, not when giving the file
+name literally, and esp. if there is only one name.
+
+When 'expandtab' is set then a Tab copied for 'copyindent' is expanded to
+spaces, even when 'preserveindent' is set. (Alexei Alexandrov, Mar 7)
+
 Test 61 fails sometimes.  This is a timing problem: "sleep 2" sometimes takes
 longer than 2 seconds.
 
+VMS: while editing a file found in complex, Vim will save file into the first
+directory of the path and not to the original location of the file.
+(Zoltan Arpadffy)
+
+input() completion should not insert a backslash to escape a space in a file
+name?
+
+getpos()/setpos() don't include curswant.  getpos() could return a fifth
+element.  setpos() could accept an optional fifth element.
+
+Ruby completion is insecure.  Can this be fixed?
+
+":confirm w" does give a prompt when 'readonly' is set, but not when the file
+permissions are read-only.  Both can be overruled by ":w!" thus it would be
+logical to get a prompt for both. (Michael Schaap)
+
+When 'backupskip' is set from $TEMP special characters need to be escaped.
+(patch by Grembowietz, 2007 Feb 26, not quite right)
+Another problem is that file_pat_to_reg_pat() doesn't recognize "\\", so "\\(" 
+will be seen as a path separator plus "\(".
+
+":python os.chdir('/tmp')" makes short buffer names invalid. (Xavier de Gaye)
+Check directory and call shorten_fnames()?
+
+aucmd_prepbuf() should also use a window in another tab page.
+
+Substituting an area with a line break with almost the same area does change
+the Visual area.  Can this be fixed? (James Vega, 2006 Sept 15)
+
+Windows installer could add a "open in new tab of existing Vim" menu entry.
+
+:s/e/E/l not only lists but also shows line number.  Is that right?
+(Yakov Lerner, 2006 Jul 27)
+
+GUI: When combining fg en bg make sure they are not equal.
+
+Use different pt_br dictionary for spell checking. (Jackson A. Aquino, 2006
+Jun 5)
+
+Mac: Using gvim: netrw window disappears. (Nick Lo, 2006 Jun 21)
+
+When 'bomb' is set or reset the file should be considered modified. (Tony
+Mechelynck)  Handle like 'endofline'.
+
+Add an option to specify the character to use when a double-width character is
+moved to the next line.  Default '>', set to a space to blank it out.  Check
+that char is single width when it's set (compare with 'listchars').
+
+Update main.aap for installing on the Mac.
+
+The generated vim.bat can avoid the loop for NT. (Carl Zmola, 2006 Sep 3)
+
+Session file creation: 'autochdir' causes trouble.  Keep it off until after
+loading all files.
+
+C completion: doesn't work after aa[0]->, where aa is an array of structures.
+(W. de Hoog, 2006 Aug 12)
+
+The spellfile plugin checks for a writable "spell" directory.  A user may have
+a writable runtime directory without a "spell" directory, it could be created
+then.
+
+These two abbreviations don't give the same result:
+	let asdfasdf = "xyz\<Left>"
+	cabbr XXX <C-R>=asdfasdf<CR>
+	cabbr YYY xyz<Left>
+
+Michael Dietrich: maximized gvim sometimes displays output of external command
+partly. (2006 Dec 7)
+
+In FileChangedShell command it's no longer allowed to switch to another
+buffer.  But the changed buffer may differ from the current buffer, how to
+reload it then?
+
+New syntax files for fstab and resolv from Radu Dineiu, David Necas did
+previous version.
+
+For Aap: include a config.arg.example file with hints how to use config.arg.
+
+Linux distributions:
+- Suggest compiling xterm with --enable-tcap-query, so that nr of colors is
+  known to Vim.  88 colors instead of 16 works better.  See ":help
+  xfree-xterm".
+- Suggest including bare "vi" and "vim" with X11, syntax, etc.
+
+Completion menu: For a wrapping line, completing a long file name, only the
+start of the path is shown in the menu.  Should move the menu to the right to
+show more text of the completions.  Shorten the items that don't fit in the
+middle?
+
+When running inside screen it's possible to kill the X server and restart it
+(using pty's the program can keep on running).  Vim dies because it looses the
+connection to the X server.  Can Vim simply quit using the X server instead of
+dying?  Also relevant when running in a console.
+
+Accessing file#var in a function should not need the g: prepended.
+
+When ":cn" moves to an error in the same line the message isn't shortened.
+Only skip shortening for ":cc"?
+
+Win32: The matchparen plugin doesn't update the match when scrolling with the
+mouse wheel. (Ilya Bobir, 2006 Jun 27)
+
+Write "making vim work better" for the docs (mostly pointers): *nice*
+    - sourcing $VIMRUNTIME/vimrc_example.vim
+    - setting 'mouse' to "a"
+    - getting colors in xterm
+    - compiling Vim with X11, GUI, etc.
+
+Problem with ":call" and dictionary function. Hari Krishna Dara, Charles
+Campbell 2006 Jul 06.
+
+Syntax HL error caused by "containedin". (Peter Hodge, 2006 Oct 6)
+
+GTK: When maximizing Vim the result is slightly smaller, the filler border is
+not there, and the "maximize" button is still there.  Clicking it again does
+give a maximized window. (Darren Hiebert)
+Problem is that gui_mch_set_text_area_pos() is invoked to change the text area
+size, which causes the toplevel window to resize.  When doing this while the
+size is already right the filler remains there.
+Detect using the maximize button (GdkWindowState bit
+GDK_WINDOW_STATE_MAXIMIZED) and set it again?
+
+Another resizing problem when setting 'columns' and 'lines' to a very large
+number. (Tony Mechelynck, 2007 Feb 6)
+
+Mutt files are not always recognized.  Change pattern to include
+non-alphanumeric characters. (Gary Johnson, 2006 Jul 25)
+
+Problem with using :redir in user command completion function? (Hari Krishna
+Dara, 2006 June 21)
+
+After starting Vim, using '0 to jump somewhere in a file, ":sp" doesn't center
+the cursor line.  It works OK after some other commands.
+
+Screen redrawing when continuously updating the buffer and resizing the
+terminal. (Yakov Lerner, 2006 Sept 7)
+
+Win32: Is it possible to have both postscript and Win32 printing?
+Does multi-byte printing with ":hardcopy" work?  Add remark in documentation
+about this.
+
+'thesaurus' doesn't work when 'infercase' is set. (Mohsin, 2006 May 30)
+
+There should be something about spell checking in the user manual.
+
+Check: Running Vim in a console and still having connect to the X server for
+copy/paste: is stopping the X server handled gracefully?  Should catch the X
+error and stop using the connection to the server.
+
+Problem with 'cdpath' on MS-Windows when a directory is equal to $HOME. (2006
+Jul 26, Gary Johnson)
+
+In the Netbeans interface add a "vimeval" function, so that the other side can
+check the result of has("patch13").
+
+":py" asks for an argument, ":py asd" then gives the error that ":py" isn't
+implemented.  Should already happen for ":py".
+
+Add command modifier that skips wildcard expansion, so that you don't need to
+put backslashes before special chars, only for white space.
+
+Win32 GUI: confirm() with zero default should not have a choice selected.
+
+Win32: When the GUI tab pages line is displayed Vim jumps from the secondary
+to the primary monitor. (Afton Lewis, 2007 Mar 9)  Old resizing problem?
+
+GTK GUI: When the completion popup menu is used scrolling another window by
+the scrollbar is OK, but using the scroll wheel it behaves line <Enter>.
+
+"cit" used on <foo></foo> deletes <foo>.  Should not delete anything and start
+insertion, like "ci'" does on "". (Michal Bozon)
+
+Allow more than 3 ":match" items.
+
+The magic clipboard format "VimClipboard2" appears in several places.  Should
+be only one.
+
+It's difficult to debug numbered functions (function in a Dictionary).  Print
+the function name before resolving it to a number?
+	let d = {}
+	fun! d.foo()
+	  echo "here"
+	endfun
+	call d.foo(9)
+
+Add a mark for the other end of the Visual area (VIsual pos).  '< and '> are
+only set after Visual moded is ended.
+
+Small problem displaying diff filler line when opening windows with a script.
+(David Luyer, 2007 Mar 1 ~/Mail/oldmail/mool/in.15872 )
+
+When pattern for ":sort" is empty, use last search pattern.  Allows trying out
+the pattern first. (Brian McKee)
+
+Is it allowed that 'backupext' is empty?  Problems when backup is in same dir
+as original file?  If it's OK don't compare with 'patchmode'. (Thierry Closen)
+
+Patch for supporting count before CR in quickfix window. (AOYAMA Shotaro, 2007
+Jan 1)
+
+Patch for adding ":lscscope". (Navdeep Parhar, 2007 Apr 26; update Apr 28)
+
+Patch for improving regexp speed by not freeing memory. (Alexei Alexandrov,
+2007 Feb 6)
+
+xterm should be able to pass focus changes to Vim, so that Vim can check for
+buffers that changed.  Perhaps in misc.c, function selectwindow().
+Xterm 224 supports it!
+
+Omni completion takes the wrong structure for variable arguments. (Bill
+McCarthy, 2007 Feb 18)
+
+When completing from another file that uses a different encoding completion
+text has the wrong encoding.  E.g., when 'encoding' is utf-8 and file is
+latin1.  Example from Gombault Damien, 2007 Mar 24.
+
+Completing ":echohl" argument should include "None". (Ori Avtalion)
+
+
+Vim 7.2:
+-   Search offset doesn't work for multibyte character.  Patch from Yukihiro
+    Nakadaira, 2006 Jul 18.
+    Changes the offset from counting bytes to counting characters.
+-   Rename the tutor files from tutor.gr.* to tutor.el.*.  Greece vs Greek.
+    Make all tutor files available in utf-8.
+-   Remove ! for ":cgetfile" and ":lgetfile". (patch from Yegappan Lakshmanan,
+    2007 Mar 9)
+-   Add blowfish encryption.  Openssl has an implementation.  Also by Paul
+    Kocher (LGPL), close to original.  Mohsin also has some ideas.
+    Take four bytes and turn them into unsigned to avoid byte-order problems.
+    Need to buffer up to 7 bytes to align on 8 byte boundaries.
+-   Rename doc/sql.vim doc/ft_sql.vim.
+-   Change "command-line" to "[Command Line]" for the command line buffer
+    name in ex_window().
+-   Move including fcntl.h to vim.h, before O_NOFOLLOW, and remove it from all
+    .c files.
+-   ":{range}source": source the lines from the file.
+	You can already yank lines and use :@" to execute them.
+	Most of do_source() would not be used, need a new function.
+	It's easy when not doing breakpoints or profiling.
+
+
+Patches:
+-   Add 'cscopeignorecase' option. (Liang Wenzhi, 2006 Sept 3)
+-   Argument for feedkeys() to prepend to typeahead (Yakov Lerner, 2006 Oct
+    21)
+-   Load intl.dll too, not only libintl.dll. (Mike Williams, 2006 May 9, docs
+    patch May 10)
+-   Extra argument to strtrans() to translate special keys to their name (Eric
+    Arnold, 2006 May 22)
+-   'threglookexp' option: only match with first word in thesaurus file.
+    (Jakson A. Aquino, 2006 Jun 14)
+-   Mac: indicate whether a buffer was modified. (Nicolas Weber, 2006 Jun 30)
+-   Allow negative 'nrwidth' for left aligning. (Nathan Laredo, 2006 Aug 16)
+-   ml_append_string(): efficiently append to an existing line. (Brad
+    Beveridge, 2006 Aug 26)  Use in some situations, e.g., when pasting a
+    character at a time?
+-   gettabvar() and settabvar() functions. (Yegappan Lakshmanan, 2006 Sep 8)
+-   recognize hex numbers better. (Mark Manning, 2006 Sep 13)
+
 
 Awaiting updated patches:
 9   Mac unicode patch (Da Woon Jung, Eckehard Berns):
@@ -44,6 +511,8 @@ 9   Mac unicode patch (Da Woon Jung, Eck
     - With 'nopaste' pasting is wrong, with 'paste' Command-V doesn't work.
       (Alan Schmitt)
     - remove 'macatsui' option when this has been fixed.
+    - when 'macatsui' is off should we always convert to "macroman" and ignore
+      'termencoding'?
 9   HTML indenting can be slow.  Caused by using searchpair().  Can search()
     be used instead?
 8   Win32: Add minidump generation. (George Reilly, 2006 Apr 24)
@@ -89,6 +558,8 @@ 8   Add functions:
 			    (2003 May 13)
     raisewin()		raise gvim window (see HierAssist patch for
 			    Tcl implementation ~/vim/HierAssist/ )
+    taglist()		add argument to specify maximum number of matches.
+			useful for interactive things or completion.
 7   Make globpath() also work with upwards search. (Brian Medley)
 7   Add patch from Benoit Cerrina to integrate Vim and Perl functions
     better.  Now also works for Ruby (2001 Nov 10)
@@ -211,6 +682,8 @@ 9   Can't paste a Visual selection from 
 Win32 GUI known bugs:
 -   Win32: tearoff menu window should have a scrollbar when it's taller than
     the screen.
+8   non-ASCII font names don't work.  Need to convert from 'encoding' and use
+    the wide functions.
 8   On Windows 98 the unicows library is needed to support functions with UCS2
     file names.  Can we load unicows.dll dynamically?
 8   When the primary monitor is below or right of the secondary monitor and
@@ -252,7 +725,6 @@ 8   When activating the Vim window with 
     mouse position.  Catch WM_MOUSEACTIVATE. (Luevelsmeyer)
 8   Win32: When mouse is hidden and in the toolbar, moving it won't make it
     appear. (Sami Salonen)
-8   Windows NT: writing to aux.* makes Vim hang. (Acevedo)
 8   Win32 GUI: With maximized window, ":set go-=r" doesn't use the space that
     comes available. (Poucet)  It works OK on Win 98 but doesn't work on Win
     NT 4.0.  Leaves a grey area where the scrollbar was.  ":set go+=r" also
@@ -569,12 +1041,16 @@ 7   Loading the Perl library only works 
 8   Inputting Unicode characters does not work in the terminal.  They appear
     to arrive as upper and lower bytes. (David Brown, 2004 April 17)
 8   Typing Unicode characters doesn't work at all in the GUI.
+8   inputdialog() doesn't resize when giving more text lines. (David Fishburn,
+    2006 Sept 28)
 9   Problems in Carbon version for OS X: (Benji Fisher)
     - keyboard shortcuts in the menus get lost.
 8   The Vim/About menu doesn't work.
 8   ":gui" doesn't fork.  Enabling the code in gui.c to fork causes a SEGV.
 8   Define vim_mkdir() for Macintosh.
 8   Define mch_writable() for Macintosh.
+8   Some file systems are case-sensitive, some are not.  Turn
+    CASE_INSENSITIVE_FILENAME into an option, at least for completion.
 9   When DiskLock is running, using a swap file causes a crash.  Appears to be
     a problem with writing a file that starts with a dot. (Giacalone)
 9   On G3 Mac, OS version 8, control strip causes characters messed up when
@@ -587,6 +1063,10 @@ 8   Handling of non-fixed width fonts is
 
 
 "Small" problems:
+-   When using e_secure in do_one_cmd() mention the command being executed,
+    otherwise it's not clear where it comes from.
+8   When disabling FEAT_CMDL_COMPL compilation fails.  Would need to avoid
+    using parse_compl_arg() in eval.c and uc_scan_attr().
 9   For Turkish vim_tolower() and vim_toupper() also need to use utf_
     functions for characters below 0x80. (Sertacyildiz)
 9   When the last edited file is a help file, using '0 in a new Vim doesn't
@@ -606,11 +1086,10 @@ 7   Vimtutor leaves escape sequence in t
 8   When redirecting and using ":silent" the current column for displaying and
     redirection can be different.  Use a separate variable to hold the column
     for redirection.
-7   There is no way to change directory and go back without changing the local
-    and/or global directory.  Add a way to find out if the current window uses
-    a local directory.  Add cdcmd() that returns ":cd" or ":lcd"?
 7   The messages for "vim --help" and "vim --version" don't use
     'termencoding'.
+-   Could the hit-enter prompt be avoided when a message only overlaps the
+    'showcmd' area?  Clear that area when the next cmd is typed.
 8   When 'scrollbind' is set, a window won't scroll horizontally if the cursor
     line is too short.  Add a word in 'scrollopt' to allow moving the cursor
     to longer line that is visible.  A similar thing is done for the GUI when
@@ -629,6 +1108,7 @@ 8   "stl" and "stlnc" in 'fillchars' don
 8   When doing Insert mode completion a mapping cannot recursively call
     edit(), because the completion information is global.  Put everything in
     an allocated structure?
+6   Python: ":py raw_input('prompt')" doesn't work. (Manu Hack)
 8   Command line completion: buffers "foo.txt" and "../b/foo.txt", completing
     ":buf foo<Tab>" doesn't find the second one. (George V. Reilly)
 7   Output for ":scriptnames" and ":breaklist" should shorten the file names:
@@ -650,9 +1130,6 @@ 7   ":botright 1 new" twice causes all w
 7   "[p" doesn't work in Visual mode. (David Brown)
 7   The Cygwin and MingW makefiles define "PC", but it's not used anywhere.
     Remove? (Dan Sharp)
-9   The argument <f-args> of a user command doesn't handle backslashes
-    properly.  "Cmd \ e" is one argument, "Cmd \\ e" still is one argument.
-    "Cmd \  e" is two arguments, first one ending in space. (Kontra Gergely)
 9   User commands use the context of the script they were defined in.  This
     causes a "s:var" argument to unexpectedly use a variable in the defining
     script, not the calling script.  Add an argument to ":command":
@@ -684,6 +1161,8 @@ 8   ":s!from!to!" works, but ":smagic!fr
     flag to to the command.  Same for ":snomagic". (Johan Spetz)
 8   Using ":s" in a function changes the previous replacement string.  Save
     "old_sub" in save_search_patterns()?
+8   Should allow multi-byte characters for the delimiter: ":s+a+b+" where "+"
+    is a multi-byte character.
 8   When appending to a file and 'patchmode' isn't empty, a backup file is
     always written, even when the original file already exists.
 7   When using "daw" on the last word in a file and this is a single letter,
@@ -699,6 +1178,8 @@ 8   The script ID that is stored with an
     'foldlevel' is set from 'foldlevelstart'.
 8   Also store the line number with the script ID and use it for ":verbose",
     so that "set nocompatible" is found when it changes other option values.
+    When an option is set indirectly mention the command?  E.g. when
+    ":diffsplit" sets 'foldmethod'.
 8   In the fileformat dialog, "Cancel" isn't translated.  Add a global
     variable for this. (Eduardo Fernandez)
 9   When editing a file with 'readonly' set, there is no check for an existing
@@ -831,6 +1312,8 @@ 8   When dragging status line with mouse
 8   Dragging the status line doesn't scroll but redraw.
 9   Evaluating 'statusline' in build_stl_str_hl() does not properly check for
     reaching the end of the available buffer.
+    Patch to dynamically allocate the buffer for % items. (Eric Arnold, 2006
+    May 14)
 8   When performing incremental search, should abort searching as soon as a
     character is typed.
 8   When the value of $MAKE contains a path, configure can't handle this.
@@ -890,6 +1373,7 @@ Problems that will (probably) not be sol
     XtOpenDisplay() prints this directly, there is no way to avoid it.
 -   X windows: Setting 'guifontset' to an illegal value sometimes crashes Vim.
     This is caused by a fault in a X library function, can't be solved in Vim.
+-   Win32 tcl: has("tcl") hangs when the tcl84.dll is from cygwin.
 -   Motif: When adding a menu item "Find this &Symbol", the "s" in "this" will
     be underlined, instead of in "Symbol".  Motif doesn't let us specify which
     character gets the highlighting.
@@ -987,6 +1471,7 @@ Didn't make it into Vim 7.0:
     198 standard http://www.jcp.org/en/jsr/detail?id=198.
     Eclim does it: http://eclim.sourceforge.net/  (Eric Van Dewoestine)
     Plugin that uses a terminal emulator: http://vimplugin.sf.net
+    And another one: http://www.satokar.com/viplugin/index.php
 -   STICKY CURSOR: Add a way of scrolling that leaves the cursor where it is.
     Especially when using the scrollbar.  Typing a cursor-movement command
     scrolls back to where the cursor is.
@@ -1003,6 +1488,8 @@ 8   Add a command to jump to a certain k
 
 
 Documentation:
+8   List of Vim runtime directories.  dotvim.txt from Charles Campbell, 2007
+    Feb 20.
 8   The GUI help should explain the Find and Find/Replace dialogs.  Add a link
     to it from ":promptrepl" and ":promptfind".
 8   List of options should mention whether environment variables are expanded
@@ -1084,6 +1571,10 @@ 8   Support saving and restoring session
 
 Tab pages:
 9   GUI implementation for the tab pages line for other systems.
+7   GUI: Control over the appearance of the text in the labels (bold, color,
+    font, etc.)
+9   Make it possible to drag a tab page label to another position with the
+    mouse.
 8   Make GUI menu in tab pages line configurable.  Like the popup menu.
 8   balloons for the tab page labels that are shortened to show the full path.
 8   :tabmove +N	 move tab page N pages forward
@@ -1095,15 +1586,27 @@ 7   Add local variables for each tab pag
 8   Add local options for each tab page?  E.g., 'diffopt' could differ between
     tab pages.
 7   Add local highlighting for each tab page?
+7   Add local directory for tab pages?  How would this interfere with
+    window-local directories?
 
 
 Spell checking:
+-   Support more regions? Caolan McNamara argues it's needed for es_XX.
+    https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=219777    
+-   Unicode defines another quote character: 0x2019.  Use it as an equivalent
+    of a single quote, thus use it as a word character like a quote and match
+    with words, replacing the curly quote with a single quote.
+-   Could filter &eacute; things for HTML before doing spell checking.
+    Similarly for TeX.
 -   The Hungarian spell file uses four extra characters in the FOL/UPP/LOW
     items than other spell files with the ISO-8859-2 encoding, that causes
     problem when changing 'spelllang'.  There is no obvious way to fix this.
 -   Considering Hunspell 1.1.4:
     What does MAXNGRAMSUGS do?
     Is COMPLEXPREFIXES necessary when we have flags for affixes?
+-   There is no Finnish spell checking file.  For openoffic Voikko is now
+    used, which is based on Malaga: http://home.arcor.de/bjoern-beutel/malaga/
+    (Teemu Likonen)
 8   ":mkspell" still takes much too long in Hungarian dictionary from
     hunspell.  Only solution appears to be to postpone secondary suffixes.
 8   Handle postponed prefix with COMPOUNDPERMITFLAG or COMPOUNDFORBIDFLAG.
@@ -1190,7 +1693,11 @@ 7   Add cursor-binding: when moving the 
 Folding:
     (commands still available: zI zJ zK zp zP zq zQ zV zy zY;
     secondary: zB zS zT zZ, z=)
+8   Vertical folds: looks like vertically split windows, but the cursor moves
+    through the vertical separator, separator moves when scrolling.
 8   Add "z/" and "z?" for searching in not folded text only.
+9   Add search pattern item to only match in closed or open fold and/or fold
+    with certain level.  Allows doing ":g/pat/cmd" to work on closed folds.
 8   Add different highlighting for a fold line depending on the fold level.
     (Noel Henson)
 7   Use "++--", "+++--" for different levels instead of "+---" "+----".
@@ -1292,6 +1799,7 @@ 7   Use ideas for nl_langinfo() from Mar
 7   In "-- INSERT (lang) --" show the name of the keymap used instead of
     "lang". (Ilya Dogolazky)
 -   Make 'langmap' accept multi-byte characters.
+	Patch from Konstantin Korikov, 2006 Oct 15.
 -   Make 'breakat' accept multi-byte characters.  Problem: can't use a lookup
     table anymore (breakat_flags[]).
     Simplistic solution: when 'formatoptions' contains "m" also break a line
@@ -1317,8 +1825,8 @@ 7   Implement "undercurl" for printing.
 -   Win32: when 'printfont' is empty use 'guifont'.
 -   Unix: Use some dialog box to do the obvious settings (paper size, printer
     name, portrait/landscape, etc).
--   PostScript: only works for 7-bit ASCII and EBCDIC.  Should support
-    different 'encoding' values somehow.
+-   PostScript: Only works for text that can be converted to an 8-bit
+    character set.  How to support Unicode fully?
 -   Allow specifying the paper size, instead of using a standard size.  Same
     units as for the margins.
 -   Support right-to-left text?
@@ -1338,6 +1846,9 @@ 7   Add a "startgroup" to a region.  Use
 8   When editing a new file without a name and giving it a name (by writing
     it) and 'filetype' is not set, detect the filetype.  Avoid doing it for
     ":wq file".
+7   For "nextgroup" we have skipwhite, skipnl and skipempty.  It would be
+    really nice to be able to skip with a pattern.  Or skip with a syntax
+    group. (Nikolai Weibull, 2007 Feb 27)
 8   Make conversion to HTML faster (Write it in C or pre-compile the script).
 9   There is still a redraw bug somewhere.  Probably because a cached state is
     used in a wrong way.  I can't reproduce it...
@@ -1415,6 +1926,9 @@ 8   Should support "me" offset for a reg
 8   When using a regexp for "contains=", should delay matching with it until
     redrawing happens.  Set a flag when a group is added, check this flag when
     highlighting starts.
+8   Some terminals can display colors like the GUI.  Add some setting to use
+    GUI colors for the terminal?  With something to define the escape
+    sequence.
 7   It's possible for an item to be transparent, so that the colors of an item
     lower on the stack is used.  Also do this with highlighting, so that the
     user can set transparent highlighting?  E.g. a number in a C comment would
@@ -1483,24 +1997,14 @@ 7   SpecialKey highlighting overrules sy
 
 
 Built-in script language:
-9   Autoload:  Add a Vim script in $VIMRUNTIME/tools that takes a file with a
-    list of script names and a help file and produces a script that can be
-    sourced to install the scripts in the user's directories.
-      Use findfile(), so that only file names need to be given:
-	script plugin/myscript.vim
-	script autoload/mylib.vim
-	script autoload/yourlib.vim
-	helpfile doc/myscript.txt
-      For the "helpfile" item ":helptags" is run.
 7   Execute a function with standard option values.  No need to save and
     restore option values.  Especially useful for new options.  Problem: how
     to avoid a performance penalty (esp. for string options)?
 8   Add referring to key options with "&t_xx".  Both for "echo &t_xx" and
     ":let &t_xx =".  Useful for making portable mappings.
--   Add "{range}source": execute lines from a buffer.
-    Alternative: Allow range for ":exec", pass it on to the executed command.
-    (Webb)
-    You can already yank lines and use :@" to execute them.
+-   Add ":let var ?= value", conditional assignment.  Patch by Dave Eggum,
+    2006 Dec 11.
+-   range for ":exec", pass it on to the executed command.  (Webb)
 7   ":include" command: just like ":source" but doesn't start a new scriptID?
     Will be tricky for the list of script names.
 8   Have a look at VSEL.  Would it be useful to include? (Bigham)
@@ -1523,7 +2027,16 @@ 7   Pre-parse or compile Vim scripts int
        file belongs to a sourced script?
 7   Add argument to winwidth() to subtract the space taken by 'foldcolumn',
     signs and/or 'number'.
+6   Add ++ and -- operators?  They only work on variables (lvals), how to
+    implement this?
 8   Add functions:
+	has(":command")		Check if ":command" works.  compare function
+				with "ex_ni".  E.g. for ":simalt".
+	system()		With a List argument.  Bypasses the shell, use
+				exec() directly.  (Bob Hiestand)
+	escape()		Add argument to specify what to escape with.
+	modestack()		Instead of just the current mode return the
+				stack of Insert / CTRL-O / :normal things.
 	realname()		Get user name (first, last, full)
 				user_fullname() patch by Nikolai Weibull, Nov
 				3 2002
@@ -1561,7 +2074,8 @@ 7   Make bufname("'0") return the buffer
     column and line number?  col("'0") currently returns zero.
 8   argc() returns 0 when using "vim -t tag".  How to detect that no file was
     specified in any way?  To be able to jump to the last edited file.
-8   Pass the executable name to the Vim scripts in some way.  As v:argv0?
+8   Pass the command line arguments to Vim scripts in some way.  As v:args
+    List?  Or extra parameter to argv()?
 8   Add command arguments with three dashes, passed on to Vim scripts.
 7   Add optional arguments to user functions:
 	:func myFunc(arg1, arg2, arg3 = "blah", arg4 = 17)
@@ -1571,6 +2085,7 @@ 8   For Strings add ":let var[{expr}] = 
 8   The "= register should be writable, if followed by the name of a variable,
     option or environment variable.
 8   ":let &option" should list the value of the option.
+8   ":let Func().foo = value" should work, also when "foo" doesn't exist.
 7   Add synIDlist(), making the whole list of syntax items on the syntax stack
     available as a List.
 8   Add autocommand-event for when a variable is changed:
@@ -1606,6 +2121,9 @@ 6   Add file locking.  Lock a file when 
 Performance:
 7   For strings up to 3 bytes don't allocate memory, use v_list itself as a
     character array.  Use VAR_SSTRING (short string).
+8   Instead of loading rgb.txt every time a color wasn't recognized load it
+    once and keep it in memory.  Move the code to a common place to avoid
+    repeating it in various system files.
 8   Turn b_syn_ic and b_syn_containedin into b_syn_flags.
 9   Loading menu.vim still takes quite a bit of time.  How to make it faster?
 8   in_id_list() takes much time for syntax highlighting.  Cache the result?
@@ -1719,6 +2237,8 @@ 8   Use 'report' for ":bdel"?  (Krishna)
 -   Delete message after new command has been entered and have waited for key.
     Perhaps after ten seconds?
 -   Make message history available in "msg" variables: msg1, msg2, .. msg9.
+8   When reading from stdin allow suppressing the "reading from stdin"
+    message.
 9   Check handling of overwriting of messages and delays:
     Very wrong: errors while redrawing cause endless loop.
     When switching to another file and screen scrolls because of the long
@@ -1840,6 +2360,9 @@ 7   When using ":tag" at the top of the 
     before the previous ":tag" command. (Webb)
 -   When doing "[^I" or "[^D" add position to tag stack.
 -   Add command to put current position to tag stack: ":tpush".
+-   Add functions to save and restore the tag stack?  Or a command to switch
+    to another tag stack?  So that you can do something else and come back to
+    what you were working on.
 7   When using CTRL-] on someClass::someMethod, separate class from method and
     use ":ta class:someClass someMethod".
     Include C++ tags changes (Bertin).	Change "class::func" tag into "func"
@@ -2000,6 +2523,8 @@ 7   Add autocommand event for when a buf
 8   Autocommand for when modified files have been found, when getting input
     focus again (e.g., FileChangedFocus).
     Check when: getting focus, jumping to another buffer, ...
+7   Autocommand for when an option is changed.  Match buffer name or option
+    name?
 8   Autocommands should not change registers.  And marks?  And the jumplist?
     And anything else?  Add a command to save and restore these things.
 8   Add autocommands, user functions and user commands to ":mkvimrc".
@@ -2029,6 +2554,7 @@ 8   When editing "tt.gz", which is in DO
     *Leave	    - Leaving a mode (in pair with the above *Enter)
     VimLeaveCheck    - Before Vim decides to exit, so that it can be cancelled
 		      when exiting isn't a good idea.
+    CursorHoldC     - CursorHold while command-line editing
     WinMoved	    - when windows have been moved around, e.g, ":wincmd J"
     CmdUndefined    - Like FuncUndefined but for user commands.
     SearchPost	    - After doing a search command (e.g. to do "M")
@@ -2053,7 +2579,10 @@ 8   When editing "tt.gz", which is in DO
 		      the position and number of inserted/deleted lines, so
 		      that marks can be updated.  HierAssist has patch to add
 		      BufChangePre, BufChangePost and RevertBuf. (Shah)
-    WinResized	    - When a window has been resized
+    ViewChanged	    - triggered when the text scrolls and when the window size
+		      changes.
+    WinResized	    - After a window has been resized
+    WinClose	    - Just before closing a window
 -   Write the file now and then ('autosave'):
 				  *'autosave'* *'as'* *'noautosave'* *'noas'*
     'autosave' 'aw' number  (default 0)
@@ -2070,8 +2599,6 @@ Omni completion:
 	  Should work for Java (Eclipse does this), Python, Tcl, etc.
 	  Richard Emberson mentioned working on an interface to Java.
 	- Check Readline for its completion interface.
-	- Use ctags for other languages.  Writing a file could trigger running
-	  ctags, merging the tags of the changed file.
 -   Ideas from others:
 	http://www.wholetomato.com/
 	http://www.vim.org/scripts/script.php?script_id=747
@@ -2106,6 +2633,12 @@ 9   ^X^L completion doesn't repeat corre
 8   Add option to set different behavior for Insert mode completion:
     - ignore/match case
     - different characters than 'iskeyword'
+8   Add option 'isexpand', containing characters when doing expansion (so that
+    "." and "\" can be included, without changing 'iskeyword'). (Goldfarb)
+    Also: 'istagword': characters used for CTRL-].
+    When 'isexpand' or 'istagword' are empty, use 'iskeyword'.
+    Alternative: Use a pattern so that start and end of a keyword can be
+    defined, only allow dash in the middle, etc.
 8   Add a command to undo the completion, go back to the original text.
 7   Completion of an abbreviation: Can leave letters out, like what Instant
     text does: www.textware.com
@@ -2136,10 +2669,6 @@ 8   Add 'f' flag to 'complete': Expand f
 -   CTRL-X CTRL-F: Use 'path' to find completions.
 -   CTRL-X CTRL-F: Option to use forward slashes on MS-Windows?
 -   CTRL-X CTRL-F: Don't replace "$VIM" with the actual value. (Kelly)
-8   Add option 'isexpand', containing characters when doing expansion (so that
-    "." and "\" can be included, without changing 'iskeyword'). (Goldfarb)
-    Also: 'istagword': characters used for CTRL-].
-    When 'isexpand' or 'istagword' are empty, use 'iskeyword'.
 -   Allow listing all matches in some way (and picking one from the list).
 
 
@@ -2255,6 +2784,7 @@ 7   Use 'matchpairs' for 'showmatch': Wh
 
 
 'cindent', 'smartindent':
+8   Lisp indenting: "\\" confuses the indenter. (Dorai Sitaram, 2006 May 17)
 8   Java: Inside an anonymous class, after an "else" or "try" the indent is
     too small. (Vincent Bergbauer)
     Problem of using {} inside (), 'cindent' doesn't work then.
@@ -2265,6 +2795,11 @@ 8   In C++ it's possible to have {} insi
 			    "asdf"
 			}
 		    );
+6   Add 'cino' flag for this function argument layout: (Spencer Collyer)
+	    func( arg1
+	        , arg2
+		, arg3
+		);
 7   Add separate "(0" option into inside/outside a function (Zellner):
 	func(
 	   int x)	// indent like "(4"
@@ -2439,7 +2974,6 @@ 7   CTRL-A and CTRL-X should increase/de
 6   In non-Block mode, "I" should insert the same text in front of each line,
     before the first non-blank, "gI" in column 1.
 6   In non-Block mode, "A" should append the same text after each line.
-6   ":'<,'>source" should read the selected lines and ":source" them.
 6   When in blockwise visual selection (CTRL-V), allow cursor to be placed
     right of the line.  Could also allow cursor to be placed anywhere on a TAB
     or other special character.
@@ -2549,7 +3083,9 @@ Incsearch:
 Searching:
 8   Add "g/" and "gb" to search for a pattern in the Visually selected text?
     "g?" is already used for rot13.
+    The vis.vim script has a ":S" command that does something like this.
     Can use "g/" in Normal mode, uses the '< to '> area.
+    Use "&/" for searching the text in the Visual area?
 8   Add a mechanism for recursiveness: "\@(([^()]*\@g[^()]*)\)".  \@g stands
     for "go recursive here" and \@( \) marks the recursive part.
     Perl does it this way:
@@ -2557,6 +3093,9 @@ 8   Add a mechanism for recursiveness: "
     Here $paren is evaluated when it's encountered.  This is like a regexp
     inside a regexp.  In the above terms it would be:
 	    \@((\([^()]\|\@g\)*)\)
+8   Show the progress every second.  Could use the code that checks for CTRL-C
+    to find out how much time has passed.  Or use SIGALRM.  Where to show the
+    number?
 7   Support for approximate-regexps to find similar words (agrep
     http://www.tgries.de/agrep/ tre: http://laurikari.net/tre/index.html).
 8   Add an item for a big character range, so that one can search for a
@@ -2661,6 +3200,13 @@ 7   Add ":iselect", a combination of ":i
 
 
 Undo:
+8   Undo tree: visually show the tree somehow (Damian Conway)
+    Show only the leaves, indicating how many changed from the branch and the
+    timestamp?
+    Put branch with most recent change on the left, older changes get more
+    indent?
+8   Search for pattern in undo tree, showing when it happened and the text
+    state, so that you can jump to it.
 -   Persistent undo: store undo in a file.
     Use timestamps, so that a version a certain time ago can be found and info
     before some time/date can be flushed. 'undopersist' gives maximum time to
@@ -3033,8 +3579,13 @@ 7   [< to move to previous xml/html tag,
     next <li>, ]< to next </li>, [< to previous </li>.
 8   Add ":rename" command: rename the file of the current buffer and rename
     the buffer.  Buffer may be modified.
+7   Instead of filtering errors with a shell script it should be possible to
+    do this with Vim script.  A function that filters the raw text that comes
+    from the 'makeprg'?
 -   Add %b to 'errorformat': buffer number. (Yegappan Lakshmanan / Suresh
     Govindachar)
+7   Add a command that goes back to the position from before jumping to the
+    first quickfix location.  ":cbefore"?
 6   In the quickfix window statusline add the command used to get the list of
     errors, e.g. ":make foo", ":grep something *.c".
 6   Python interface: add vim.message() function. (Michal Vitecek, 2002 Nov 5)
@@ -3047,7 +3598,6 @@ 7   Add an invisible buffer which can be
     to manipulate text without changing the window layout.
 8   Add a command to revert to the saved version of file; undo or redo until
     all changes are gone.
-7   Add a ":cpfile", go in the other direction as ":cnfile".
 6   "vim -q -" should read the list of errors from stdin. (Gautam Mudunuri)
 8   Add "--remote-fail": When contacting the server fails, exit Vim.
     Add "--remote-self": When contacting the server fails, do it in this Vim.
@@ -3068,7 +3618,6 @@ 7   Xterm sends <Esc>O3F for <M-End>.  S
     etc.  Combinations of Alt, Ctrl and Shift are also possible.  Recognize
     these to avoid inserting the raw byte sequence, handle like the key
     without modifier (unless mapped).
-8   Add ":breakdel *": delete all breakpoints.
 7   Support ":browse edit" in console, using explorer.vim?
 6   Add "gG": like what "gj" is to "j": go to the N'th window line.
 8   Add command like ":normal" that accepts <Key> notation like ":map".
@@ -3107,13 +3656,6 @@ 7   Use growarray for replace stack.
 7   Have a look at viH (Hellenic or Greek version of Vim).  But a solution
     outside of Vim might be satisfactory (Haritsis).
 3   Make "2d%" work like "d%d%" instead of "d2%"?
-8   Make "more" prompt accept command characters, like "hit-enter" prompt?
-    Or extend it with more commands, like "less": 'b' for back, 'j' for one
-    line down, etc.
-8   For the "--more--" prompt, support the 'b'ack command for more commands.
-    Possible implementation: Do it at a very low level, caching the lines that
-    are on the screen (with highlight attributes).  Avoids that changes have
-    to be made for all functions that list something.
 7   "g CTRL-O" jumps back to last used buffer.	Skip CTRL-O jumps in the same
     buffer.  Make jumplist remember the last ten accessed buffers?
 -   Keep a list of most recently used files for each window, use "[o" to go
@@ -3146,8 +3688,6 @@ 7   Add a way to change an operator to a
     of the files.  Only check when an event occurs (e.g., character typed,
     mouse moved).  Useful for non-GUI versions where keyboard focus isn't
     noticeable.
-9   When using ":w <fname>" it's possible that this file is loaded in another
-    buffer.  Give a warning right away, don't wait for a shell command.
 -   Make 'smartcase' work even though 'ic' isn't set (Webb).
 7   When formatting text, allow to break the line at a number of characters.
     Use an option for this: 'breakchars'?  Useful for formatting Fortran code.
@@ -3156,8 +3696,8 @@ 7   When formatting text, allow to break
     paragraphs).  Complements the '2' flag.  Use '>' flag when larger indent
     starts a new paragraph, use '<' flag when smaller indent starts a new
     paragraph.	Both start a new paragraph on any indent change.
-7   Add a way to define an item list with a pattern in 'formatoptions'.  The
-    'n' flag doesn't work for "6.3" or "6a.".
+8   The 'a' flag in 'formatoptions' is too dangerous.  In some way only do
+    auto-formatting in specific regions, e.g. defined by syntax highlighting.
 8   Allow using a trailing space to signal a paragraph that continues on the
     next line (MIME text/plain; format=flowed, RFC 2646).  Can be used for
     continuous formatting.  Could use 'autoformat' option, which specifies a
@@ -3358,8 +3898,6 @@ 8   Allow opening an unnamed buffer with
 -   Amiga: test for 'w' flag when reading a file.
 -   :table command (Webb)
 -   Add new operator: clear, make area white (replace with spaces): "g ".
--   Make it possible for a user to define a new operator.  Implementation with
-    internal scripting language or Perl?
 -   Add command to ":read" a file at a certain column (blockwise read?).
 -   Add sort of replace mode where case is taken from the old text (Goldfarb).
 -   Allow multiple arguments for ":read", read all the files.
--- a/runtime/doc/usr_01.txt
+++ b/runtime/doc/usr_01.txt
@@ -1,4 +1,4 @@
-*usr_01.txt*	For Vim version 7.0.  Last change: 2006 Apr 24
+*usr_01.txt*	For Vim version 7.1a.  Last change: 2006 Oct 08
 
 		     VIM USER MANUAL - by Bram Moolenaar
 
@@ -57,10 +57,10 @@ installation: |usr_90.txt|.
 							*not-compatible*
 The manuals often assume you are using Vim with Vi-compatibility switched
 off.  For most commands this doesn't matter, but sometimes it is important,
-e.g., for multi-level undo.  An easy way to make sure you are using the right
-setup, copy the example vimrc file.  By doing this inside Vim you don't have
-to check out where it is located.  How to do this depends on the system you
-are using:
+e.g., for multi-level undo.  An easy way to make sure you are using a nice
+setup is to copy the example vimrc file.  By doing this inside Vim you don't
+have to check out where it is located.  How to do this depends on the system
+you are using:
 
 Unix: >
 	:!cp -i $VIMRUNTIME/vimrc_example.vim ~/.vimrc
@@ -155,7 +155,7 @@ The Vim user manual and reference manual
 Moolenaar.  This material may be distributed only subject to the terms and
 conditions set forth in the Open Publication License, v1.0 or later.  The
 latest version is presently available at:
-	     http://www.opencontent.org/opl.shtml
+	     http://www.opencontent.org/openpub/
 
 People who contribute to the manuals must agree with the above copyright
 notice.
@@ -164,8 +164,8 @@ Parts of the user manual come from the b
 Oualline (published by New Riders Publishing, ISBN: 0735710015).  The Open
 Publication License applies to this book.  Only selected parts are included
 and these have been modified (e.g., by removing the pictures, updating the
-text for Vim 6.0 and fixing mistakes).  The omission of the |frombook| tag
-does not mean that the text does not come from the book.
+text for Vim 6.0 and later, fixing mistakes).  The omission of the |frombook|
+tag does not mean that the text does not come from the book.
 
 Many thanks to Steve Oualline and New Riders for creating this book and
 publishing it under the OPL!  It has been a great help while writing the user
--- a/runtime/doc/usr_04.txt
+++ b/runtime/doc/usr_04.txt
@@ -1,4 +1,4 @@
-*usr_04.txt*	For Vim version 7.0.  Last change: 2006 Apr 24
+*usr_04.txt*	For Vim version 7.1a.  Last change: 2006 Jun 21
 
 		     VIM USER MANUAL - by Bram Moolenaar
 
@@ -390,7 +390,7 @@ the clipboard in section |09.3| and here
 ==============================================================================
 *04.8*	Text objects
 
-If the cursor is in the middle of a word and want to delete that word, you
+If the cursor is in the middle of a word and you want to delete that word, you
 need to move back to its start before you can do "dw".  There is a simpler way
 to do this: "daw".
 
--- a/runtime/doc/usr_05.txt
+++ b/runtime/doc/usr_05.txt
@@ -1,4 +1,4 @@
-*usr_05.txt*	For Vim version 7.0.  Last change: 2006 Apr 24
+*usr_05.txt*	For Vim version 7.1a.  Last change: 2006 Jul 10
 
 		     VIM USER MANUAL - by Bram Moolenaar
 
@@ -202,8 +202,8 @@ actually two parts here.  "autocmd FileT
 defines that when the file type is set to "text" the following command is
 automatically executed.  "setlocal textwidth=78" sets the 'textwidth' option
 to 78, but only locally in one file.
->
 
+							*restore-cursor*  >
 	autocmd BufReadPost *
 	    \ if line("'\"") > 0 && line("'\"") <= line("$") |
 	    \   exe "normal g`\"" |
--- a/runtime/doc/usr_06.txt
+++ b/runtime/doc/usr_06.txt
@@ -1,4 +1,4 @@
-*usr_06.txt*	For Vim version 7.0.  Last change: 2006 Apr 24
+*usr_06.txt*	For Vim version 7.1a.  Last change: 2006 Apr 24
 
 		     VIM USER MANUAL - by Bram Moolenaar
 
--- a/runtime/doc/usr_07.txt
+++ b/runtime/doc/usr_07.txt
@@ -1,4 +1,4 @@
-*usr_07.txt*	For Vim version 7.0.  Last change: 2006 Apr 24
+*usr_07.txt*	For Vim version 7.1a.  Last change: 2006 Apr 24
 
 		     VIM USER MANUAL - by Bram Moolenaar
 
--- a/runtime/doc/usr_11.txt
+++ b/runtime/doc/usr_11.txt
@@ -1,4 +1,4 @@
-*usr_11.txt*	For Vim version 7.0.  Last change: 2006 Apr 24
+*usr_11.txt*	For Vim version 7.1a.  Last change: 2006 Apr 24
 
 		     VIM USER MANUAL - by Bram Moolenaar
 
--- a/runtime/doc/usr_12.txt
+++ b/runtime/doc/usr_12.txt
@@ -1,4 +1,4 @@
-*usr_12.txt*	For Vim version 7.0.  Last change: 2006 Apr 24
+*usr_12.txt*	For Vim version 7.1a.  Last change: 2006 Nov 18
 
 		     VIM USER MANUAL - by Bram Moolenaar
 
@@ -38,8 +38,8 @@ match the start of a word: >
 
 	:%s/\<four/4/g
 
-Obviously, this still goes wrong on "fourty".  Use "\>" to match the end of a
-word: >
+Obviously, this still goes wrong on "fourteen".  Use "\>" to match the end of
+a word: >
 
 	:%s/\<four\>/4/g
 
--- a/runtime/doc/usr_20.txt
+++ b/runtime/doc/usr_20.txt
@@ -1,4 +1,4 @@
-*usr_20.txt*	For Vim version 7.0.  Last change: 2006 Apr 24
+*usr_20.txt*	For Vim version 7.1a.  Last change: 2006 Apr 24
 
 		     VIM USER MANUAL - by Bram Moolenaar
 
--- a/runtime/doc/usr_23.txt
+++ b/runtime/doc/usr_23.txt
@@ -1,4 +1,4 @@
-*usr_23.txt*	For Vim version 7.0.  Last change: 2006 Apr 24
+*usr_23.txt*	For Vim version 7.1a.  Last change: 2006 Apr 24
 
 		     VIM USER MANUAL - by Bram Moolenaar
 
--- a/runtime/doc/usr_27.txt
+++ b/runtime/doc/usr_27.txt
@@ -1,4 +1,4 @@
-*usr_27.txt*	For Vim version 7.0.  Last change: 2006 Apr 24
+*usr_27.txt*	For Vim version 7.1a.  Last change: 2006 Apr 24
 
 		     VIM USER MANUAL - by Bram Moolenaar
 
--- a/runtime/doc/usr_28.txt
+++ b/runtime/doc/usr_28.txt
@@ -1,4 +1,4 @@
-*usr_28.txt*	For Vim version 7.0.  Last change: 2006 Apr 24
+*usr_28.txt*	For Vim version 7.1a.  Last change: 2006 Apr 24
 
 		     VIM USER MANUAL - by Bram Moolenaar
 
--- a/runtime/doc/usr_30.txt
+++ b/runtime/doc/usr_30.txt
@@ -1,4 +1,4 @@
-*usr_30.txt*	For Vim version 7.0.  Last change: 2006 Apr 24
+*usr_30.txt*	For Vim version 7.1a.  Last change: 2007 Apr 22
 
 		     VIM USER MANUAL - by Bram Moolenaar
 
@@ -50,7 +50,7 @@ like this:
 	2 returned ~
 	"main.c" 11L, 111C ~
 	(3 of 6): too many arguments to function 'do_sub' ~
-	Hit ENTER or type command to continue ~
+	Press ENTER or type command to continue ~
 
 From this you can see that you have errors in the file "main.c".  When you
 press <Enter>, Vim displays the file "main.c", with the cursor positioned on
@@ -148,7 +148,7 @@ More about these modifiers here: |filena
 
 OLD ERROR LISTS
 
-Suppose you ":make" a program.  There is an warning message in one file and an
+Suppose you ":make" a program.  There is a warning message in one file and an
 error message in another.  You fix the error and use ":make" again to check if
 it was really fixed.  Now you want to look at the warning message.  It doesn't
 show up in the last error list, since the file with the warning wasn't
@@ -242,7 +242,7 @@ form is: >
 This indents the current line.  Like with all operators, there are three ways
 to use it.  In Visual mode "=" indents the selected lines.  A useful text
 object is "a{".  This selects the current {} block.  Thus, to re-indent the
-code code block the cursor is in: >
+code block the cursor is in: >
 
 	=a{
 
@@ -315,7 +315,7 @@ In this file the output is:
 
 	filetype=help ~
 
-This you would use "help" for {filetype}.
+Thus you would use "help" for {filetype}.
    For the {directory} part you need to use your runtime directory.  Look at
 the output of this command: >
 
@@ -339,7 +339,7 @@ How to do that is explained here: |inden
 The most simple form of automatic indenting is with the 'autoindent' option.
 It uses the indent from the previous line.  A bit smarter is the 'smartindent'
 option.  This is useful for languages where no indent file is available.
-'smartindent'is not as smart as 'cindent', but smarter than 'autoindent'.
+'smartindent' is not as smart as 'cindent', but smarter than 'autoindent'.
    With 'smartindent' set, an extra level of indentation is added for each {
 and removed for each }.  An extra level of indentation will also be added for
 any of the words in the 'cinwords' option.  Lines that begin with # are
--- a/runtime/doc/usr_40.txt
+++ b/runtime/doc/usr_40.txt
@@ -1,4 +1,4 @@
-*usr_40.txt*	For Vim version 7.0.  Last change: 2006 Apr 24
+*usr_40.txt*	For Vim version 7.1a.  Last change: 2006 Jun 21
 
 		     VIM USER MANUAL - by Bram Moolenaar
 
@@ -605,8 +605,9 @@ like "doautocmd" except it executes on a
 
 USING NORMAL MODE COMMANDS
 
-The commands executed by an autocommand are Command-line command.  If you want
-to use a Normal mode command, the ":normal" command can be used.  Example: >
+The commands executed by an autocommand are Command-line commands.  If you
+want to use a Normal mode command, the ":normal" command can be used.
+Example: >
 
 	:autocmd BufReadPost *.log normal G
 
--- a/runtime/doc/various.txt
+++ b/runtime/doc/various.txt
@@ -1,4 +1,4 @@
-*various.txt*   For Vim version 7.0.  Last change: 2006 Apr 25
+*various.txt*   For Vim version 7.1a.  Last change: 2007 Jan 14
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -121,6 +121,12 @@ 8g8			Find an illegal UTF-8 byte sequenc
 :[range]# [count] [flags]
 			synonym for :number.
 
+							*:#!*
+:#!{anything}		Ignored, so that you can start a Vim script with: >
+				#!/usr/bin/env vim -S
+				echo "this is a Vim script"
+				quit
+<
 							*:z* *E144*
 :{range}z[+-^.=]{count}	Display several lines of text surrounding the line
 			specified with {range}, or around the current line
@@ -163,6 +169,7 @@ 8g8			Find an illegal UTF-8 byte sequenc
 			it possible to execute Normal mode commands typed on
 			the command-line.  {commands} is executed like it is
 			typed.  For undo all commands are undone together.
+			Execution stops when an error is encountered.
 			If the [!] is given, mappings will not be used.
 			{commands} should be a complete command.  If
 			{commands} does not finish a command, the last one
@@ -377,7 +384,7 @@ m  *+tcl/dyn*		Tcl interface |tcl-dynami
 N  *+termresponse*	support for |t_RV| and |v:termresponse|
 N  *+textobjects*	|text-objects| selection
    *+tgetent*		non-Unix only: able to use external termcap
-N  *+title*		Setting the window title |'title'|
+N  *+title*		Setting the window 'title' and 'icon'
 N  *+toolbar*		|gui-toolbar|
 N  *+user_commands*	User-defined commands. |user-commands|
 N  *+viminfo*		|'viminfo'|
@@ -434,10 +441,14 @@ N  *+X11*		Unix only: can restore window
 			after the register name can be omitted. {not in Vi}
 :redi[r] @{a-z}>>	Append messages to register {a-z}. {not in Vi}
 
-:redi[r] @*>		Redirect messages to the clipboard. For backward
-			compatibility, the ">" after the register name can be
-			omitted. {not in Vi}
-:redi[r] @*>>		Append messages to the clipboard. {not in Vi}
+:redi[r] @*>		
+:redi[r] @+>		Redirect messages to the selection or clipboard. For
+			backward compatibility, the ">" after the register
+			name can be omitted. See |quotestar| and |quoteplus|.
+			{not in Vi}
+:redi[r] @*>>		
+:redi[r] @+>>		Append messages to the selection or clipboard.
+			{not in Vi}
 
 :redi[r] @">		Redirect messages to the unnamed register. For
 			backward compatibility, the ">" after the register
@@ -447,6 +458,7 @@ N  *+X11*		Unix only: can restore window
 :redi[r] => {var}	Redirect messages to a variable.  If the variable
 			doesn't exist, then it is created.  If the variable
 			exists, then it is initialized to an empty string.
+			The variable will remain empty until redirection ends.
 			Only string variables can be used.  After the
 			redirection starts, if the variable is removed or
 			locked or the variable type is changed, then further
--- a/runtime/doc/version7.txt
+++ b/runtime/doc/version7.txt
@@ -1,9 +1,9 @@
-*version7.txt*  For Vim version 7.0.  Last change: 2006 May 07
+*version7.txt*  For Vim version 7.1a.  Last change: 2007 May 05
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
 
-
+									*vim7*
 Welcome to Vim 7!  A large number of features has been added.  This file
 mentions all the new items, changes to existing features and bug fixes
 since Vim 6.x.  Use this command to see the version you are using: >
@@ -46,6 +46,11 @@ COMPILE TIME CHANGES			|compile-changes-
 
 BUG FIXES				|bug-fixes-7|
 
+VERSION 7.1			|version-7.1|
+Changed					|changed-7.1|
+Added					|added-7.1|
+Fixed					|fixed-7.1|
+
 ==============================================================================
 INCOMPATIBLE CHANGES				*incompatible-7*
 
@@ -464,7 +469,7 @@ problems have been fixed to make Vim mor
 conflict with traditional Vi or expected behavior.  The $VIM_POSIX environment
 variable can be set to get POSIX compatibility.  See |posix|.
 
-Items that were fixed for both Vi and POSIX compatibilty:
+Items that were fixed for both Vi and POSIX compatibility:
 - repeating "R" with a count only overwrites text once; added the 'X' flag to
   'cpoptions' |cpo-X|
 - a vertical movement command that moves to a non-existing line fails; added
@@ -856,8 +861,8 @@ New and extended functions: ~
 |getreg()|		get contents of a register
 |gettabwinvar()|	get variable from window in specified tab page.
 |has_key()|		check whether a key appears in a Dictionary
+|haslocaldir()|		check if current window used |:lcd|
 |hasmapto()|		check for a mapping to a string
-|inputlist()|		select an entry from a list
 |index()|		index of item in List
 |inputlist()|		prompt the user to make a selection from a list
 |insert()|		insert an item somewhere in a List
@@ -937,7 +942,7 @@ New Vim variables: ~
 |v:beval_text|		text under the mouse pointer for 'balloonexpr'
 |v:scrollstart|		what caused the screen to be scrolled up
 |v:swapname|		name of the swap file for the |SwapExists| event
-|v:swapchoice|		what do do for an existing swap file
+|v:swapchoice|		what to do for an existing swap file
 |v:swapcommand|		command to be executed after handling |SwapExists|
 |v:char|		argument for evaluating 'formatexpr'
 
@@ -1105,7 +1110,6 @@ prolog ftplugin file. (Nikolai Weibull)
 protocols syntax and ftplugin file. (Nikolai Weibull)
 quake ftplugin file. (Nikolai Weibull)
 racc syntax and ftplugin file. (Nikolai Weibull)
-rd syntax file. (Johannes Ranke)
 readline ftplugin file. (Nikolai Weibull)
 rhelp syntax file. (Johannes Ranke)
 rnoweb syntax file. (Johannes Ranke)
@@ -1152,7 +1156,7 @@ Tamil in TSCII encoding (Yegappan Lakshm
 Greek in cp737 (Panagiotis Louridas)
 Polish-slash (HS6_06)
 Ukrainian-jcuken (Anatoli Sakhnik)
-Kana (Edward L. Fo)
+Kana (Edward L. Fox)
 
 
 New message translations: ~
@@ -1983,7 +1987,7 @@ unicodepdy[] as for UTF-8. (Taro Muraoka
 ":w fname" didn't work for files with 'buftype' set to "nofile".
 
 The method used to locate user commands for completion differed from when they
-are executed.  Abiguous command names were not completed properly.
+are executed.  Ambiguous command names were not completed properly.
 
 Incremental search may cause a crash when there is a custom statusline that
 indirectly invokes ":normal".
@@ -2023,7 +2027,7 @@ Starting with an argument "+cmd" or "-S 
 to the first line.  That breaks a BufReadPost autocommand that uses g`".
 Don't move the cursor if it's somewhere past the first line.
 
-"gg=G" while 'modifiable' is off was uninterruptable.
+"gg=G" while 'modifiable' is off was uninterruptible.
 
 When 'encoding' is "sjis" inserting CTRL-V u d800 a few times causes a crash.
 Don't insert a DBCS character with a NUL second byte.
@@ -2175,7 +2179,7 @@ Unix: ":w a;b~c" caused an error in expa
 When appending to a file with ":w >>fname" in a buffer without a name, causing
 the buffer to use "fname", the modified flag was reset.
 
-When appending to to current file the "not edited" flag would be reset.
+When appending to the current file the "not edited" flag would be reset.
 ":w" would overwrite the file accidentally.
 
 Unix: When filtering text with an external command Vim would still read input,
@@ -2392,7 +2396,7 @@ install directory.
 To make the 16 bit DOS version compile exclude not used highlight
 initializations and build a tiny instead of small version.
 
-finddir() and findfile() accept a negative cound and return a List then.
+finddir() and findfile() accept a negative count and return a List then.
 
 The Python indent file contained a few debugging statements, removed.
 
@@ -2731,7 +2735,7 @@ Added CTRL-W gF: open file under cursor 
 number following the file name.
 Added 'guitabtooltip'.  Implemented for Win32 (Yegappan Lakshmanan).
 
-Added "throw" to 'debug' option: thow an exception for error messages even
+Added "throw" to 'debug' option: throw an exception for error messages even
 whey they would otherwise be ignored.
 
 When 'keymap' is set and a line contains an invalid entry could get a "No
@@ -2969,4 +2973,1587 @@ Fixed a few things for Insert mode compl
 CTRL-N or a printable character while still searching for matches.
 
 
+==============================================================================
+VERSION 7.1						*version-7.1*
+
+This section is about improvements made between version 7.0 and 7.1.
+
+This is a bug-fix release, there are no fancy new features.
+
+
+Changed							*changed-7.1*
+-------
+
+Added setting 'mouse' in vimrc_example.vim.
+
+When building with MZscheme also look for include files in the "plt"
+subdirectory.  That's where they are for FreeBSD.
+
+
+Added							*added-7.1*
+-----
+
+New syntax files:
+	AutoIt v3 (Jared Breland)
+	Bazaar commit file "bzr". (Dmitry Vasiliev)
+	Cmusrc (Nikolai Weibull)
+	FreeBasic (Mark Manning)
+	Hamster (David Fishburn)
+	IBasic (Mark Manning)
+	initng (Elan Ruusamae)
+	/var/log/messages (Yakov Lerner)
+	Privoxy actions file (Doug Kearns)
+	Streaming Descriptors "sd" (Puria Nafisi Azizi)
+
+New tutor files:
+	Hungarian (Arpad Horvath)
+	Czech (Lubos Turek)
+	Turkish (Serkan kkk)
+	utf-8 version of Greek tutor.
+	utf-8 version of Russian tutor.
+	utf-8 version of Slowak tutor.
+
+New filetype plugins:
+	Bst (Tim Pope)
+	Cobol (Tim Pope)
+	Fvwm (Gautam Iyer)
+	Hamster (David Fishburn)
+	Django HTML template (Dave Hodder)
+
+New indent files:
+	Bst (Tim Pope)
+	Cobol (Tim Pope)
+	Hamster (David Fishburn)
+	Django HTML template (Dave Hodder)
+	Javascript
+	JSP (David Fishburn)
+
+New keymap files:
+	Bulgarian (Boyko Bantchev)
+	Mongolian (Natsagdorj Shagdar)
+	Thaana (Ibrahim Fayaz)
+	Vietnamese (Samuel Thibault)
+
+Other new runtime files:
+	Ada support files. (Neil Bird, Martin Krischik)
+	Slovenian menu translations (Mojca Miklavec)
+	Mono C# compiler plugin (Jarek Sobiecki)
+
+
+Fixed							*fixed-7.1*
+-----
+
+Could not build the Win32s version.  Added a few structure definitions in
+src/gui_w32.c
+
+
+Patch 7.0.001
+Problem:    ":set spellsuggest+=10" does not work. (Suresh Govindachar)
+Solution:   Add P_COMMA to the 'spellsuggest' flags.
+Files:	    src/option.c
+
+Patch 7.0.002
+Problem:    C omni completion has a problem with tags files with a path
+	    containing "#" or "%".
+Solution:   Escape these characters. (Sebastian Baberowski)
+Files:	    runtime/autoload/ccomplete.vim
+
+Patch 7.0.003
+Problem:    GUI: clicking in the lower part of a label in the tab pages line
+	    while 'mousefocus' is set may warp the mouse pointer. (Robert
+	    Webb)
+Solution:   Check for a negative mouse position.
+Files:	    src/gui.c
+
+Patch 7.0.004
+Problem:    Compiler warning for debug_saved used before set. (Todd Blumer)
+Solution:   Remove the "else" for calling save_dbg_stuff().
+Files:	    src/ex_docmd.c
+
+Patch 7.0.005 (extra)
+Problem:    Win32: The installer doesn't remove the "autoload" and "spell"
+	    directories. (David Fishburn)
+Solution:   Add the directories to the list to be removed.
+Files:	    nsis/gvim.nsi
+
+Patch 7.0.006
+Problem:    Mac: "make shadow" doesn't make a link for infplist.xml. (Axel
+	    Kielhorn)
+Solution:   Make the link.
+Files:	    src/Makefile
+
+Patch 7.0.007
+Problem:    AIX: compiling fails for message.c. (Ruediger Hornig)
+Solution:   Move the #if outside of memchr().
+Files:	    src/message.c
+
+Patch 7.0.008
+Problem:    Can't call a function that uses both <SID> and {expr}. (Thomas)
+Solution:   Check both the expanded and unexpanded name for <SID>.
+Files:	    src/eval.c
+
+Patch 7.0.009
+Problem:    ml_get errors with both 'sidescroll' and 'spell' set.
+Solution:   Use ml_get_buf() instead of ml_get(), get the line from the right
+	    buffer, not the current one.
+Files:	    src/spell.c
+
+Patch 7.0.010
+Problem:    The spellfile plugin required typing login name and password.
+Solution:   Use "anonymous" and "vim7user" by default.  No need to setup a
+	    .netrc file.
+Files:	    runtime/autoload/spellfile.vim
+
+Patch 7.0.011
+Problem:    Can't compile without the folding and with the eval feature.
+Solution:   Add an #ifdef. (Vallimar)
+Files:	    src/option.c
+
+Patch 7.0.012
+Problem:    Using the matchparen plugin, moving the cursor in Insert mode to a
+	    shorter line that ends in a brace, changes the preferred column
+Solution:   Use winsaveview()/winrestview() instead of getpos()/setpos().
+Files:	    runtime/plugin/matchparen.vim
+
+Patch 7.0.013
+Problem:    Insert mode completion: using CTRL-L to add an extra character
+	    also deselects the current match, making it impossible to use
+	    CTRL-L a second time.
+Solution:   Keep the current match.  Also make CTRL-L work at the original
+	    text, using the first displayed match.
+Files:	    src/edit.c
+
+Patch 7.0.014
+Problem:    Compiling gui_xmebw.c fails on Dec Alpha Tru64. (Rolfe)
+Solution:   Disable some code for Motif 1.2 and older.
+Files:	    src/gui_xmebw.c
+
+Patch 7.0.015
+Problem:    Athena: compilation problems with modern compiler.
+Solution:   Avoid type casts for lvalue. (Alexey Froloff)
+Files:	    src/gui_at_fs.c
+
+Patch 7.0.016
+Problem:    Printing doesn't work for "dec-mcs" encoding.
+Solution:   Add "dec-mcs", "mac-roman" and "hp-roman8" to the list of
+	    recognized 8-bit encodings. (Mike Williams)
+Files:	    src/mbyte.c
+
+Patch 7.0.017 (after 7.0.014)
+Problem:    Linking gui_xmebw.c fails on Dec Alpha Tru64. (Rolfe)
+Solution:   Adjust defines for Motif 1.2 and older.
+Files:	    src/gui_xmebw.c
+
+Patch 7.0.018
+Problem:    VMS: plugins are not loaded on startup.
+Solution:   Remove "**" from the path. (Zoltan Arpadffy)
+Files:	    src/main.c
+
+Patch 7.0.019
+Problem:    Repeating "VjA789" may cause a crash. (James Vega)
+Solution:   Check the cursor column after moving it to another line.
+Files:	    src/ops.c
+
+Patch 7.0.020
+Problem:    Crash when using 'mousefocus'. (William Fulton)
+Solution:   Make buffer for mouse coordinates 2 bytes longer. (Juergen Weigert)
+Files:	    src/gui.c
+
+Patch 7.0.021
+Problem:    Crash when using "\\[" and "\\]" in 'errorformat'. (Marc Weber)
+Solution:   Check for valid submatches after matching the pattern.
+Files:	    src/quickfix.c
+
+Patch 7.0.022
+Problem:    Using buffer.append() in Ruby may append the line to the wrong
+	    buffer. (Alex Norman)
+Solution:   Properly switch to the buffer to do the appending.  Also for
+	    buffer.delete() and setting a buffer line.
+Files:	    src/if_ruby.c
+
+Patch 7.0.023
+Problem:    Crash when doing spell completion in an empty line and pressing
+	    CTRL-E.
+Solution:   Check for a zero pointer. (James Vega)
+	    Also handle a situation without a matching pattern better, report
+	    "No matches" instead of remaining in undefined CTRL-X mode.  And
+	    get out of CTRL-X mode when typing a letter.
+Files:	    src/edit.c
+
+Patch 7.0.024
+Problem:    It is possible to set arbitrary "v:" variables.
+Solution:   Disallow setting "v:" variables that are not predefined.
+Files:	    src/eval.c
+
+Patch 7.0.025
+Problem:    Crash when removing an element of a:000.  (Nikolai Weibull)
+Solution:   Mark the a:000 list with VAR_FIXED.
+Files:	    src/eval.c
+
+Patch 7.0.026
+Problem:    Using libcall() may show an old error.
+Solution:   Invoke dlerror() to clear a previous error. (Yukihiro Nakadaira)
+Files:	    src/os_unix.c
+
+Patch 7.0.027 (extra)
+Problem:    Win32: When compiled with SNIFF gvim may hang on exit.
+Solution:   Translate and dispatch the WM_USER message. (Mathias Michaelis)
+Files:	    src/gui_w48.c
+
+Patch 7.0.028 (extra)
+Problem:    OS/2: Vim doesn't compile with gcc 3.2.1.
+Solution:   Add argument to after_pathsep(), don't define vim_handle_signal(),
+	    define HAVE_STDARG_H. (David Sanders)
+Files:	    src/os_unix.c, src/vim.h, src/os_os2_cfg.h
+
+Patch 7.0.029
+Problem:    getchar() may not position the cursor after a space.
+Solution:   Position the cursor explicitly.
+Files:	    src/eval.c
+
+Patch 7.0.030
+Problem:    The ":compiler" command can't be used in a FileChangedRO event.
+	    (Hari Krishna Dara)
+Solution:   Add the CMDWIN flag to the ":compiler" command.
+Files:	    src/ex_cmds.h
+
+Patch 7.0.031
+Problem:    When deleting a buffer the buffer-local mappings for Select mode
+	    remain.
+Solution:   Add the Select mode bit to MAP_ALL_MODES. (Edwin Steiner)
+Files:	    src/vim.h
+
+Patch 7.0.032 (extra, after 7.0.027)
+Problem:    Missing semicolon.
+Solution:   Add the semicolon.
+Files:	    src/gui_w48.c
+
+Patch 7.0.033
+Problem:    When pasting text, with the menu or CTRL-V, autoindent is removed.
+Solution:   Use "x<BS>" to avoid indent to be removed. (Benji Fisher)
+Files:	    runtime/autoload/paste.vim
+
+Patch 7.0.034
+Problem:    After doing completion and typing more characters or using BS
+	    repeating with "." didn't work properly. (Martin Stubenschrott)
+Solution:   Don't put BS and other characters in the redo buffer right away,
+	    do this when finishing completion.
+Files:	    src/edit.c
+
+Patch 7.0.035
+Problem:    Insert mode completion works when typed but not when replayed from
+	    a register. (Hari Krishna Dara)
+	    Also: Mappings for Insert mode completion don't always work.
+Solution:   When finding a non-completion key in the input don't interrupt
+	    completion when it wasn't typed.
+	    Do use mappings when checking for typeahead while still finding
+	    completions.  Avoids that completion is interrupted too soon.
+	    Use "compl_pending" in a different way.
+Files:	    src/edit.c
+
+Patch 7.0.036
+Problem:    Can't compile with small features and syntax highlighting or the
+	    diff feature.
+Solution:   Define LINE_ATTR whenever syntax highlighting or the diff feature
+	    is enabled.
+Files:	    src/screen.c
+
+Patch 7.0.037
+Problem:    Crash when resizing the GUI window vertically when there is a line
+	    that doesn't fit.
+Solution:   Don't redraw while the screen data is invalid.
+Files:	    src/screen.c
+
+Patch 7.0.038
+Problem:    When calling complete() from an Insert mode expression mapping
+	    text could be inserted in an improper way.
+Solution:   Make undo_allowed() global and use it in complete().
+Files:	    src/undo.c, src/proto/undo.pro, src/eval.c
+
+Patch 7.0.039
+Problem:    Calling inputdialog() with a third argument in the console doesn't
+	    work.
+Solution:   Make a separate function for input() and inputdialog(). (Yegappan
+	    Lakshmanan)
+Files:	    src/eval.c
+
+Patch 7.0.040
+Problem:    When 'cmdheight' is larger than 1 using inputlist() or selecting
+	    a spell suggestion with the mouse gets the wrong entry.
+Solution:   Start listing the first alternative on the last line of the screen.
+Files:	    src/eval.c, src/spell.c
+
+Patch 7.0.041
+Problem:    cursor([1, 1]) doesn't work. (Peter Hodge)
+Solution:   Allow leaving out the third item of the list and use zero for the
+	    virtual column offset.
+Files:	    src/eval.c
+
+Patch 7.0.042
+Problem:    When pasting a block of text in Insert mode Vim hangs or crashes.
+	    (Noam Halevy)
+Solution:   Avoid that the cursor is positioned past the NUL of a line.
+Files:	    src/ops.c
+
+Patch 7.0.043
+Problem:    Using "%!" at the start of 'statusline' doesn't work.
+Solution:   Recognize the special item when the option is being set.
+Files:	    src/option.c
+
+Patch 7.0.044
+Problem:    Perl: setting a buffer line in another buffer may result in
+	    changing the current buffer.
+Solution:   Properly change to the buffer to be changed.
+Files:	    src/if_perl.xs
+
+Patch 7.0.045 (extra)
+Problem:    Win32: Warnings when compiling OLE version with MSVC 2005.
+Solution:   Move including vim.h to before windows.h. (Ilya Bobir)
+Files:	    src/if_ole.cpp
+
+Patch 7.0.046
+Problem:    The matchparen plugin ignores parens in strings, but not in single
+	    quotes, often marked with "character".
+Solution:   Also ignore parens in syntax items matching "character".
+Files:	    runtime/plugin/matchparen.vim
+
+Patch 7.0.047
+Problem:    When running configure the exit status is wrong.
+Solution:   Handle the exit status properly. (Matthew Woehlke)
+Files:	    configure, src/configure
+
+Patch 7.0.048
+Problem:    Writing a compressed file fails when there are parens in the name.
+	    (Wang Jian)
+Solution:   Put quotes around the temp file name.
+Files:	    runtime/autoload/gzip.vim
+
+Patch 7.0.049
+Problem:    Some TCL scripts are not recognized. (Steven Atkinson)
+Solution:   Check for "exec wish" in the file.
+Files:	    runtime/scripts.vim
+
+Patch 7.0.050
+Problem:    After using the netbeans interface close command a stale pointer
+	    may be used.
+Solution:   Clear the pointer to the closed buffer. (Xaview de Gaye)
+Files:	    src/netbeans.c
+
+Patch 7.0.051 (after 7.0.44)
+Problem:    The Perl interface doesn't compile or doesn't work properly.
+Solution:   Remove the spaces before #ifdef and avoid an empty line above it.
+Files:	    src/if_perl.xs
+
+Patch 7.0.052
+Problem:    The user may not be aware that the Vim server allows others more
+	    functionality than desired.
+Solution:   When running Vim as root don't become a Vim server without an
+	    explicit --servername argument.
+Files:	    src/main.c
+
+Patch 7.0.053
+Problem:    Shortening a directory name may fail when there are multi-byte
+	    characters.
+Solution:   Copy the correct bytes. (Titov Anatoly)
+Files:	    src/misc1.c
+
+Patch 7.0.054
+Problem:    Mac: Using a menu name that only has a mnemonic or accelerator
+	    causes a crash.  (Elliot Shank)
+Solution:   Check for an empty menu name.  Also delete empty submenus that
+	    were created before detecting the error.
+Files:	    src/menu.c
+
+Patch 7.0.055
+Problem:    ":startinsert" in a CmdwinEnter autocommand doesn't take immediate
+	    effect. (Bradley White)
+Solution:   Put a NOP key in the typeahead buffer.  Also avoid that using
+	    CTRL-C to go back to the command line moves the cursor left.
+Files:	    src/edit.c, src/ex_getln.c
+
+Patch 7.0.056
+Problem:    "#!something" gives an error message.
+Solution:   Ignore this line, so that it can be used in an executable Vim
+	    script.
+Files:	    src/ex_docmd.c
+
+Patch 7.0.057 (extra, after 7.0.45)
+Problem:    Win32: Compilation problem with Borland C 5.5.
+Solution:   Include vim.h as before. (Mark S. Williams)
+Files:	    src/if_ole.cpp
+
+Patch 7.0.058
+Problem:    The gbk and and gb18030 encodings are not recognized.
+Solution:   Add aliases to cp936. (Edward L. Fox)
+Files:	    src/mbyte.c
+
+Patch 7.0.059
+Problem:    The Perl interface doesn't compile with ActiveState Perl 5.8.8.
+Solution:   Remove the __attribute__() items. (Liu Yubao)
+Files:	    src/if_perl.xs
+
+Patch 7.0.060 (after 7.0.51)
+Problem:    Code for temporarily switching to another buffer is duplicated in
+	    quite a few places.
+Solution:   Use aucmd_prepbuf() and aucmd_restbuf() also when FEAT_AUTOCMD is
+	    not defined.
+Files:	    src/buffer.c, src/eval.c, src/fileio.c, src/if_ruby.c,
+	    src/if_perl.xs, src/quickfix.c, src/structs.h
+
+Patch 7.0.061
+Problem:    Insert mode completion for Vim commands may crash if there is
+	    nothing to complete.
+Solution:   Instead of freeing the pattern make it empty, so that a "not
+	    found" error is given. (Yukihiro Nakadaira)
+Files:	    src/edit.c
+
+Patch 7.0.062
+Problem:    Mac: Crash when using the popup menu for spell correction.  The
+	    popup menu appears twice when letting go of the right mouse button
+	    early.
+Solution:   Don't show the popup menu on the release of the right mouse
+	    button.  Also check that a menu pointer is actually valid.
+Files:	    src/proto/menu.pro, src/menu.c, src/normal.c, src/term.c
+
+Patch 7.0.063
+Problem:    Tiny chance for a memory leak. (coverity)
+Solution:   Free pointer when next memory allocation fails.
+Files:	    src/eval.c
+
+Patch 7.0.064
+Problem:    Using uninitialized variable. (Tony Mechelynck)
+Solution:   When not used set "temp" to zero.  Also avoid a warning for
+	    "files" in ins_compl_dictionaries().
+Files:	    src/edit.c
+
+Patch 7.0.065 (extra)
+Problem:    Mac: left-right movement of the scrollwheel causes up-down
+	    scrolling.
+Solution:   Ignore mouse wheel events that are not up-down. (Nicolas Weber)
+Files:	    src/gui_mac.c
+
+Patch 7.0.066
+Problem:    After the popup menu for Insert mode completion overlaps the tab
+	    pages line it is not completely removed.
+Solution:   Redraw the tab pages line after removing the popup menu. (Ori
+	    Avtalion)
+Files:	    src/popupmnu.c
+
+Patch 7.0.067
+Problem:    Undo doesn't always work properly when using "scim" input method.
+	    Undo is split up when using preediting.
+Solution:   Reset xim_has_preediting also when preedit_start_col is not
+	    MAXCOL.  Don't split undo when <Left> is used while preediting.
+	    (Yukihiro Nakadaira)
+Files:	    src/edit.c, src/mbyte.c
+
+Patch 7.0.068
+Problem:    When 'ignorecase' is set and using Insert mode completion,
+	    typing characters to change the list of matches, case is not
+	    ignored. (Hugo Ahlenius)
+Solution:   Store the 'ignorecase' flag with the matches where needed.
+Files:	    src/edit.c, src/search.c, src/spell.c
+
+Patch 7.0.069
+Problem:    Setting 'guitablabel' to %!expand(\%)  causes Vim to free an
+	    invalid pointer. (Kim Schulz)
+Solution:   Don't try freeing a constant string pointer.
+Files:	    src/buffer.c
+
+Patch 7.0.070
+Problem:    Compiler warnings for shadowed variables and uninitialized
+	    variables.
+Solution:   Rename variables such as "index", "msg" and "dup".  Initialize
+	    variables.
+Files:	    src/edit.c, src/eval.c, src/ex_cmds.c, src/ex_cmds2.c,
+	    src/ex_docmd.c, src/gui_beval.c, src/gui_gtk.c, src/gui_gtk_x11.c,
+	    src/hardcopy.c, src/if_cscope.c, src/main.c, src/mbyte.c,
+	    src/memline.c, src/netbeans.c, src/normal.c, src/option.c,
+	    src/os_unix.c, src/quickfix.c, src/regexp.c, src/screen.c,
+	    src/search.c, src/spell.c, src/ui.c, src/undo.c, src/window.c,
+	    src/version.c
+
+Patch 7.0.071
+Problem:    Using an empty search pattern may cause a crash.
+Solution:   Avoid using a NULL pointer.
+Files:	    src/search.c
+
+Patch 7.0.072
+Problem:    When starting the GUI fails there is no way to adjust settings or
+	    do something else.
+Solution:   Add the GUIFailed autocommand event.
+Files:	    src/fileio.c, src/gui.c, src/vim.h
+
+Patch 7.0.073
+Problem:    Insert mode completion: Typing <CR> sometimes selects the original
+	    text instead of keeping what was typed.  (Justin Constantino)
+Solution:   Don't let <CR> select the original text if there is no popup menu.
+Files:	    src/edit.c
+
+Patch 7.0.074 (extra)
+Problem:    Win32: tooltips were not converted from 'encoding' to Unicode.
+Solution:   Set the tooltip to use Unicode and do the conversion.  Also
+	    cleanup the code for the tab pages tooltips. (Yukihiro Nakadaira)
+Files:	    src/gui_w32.c, src/gui_w48.c
+
+Patch 7.0.075
+Problem:    winsaveview() did not store the actual value of the desired cursor
+	    column.  This could move the cursor in the matchparen plugin.
+Solution:   Call update_curswant() before using the value w_curswant.
+Files:	    src/eval.c
+
+Patch 7.0.076 (after 7.0.010)
+Problem:    Automatic downloading of spell files only works for ftp.
+Solution:   Don't add login and password for non-ftp URLs. (Alexander Patrakov)
+Files:	    runtime/autoload/spellfile.vim
+
+Patch 7.0.077
+Problem:    ":unlet v:this_session" causes a crash. (Marius Roets)
+Solution:   When trying to unlet a fixed variable give an error message.
+Files:	    src/eval.c
+
+Patch 7.0.078
+Problem:    There are two error messages E46.
+Solution:   Change the number for the sandbox message to E794.
+Files:	    src/globals.h
+
+Patch 7.0.079
+Problem:    Russian tutor doesn't work when 'encoding' is "utf-8".
+Solution:   Use tutor.ru.utf-8 as the master, and generate the other encodings
+	    from it.  Select the right tutor depending on 'encoding'. (Alexey
+	    Froloff)
+Files:	    runtime/tutor/Makefile, runtime/tutor/tutor.vim,
+	    runtime/tutor/tutor.ru.utf-8
+
+Patch 7.0.080
+Problem:    Generating auto/pathdef.c fails for CFLAGS with a backslash.
+Solution:   Double backslashes in the string. (Alexey Froloff)
+Files:	    src/Makefile
+
+Patch 7.0.081
+Problem:    Command line completion doesn't work for a shell command with an
+	    absolute path.
+Solution:   Don't use $PATH when there is an absolute path.
+Files:	    src/ex_getln.c
+
+Patch 7.0.082
+Problem:    Calling a function that waits for input may cause List and
+	    Dictionary arguments to be freed by the garbage collector.
+Solution:   Keep a list of all arguments to internal functions.
+Files:	    src/eval.c
+
+Patch 7.0.083
+Problem:    Clicking with the mouse on an item for inputlist() doesn't work
+	    when 'compatible' is set and/or when 'cmdheight' is more than one.
+	    (Christian J.  Robinson)
+Solution:   Also decrement "lines_left" when 'more' isn't set.  Set
+	    "cmdline_row" to zero to get all mouse events.
+Files:	    src/message.c, src/misc1.c
+
+Patch 7.0.084
+Problem:    The garbage collector may do its work while some Lists or
+	    Dictionaries are used internally, e.g., by ":echo" that runs into
+	    the more-prompt or ":echo [garbagecollect()]".
+Solution:   Only do garbage collection when waiting for a character at the
+	    toplevel.  Let garbagecollect() set a flag that is handled at the
+	    toplevel before waiting for a character.
+Files:	    src/eval.c, src/getchar.c, src/globals.h, src/main.c
+
+Patch 7.0.085
+Problem:    When doing "make test" the viminfo file is modified.
+Solution:   Use another viminfo file after setting 'compatible.
+Files:	    src/testdir/test56.in
+
+Patch 7.0.086
+Problem:    getqflist() returns entries for pattern and text with the number
+	    zero.  Passing these to setqflist() results in the string "0".
+Solution:   Use an empty string instead of the number zero.
+Files:	    src/quickfix.c
+
+Patch 7.0.087
+Problem:    After ":file fname" and ":saveas fname" the 'autochdir' option
+	    does not take effect. (Yakov Lerner)
+	    Commands for handling 'autochdir' are repeated many times.
+Solution:   Add the DO_AUTOCHDIR macro and do_autochdir().  Use it for
+	    ":file fname" and ":saveas fname".
+Files:	    src/proto/buffer.pro, src/buffer.c, src/ex_cmds.c, src/macros.h,
+	    src/netbeans.c, src/option.c, src/window.c
+
+Patch 7.0.088
+Problem:    When compiled with Perl the generated prototypes have "extern"
+	    unnecessarily added.
+Solution:   Remove the "-pipe" argument from PERL_CFLAGS.
+Files:	    src/auto/configure, src/configure.in
+
+Patch 7.0.089
+Problem:    "ga" does not work properly for a non-Unicode multi-byte encoding.
+Solution:   Only check for composing chars for utf-8. (Taro Muraoka)
+Files:	    src/ex_cmds.c
+
+Patch 7.0.090
+Problem:    Cancelling the conform() dialog on the console with Esc requires
+	    typing it twice. (Benji Fisher)
+Solution:   When the start of an escape sequence is found use 'timeoutlen' or
+	    'ttimeoutlen'.
+Files:	    src/misc1.c
+
+Patch 7.0.091
+Problem:    Using winrestview() while 'showcmd' is set causes the cursor to be
+	    displayed in the wrong position. (Yakov Lerner)
+Solution:   Set the window topline properly.
+Files:	    src/eval.c
+
+Patch 7.0.092 (after 7.0.082 and 7.0.084)
+Problem:    The list of internal function arguments is obsolete now that
+	    garbage collection is only done at the toplevel.
+Solution:   Remove the list of all arguments to internal functions.
+Files:	    src/eval.c
+
+Patch 7.0.093
+Problem:    The matchparen plugin can't handle a 'matchpairs' value where a
+	    colon is matched.
+Solution:   Change the split() that is used to change 'matchpairs' into a
+	    List.
+Files:	    runtime/plugin/matchparen.vim
+
+Patch 7.0.094
+Problem:    When a hidden buffer is made the current buffer and another file
+	    edited later, the file message will still be given.  Using
+	    ":silent" also doesn't prevent the file message. (Marvin Renich)
+Solution:   Reset the need_fileinfo flag when reading a file.  Don't set
+	    need_fileinfo when msg_silent is set.
+Files:	    src/buffer.c, src/fileio.c
+
+Patch 7.0.095
+Problem:    The Greek tutor is not available in utf-8.  "el" is used for the
+	    language, only "gr" for the country is recognized.
+Solution:   Add the utf-8 Greek tutor.  Use it for conversion to iso-8859-7
+	    and cp737.  (Lefteris Dimitroulakis)
+Files:	    runtime/tutor/Makefile, runtime/tutor/tutor.gr.utf-8,
+	    runtime/tutor/tutor.vim
+
+Patch 7.0.096
+Problem:    taglist() returns the filename relative to the tags file, while
+	    the directory of the tags file is unknown. (Hari Krishna Dara)
+Solution:   Expand the file name. (Yegappan Lakshmanan)
+Files:	    src/tag.c
+
+Patch 7.0.097
+Problem:    ":tabclose N" that closes another tab page does not remove the tab
+	    pages line.  Same problem when using the mouse.
+Solution:   Adjust the tab pages line when needed in tabpage_close_other().
+Files:	    src/ex_docmd.c
+
+Patch 7.0.098
+Problem:    Redirecting command output in a cmdline completion function
+	    doesn't work. (Hari Krishna Dara)
+Solution:   Enable redirection when redirection is started.
+Files:	    src/ex_docmd.c, src/ex_getln.c
+
+Patch 7.0.099
+Problem:    GUI: When the popup menu is visible using the scrollbar messes up
+	    the display.
+Solution:   Disallow scrolling the current window.  Redraw the popup menu
+	    after scrolling another window.
+Files:	    src/gui.c
+
+Patch 7.0.100
+Problem:    "zug" may report the wrong filename. (Lawrence Kesteloot)
+Solution:   Call home_replace() to fill NameBuff[].
+Files:	    src/spell.c
+
+Patch 7.0.101
+Problem:    When the "~/.vim/spell" directory does not exist "zg" may create
+	    a wrong directory.  "zw" doesn't work.
+Solution:   Use the directory of the file name instead of NameBuff.  For "zw"
+	    not only remove a good word but also add the word with "!".
+Files:	    src/spell.c
+
+Patch 7.0.102
+Problem:    Redrawing cmdline is not correct when using SCIM.
+Solution:   Don't call im_get_status(). (Yukihiro Nakadaira)
+Files:	    src/ex_getln.c
+
+Patch 7.0.103 (after 7.0.101)
+Problem:    Compiler warning for uninitialized variable. (Tony Mechelynck)
+Solution:   Init variable.
+Files:	    src/spell.c
+
+Patch 7.0.104
+Problem:    The CursorHoldI event only triggers once in Insert mode.  It also
+	    triggers after CTRL-V and other two-key commands.
+Solution:   Set "did_cursorhold" before getting a second key.  Reset
+	    "did_cursorhold" after handling a command.
+Files:	    src/edit.c, src/fileio.c
+
+Patch 7.0.105
+Problem:    When using incremental search the statusline ruler isn't updated.
+	    (Christoph Koegl)
+Solution:   Update the statusline when it contains the ruler.
+Files:	    src/ex_getln.c
+
+Patch 7.0.106
+Problem:    The spell popup menu uses ":amenu", triggering mappings.  Other
+	    PopupMenu autocommands are removed. (John Little)
+Solution:   Use ":anoremenu" and use an autocmd group.
+Files:	    runtime/menu.vim
+
+Patch 7.0.107
+Problem:    Incremental search doesn't redraw the text tabline. (Ilya Bobir)
+	    Also happens in other situations with one window in a tab page.
+Solution:   Redraw the tabline after clearing the screen.
+Files:	    src/screen.c
+
+Patch 7.0.108 (extra)
+Problem:    Amiga: Compilation problem.
+Solution:   Have mch_mkdir() return a failure flag. (Willy Catteau)
+Files:	    src/os_amiga.c, src/proto/os_amiga.pro
+
+Patch 7.0.109
+Problem:    Lisp indenting is confused by escaped quotes in strings. (Dorai
+	    Sitaram)
+Solution:   Check for backslash inside strings. (Sergey Khorev)
+Files:	    src/misc1.c
+
+Patch 7.0.110
+Problem:    Amiga: Compilation problems when not using libnix.
+Solution:   Change a few #ifdefs. (Willy Catteau)
+Files:	    src/memfile.c
+
+Patch 7.0.111
+Problem:    The gzip plugin can't handle filenames with single quotes.
+Solution:   Add and use the shellescape() function. (partly by Alexey Froloff)
+Files:	    runtime/autoload/gzip.vim, runtime/doc/eval.txt, src/eval.c,
+	    src/mbyte.c, src/misc2.c, src/proto/misc2.pro
+
+Patch 7.0.112
+Problem:    Python interface does not work with Python 2.5.
+Solution:   Change PyMem_DEL() to Py_DECREF(). (Sumner Hayes)
+Files:	    src/if_python.c
+
+Patch 7.0.113
+Problem:    Using CTRL-L in Insert completion when there is no current match
+	    may cause a crash. (Yukihiro Nakadaira)
+Solution:   Check for compl_leader to be NULL
+Files:	    src/edit.c
+
+Patch 7.0.114
+Problem:    When aborting an insert with CTRL-C an extra undo point is
+	    created in the GUI. (Yukihiro Nakadaira)
+Solution:   Call gotchars() only when advancing.
+Files:	    src/getchar.c
+
+Patch 7.0.115
+Problem:    When 'ignorecase' is set, Insert mode completion only adds "foo"
+	    and not "Foo" when both are found.
+	    A found match isn't displayed right away when 'completeopt' does
+	    not have "menu" or "menuone".
+Solution:   Do not ignore case when checking if a completion match already
+	    exists.  call ins_compl_check_keys() also when not using a popup
+	    menu. (Yukihiro Nakadaira)
+Files:	    src/edit.c
+
+Patch 7.0.116
+Problem:    64 bit Windows version reports "32 bit" in the ":version" output.
+	    (M. Veerman)
+Solution:   Change the text for Win64.
+Files:	    src/version.c
+
+Patch 7.0.117
+Problem:    Using "extend" on a syntax item inside a region with "keepend", an
+	    intermediate item may be truncated.
+	    When applying the "keepend" and there is an offset to the end
+	    pattern the highlighting of a contained item isn't adjusted.
+Solution:   Use the seen_keepend flag to remember when to apply the "keepend"
+	    flag.  Adjust the keepend highlighting properly. (Ilya Bobir)
+Files:	    src/syntax.c
+
+Patch 7.0.118
+Problem:    printf() does not do zero padding for strings.
+Solution:   Do allow zero padding for strings.
+Files:	    src/message.c
+
+Patch 7.0.119
+Problem:    When going back from Insert to Normal mode the CursorHold event
+	    doesn't trigger. (Yakov Lerner)
+Solution:   Reset "did_cursorhold" when leaving Insert mode.
+Files:	    src/edit.c
+
+Patch 7.0.120
+Problem:    Crash when using CTRL-R = at the command line and entering
+	    "getreg('=')". (James Vega)
+Solution:   Avoid recursiveness of evaluating the = register.
+Files:	    src/ops.c
+
+Patch 7.0.121
+Problem:    GUI: Dragging the last status line doesn't work when there is a
+	    text tabline.  (Markus Wolf)
+Solution:   Take the text tabline into account when deciding to start modeless
+	    selection.
+Files:	    src/gui.c
+
+Patch 7.0.122
+Problem:    GUI: When clearing after a bold, double-wide character half a
+	    character may be drawn.
+Solution:   Check for double-wide character and redraw it. (Yukihiro Nakadaira)
+Files:	    src/screen.c
+
+Patch 7.0.123
+Problem:    On SCO Openserver configure selects the wrong terminal library.
+Solution:   Put terminfo before the other libraries. (Roger Cornelius)
+	    Also fix a small problem compiling on Mac without Darwin.
+Files:	    src/configure.in, src/auto/configure
+
+Patch 7.0.124
+Problem:    getwinvar() obtains a dictionary with window-local variables, but
+	    it's always for the current window.
+Solution:   Get the variables of the specified window. (Geoff Reedy)
+Files:	    src/eval.c
+
+Patch 7.0.125
+Problem:    When "autoselect" is in the 'clipboard' option then the '< and '>
+	    marks are set while Visual mode is still active.
+Solution:   Don't set the '< and '> marks when yanking the selected area for
+	    the clipboard.
+Files:	    src/normal.c
+
+Patch 7.0.126
+Problem:    When 'formatexpr' uses setline() and later internal formatting is
+	    used undo information is not correct. (Jiri Cerny, Benji Fisher)
+Solution:   Set ins_need_undo after using 'formatexpr'.
+Files:	    src/edit.c
+
+Patch 7.0.127
+Problem:    Crash when swap files has invalid timestamp.
+Solution:   Check return value of ctime() for being NULL.
+Files:	    src/memline.c
+
+Patch 7.0.128
+Problem:    GUI: when closing gvim is cancelled because there is a changed
+	    buffer the screen isn't updated to show the changed buffer in the
+	    current window.  (Krzysztof Kacprzak)
+Solution:   Redraw when closing gvim is cancelled.
+Files:	    src/gui.c
+
+Patch 7.0.129
+Problem:    GTK GUI: the GTK file dialog can't handle a relative path.
+Solution:   Make the initial directory a full path before passing it to GTK.
+	    (James Vega)  Also postpone adding the default file name until
+	    after setting the directory.
+Files:	    src/gui_gtk.c
+
+Patch 7.0.130 (extra)
+Problem:    Win32: Trying to edit or write devices may cause Vim to get stuck.
+Solution:   Add the 'opendevice' option, default off.  Disallow
+	    reading/writing from/to devices when it's off.
+	    Also detect more devices by the full name starting with "\\.\".
+Files:	    runtime/doc/options.txt, src/fileio.c, src/option.c, src/option.h,
+	    src/os_win32.c
+
+Patch 7.0.131
+Problem:    Win32: "vim -r" does not list all the swap files.
+Solution:   Also check for swap files starting with a dot.
+Files:	    src/memline.c
+
+Patch 7.0.132 (after 7.0.130)
+Problem:    Win32: Crash when Vim reads from stdin.
+Solution:   Only use mch_nodetype() when there is a file name.
+Files:	    src/fileio.c
+
+Patch 7.0.133
+Problem:    When searching included files messages are added to the history.
+Solution:   Set msg_hist_off for messages about scanning included files.
+            Set msg_silent to avoid message about wrapping around.
+Files:	    src/edit.c, src/globals.h, src/message.c, src/search.c
+
+Patch 7.0.134
+Problem:    Crash when comparing a recursively looped List or Dictionary.
+Solution:   Limit recursiveness for comparing to 1000.
+Files:	    src/eval.c
+
+Patch 7.0.135
+Problem:    Crash when garbage collecting list or dict with loop.
+Solution:   Don't use DEL_REFCOUNT but don't recurse into Lists and
+	    Dictionaries when freeing them in the garbage collector.
+	    Also add allocated Dictionaries to the list of Dictionaries to
+	    avoid leaking memory.
+Files:	    src/eval.c, src/proto/eval.pro, src/tag.c
+
+Patch 7.0.136
+Problem:    Using "O" while matching parens are highlighted may not remove the
+	    highlighting. (Ilya Bobir)
+Solution:   Also trigger CursorMoved when a line is inserted under the cursor.
+Files:	    src/misc1.c
+
+Patch 7.0.137
+Problem:    Configure check for big features is wrong.
+Solution:   Change "==" to "=". (Martti Kuparinen)
+Files:	    src/auto/configure, src/configure.in
+
+Patch 7.0.138 (extra)
+Problem:    Mac: modifiers don't work with function keys.
+Solution:   Use GetEventParameter() to obtain modifiers. (Nicolas Weber)
+Files:	    src/gui_mac.c
+
+Patch 7.0.139
+Problem:    Using CTRL-PageUp or CTRL-PageDown in Insert mode to go to another
+	    tab page does not prepare for undo properly. (Stefano Zacchiroli)
+Solution:   Call start_arrow() before switching tab page.
+Files:	    src/edit.c
+
+Patch 7.0.140 (after 7.0.134)
+Problem:    Comparing recursively looped List or Dictionary doesn't work well.
+Solution:   Detect comparing a List or Dictionary with itself.
+Files:	    src/eval.c
+
+Patch 7.0.141
+Problem:    When pasting a while line on the command line an extra CR is added
+	    literally.
+Solution:   Don't add the trailing CR when pasting with the mouse.
+Files:	    src/ex_getln.c, src/proto/ops.pro, src/ops.c
+
+Patch 7.0.142
+Problem:    Using the middle mouse button in Select mode to paste text results
+	    in an extra "y". (Kriton Kyrimis)
+Solution:   Let the middle mouse button replace the selected text with the
+	    contents of the clipboard.
+Files:	    src/normal.c
+
+Patch 7.0.143
+Problem:    Setting 'scroll' to its default value was not handled correctly.
+Solution:   Compare the right field to PV_SCROLL.
+Files:	    src/option.c
+
+Patch 7.0.144
+Problem:    May compare two unrelated pointers when matching a pattern against
+	    a string.  (Dominique Pelle)
+Solution:   Avoid calling reg_getline() when REG_MULTI is false.
+Files:	    src/regexp.c
+
+Patch 7.0.145 (after 7.0.142)
+Problem:    Compiler warning.
+Solution:   Add type cast.
+Files:	    src/normal.c
+
+Patch 7.0.146
+Problem:    When 'switchbuf' is set to "usetab" and the current tab has only a
+	    quickfix window, jumping to an error always opens a new window.
+	    Also, when the buffer is open in another tab page it's not found.
+Solution:   Check for the "split" value of 'switchbuf' properly.  Search in
+	    other tab pages for the desired buffer. (Yegappan Lakshmanan)
+Files:	    src/buffer.c, src/quickfix.c
+
+Patch 7.0.147
+Problem:    When creating a session file and there are several tab pages and
+	    some windows have a local directory a short file name may be used
+	    when it's not valid. (Marius Roets)
+	    A session with multiple tab pages may result in "No Name" buffers.
+	    (Bill McCarthy)
+Solution:   Don't enter tab pages when going through the list, only use a
+	    pointer to the first window in each tab page.
+            Use "tabedit" instead of "tabnew | edit" when possible.
+Files:	    src/ex_docmd.c
+
+Patch 7.0.148
+Problem:    When doing "call a.xyz()" and "xyz" does not exist in dictionary
+	    "a" there is no error message. (Yegappan Lakshmanan)
+Solution:   Add the error message.
+Files:	    src/eval.c
+
+Patch 7.0.149
+Problem:    When resizing a window that shows "~" lines the text sometimes
+	    jumps down.
+Solution:   Remove code that uses "~" lines in some situations.  Fix the
+            computation of the screen line of the cursor.  Also set w_skipcol
+	    to handle very long lines.
+Files:	    src/misc1.c, src/window.c
+
+Patch 7.0.150
+Problem:    When resizing the Vim window scrollbinding doesn't work. (Yakov
+	    Lerner)
+Solution:   Do scrollbinding in set_shellsize().
+Files:	    src/term.c
+
+Patch 7.0.151
+Problem:    Buttons in file dialog are not according to Gnome guidelines.
+Solution:   Swap Cancel and Open buttons. (Stefano Zacchiroli)
+Files:	    src/gui_gtk.c
+
+Patch 7.0.152
+Problem:    Crash when using lesstif 2.
+Solution:   Fill in the extension field. (Ben Hutchings)
+Files:	    src/gui_xmebw.c
+
+Patch 7.0.153
+Problem:    When using cscope and opening the temp file fails Vim crashes.
+	    (Kaya Bekiroglu)
+Solution:   Check for NULL pointer returned from mch_open().
+Files:	    src/if_cscope.c
+
+Patch 7.0.154
+Problem:    When 'foldnextmax' is negative Vim can hang. (James Vega)
+Solution:   Avoid the fold level becoming negative.
+Files:	    src/fold.c, src/syntax.c
+
+Patch 7.0.155
+Problem:    When getchar() returns a mouse button click there is no way to get
+	    the mouse coordinates.
+Solution:   Add v:mouse_win, v:mouse_lnum and v:mouse_col.
+Files:	    runtime/doc/eval.txt, src/eval.c, src/vim.h
+
+Patch 7.0.156 (extra)
+Problem:    Vim doesn't compile for Amiga OS 4.
+Solution:   Various changes for Amiga OS4. (Peter Bengtsson)
+Files:	    src/feature.h, src/mbyte.c, src/memfile.c, src/memline.c,
+	    src/os_amiga.c, src/os_amiga.h, src/pty.c
+
+Patch 7.0.157
+Problem:    When a function is used recursively the profiling information is
+	    invalid. (Mikolaj Machowski)
+Solution:   Put the start time on the stack instead of in the function.
+Files:	    src/eval.c
+
+Patch 7.0.158
+Problem:    In a C file with ":set foldmethod=syntax", typing {<CR> on the
+	    last line results in the cursor being in a closed fold. (Gautam
+	    Iyer)
+Solution:   Open fold after inserting a new line.
+Files:	    src/edit.c
+
+Patch 7.0.159
+Problem:    When there is an I/O error in the swap file the cause of the error
+	    cannot be seen.
+Solution:   Use PERROR() instead of EMSG() where possible.
+Files:	    src/memfile.c
+
+Patch 7.0.160
+Problem:    ":@a" echoes the command, Vi doesn't do that.
+Solution:   Set the silent flag in the typeahead buffer to avoid echoing the
+	    command.
+Files:	    src/ex_docmd.c, src/normal.c, src/ops.c, src/proto/ops.pro
+
+Patch 7.0.161
+Problem:    Win32: Tab pages line popup menu isn't using the right encoding.
+            (Yongwei Wu)
+Solution:   Convert the text when necessary.  Also fixes the Find/Replace
+	    dialog title. (Yegappan Lakshmanan)
+Files:	    src/gui_w48.c
+
+Patch 7.0.162
+Problem:    "vim -o a b" when file "a" triggers the ATTENTION dialog,
+	    selecting "Quit" exits Vim instead of editing "b" only.
+	    When file "b" triggers the ATTENTION dialog selecting "Quit" or
+	    "Abort" results in editing file "a" in that window.
+Solution:   When selecting "Abort" exit Vim.  When selecting "Quit" close the
+	    window.  Also avoid hit-enter prompt when selecting Abort.
+Files:	    src/buffer.c, src/main.c
+
+Patch 7.0.163
+Problem:    Can't retrieve the position of a sign after it was set.
+Solution:   Add the netbeans interface getAnno command. (Xavier de Gaye)
+Files:	    runtime/doc/netbeans.txt, src/netbeans.c
+
+Patch 7.0.164
+Problem:    ":redir @+" doesn't work.
+Solution:   Accept "@+" just like "@*". (Yegappan Lakshmanan)
+Files:	    src/ex_docmd.c
+
+Patch 7.0.165
+Problem:    Using CTRL-L at the search prompt adds a "/" and other characters
+	    without escaping, causing the pattern not to match.
+Solution:   Escape special characters with a backslash.
+Files:	    src/ex_getln.c
+
+Patch 7.0.166
+Problem:    Crash in cscope code when connection could not be opened.
+	    (Kaya Bekiroglu)
+Solution:   Check for the file descriptor to be NULL.
+Files:	    src/if_cscope.c
+
+Patch 7.0.167
+Problem:    ":function" redefining a dict function doesn't work properly.
+	    (Richard Emberson)
+Solution:   Allow a function name to be a number when it's a function
+	    reference.
+Files:	    src/eval.c
+
+Patch 7.0.168
+Problem:    Using uninitialized memory and memory leak. (Dominique Pelle)
+Solution:   Use alloc_clear() instead of alloc() for w_lines.  Free
+	    b_ml.ml_stack after recovery.
+Files:	    src/memline.c, src/window.c
+
+Patch 7.0.169
+Problem:    With a Visual block selection, with the cursor in the left upper
+	    corner, pressing "I" doesn't remove the highlighting. (Guopeng
+	    Wen)
+Solution:   When checking if redrawing is needed also check if Visual
+	    selection is still active.
+Files:	    src/screen.c
+
+Patch 7.0.170 (extra)
+Problem:    Win32: Using "gvim --remote-tab foo" when gvim is minimized while
+	    it previously was maximized, un-maximizing doesn't work properly.
+	    And the labels are not displayed properly when 'encoding' is
+	    utf-8.
+Solution:   When minimized check for SW_SHOWMINIMIZED.  When updating the tab
+	    pages line use TCM_SETITEMW instead of TCM_INSERTITEMW. (Liu
+	    Yubao)
+Files:	    src/gui_w48.c
+
+Patch 7.0.171 (extra)
+Problem:    VMS: A file name with multiple paths is written in the wrong file.
+Solution:   Get the actually used file name. (Zoltan Arpadffy)
+	    Also add info to the :version command about compilation.
+Files:	    src/Make_vms.mms, src/buffer.c, src/os_unix.c, src/version.c
+
+Patch 7.0.172
+Problem:    Crash when recovering and quitting at the "press-enter" prompt.
+Solution:   Check for "msg_list" to be NULL. (Liu Yubao)
+Files:	    src/ex_eval.c
+
+Patch 7.0.173
+Problem:    ":call f().TT()" doesn't work.  (Richard Emberson)
+Solution:   When a function returns a Dictionary or another composite continue
+	    evaluating what follows.
+Files:	    src/eval.c    
+
+Patch 7.0.174
+Problem:    ":mksession" doesn't restore window layout correctly in tab pages
+	    other than the current one. (Zhibin He)
+Solution:   Use the correct topframe for producing the window layout commands.
+Files:	    src/ex_docmd.c
+
+Patch 7.0.175
+Problem:    The result of tr() is missing the terminating NUL. (Ingo Karkat)
+Solution:   Add the NUL.
+Files:	    src/eval.c
+
+Patch 7.0.176
+Problem:    ":emenu" isn't executed directly, causing the encryption key
+	    prompt to fail. (Life Jazzer)
+Solution:   Fix wrong #ifdef.
+Files:	    src/menu.c
+
+Patch 7.0.177
+Problem:    When the press-enter prompt gets a character from a non-remappable
+	    mapping, it's put back in the typeahead buffer as remappable,
+	    which may cause an endless loop.
+Solution:   Restore the non-remappable flag and the silent flag when putting a
+	    char back in the typeahead buffer.
+Files:	    src/getchar.c, src/message.c, src/normal.c
+
+Patch 7.0.178
+Problem:    When 'enc' is "utf-8" and 'ignorecase' is set the result of ":echo
+	    ("\xe4" == "\xe4")" varies.
+Solution:   In mb_strnicmp() avoid looking past NUL bytes.
+Files:	    src/mbyte.c
+
+Patch 7.0.179
+Problem:    Using ":recover" or "vim -r" without a swapfile crashes Vim.
+Solution:   Check for "buf" to be unequal NULL. (Yukihiro Nakadaira)
+Files:	    src/memline.c
+
+Patch 7.0.180 (extra, after 7.0.171)
+Problem:    VMS: build failed.  Problem with swapfiles.
+Solution:   Add "compiled_arch".  Always expand path and pass it to
+	    buf_modname().  (Zoltan Arpadffy)
+Files:	    src/globals.h, src/memline.c, src/os_unix.c, runtime/menu.vim
+
+Patch 7.0.181
+Problem:    When reloading a file that starts with an empty line, the reloaded
+	    buffer has an extra empty line at the end. (Motty Lentzitzky)
+Solution:   Delete all lines, don't use bufempty().
+Files:	    src/fileio.c
+
+Patch 7.0.182
+Problem:    When using a mix of undo and "g-" it may no longer be possible to
+	    go to every point in the undo tree.  (Andy Wokula)
+Solution:   Correctly update pointers in the undo tree.
+Files:	    src/undo.c
+
+Patch 7.0.183
+Problem:    Crash in ":let" when redirecting to a variable that's being
+	    displayed. (Thomas Link)
+Solution:   When redirecting to a variable only do the assignment when
+	    stopping redirection to avoid that setting the variable causes a
+	    freed string to be accessed.
+Files:	    src/eval.c
+
+Patch 7.0.184
+Problem:    When the cscope program is called "mlcscope" the Cscope interface
+	    doesn't work.
+Solution:   Accept "\S*cscope:" instead of "cscope:". (Frodak D. Baksik)
+Files:	    src/if_cscope.c
+
+Patch 7.0.185
+Problem:    Multi-byte characters in a message are displayed with attributes
+	    from what comes before it.
+Solution:   Don't use the attributes for a multi-byte character.  Do use
+	    attributes for special characters. (Yukihiro Nakadaira)
+Files:	    src/message.c
+
+Patch 7.0.186
+Problem:    Get an ml_get error when 'encoding' is "utf-8" and searching for
+	    "/\_s*/e" in an empty buffer.  (Andrew Maykov)
+Solution:   Don't try getting the line just below the last line.
+Files:	    src/search.c
+
+Patch 7.0.187
+Problem:    Can't source a remote script properly.
+Solution:   Add the SourceCmd event. (Charles Campbell)
+Files:	    runtime/doc/autocmd.txt, src/ex_cmds2.c, src/fileio.c, src/vim.h
+
+Patch 7.0.188 (after 7.0.186)
+Problem:    Warning for wrong pointer type.
+Solution:   Add a type cast.
+Files:	    src/search.c
+
+Patch 7.0.189
+Problem:    Translated message about finding matches is truncated. (Yukihiro
+	    Nakadaira)
+Solution:   Enlarge the buffer.  Also use vim_snprintf().
+Files:	    src/edit.c
+
+Patch 7.0.190
+Problem:    "syntax spell default" results in an error message.
+Solution:   Change 4 to 7 for STRNICMP(). (Raul Nunez de Arenas Coronado)
+Files:	    src/syntax.c
+
+Patch 7.0.191
+Problem:    The items used by getqflist() and setqflist() don't match.
+Solution:   Support the "bufnum" item for setqflist(). (Yegappan Lakshmanan)
+Files:	    runtime/doc/eval.txt, src/quickfix.c
+
+Patch 7.0.192
+Problem:    When 'swapfile' is switched off in an empty file it is possible
+	    that not all blocks are loaded into memory, causing ml_get errors
+	    later.
+Solution:   Rename "dont_release" to "mf_dont_release" and also use it to
+	    avoid using the cached line and locked block. 
+Files:	    src/globals.h, src/memfile.c, src/memline.c
+
+Patch 7.0.193
+Problem:    Using --remote or --remote-tab with an argument that matches
+	    'wildignore' causes a crash.
+Solution:   Check the argument count before using ARGLIST[0].
+Files:	    src/ex_cmds.c
+
+Patch 7.0.194
+Problem:    Once an ml_get error is given redrawing part of the screen may
+	    cause it again, resulting in an endless loop.
+Solution:   Don't give the error message for a recursive call.
+Files:	    src/memline.c
+
+Patch 7.0.195
+Problem:    When a buffer is modified and 'autowriteall' is set, ":quit"
+	    results in an endless loop when there is a conversion error while
+	    writing. (Nikolai Weibull)
+Solution:   Make autowrite() return FAIL if the buffer is still changed after
+	    writing it.
+	    /* put the cursor on the last char, for 'tw' formatting */
+Files:	    src/ex_cmds2.c
+
+Patch 7.0.196
+Problem:    When using ":vert ball" the computation of the mouse pointer
+	    position may be off by one column. (Stefan Karlsson)
+Solution:   Recompute the frame width when moving the vertical separator from
+	    one window to another.
+Files:	    src/window.c
+
+Patch 7.0.197 (extra)
+Problem:    Win32: Compiling with EXITFREE doesn't work.
+Solution:   Adjust a few #ifdefs. (Alexei Alexandrof)
+Files:	    src/misc2.c, src/os_mswin.c
+
+Patch 7.0.198 (extra)
+Problem:    Win32: Compiler warnings.  No need to generate gvim.exe.mnf.
+Solution:   Add type casts.  Use "*" for processorArchitecture. (George Reilly)
+Files:	    src/Make_mvc.mak, src/eval.c, src/gvim.exe.mnf, src/misc2.c
+
+Patch 7.0.199
+Problem:    When using multi-byte characters the combination of completion and
+	    formatting may result in a wrong cursor position.
+Solution:   Don't decrement the cursor column, use dec_cursor(). (Yukihiro
+	    Nakadaira)  Also check for the column to be zero.
+Files:	    src/edit.c
+
+Patch 7.0.200
+Problem:    Memory leaks when out of memory.
+Solution:   Free the memory.
+Files:	    src/edit.c, src/diff.c
+
+Patch 7.0.201
+Problem:    Message for ":diffput" about buffer not being in diff mode may be
+	    wrong.
+Solution:   Check for buffer in diff mode but not modifiable.
+Files:	    src/diff.c
+
+Patch 7.0.202
+Problem:    Problems on Tandem systems while compiling and at runtime.
+Solution:   Recognize root uid is 65535.  Check select() return value for it
+	    not being supported.  Avoid wrong function prototypes.  Mention
+	    use of -lfloss.  (Matthew Woehlke)
+Files:	    src/Makefile, src/ex_cmds.c, src/fileio.c, src/main.c,
+	    src/osdef1.h.in, src/osdef2.h.in, src/os_unix.c, src/pty.c,
+	    src/vim.h
+
+Patch 7.0.203
+Problem:    0x80 characters in a register are not handled correctly for the
+	    "@" command.
+Solution:   Escape CSI and 0x80 characters. (Yukihiro Nakadaira)
+Files:	    src/ops.c
+
+Patch 7.0.204
+Problem:    Cscope: Parsing matches for listing isn't done properly.
+Solution:   Check for line number being found. (Yu Zhao)
+Files:	    src/if_cscope.c
+
+Patch 7.0.205 (after 7.0.203)
+Problem:    Can't compile.
+Solution:   Always include the vim_strsave_escape_csi function.
+Files:	    src/getchar.c
+
+Patch 7.0.206 (after 7.0.058)
+Problem:    Some characters of the "gb18030" encoding are not handled
+	    properly.
+Solution:   Do not use "cp936" as an alias for "gb18030" encoding.  Instead
+	    initialize 'encoding' to "cp936".
+Files:	    src/mbyte.c, src/option.c
+
+Patch 7.0.207
+Problem:    After patch 2.0.203 CSI and K_SPECIAL characters are escaped when
+	    recorded and then again when the register is executed.
+Solution:   Remove escaping before putting the recorded characters in a
+	    register.  (Yukihiro Nakadaira)
+Files:	    src/getchar.c, src/ops.c, src/proto/getchar.pro
+
+Patch 7.0.208 (after 7.0.171 and 7.0.180)
+Problem:    VMS: changes to path handling cause more trouble than they solve.
+Solution:   Revert changes.
+Files:	    src/buffer.c, src/memline.c, src/os_unix.c
+
+Patch 7.0.209
+Problem:    When replacing a line through Python the cursor may end up beyond
+	    the end of the line.
+Solution:   Check the cursor column after replacing the line.
+Files:	    src/if_python.c
+
+Patch 7.0.210
+Problem:    ":cbuffer" and ":lbuffer" always fail when the buffer is modified.
+	    (Gary Johnson)
+Solution:   Support adding a !. (Yegappan Lakshmanan)
+Files:	    runtime/doc/quickfix.txt, src/ex_cmds.h
+
+Patch 7.0.211
+Problem:    With ":set cindent noai bs=0" using CTRL-U in Insert mode will
+	    delete auto-indent.  After ":set ai" it doesn't.
+Solution:   Also check 'cindent' being set. (Ryan Lortie)
+Files:	    src/edit.c
+
+Patch 7.0.212
+Problem:    The GUI can't be terminated with SIGTERM. (Mark Logan)
+Solution:   Use the signal protection in the GUI as in the console, allow
+	    signals when waiting for 100 msec or longer.
+Files:	    src/ui.c
+
+Patch 7.0.213
+Problem:    When 'spellfile' has two regions that use the same sound folding
+	    using "z=" will cause memory to be freed twice. (Mark Woodward)
+Solution:   Clear the hashtable properly so that the items are only freed once.
+Files:	    src/spell.c
+
+Patch 7.0.214
+Problem:    When using <f-args> in a user command it's not possible to have an
+	    argument end in '\ '.
+Solution:   Change the handling of backslashes. (Yakov Lerner)
+Files:	    runtime/doc/map.txt, src/ex_docmd.c
+
+Patch 7.0.215 (extra)
+Problem:    Mac: Scrollbar size isn't set.  Context menu has disabled useless
+	    Help entry.  Call to MoreMasterPointers() is ignored.
+Solution:   Call SetControlViewSize() in gui_mch_set_scrollbar_thumb().  Use
+	    kCMHelpItemRemoveHelp for ContextualMenuSelect().  Remove call to
+	    MoreMasterPointers(). (Nicolas Weber)
+Files:	    src/gui_mac.c
+
+Patch 7.0.216
+Problem:    ":tab wincmd ]" does not open a tab page. (Tony Mechelynck)
+Solution:   Copy the cmdmod.tab value to postponed_split_tab and use it.
+Files:	    src/globals.h, src/ex_docmd.c, src/if_cscope.c, src/window.c
+
+Patch 7.0.217
+Problem:    This hangs when pressing "n": ":%s/\n/,\r/gc". (Ori Avtalion)
+Solution:   Set "skip_match" to advance to the next line.
+Files:	    src/ex_cmds.c
+
+Patch 7.0.218
+Problem:    "%B" in 'statusline' always shows zero in Insert mode. (DervishD)
+Solution:   Remove the exception for Insert mode, check the column for being
+	    valid instead.
+Files:	    src/buffer.c
+
+Patch 7.0.219
+Problem:    When using the 'editexisting.vim' script and a file is being
+	    edited in another tab page the window is split.  The "+123"
+	    argument is not used.
+Solution:   Make the tab page with the file the current tab page.  Set
+	    v:swapcommand when starting up to the first "+123" or "-c" command
+	    line argument.
+Files:	    runtime/macros/editexisting.vim, src/main.c
+
+Patch 7.0.220
+Problem:    Crash when using winnr('#') in a new tab page. (Andy Wokula)
+Solution:   Check for not finding the window.
+Files:	    src/eval.c
+
+Patch 7.0.221
+Problem:    finddir() uses 'path' by default, where "." means relative to the
+	    current file.  But it works relative to the current directory.
+	    (Tye Zdrojewski)
+Solution:   Add the current buffer name to find_file_in_path_option() for the
+	    relative file name.
+Files:	    runtime/doc/eval.txt, src/eval.c
+
+Patch 7.0.222
+Problem:    Perl indenting using 'cindent' works almost right.
+Solution:   Recognize '#' to start a comment. (Alex Manoussakis)  Added '#'
+	    flag in 'cinoptions'.
+Files:	    runtime/doc/indent.txt, src/misc1.c
+
+Patch 7.0.223
+Problem:    Unprintable characters in completion text mess up the popup menu.
+	    (Gombault Damien)
+Solution:   Use strtrans() to make the text printable.
+Files:	    src/charset.c, src/popupmnu.c
+
+Patch 7.0.224
+Problem:    When expanding "##" spaces are escaped twice.  (Pavol Juhas)
+Solution:   Don't escape the spaces that separate arguments.
+Files:	    src/eval.c, src/ex_docmd.c, src/proto/ex_docmd.pro
+
+Patch 7.0.225
+Problem:    When using setline() in an InsertEnter autocommand and doing "A"
+	    the cursor ends up on the last byte in the line. (Yukihiro
+	    Nakadaira)
+Solution:   Only adjust the column when using setline() for the cursor line.
+	    Move it back to the head byte if necessary.
+Files:	    src/eval.c, src/misc2.c
+
+Patch 7.0.226
+Problem:    Display flickering when updating signs through the netbeans
+	    interface. (Xavier de Gaye)
+Solution:   Remove the redraw_later(CLEAR) call.
+Files:	    src/netbeans.c
+
+Patch 7.0.227
+Problem:    Crash when closing a window in the GUI. (Charles Campbell)
+Solution:   Don't call out_flush() from win_free().
+Files:	    src/window.c
+
+Patch 7.0.228
+Problem:    Cygwin: problem with symlink to DOS style path.
+Solution:   Invoke cygwin_conv_to_posix_path(). (Luca Masini)
+Files:	    src/os_unix.c
+
+Patch 7.0.229
+Problem:    When 'pastetoggle' starts with Esc then pressing Esc in Insert
+	    mode will not time out. (Jeffery Small)
+Solution:   Use KL_PART_KEY instead of KL_PART_MAP, so that 'ttimeout' applies
+	    to the 'pastetoggle' key.
+Files:	    src/getchar.c
+
+Patch 7.0.230
+Problem:    After using ":lcd" a script doesn't know how to restore the
+	    current directory.
+Solution:   Add the haslocaldir() function. (Bob Hiestand)
+Files:	    runtime/doc/usr_41.txt, runtime/doc/eval.txt, src/eval.c
+
+Patch 7.0.231
+Problem:    When recovering from a swap file the page size is likely to be
+	    different from the minimum.  The block used for the first page
+	    then has a buffer of the wrong size, causing a crash when it's
+	    reused later.  (Zephaniah Hull)
+Solution:   Reallocate the buffer when the page size changes.  Also check that
+	    the page size is at least the minimum value.
+Files:	    src/memline.c
+
+Patch 7.0.232 (extra)
+Problem:    Mac: doesn't support GUI tab page labels.
+Solution:   Add GUI tab page labels. (Nicolas Weber)
+Files:	    src/feature.h, src/gui.c, src/gui.h, src/gui_mac.c,
+	    src/proto/gui_mac.pro
+
+Patch 7.0.233 (extra)
+Problem:    Mac: code formatted badly.
+Solution:   Fix code formatting
+Files:	    src/gui_mac.c
+
+Patch 7.0.234
+Problem:    It's possible to use feedkeys() from a modeline.  That is a
+	    security issue, can be used for a trojan horse.
+Solution:   Disallow using feedkeys() in the sandbox.
+Files:	    src/eval.c
+
+Patch 7.0.235
+Problem:    It is possible to use writefile() in the sandbox.
+Solution:   Add a few more checks for the sandbox.
+Files:	    src/eval.c
+
+Patch 7.0.236
+Problem:    Linux 2.4 uses sysinfo() with a mem_unit field, which is not
+	    backwards compatible.
+Solution:   Add an autoconf check for sysinfo.mem_unit.  Let mch_total_mem()
+	    return Kbyte to avoid overflow.
+Files:	    src/auto/configure, src/configure.in, src/config.h.in,
+	    src/option.c, src/os_unix.c
+
+Patch 7.0.237
+Problem:    For root it is recommended to not use 'modeline', but in
+	    not-compatible mode the default is on.
+Solution:   Let 'modeline' default to off for root.
+Files:	    runtime/doc/options.txt, src/option.c
+
+Patch 7.0.238
+Problem:    Crash when ":match" pattern runs into 'maxmempattern'. (Yakov
+	    Lerner)
+Solution:   Don't free the regexp program of match_hl.
+Files:	    src/screen.c
+
+Patch 7.0.239
+Problem:    When using local directories and tab pages ":mksession" uses a
+	    short file name when it shouldn't.  Window-local options from a
+	    modeline may be applied to the wrong window. (Teemu Likonen)
+Solution:   Add the did_lcd flag, use the full path when it's set.  Don't use
+	    window-local options from the modeline when using the current
+	    window for another buffer in ":doautoall".
+Files:	    src/fileio.c,  src/ex_docmd.c
+
+Patch 7.0.240
+Problem:    Crash when splitting a window in the GUI. (opposite of 7.0.227)
+Solution:   Don't call out_flush() from win_alloc().  Also avoid this for
+	    win_delete().  Also block autocommands while the window structure
+	    is invalid.
+Files:	    src/window.c
+
+Patch 7.0.241
+Problem:    ":windo throw 'foo'" loops forever. (Andy Wokula)
+Solution:   Detect that win_goto() doesn't work.
+Files:	    src/ex_cmds2.c
+
+Patch 7.0.242 (extra)
+Problem:    Win32: Using "-register" in a Vim that does not support OLE causes
+	    a crash.
+Solution:   Don't use EMSG() but mch_errmsg().  Check p_go for being NULL.
+	    (partly by Michael Wookey)
+Files:	    src/gui_w32.c
+
+Patch 7.0.243 (extra)
+Problem:    Win32: When GvimExt is built with MSVC 2005 or later, the "Edit
+	    with vim" context menu doesn't appear in the Windows Explorer.
+Solution:   Embed the linker manifest file into the resources of GvimExt.dll.
+	    (Mathias Michaelis)
+Files:	    src/GvimExt/Makefile
+
+
  vim:tw=78:ts=8:ft=help:norl:
--- a/runtime/doc/workshop.txt
+++ b/runtime/doc/workshop.txt
@@ -1,4 +1,4 @@
-*workshop.txt*  For Vim version 7.0.  Last change: 2006 Apr 24
+*workshop.txt*  For Vim version 7.1a.  Last change: 2006 Apr 24
 
 
 		  VIM REFERENCE MANUAL    by Gordon Prieur
--- a/runtime/doc/xxd-it.UTF-8.1
+++ b/runtime/doc/xxd-it.UTF-8.1
@@ -226,7 +226,7 @@ Stampa 3 linee (0x30 bytes esadecimali) 
 \fI% xxd \-s \-0x30 file
 .PP
 .br
-Stampa 120 bytes come immagine esadecimale continua con 40 bytes per linea.
+Stampa 120 bytes come immagine esadecimale continua con 20 bytes per linea.
 .br
 \fI% xxd \-l 120 \-ps \-c 20 xxd.1\fR
 
--- a/runtime/doc/xxd-ru.1
+++ b/runtime/doc/xxd-ru.1
@@ -231,7 +231,7 @@ xxd Ó ÐÏÍÏÝØÀ strace(1) ÉÌÉ truss(1) × ÔÅÈ ÓÌÕÞÁÑÈ, ËÏÇÄÁ ÐÒÉÍÅÎÑÅÔÓÑ ËÌÀÞ
 .PP
 .br
 ÷Ù×ÅÓÔÉ 120 ÂÁÊÔÏ× × ×ÉÄÅ ÎÅÐÒÅÒÙ×ÎÏÇÏ ÛÅÓÔÎÁÄÃÁÔÅÒÉÞÎÏÇÏ ÐÒÅÄÓÔÁ×ÌÅÎÉÑ
-ÐÏ 40 ÏËÔÅÔÏ× × ÓÔÒÏËÅ:
+ÐÏ 20 ÏËÔÅÔÏ× × ÓÔÒÏËÅ:
 .PP
 \fI% xxd \-l 120 \-ps \-c 20 xxd.1\fR
 .br
--- a/runtime/doc/xxd.1
+++ b/runtime/doc/xxd.1
@@ -123,7 +123,7 @@ added to file positions found in hexdump
 start at
 .RI < seek >
 bytes abs. (or rel.) infile offset.
-\fI+ fRindicates that the seek is relative to the current stdin file position
+\fI+ \fRindicates that the seek is relative to the current stdin file position
 (meaningless when not reading from stdin).  \fI\- \fRindicates that the seek
 should be that many characters from the end of the input (or if combined with
 \fI+\fR: before the current stdin file position).
@@ -172,17 +172,17 @@ The following examples may help to clari
 Rewind stdin before reading; needed because the `cat' has already read to the
 end of stdin.
 .br
-\fI% sh \-c "cat > plain_copy; xxd \-s 0 > hex_copy" < file
+\fI% sh \-c "cat > plain_copy; xxd \-s 0 > hex_copy" < file\fR
 .PP
 Hexdump from file position 0x480 (=1024+128) onwards.
 The `+' sign means "relative to the current position", thus the `128' adds to
 the 1k where dd left off.
 .br
-\fI% sh \-c "dd of=plain_snippet bs=1k count=1; xxd \-s +128 > hex_snippet" < file
+\fI% sh \-c "dd of=plain_snippet bs=1k count=1; xxd \-s +128 > hex_snippet" < file\fR
 .PP
 Hexdump from file position 0x100 ( = 1024\-768) on.
 .br
-\fI% sh \-c "dd of=plain_snippet bs=1k count=1; xxd \-s +\-768 > hex_snippet" < file
+\fI% sh \-c "dd of=plain_snippet bs=1k count=1; xxd \-s +\-768 > hex_snippet" < file\fR
 .PP
 However, this is a rare situation and the use of `+' is rarely needed.
 The author prefers to monitor the effect of xxd with strace(1) or truss(1), whenever \-s is used.
@@ -192,16 +192,16 @@ The author prefers to monitor the effect
 Print everything but the first three lines (hex 0x30 bytes) of
 .BR file .
 .br
-\fI% xxd \-s 0x30 file
+\fI% xxd \-s 0x30 file\fR
 .PP
 .br
 Print 3 lines (hex 0x30 bytes) from the end of
 .BR file .
 .br
-\fI% xxd \-s \-0x30 file
+\fI% xxd \-s \-0x30 file\fR
 .PP
 .br
-Print 120 bytes as continuous hexdump with 40 octets per line.
+Print 120 bytes as continuous hexdump with 20 octets per line.
 .br
 \fI% xxd \-l 120 \-ps \-c 20 xxd.1\fR
 .br
--- 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:	2006 May 02
+" Last Change:	2007 Apr 26
 
 " Listen very carefully, I will say this only once
 if exists("did_load_filetypes")
@@ -88,6 +88,11 @@ au BufNewFile,BufRead *.wrm			setf acedb
 
 " Ada (83, 9X, 95)
 au BufNewFile,BufRead *.adb,*.ads,*.ada		setf ada
+if has("vms")
+  au BufNewFile,BufRead *.gpr,*.ada_m,*.adc 	setf ada
+else
+  au BufNewFile,BufRead *.gpr 			setf ada
+endif
 
 " AHDL
 au BufNewFile,BufRead *.tdf			setf ahdl
@@ -194,6 +199,9 @@ au BufNewFile,BufRead *.mar			setf vmasm
 " Atlas
 au BufNewFile,BufRead *.atl,*.as		setf atlas
 
+" Autoit v3
+au BufNewFile,BufRead *.au3			setf autoit
+
 " Automake
 au BufNewFile,BufRead [mM]akefile.am,GNUmakefile.am	setf automake
 
@@ -225,6 +233,12 @@ endfun
 " Visual Basic Script (close to Visual Basic)
 au BufNewFile,BufRead *.vbs,*.dsm,*.ctl		setf vb
 
+" IBasic file (similar to QBasic)
+au BufNewFile,BufRead *.iba,*.ibi		setf ibasic
+
+" FreeBasic file (similar to QBasic)
+au BufNewFile,BufRead *.fb,*.bi			setf freebasic
+
 " Batch file for MSDOS.
 au BufNewFile,BufRead *.bat,*.sys		setf dosbatch
 " *.cmd is close to a Batch file, but on OS/2 Rexx files also use *.cmd.
@@ -303,6 +317,9 @@ au BufNewFile,BufRead cfengine.conf		set
 " Comshare Dimension Definition Language
 au BufNewFile,BufRead *.cdl			setf cdl
 
+" Conary Recipe
+au BufNewFile,BufRead *.recipe			setf conaryrecipe
+
 " Controllable Regex Mutilator
 au BufNewFile,BufRead *.crm			setf crm
 
@@ -436,6 +453,10 @@ au BufNewFile,BufRead *.prg
 " Cmake
 au BufNewFile,BufRead CMakeLists.txt,*.cmake,*.cmake.in		setf cmake
 
+" Cmusrc
+au BufNewFile,BufRead ~/.cmus/{autosave,rc,command-history,*.theme} setf cmusrc
+au BufNewFile,BufRead */cmus/{rc,*.theme}			setf cmusrc
+
 " Cobol
 au BufNewFile,BufRead *.cbl,*.cob,*.lib	setf cobol
 "   cobol or zope form controller python script? (heuristic)
@@ -614,7 +635,10 @@ au BufNewFile,BufRead *.mas,*.master		se
 au BufNewFile,BufRead *.fs,*.ft			setf forth
 
 " Fortran
-au BufNewFile,BufRead *.f,*.F,*.for,*.fpp,*.FPP,*.ftn,*.f77,*.F77,*.f90,*.F90,*.f95,*.F95	setf fortran
+if has("fname_case")
+  au BufNewFile,BufRead *.F,*.FOR,*.FPP,*.FTN,*.F77,*.F90,*.F95	 setf fortran
+endif
+au BufNewFile,BufRead   *.f,*.for,*.fpp,*.ftn,*.f77,*.f90,*.f95  setf fortran
 
 " FStab
 au BufNewFile,BufRead fstab,mtab		setf fstab
@@ -660,6 +684,9 @@ au BufNewFile,BufRead /etc/group		setf g
 " GTK RC
 au BufNewFile,BufRead .gtkrc,gtkrc		setf gtkrc
 
+" Hamster Classic | Playground files
+au BufNewFile,BufRead *.hsc,*.hsm		setf hamster
+
 " Haskell
 au BufNewFile,BufRead *.hs			setf haskell
 au BufNewFile,BufRead *.lhs			setf lhaskell
@@ -744,8 +771,11 @@ au BufNewFile,BufRead .indent.pro		setf 
 " Inform
 au BufNewFile,BufRead *.inf,*.INF		setf inform
 
+" Initng
+au BufNewFile,BufRead /etc/initng/**/*.i,*.ii	setf initng
+
 " Ipfilter
-au BufNewFile,BufRead ipf.conf,ipf.rules	setf ipfilter
+au BufNewFile,BufRead ipf.conf,ipf6.conf,ipf.rules	setf ipfilter
 
 " Informix 4GL (source - canonical, include file, I4GL+M4 preproc.)
 au BufNewFile,BufRead *.4gl,*.4gh,*.m4gl	setf fgl
@@ -771,8 +801,8 @@ au BufNewFile,BufRead *.java,*.jav		setf
 " JavaCC
 au BufNewFile,BufRead *.jj,*.jjt		setf javacc
 
-" JavaScript
-au BufNewFile,BufRead *.js,*.javascript		setf javascript
+" JavaScript, ECMAScript
+au BufNewFile,BufRead *.js,*.javascript,*.es	setf javascript
 
 " Java Server Pages
 au BufNewFile,BufRead *.jsp			setf jsp
@@ -876,7 +906,7 @@ au BufNewFile,BufRead *.m4
 " MaGic Point
 au BufNewFile,BufRead *.mgp			setf mgp
 
-" Mail (for Elm, trn, mutt, rn, slrn)
+" Mail (for Elm, trn, mutt, muttng, rn, slrn)
 au BufNewFile,BufRead snd.\d\+,.letter,.letter.\d\+,.followup,.article,.article.\d\+,pico.\d\+,mutt{ng,}-*-\w\+,mutt\w\{6\},ae\d\+.txt,/tmp/SLRN[0-9A-Z.]\+,*.eml setf mail
 
 " Mail aliases
@@ -934,6 +964,9 @@ endfun
 " Maya Extension Language
 au BufNewFile,BufRead *.mel			setf mel
 
+" Messages
+au BufNewFile,BufRead /var/log/messages,/var/log/messages.*[0-9]  setf messages
+
 " Metafont
 au BufNewFile,BufRead *.mf			setf mf
 
@@ -1015,7 +1048,7 @@ au BufRead,BufNewFile *.mu			setf mupad
 " Mush
 au BufNewFile,BufRead *.mush			setf mush
 
-" Mutt setup file
+" Mutt setup file (also for Muttng)
 au BufNewFile,BufRead Mutt{ng,}rc			setf muttrc
 au BufNewFile,BufRead .mutt{ng,}rc*,*/.mutt{ng,}/mutt{ng,}rc*	call s:StarSetf('muttrc')
 
@@ -1232,6 +1265,9 @@ au BufNewFile,BufRead *.it,*.ih			setf p
 " Oracle Pro*C/C++
 au BufNewFile,BufRead .pc			setf proc
 
+" Privoxy actions file
+au BufNewFile,BufRead *.action			setf privoxy
+
 " Procmail
 au BufNewFile,BufRead .procmail,.procmailrc	setf procmail
 
@@ -1371,31 +1407,31 @@ endif
 au BufNewFile,BufRead *.r,*.R			call s:FTr()
 
 fun! s:FTr()
-  if getline(1) =~ '^REBOL'
-    setf rebol
-  else
-    let n = 1
-    let max = line("$")
-    if max > 50
-      let max = 50
+  let max = line("$") > 50 ? 50 : line("$")
+
+  for n in range(1, max)
+    " Rebol is easy to recognize, check for that first
+    if getline(n) =~ '\<REBOL\>'
+      setf rebol
+      return
     endif
-    while n < max
-      " R has # comments
-      if getline(n) =~ '^\s*#'
-	setf r
-	break
-      endif
-      " Rexx has /* comments */
-      if getline(n) =~ '^\s*/\*'
-	setf rexx
-	break
-      endif
-      let n = n + 1
-    endwhile
-    if n >= max
+  endfor
+
+  for n in range(1, max)
+    " R has # comments
+    if getline(n) =~ '^\s*#'
+      setf r
+      return
+    endif
+    " Rexx has /* comments */
+    if getline(n) =~ '^\s*/\*'
       setf rexx
+      return
     endif
-  endif
+  endfor
+
+  " Nothing recognized, assume Rexx
+  setf rexx
 endfun
 
 " Remind
@@ -1443,6 +1479,9 @@ au BufNewFile,BufRead *.sa			setf sather
 " Scilab
 au BufNewFile,BufRead *.sci,*.sce		setf scilab
 
+" SD: Streaming Descriptors
+au BufNewFile,BufRead *.sd			setf sd
+
 " SDL
 au BufNewFile,BufRead *.sdl,*.pr		setf sdl
 
@@ -1922,6 +1961,9 @@ au BufNewFile,BufRead *.web
 " Windows Scripting Host and Windows Script Component
 au BufNewFile,BufRead *.ws[fc]			setf wsh
 
+" XHTML
+au BufNewFile,BufRead *.xhtml,*.xht		setf xhtml
+
 " X Pixmap (dynamically sets colors, use BufEnter to make it work better)
 au BufEnter *.xpm
 	\ if getline(1) =~ "XPM2" |
@@ -1973,6 +2015,9 @@ au BufNewFile,BufRead *.csproj,*.csproj.
 " Qt Linguist translation source and Qt User Interface Files are XML
 au BufNewFile,BufRead *.ts,*.ui			setf xml
 
+" TPM's are RDF-based descriptions of TeX packages (Nikolai Weibull)
+au BufNewFile,BufRead *.tpm			setf xml
+
 " Xdg menus
 au BufNewFile,BufRead /etc/xdg/menus/*.menu	setf xml
 
@@ -2052,6 +2097,9 @@ au StdinReadPost * if !did_filetype() | 
 au BufNewFile,BufRead *asterisk/*.conf*		call s:StarSetf('asterisk')
 au BufNewFile,BufRead *asterisk*/*voicemail.conf* call s:StarSetf('asteriskvm')
 
+" Bazaar version control
+au BufNewFile,BufRead bzr_log.*			setf bzr
+
 " BIND zone
 au BufNewFile,BufRead */named/db.*,*/bind/db.*	call s:StarSetf('bindzone')
 
@@ -2073,6 +2121,7 @@ au BufNewFile,BufRead /etc/apt/sources.l
 au BufNewFile,BufRead drac.*			call s:StarSetf('dracula')
 
 " Fvwm
+au BufNewFile,BufRead */.fvwm/*			call s:StarSetf('fvwm')
 au BufNewFile,BufRead *fvwmrc*,*fvwm95*.hook
 	\ let b:fvwm_version = 1 | call s:StarSetf('fvwm')
 au BufNewFile,BufRead *fvwm2rc*
new file mode 100644
--- /dev/null
+++ b/runtime/ftplugin/fvwm.vim
@@ -0,0 +1,14 @@
+" Created	: Tue 09 May 2006 02:07:31 PM CDT
+" Modified	: Tue 09 May 2006 02:07:31 PM CDT
+" Author	: Gautam Iyer <gi1242@users.sourceforge.net>
+" Description	: ftplugin for fvwm config files
+
+if exists("b:did_ftplugin")
+  finish
+endif
+let b:did_ftplugin = 1
+
+let b:undo_ftplugin = "setl com< cms< fo<"
+
+setlocal comments=:# commentstring=#\ %s
+setlocal formatoptions-=t formatoptions+=croql
--- a/runtime/ftplugin/help.vim
+++ b/runtime/ftplugin/help.vim
@@ -8,6 +8,6 @@ if exists("b:did_ftplugin")
 endif
 let b:did_ftplugin = 1
 
-let b:undo_plugin = "setl fo< tw<"
+let b:undo_ftplugin = "setl fo< tw<"
 
 setlocal formatoptions+=tcroql textwidth=78
new file mode 100644
--- /dev/null
+++ b/runtime/ftplugin/htmldjango.vim
@@ -0,0 +1,13 @@
+" Vim filetype plugin file
+" Language:	Django HTML template
+" Maintainer:	Dave Hodder <dmh@dmh.org.uk>
+" Last Change:	2007 Jan 25
+
+" Only use this filetype plugin when no other was loaded.
+if exists("b:did_ftplugin")
+  finish
+endif
+
+" Use HTML and Django template ftplugins.
+runtime! ftplugin/html.vim
+runtime! ftplugin/django.vim
--- a/runtime/ftplugin/javascript.vim
+++ b/runtime/ftplugin/javascript.vim
@@ -1,13 +1,38 @@
 " Vim filetype plugin file
 " Language:	Javascript
-" Maintainer:	Bram Moolenaar (for now)
-" Last Change:  2006 Jan 30
+" Maintainer:	Doug Kearns <dougkearns@gmail.com>
+" Last Change:  2007 Feb 21
+" URL:		http://gus.gscit.monash.edu.au/~djkea2/vim/ftplugin/javascript.vim
 
 if exists("b:did_ftplugin")
   finish
 endif
 let b:did_ftplugin = 1
 
+let s:cpo_save = &cpo
+set cpo-=C
+
+" Set 'formatoptions' to break comment lines but not other lines,
+" " and insert the comment leader when hitting <CR> or using "o".
+setlocal formatoptions-=t formatoptions+=croql
+
+" Set completion with CTRL-X CTRL-O to autoloaded function.
 if exists('&ofu')
-  setlocal ofu=javascriptcomplete#CompleteJS
+    setlocal omnifunc=javascriptcomplete#CompleteJS
 endif
+
+" Set 'comments' to format dashed lists in comments.
+setlocal comments=sO:*\ -,mO:*\ \ ,exO:*/,s1:/*,mb:*,ex:*/,://
+
+setlocal commentstring=//%s
+
+" Change the :browse e filter to primarily show Java-related files.
+if has("gui_win32")
+    let  b:browsefilter="Javascript Files (*.js)\t*.js\n"
+		\	"All Files (*.*)\t*.*\n"
+endif
+       
+let b:undo_ftplugin = "setl fo< ofu< com< cms<" 
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
--- a/runtime/ftplugin/man.vim
+++ b/runtime/ftplugin/man.vim
@@ -1,7 +1,7 @@
 " Vim filetype plugin file
 " Language:	man
 " Maintainer:	Nam SungHyun <namsh@kldp.org>
-" Last Change:	2006 Mar 28
+" Last Change:	2006 Dec 04
 
 " To make the ":Man" command available before editing a manual page, source
 " this script from your startup vimrc file.
@@ -119,9 +119,7 @@ func <SID>GetPage(...)
   if &filetype != "man"
     let thiswin = winnr()
     exe "norm! \<C-W>b"
-    if winnr() == 1
-      new
-    else
+    if winnr() > 1
       exe "norm! " . thiswin . "\<C-W>w"
       while 1
 	if &filetype == "man"
@@ -129,11 +127,14 @@ func <SID>GetPage(...)
 	endif
 	exe "norm! \<C-W>w"
 	if thiswin == winnr()
-	  new
 	  break
 	endif
       endwhile
     endif
+    if &filetype != "man"
+      new
+      setl nonu fdc=0
+    endif
   endif
   silent exec "edit $HOME/".page.".".sect."~"
   " Avoid warning for editing the dummy file twice
--- a/runtime/ftplugin/php.vim
+++ b/runtime/ftplugin/php.vim
@@ -1,7 +1,7 @@
 " Vim filetype plugin file
 " Language:	php
 " Maintainer:	Dan Sharp <dwsharp at hotmail dot com>
-" Last Changed: 2005 Sep 05
+" Last Changed: 2006 Jul 15
 " URL:		http://mywebpage.netscape.com/sharppeople/vim/ftplugin
 
 if exists("b:did_ftplugin") | finish | endif
@@ -30,6 +30,9 @@ endif
 if exists("b:match_words")
     let s:match_words = b:match_words
 endif
+if exists("b:match_skip")
+    unlet b:match_skip
+endif
 
 " Change the :browse e filter to primarily show PHP-related files.
 if has("gui_win32")
@@ -41,12 +44,13 @@ endif
 setlocal include=\\\(require\\\|include\\\)\\\(_once\\\)\\\?
 setlocal iskeyword+=$
 if exists("loaded_matchit")
-    let b:match_words = '<php?:?>,\<switch\>:\<endswitch\>,' .
+    let b:match_words = '<?php:?>,\<switch\>:\<endswitch\>,' .
 		      \ '\<if\>:\<elseif\>:\<else\>:\<endif\>,' .
 		      \ '\<while\>:\<endwhile\>,' .
 		      \ '\<do\>:\<while\>,' .
 		      \ '\<for\>:\<endfor\>,' .
 		      \ '\<foreach\>:\<endforeach\>,' .
+                      \ '(:),[:],{:},' .
 		      \ s:match_words
 endif
 " ###
--- a/runtime/ftplugin/vim.vim
+++ b/runtime/ftplugin/vim.vim
@@ -1,7 +1,7 @@
 " Vim filetype plugin
 " Language:	Vim
 " Maintainer:	Bram Moolenaar <Bram@vim.org>
-" Last Change:	2005 Feb 14
+" Last Change:	2006 Sep 26
 
 " Only do this when not done yet for this buffer
 if exists("b:did_ftplugin")
@@ -48,6 +48,7 @@ if exists("loaded_matchit")
   let b:match_words =
 	\ '\<fu\%[nction]\>:\<retu\%[rn]\>:\<endf\%[unction]\>,' .
 	\ '\<wh\%[ile]\>:\<brea\%[k]\>:\<con\%[tinue]\>:\<endw\%[hile]\>,' .
+	\ '\<for\>:\<brea\%[k]\>:\<con\%[tinue]\>:\<endfo\%[r]\>,' .
 	\ '\<if\>:\<el\%[seif]\>:\<en\%[dif]\>,' .
 	\ '\<try\>:\<cat\%[ch]\>:\<fina\%[lly]\>:\<endt\%[ry]\>,' .
 	\ '\<aug\%[roup]\s\+\%(END\>\)\@!\S:\<aug\%[roup]\s\+END\>,' .
new file mode 100644
--- /dev/null
+++ b/runtime/indent/bst.vim
@@ -0,0 +1,75 @@
+" Vim indent file
+" Language:	bst
+" Author:	Tim Pope <vimNOSPAM@tpope.info>
+" $Id$
+
+if exists("b:did_indent")
+    finish
+endif
+let b:did_indent = 1
+
+setlocal expandtab
+setlocal indentexpr=GetBstIndent(v:lnum)
+"setlocal smartindent
+setlocal cinkeys&
+setlocal cinkeys-=0#
+setlocal indentkeys&
+"setlocal indentkeys+=0%
+
+" Only define the function once.
+if exists("*GetBstIndent")
+    finish
+endif
+
+function! s:prevgood(lnum)
+    " Find a non-blank line above the current line.
+    " Skip over comments.
+    let lnum = a:lnum
+    while lnum > 0
+        let lnum = prevnonblank(lnum - 1)
+        if getline(lnum) !~ '^\s*%.*$'
+            break
+        endif
+    endwhile
+    return lnum
+endfunction
+
+function! s:strip(lnum)
+    let line = getline(a:lnum)
+    let line = substitute(line,'"[^"]*"','""','g')
+    let line = substitute(line,'%.*','','')
+    let line = substitute(line,'^\s\+','','')
+    return line
+endfunction
+
+function! s:count(string,char)
+    let str = substitute(a:string,'[^'.a:char.']','','g')
+    return strlen(str)
+endfunction
+
+function! GetBstIndent(lnum) abort
+    if a:lnum == 1
+        return 0
+    endif
+    let lnum = s:prevgood(a:lnum)
+    if lnum <= 0
+        return indent(a:lnum - 1)
+    endif
+    let line = s:strip(lnum)
+    let cline = s:strip(a:lnum)
+    if cline =~ '^}' && exists("b:current_syntax")
+        call cursor(a:lnum,indent(a:lnum))
+        if searchpair('{','','}','bW',"synIDattr(synID(line('.'),col('.'),1),'name') =~? 'comment\\|string'")
+            if col('.')+1 == col('$')
+                return indent('.')
+            else
+                return virtcol('.')-1
+            endif
+        endif
+    endif
+    let fakeline = substitute(line,'^}','','').matchstr(cline,'^}')
+    let ind = indent(lnum)
+    let ind = ind + &sw * s:count(line,'{')
+    let ind = ind - &sw * s:count(fakeline,'}')
+    return ind
+endfunction
new file mode 100644
--- /dev/null
+++ b/runtime/indent/cobol.vim
@@ -0,0 +1,216 @@
+" Vim indent file
+" Language:	cobol
+" Author:	Tim Pope <vimNOSPAM@tpope.info>
+" $Id$
+
+if exists("b:did_indent")
+    finish
+endif
+let b:did_indent = 1
+
+setlocal expandtab
+setlocal indentexpr=GetCobolIndent(v:lnum)
+setlocal indentkeys&
+setlocal indentkeys+=0<*>,0/,0$,0=01,=~division,=~section,0=~end,0=~then,0=~else,0=~when,*<Return>,.
+
+" Only define the function once.
+if exists("*GetCobolIndent")
+    finish
+endif
+
+let s:skip = 'getline(".") =~ "^.\\{6\\}[*/$-]\\|\"[^\"]*\""'
+
+function! s:prevgood(lnum)
+    " Find a non-blank line above the current line.
+    " Skip over comments.
+    let lnum = a:lnum
+    while lnum > 0
+        let lnum = prevnonblank(lnum - 1)
+        let line = getline(lnum)
+        if line !~? '^\s*[*/$-]' && line !~? '^.\{6\}[*/$CD-]'
+            break
+        endif
+    endwhile
+    return lnum
+endfunction
+
+function! s:stripped(lnum)
+    return substitute(strpart(getline(a:lnum),0,72),'^\s*','','')
+endfunction
+
+function! s:optionalblock(lnum,ind,blocks,clauses)
+    let ind = a:ind
+    let clauses = '\c\<\%(\<NOT\s\+\)\@<!\%(NOT\s\+\)\=\%('.a:clauses.'\)'
+    let begin = '\c-\@<!\<\%('.a:blocks.'\)\>'
+    let beginfull = begin.'\ze.*\%(\n\%(\s*\%([*/$-].*\)\=\n\)*\)\=\s*\%('.clauses.'\)'
+    let end   = '\c\<end-\%('.a:blocks.'\)\>\|\%(\.\%( \|$\)\)\@='
+    let cline = s:stripped(a:lnum)
+    let line  = s:stripped(s:prevgood(a:lnum))
+    if cline =~? clauses "&& line !~? '^search\>'
+        call cursor(a:lnum,1)
+        let lastclause = searchpair(beginfull,clauses,end,'bWr',s:skip)
+        if getline(lastclause) =~? clauses && s:stripped(lastclause) !~? '^'.begin
+            let ind = indent(lastclause)
+        elseif lastclause > 0
+            let ind = indent(lastclause) + &sw
+            "let ind = ind + &sw
+        endif
+    elseif line =~? clauses && cline !~? end
+        let ind = ind + &sw
+    endif
+    return ind
+endfunction
+
+function! GetCobolIndent(lnum) abort
+    let minshft = 6
+    let ashft = minshft + 1
+    let bshft = ashft + 4
+    " (Obsolete) numbered lines
+    if getline(a:lnum) =~? '^\s*\d\{6\}\%($\|[ */$CD-]\)'
+        return 0
+    endif
+    let cline = s:stripped(a:lnum)
+    " Comments, etc. must start in the 7th column
+    if cline =~? '^[*/$-]'
+        return minshft
+    elseif cline =~# '^[CD]' && indent(a:lnum) == minshft
+        return minshft
+    endif
+    " Divisions, sections, and file descriptions start in area A
+    if cline =~? '\<\(DIVISION\|SECTION\)\%($\|\.\)' || cline =~? '^[FS]D\>'
+        return ashft
+    endif
+    " Fields
+    if cline =~? '^0*\(1\|77\)\>'
+        return ashft
+    endif
+    if cline =~? '^\d\+\>'
+        let cnum = matchstr(cline,'^\d\+\>')
+        let default = 0
+        let step = -1
+        while step < 2
+        let lnum = a:lnum
+        while lnum > 0 && lnum < line('$') && lnum > a:lnum - 500 && lnum < a:lnum + 500
+            let lnum = step > 0 ? nextnonblank(lnum + step) : prevnonblank(lnum + step)
+            let line = getline(lnum)
+            let lindent = indent(lnum)
+            if line =~? '^\s*\d\+\>'
+                let num = matchstr(line,'^\s*\zs\d\+\>')
+                if 0+cnum == num
+                    return lindent
+                elseif 0+cnum > num && default < lindent + &sw
+                    let default = lindent + &sw
+                endif
+            elseif lindent < bshft && lindent >= ashft
+                break
+            endif
+        endwhile
+        let step = step + 2
+        endwhile
+        return default ? default : bshft
+    endif
+    let lnum = s:prevgood(a:lnum)
+    " Hit the start of the file, use "zero" indent.
+    if lnum == 0
+        return ashft
+    endif
+    " Initial spaces are ignored
+    let line = s:stripped(lnum)
+    let ind = indent(lnum)
+    " Paragraphs.  There may be some false positives.
+    if cline =~? '^\(\a[A-Z0-9-]*[A-Z0-9]\|\d[A-Z0-9-]*\a\)\.' "\s*$'
+        if cline !~? '^EXIT\s*\.' && line =~? '\.\s*$'
+            return ashft
+        endif
+    endif
+    " Paragraphs in the identification division.
+    "if cline =~? '^\(PROGRAM-ID\|AUTHOR\|INSTALLATION\|' .
+                "\ 'DATE-WRITTEN\|DATE-COMPILED\|SECURITY\)\>'
+        "return ashft
+    "endif
+    if line =~? '\.$'
+        " XXX
+        return bshft
+    endif
+    if line =~? '^PERFORM\>'
+        let perfline = substitute(line, '\c^PERFORM\s*', "", "")
+        if perfline =~? '^\%(\k\+\s\+TIMES\)\=\s*$'
+            let ind = ind + &sw
+        elseif perfline =~? '^\%(WITH\s\+TEST\|VARYING\|UNTIL\)\>.*[^.]$'
+            let ind = ind + &sw
+        endif
+    endif
+    if line =~? '^\%(IF\|THEN\|ELSE\|READ\|EVALUATE\|SEARCH\|SELECT\)\>'
+        let ind = ind + &sw
+    endif
+    let ind = s:optionalblock(a:lnum,ind,'ADD\|COMPUTE\|DIVIDE\|MULTIPLY\|SUBTRACT','ON\s\+SIZE\s\+ERROR')
+    let ind = s:optionalblock(a:lnum,ind,'STRING\|UNSTRING\|ACCEPT\|DISPLAY\|CALL','ON\s\+OVERFLOW\|ON\s\+EXCEPTION')
+    if cline !~? '^AT\s\+END\>' || line !~? '^SEARCH\>'
+        let ind = s:optionalblock(a:lnum,ind,'DELETE\|REWRITE\|START\|WRITE\|READ','INVALID\s\+KEY\|AT\s\+END\|NO\s\+DATA\|AT\s\+END-OF-PAGE')
+    endif
+    if cline =~? '^WHEN\>'
+        call cursor(a:lnum,1)
+        " We also search for READ so that contained AT ENDs are skipped
+        let lastclause = searchpair('\c-\@<!\<\%(SEARCH\|EVALUATE\|READ\)\>','\c\<\%(WHEN\|AT\s\+END\)\>','\c\<END-\%(SEARCH\|EVALUATE\|READ\)\>','bW',s:skip)
+        let g:foo = s:stripped(lastclause)
+        if s:stripped(lastclause) =~? '\c\<\%(WHEN\|AT\s\+END\)\>'
+            "&& s:stripped(lastclause) !~? '^\%(SEARCH\|EVALUATE\|READ\)\>'
+            let ind = indent(lastclause)
+        elseif lastclause > 0
+            let ind = indent(lastclause) + &sw
+        endif
+    elseif line =~? '^WHEN\>'
+        let ind = ind + &sw
+    endif
+    "I'm not sure why I had this
+    "if line =~? '^ELSE\>-\@!' && line !~? '\.$'
+        "let ind = indent(s:prevgood(lnum))
+    "endif
+    if cline =~? '^\(END\)\>-\@!'
+        " On lines with just END, 'guess' a simple shift left
+        let ind = ind - &sw
+    elseif cline =~? '^\(END-IF\|THEN\|ELSE\)\>-\@!'
+        call cursor(a:lnum,indent(a:lnum))
+        let match = searchpair('\c-\@<!\<IF\>','\c-\@<!\%(THEN\|ELSE\)\>','\c-\@<!\<END-IF\>\zs','bnW',s:skip)
+        if match > 0
+            let ind = indent(match)
+        endif
+    elseif cline =~? '^END-[A-Z]'
+        let beginword = matchstr(cline,'\c\<END-\zs[A-Z0-9-]\+')
+        let endword = 'END-'.beginword
+        let first = 0
+        let suffix = '.*\%(\n\%(\%(\s*\|.\{6\}\)[*/].*\n\)*\)\=\s*'
+        if beginword =~? '^\%(ADD\|COMPUTE\|DIVIDE\|MULTIPLY\|SUBTRACT\)$'
+            let beginword = beginword . suffix . '\<\%(NOT\s\+\)\=ON\s\+SIZE\s\+ERROR'
+            let g:beginword = beginword
+            let first = 1
+        elseif beginword =~? '^\%(STRING\|UNSTRING\)$'
+            let beginword = beginword . suffix . '\<\%(NOT\s\+\)\=ON\s\+OVERFLOW'
+            let first = 1
+        elseif beginword =~? '^\%(ACCEPT\|DISPLAY\)$'
+            let beginword = beginword . suffix . '\<\%(NOT\s\+\)\=ON\s\+EXCEPTION'
+            let first = 1
+        elseif beginword ==? 'CALL'
+            let beginword = beginword . suffix . '\<\%(NOT\s\+\)\=ON\s\+\%(EXCEPTION\|OVERFLOW\)'
+            let first = 1
+        elseif beginword =~? '^\%(DELETE\|REWRITE\|START\|READ\|WRITE\)$'
+            let first = 1
+            let beginword = beginword . suffix . '\<\%(NOT\s\+\)\=\(INVALID\s\+KEY'
+            if beginword =~? '^READ'
+                let first = 0
+                let beginword = beginword . '\|AT\s\+END\|NO\s\+DATA'
+            elseif beginword =~? '^WRITE'
+                let beginword = beginword . '\|AT\s\+END-OF-PAGE'
+            endif
+            let beginword = beginword . '\)'
+        endif
+        call cursor(a:lnum,indent(a:lnum))
+        let match = searchpair('\c-\@<!\<'.beginword.'\>','','\c\<'.endword.'\>\zs','bnW'.(first? 'r' : ''),s:skip)
+        if match > 0
+            let ind = indent(match)
+        elseif cline =~? '^\(END-\(READ\|EVALUATE\|SEARCH\|PERFORM\)\)\>'
+            let ind = ind - &sw
+        endif
+    endif
+    return ind < bshft ? bshft : ind
+endfunction
--- a/runtime/indent/fortran.vim
+++ b/runtime/indent/fortran.vim
@@ -2,7 +2,7 @@
 " Language:	Fortran95 (and Fortran90, Fortran77, F and elf90)
 " Version:	0.37
 " URL:		http://www.unb.ca/chem/ajit/indent/fortran.vim
-" Last Change:	2006 Apr. 22
+" Last Change:	2006 Nov 16
 " Maintainer:	Ajit J. Thakkar <ajit@unb.ca>; <http://www.unb.ca/chem/ajit/>
 " Usage:	Do :help fortran-indent from Vim
 
@@ -72,7 +72,7 @@ function FortranGetIndent(lnum)
   let prevstat=substitute(prevline, '!.*$', '', '')
 
   "Indent do loops only if they are all guaranteed to be of do/end do type
-  if exists("b:fortran_do_enddo") || exists("fortran_do_enddo")
+  if exists("b:fortran_do_enddo") || exists("g:fortran_do_enddo")
     if prevstat =~? '^\s*\(\d\+\s\)\=\s*\(\a\w*\s*:\)\=\s*do\>'
       let ind = ind + &sw
     endif
new file mode 100644
--- /dev/null
+++ b/runtime/indent/hamster.vim
@@ -0,0 +1,55 @@
+" Vim indent file
+" Language:    Hamster Script 
+" Version:     2.0.6.0
+" Last Change: Wed Nov 08 2006 12:02:42 PM
+" Maintainer:  David Fishburn <fishburn@ianywhere.com>
+
+" Only load this indent file when no other was loaded.
+if exists("b:did_indent")
+  finish
+endif
+let b:did_indent = 1
+
+setlocal indentkeys+==~if,=~else,=~endif,=~endfor,=~endwhile
+setlocal indentkeys+==~do,=~until,=~while,=~repeat,=~for,=~loop
+setlocal indentkeys+==~sub,=~endsub
+
+" Define the appropriate indent function but only once
+setlocal indentexpr=HamGetFreeIndent()
+if exists("*HamGetFreeIndent")
+  finish
+endif
+
+function HamGetIndent(lnum)
+  let ind = indent(a:lnum)
+  let prevline=getline(a:lnum)
+
+  " Add a shiftwidth to statements following if,  else, elseif,
+  " case, select, default, do, until, while, for, start
+  if prevline =~? '^\s*\<\(if\|else\%(if\)\?\|for\|repeat\|do\|while\|sub\)\>' 
+    let ind = ind + &sw
+  endif
+
+  " Subtract a shiftwidth from else, elseif, end(if|while|for), until
+  let line = getline(v:lnum)
+  if line =~? '^\s*\(else\|elseif\|loop\|until\|end\%(if\|while\|for\|sub\)\)\>'
+    let ind = ind - &sw
+  endif
+
+  return ind
+endfunction
+
+function HamGetFreeIndent()
+  " Find the previous non-blank line
+  let lnum = prevnonblank(v:lnum - 1)
+
+  " Use zero indent at the top of the file
+  if lnum == 0
+    return 0
+  endif
+
+  let ind=HamGetIndent(lnum)
+  return ind
+endfunction
+
+" vim:sw=2 tw=80
--- a/runtime/lang/menu_chinese_gb.936.vim
+++ b/runtime/lang/menu_chinese_gb.936.vim
@@ -109,7 +109,7 @@ menutrans &Keymap			¼üÅÌÓ³Éä(&K)
 menutrans &Tools			¹¤¾ß(&T)
 menutrans &Jump\ to\ this\ tag<Tab>g^]	Ìøתµ½Õâ¸ö\ tag(&J)<Tab>g^]
 menutrans Jump\ &back<Tab>^T		Ìøת·µ»Ø(&B)<Tab>^T
-menutrans Build\ &Tags\ File		½¨Á¢ Tags Îļþ(&T)
+menutrans Build\ &Tags\ File		½¨Á¢\ Tags\ Îļþ(&T)
 
 " Tools.Spelling Menu
 menutrans &Spelling				ƴд¼ì²é(&S)
@@ -209,7 +209,7 @@ menutrans Min\ Widt&h<Tab>^W1\|		×îС¿í¶È(&H)<Tab>^W1\|
 menutrans &Undo			³·Ïú(&U)
 menutrans Cu&t			¼ôÇÐ(&T)
 menutrans &Copy			¸´ÖÆ(&C)
-menutrans &Paste		Õ³Ìû(&P)
+menutrans &Paste		Õ³Ìù(&P)
 menutrans &Delete		ɾ³ý(&D)
 menutrans Select\ Blockwise	Ñ¡Ôñ¿é
 menutrans Select\ &Word		Ñ¡Ôñµ¥´Ê(&W)
@@ -233,7 +233,7 @@ if has("toolbar")
     tmenu ToolBar.Redo		ÖØ×ö
     tmenu ToolBar.Cut		¼ôÇе½¼ôÌù°å
     tmenu ToolBar.Copy		¸´ÖƵ½¼ôÌù°å
-    tmenu ToolBar.Paste		´Ó¼ôÌù°åÕ³Ìû
+    tmenu ToolBar.Paste		´Ó¼ôÌù°åÕ³Ìù
     tmenu ToolBar.Find		²éÕÒ...
     tmenu ToolBar.FindNext	²éÕÒÏÂÒ»¸ö
     tmenu ToolBar.FindPrev	²éÕÒÉÏÒ»¸ö
--- a/runtime/lang/menu_pt_br.vim
+++ b/runtime/lang/menu_pt_br.vim
@@ -1,6 +1,6 @@
-" Menu Translations: Português
-" Maintainer: José de Paula <jose_de_paula@ig.com.br>
-" Last Change: 2003 Jun 12
+" Menu Translations: Português do Brasil
+" Maintainer: José de Paula <jose@infoviaweb.com>
+" Last Change: 2006-09-19 02:30:00-03:00
 "
 
 " Quit when menu translations have already been done.
@@ -25,6 +25,7 @@ menutrans &Find\.\.\.		&Procurar\.\.\.
 menutrans &Credits		&Créditos
 menutrans O&rphans		&Órfãos
 menutrans Co&pying		&Licença
+menutrans &Sponsor/Register	&Doar/Registrar
 menutrans &Version		&Versão
 menutrans &About		&Sobre
 
@@ -58,7 +59,8 @@ menutrans Find\ and\ Rep&lace\.\.\.	Proc
 menutrans Find\ and\ Rep&lace<Tab>:%s	Procurar\ e\ substit&uir<Tab>:%s
 menutrans Find\ and\ Rep&lace		Procurar\ e\ substit&uir
 menutrans Find\ and\ Rep&lace<Tab>:s	Procurar\ e\ substituir<Tab>:s
-menutrans Settings\ &Window		Op&ções
+menutrans Settings\ &Window		&Opções
+menutrans Startup\ &Settings		&Inicialização
 
 " Edit/Global Settings
 menutrans &Global\ Settings		Opções\ &Globais
@@ -117,7 +119,7 @@ menutrans default	padrão
 
 menutrans Select\ Fo&nt\.\.\.		Selecionar\ fo&nte\.\.\.
 
-menutrans &Keymap	Mapa\ de\ teclado
+menutrans &Keymap	&Mapa\ de\ teclado
 menutrans None		Nenhum
 
 " Programming menu
@@ -125,6 +127,7 @@ menutrans &Tools			&Ferramentas
 menutrans &Jump\ to\ this\ tag<Tab>g^]	&Pular\ para\ este\ tag<Tab>g^]
 menutrans Jump\ &back<Tab>^T		&Voltar<Tab>^T
 menutrans Build\ &Tags\ File		&Construir\ Arquivo\ de\ tags
+menutrans &Spelling			&Ortografia
 menutrans &Folding			&Dobra
 menutrans &Make<Tab>:make		&Make<Tab>:make
 menutrans &List\ Errors<Tab>:cl		&Lista\ de\ erros<Tab>:cl
@@ -134,10 +137,27 @@ menutrans &Previous\ Error<Tab>:cp	&Erro
 menutrans &Older\ List<Tab>:cold	Listar\ erros\ &antigos<Tab>:cold
 menutrans N&ewer\ List<Tab>:cnew	Listar\ erros\ &novos<Tab>:cnew
 menutrans Error\ &Window		&Janela\ de\ erros
-menutrans &Set\ Compiler		Def&inir\ Compilador
+menutrans Se&T\ Compiler		Def&inir\ Compilador
 menutrans &Convert\ to\ HEX<Tab>:%!xxd	Converter\ para\ hexadecimal<Tab>:%!xxd
 menutrans Conve&rt\ back<Tab>:%!xxd\ -r	Conver&ter\ de\ volta<Tab>:%!xxd\ -r
 
+" Tools.Spelling menu
+menutrans &Spell Check On		&Ativar Correção Ortográfica
+menutrans &Spell Check Off		&Desativar Correção Ortográfica
+menutrans To &Next error<Tab>]s		&Próximo Erro<Tab>]s
+menutrans To &Previous Error<Tab>[s	Erro A&nterior<Tab>[s
+menutrans Suggest &Corrections<Tab>z=	&Sugerir Correções<Tab>z=
+menutrans &Repeat correction<Tab>:spellrepall	&Repetir Correção<Tab>:spellrepall
+
+menutrans Set\ language\ to\ "en"               Inglês
+menutrans Set\ language\ to\ "en_au"            Inglês\ (en_au)
+menutrans Set\ language\ to\ "en_ca"            Inglês\ (en_ca)
+menutrans Set\ language\ to\ "en_gb"            Inglês\ (en_gb)
+menutrans Set\ language\ to\ "en_nz"            Inglês\ (en_nz)
+menutrans Set\ language\ to\ "en_us"            Inglês\ (en_us)
+
+menutrans &Find\ More\ Languages                &Buscar mais idiomas
+
 " Tools.Fold Menu
 menutrans &Enable/Disable\ folds<Tab>zi		&Ativar/Desativar\ dobras<Tab>zi
 menutrans &View\ Cursor\ Line<Tab>zv		&Ver\ linha\ do\ cursor<Tab>zv
new file mode 100644
--- /dev/null
+++ b/runtime/lang/menu_sl_si.utf-8.vim
@@ -0,0 +1,294 @@
+" Menu Translations:	Slovenian / Slovensko
+" Maintainer:		Mojca Miklavec <mojca.miklavec.lists@gmail.com>
+" Originally By:	Mojca Miklavec <mojca.miklavec.lists@gmail.com>
+" Last Change:		Sat, 17 Jun 2006
+" vim:set foldmethod=marker tabstop=8:
+
+" TODO: add/check all '&'s
+
+" Quit when menu translations have already been done.
+if exists("did_menu_trans")
+  finish
+endif
+let did_menu_trans = 1
+
+scriptencoding utf-8
+
+" {{{ FILE / DATOTEKA
+menutrans &File				&Datoteka
+menutrans &Open\.\.\.<Tab>:e		&Odpri\ \.\.\.<Tab>:e
+menutrans Sp&lit-Open\.\.\.<Tab>:sp	Odpri\ de&ljeno\ \.\.\.<Tab>:sp
+menutrans Open\ Tab\.\.\.<Tab>:tabnew	Odpri\ v\ zavi&hku\ \.\.\.<Tab>:tabnew
+menutrans &New<Tab>:enew		&Nova<Tab>:enew
+menutrans &Close<Tab>:close		&Zapri<Tab>:close
+menutrans &Save<Tab>:w			&Shrani<Tab>:w
+menutrans Save\ &As\.\.\.<Tab>:sav	Shrani\ &kot\ \.\.\.<Tab>:sav
+menutrans &Print			Na&tisni
+menutrans Sa&ve-Exit<Tab>:wqa		Shrani\ in\ &konÄaj<Tab>:wqa
+menutrans E&xit<Tab>:qa			&Izhod<Tab>:qa
+
+if has("diff")
+    menutrans Split\ &Diff\ with\.\.\.	Primerjaj\ z\ (di&ff)\ \.\.\.
+    menutrans Split\ Patched\ &By\.\.\.	&Popravi\ z\ (patch)\ \.\.\.
+endif
+" }}} FILE / DATOTEKA
+
+" {{{ EDIT / UREDI
+menutrans &Edit				&Uredi
+menutrans &Undo<Tab>u			&Razveljavi<Tab>u
+menutrans &Redo<Tab>^R			&Obnovi<Tab>^R
+menutrans Rep&eat<Tab>\.		Po&novi<Tab>\.
+menutrans Cu&t<Tab>"+x			&Izreži<Tab>"+x
+menutrans &Copy<Tab>"+y			&Kopiraj<Tab>"+y
+menutrans &Paste<Tab>"+gP		&Prilepi<Tab>"+gP
+menutrans Put\ &Before<Tab>[p		Vrini\ pred<Tab>[p
+menutrans Put\ &After<Tab>]p		Vrini\ za<Tab>]p
+menutrans &Delete<Tab>x			Iz&briši<Tab>x
+menutrans &Select\ all<Tab>ggVG		Izberi\ vse<Tab>ggVG
+menutrans &Find\.\.\.			Po&iÅ¡Äi\ \.\.\.
+menutrans Find\ and\ Rep&lace\.\.\.	PoiÅ¡Äi\ in\ &zamenjaj\ \.\.\.
+
+" [-- SETTINGS --]
+menutrans Settings\ &Window				Nastavitve\ \.\.\.
+menutrans Startup\ &Settings				ZaÄetne\ nastavitve
+menutrans &Global\ Settings				&Globalne\ nastavitve
+
+menutrans Toggle\ Pattern\ &Highlight<Tab>:set\ hls!	VkljuÄi/izkljuÄi\ poudarjanje\ iskanega\ niza<Tab>:set\ hls!
+menutrans Toggle\ &Ignore-case<Tab>:set\ ic!		VkljuÄi/izkljuÄi\ loÄevanje\ velikih\ in\ malih\ Ärk<Tab>:set\ ic!
+menutrans Toggle\ &Showmatch<Tab>:set\ sm!		VkljuÄi/izkljuÄi\ kratek\ skok\ na\ pripadajoÄi\ oklepaj<Tab>:set\ sm!
+
+menutrans &Context\ lines				Å t\.\ vidnih\ vrstic\ pred/za\ kurzorjem
+
+menutrans &Virtual\ Edit				Dovoli\ položaj\ kazalÄka,\ kjer\ ni\ besedila
+menutrans Never						Nikoli
+menutrans Block\ Selection				Le\ med\ izbiranjem\ bloka
+menutrans Insert\ mode					Le\ v\ naÄinu\ za\ pisanje
+menutrans Block\ and\ Insert				Pri\ obojem
+menutrans Always					Vedno
+menutrans Toggle\ Insert\ &Mode<Tab>:set\ im!		VkljuÄi/izkljuÄi\ naÄin\ za\ pisanje<Tab>:set\ im!
+menutrans Toggle\ Vi\ C&ompatible<Tab>:set\ cp!		VkljuÄi/izkljuÄi\ združljivost\ z\ Vi-jem<Tab>:set\ cp!
+
+menutrans Search\ &Path\.\.\.				Pot\ za\ iskanje\ \.\.\.
+menutrans Ta&g\ Files\.\.\.				Ta&g-datoteke\.\.\.
+
+menutrans Toggle\ &Toolbar				Pokaži/skrij\ Orodja
+menutrans Toggle\ &Bottom\ Scrollbar			Pokaži/skrij\ spodnji\ drsnik
+menutrans Toggle\ &Left\ Scrollbar			Pokaži/skrij\ levi\ drsnik
+menutrans Toggle\ &Right\ Scrollbar			Pokaži/skrij\ desni\ drsnik
+
+" Edit/File Settings
+menutrans F&ile\ Settings				&Nastavitve\ datoteke
+
+" Boolean options
+menutrans Toggle\ Line\ &Numbering<Tab>:set\ nu!	Pokaži/skrij\ številke\ vrstic<Tab>:set\ nu!
+menutrans Toggle\ &List\ Mode<Tab>:set\ list!		Pokaži/skrij\ nevidne\ znake<Tab>:set\ list! " space/tab
+menutrans Toggle\ Line\ &Wrap<Tab>:set\ wrap!		VkljuÄi/izkljuÄi\ prelome\ vrstic<Tab>:set\ wrap!
+menutrans Toggle\ W&rap\ at\ word<Tab>:set\ lbr!	VkljuÄi/izkljuÄi\ prelome\ vrstic\ med\ besedami<Tab>:set\ lbr!
+menutrans Toggle\ &expand-tab<Tab>:set\ et!		VkljuÄi/izkljuÄi\ zamenjavo\ tabulatorjev\ s\ presledki<Tab>:set\ et!
+menutrans Toggle\ &auto-indent<Tab>:set\ ai!		VkljuÄi/izkljuÄi\ avtomatsko\ zamikanje\ vrstic<Tab>:set\ ai!
+menutrans Toggle\ &C-indenting<Tab>:set\ cin!		VkljuÄi/izkljuÄi\ C-jevski\ naÄin\ zamikanja\ vrstic<Tab>:set\ cin!
+
+" other options
+menutrans &Shiftwidth					Å irina\ zamika\ vrstic
+menutrans Soft\ &Tabstop				Å irina\ &tabulatorja
+menutrans Te&xt\ Width\.\.\.				Å irina\ besedila\ \.\.\.
+menutrans &File\ Format\.\.\.				Format\ &datoteke\ \.\.\.
+menutrans C&olor\ Scheme				&Barvna\ shema\ \.\.\.
+menutrans &Keymap					&Keymap
+menutrans Select\ Fo&nt\.\.\.				Pisava\ \.\.\.
+" }}} EDIT / UREDI
+
+" {{{  TOOLS / ORODJA
+menutrans &Tools					&Orodja
+menutrans &Jump\ to\ this\ tag<Tab>g^]			&SkoÄi\ k\ tej\ znaÄki<Tab>g^]
+menutrans Jump\ &back<Tab>^T				SkoÄi\ Na&zaj<Tab>^T
+menutrans Build\ &Tags\ File				Napravi\ datoteke\ z\ znaÄkami\ (tag)
+if has("spell")
+    menutrans &Spelling					ÄŒrkovalnik
+    menutrans &Spell\ Check\ On				&VkljuÄi
+    menutrans Spell\ Check\ &Off			&IzkljuÄi
+    menutrans To\ &Next\ error<Tab>]s			K\ &naslednji\ napaki<Tab>]s
+    menutrans To\ &Previous\ error<Tab>[s		K\ &prejšnji\ napaki<Tab>[s
+    menutrans Suggest\ &Corrections<Tab>z=		Predlagaj\ popravek<Tab>z=
+    menutrans &Repeat\ correction<Tab>:spellrepall	Po&novi\ popravke\ na\ vseh\ besedah<Tab>:spellrepall
+    menutrans Set\ language\ to\ "en"			Angleški\ "en"
+    menutrans Set\ language\ to\ "en_au"		Angleški\ "en_au"
+    menutrans Set\ language\ to\ "en_ca"		Angleški\ "en_ca"
+    menutrans Set\ language\ to\ "en_gb"		Angleški\ "en_gb"
+    menutrans Set\ language\ to\ "en_nz"		Angleški\ "en_nz"
+    menutrans Set\ language\ to\ "en_us"		Angleški\ "en_us"
+    menutrans Set\ language\ to\ "sl"			Slovenski\ "sl"
+    menutrans Set\ language\ to\ "de"			Nemški\ "de"
+    menutrans Set\ language\ to\ 			ÄŒrkovalnik:\
+    menutrans &Find\ More\ Languages			&Ostali\ jeziki
+endif
+if has("folding")
+  menutrans &Folding					Zvijanje\ kode
+  " open close folds
+  menutrans &Enable/Disable\ folds<Tab>zi		OmogoÄi/onemogoÄi\ zvijanje<Tab>zi " OmogoÄi/onemogoÄi\ zavihke
+  menutrans &View\ Cursor\ Line<Tab>zv			Pokaži\ vrstico\ s\ kazalÄkom<Tab>zv " kjer je kazalec
+  menutrans Vie&w\ Cursor\ Line\ only<Tab>zMzx		Pokaži\ samo\ vrstico\ s\ kazalÄkom<Tab>zMzx
+  menutrans C&lose\ more\ folds<Tab>zm			Zvij\ naslednji\ nivo<Tab>zm " Zapri\ veÄ\ zavihkov
+  menutrans &Close\ all\ folds<Tab>zM			Zvij\ vso\ kodo<Tab>zM " Zapri\ vse\ zavihke
+  menutrans O&pen\ more\ folds<Tab>zr			Razvij\ en\ nivo<Tab>zr " Odpri\ veÄ\ zavihkov
+  menutrans &Open\ all\ folds<Tab>zR			Razvij\ vso\ kodo<Tab>zR " Odpri\ vse\ zavihke
+  " fold method
+  menutrans Fold\ Met&hod				Kriterij\ za\ zvijanje " Ustvarjanje\ zavihkov
+  menutrans M&anual					&RoÄno
+  menutrans I&ndent					Glede\ na\ &poravnavo
+  menutrans E&xpression					Z\ &izrazi\ (foldexpr)
+  menutrans S&yntax					Glede\ na\ &sintakso
+  menutrans &Diff					Razlike\ (&diff)
+  menutrans Ma&rker					Z\ &markerji/oznaÄbami
+  " create and delete folds
+  " TODO accelerators
+  menutrans Create\ &Fold<Tab>zf			Ustvari\ zvitek<Tab>zf
+  menutrans &Delete\ Fold<Tab>zd			Izbriši\ zvitek<Tab>zd
+  menutrans Delete\ &All\ Folds<Tab>zD			Izbriši\ vse\ zvitke<Tab>zD
+  " moving around in folds
+  menutrans Fold\ column\ &width			Å irina\ drevesa\ z\ zvitki
+endif  " has folding
+
+if has("diff")
+  menutrans &Diff					Razlike\ (&Diff)
+  menutrans &Update					&Posodobi<Tab>
+  menutrans &Get\ Block					&Sprejmi\ (spremeni\ to\ okno) " XXX: check if translation is OK
+  menutrans &Put\ Block					&Pošlji\ (spremeni\ drugo\ okno)
+endif
+
+menutrans &Make<Tab>:make				Napravi\ (&make)<Tab>:make
+menutrans &List\ Errors<Tab>:cl				Pokaži\ napake<Tab>:cl
+menutrans L&ist\ Messages<Tab>:cl!			Pokaži\ sporoÄila<Tab>:cl!
+menutrans &Next\ Error<Tab>:cn				K\ &naslednji\ napaki<Tab>:cn
+menutrans &Previous\ Error<Tab>:cp			K\ &prejšnji\ napaki<Tab>:cp
+menutrans &Older\ List<Tab>:cold			K\ &starejšemu\ seznamu\ napak<Tab>:cold
+menutrans N&ewer\ List<Tab>:cnew			K\ &novejšemu\ seznamu\ napak<Tab>:cnew
+
+menutrans Error\ &Window				Okno\ z\ napakami
+menutrans &Update<Tab>:cwin				&Posodobi<Tab>:cwin
+menutrans &Open<Tab>:copen				&Odpri<Tab>:copen
+menutrans &Close<Tab>:cclose				&Zapri<Tab>:cclose
+
+menutrans &Set\ Compiler				Nastavi\ &prevajalnik
+menutrans Se&T\ Compiler				Nastavi\ &prevajalnik " bug in original translation?
+
+menutrans &Convert\ to\ HEX<Tab>:%!xxd			Pretvori\ v\ HE&X<Tab>:%!xxd
+menutrans Conve&rt\ back<Tab>:%!xxd\ -r			Pretvori\ nazaj<Tab>:%!xxd\ -r
+" }}}  TOOLS / ORODJA
+
+" {{{ SYNTAX / BARVANJE KODE
+menutrans &Syntax				&Barvanje\ kode
+menutrans &Show\ filetypes\ in\ menu		Podprte\ vrste\ datotek
+menutrans Set\ '&syntax'\ only			Samo\ barvanje\ ('&syntax')
+menutrans Set\ '&filetype'\ too			Tudi\ obnašanje\ ('&filetype')
+menutrans &Off					&IzkljuÄeno
+menutrans &Manual				&RoÄno
+menutrans A&utomatic				&Avtomatsko
+menutrans on/off\ for\ &This\ file		VkljuÄi/izkljuÄi\ za\ to\ datoteko
+menutrans Co&lor\ test				Preizkus\ barv
+menutrans &Highlight\ test			Preizkus\ barvanja\ kode
+menutrans &Convert\ to\ HTML			Pretvori\ v\ &HTML
+" }}} SYNTAX / BARVANJE KODE
+
+" {{{ BUFFERS / MEDPOMNILNIK
+menutrans &Buffers					&Medpomnilnik " XXX: ni najbolje: okno bi bolj pristajalo, ampak okno je že
+menutrans &Refresh\ menu				&Osveži
+menutrans Delete					&Briši
+menutrans &Alternate					&Menjaj
+menutrans &Next						&Naslednji
+menutrans &Previous					&Prejšnji
+menutrans [No\ File]					[Brez\ datoteke]
+" }}} BUFFERS / MEDPOMNILNIK
+
+" {{{ WINDOW / OKNO
+menutrans &Window			&Okno
+menutrans &New<Tab>^Wn			&Novo<Tab>^Wn
+menutrans S&plit<Tab>^Ws		Razdeli<Tab>^Ws
+menutrans Split\ &Vertically<Tab>^Wv	Razdeli\ navpiÄno<Tab>^Ws
+menutrans Split\ File\ E&xplorer	Razdeli:\ Vsebina\ mape
+menutrans Sp&lit\ To\ #<Tab>^W^^	Razdeli\ v\ #<Tab>^W^^
+menutrans &Close<Tab>^Wc		&Zapri<Tab>^Wc
+menutrans Close\ &Other(s)<Tab>^Wo	Zapri\ &ostala<Tab>^Wo
+menutrans Move\ &To			Premakni
+menutrans &Top<Tab>^WK			&Gor<Tab>^WK
+menutrans &Bottom<Tab>^WJ		&Dol<Tab>^WJ
+menutrans &Left\ side<Tab>^WH		&Levo<Tab>^WH
+menutrans &Right\ side<Tab>^WL		&Desno<Tab>^WL
+menutrans Rotate\ &Up<Tab>^WR		Zavrti\ navzgor<Tab>^WR
+menutrans Rotate\ &Down<Tab>^Wr		Zavrti\ navzdol<Tab>^Wr
+menutrans &Equal\ Size<Tab>^W=		&Enaka\ velikost<Tab>^W=
+menutrans &Max\ Height<Tab>^W_		Najvišje<Tab>^W_
+menutrans M&in\ Height<Tab>^W1_		Najnižje<Tab>^W1_
+menutrans Max\ &Width<Tab>^W\|		Najširše<Tab>^W\|
+menutrans Min\ Widt&h<Tab>^W1\|		Najožje<Tab>^W1\|
+" }}} WINDOW / OKNO
+
+" {{{ HELP / POMOČ
+menutrans &Help			&PomoÄ
+menutrans &Overview<Tab><F1>	Hitri\ pregled<Tab><F1>
+menutrans &User\ Manual		P&riroÄnik
+menutrans &How-to\ links	&How-to\ kazalo
+menutrans &Find\.\.\.		Po&iÅ¡Äi\ \.\.\.	" conflicts with Edit.Find
+menutrans &Credits		&Avtorji
+menutrans Co&pying		&Licenca
+menutrans &Sponsor/Register	Registracija\ in\ &donacije
+menutrans O&rphans		&Sirotam
+menutrans &Version		&Verzija
+menutrans &About		&O\ programu
+" }}} HELP / POMOČ
+
+" {{{ POPUP
+menutrans &Undo				&Razveljavi
+menutrans Cu&t				&Izreži
+menutrans &Copy				&Kopieraj
+menutrans &Paste			&Prilepi
+menutrans &Delete			&Zbriši
+menutrans Select\ Blockwise		Izbiraj\ po\ blokih
+menutrans Select\ &Word			Izberi\ &besedo
+menutrans Select\ &Sentence		Izberi\ &stavek
+menutrans Select\ Pa&ragraph		Izberi\ &odstavek
+menutrans Select\ &Line			Izberi\ vrs&tico
+menutrans Select\ &Block		Izberi\ b&lok
+menutrans &Select\ All<Tab>ggVG		Izberi\ &vse<Tab>ggVG
+" }}} POPUP
+
+" {{{ TOOLBAR
+if has("toolbar")
+  if exists("*Do_toolbar_tmenu")
+    delfun Do_toolbar_tmenu
+  endif
+  fun Do_toolbar_tmenu()
+    tmenu ToolBar.Open		Odpri datoteko
+    tmenu ToolBar.Save		Shrani datoteko
+    tmenu ToolBar.SaveAll	Shrani vse datoteke
+    tmenu ToolBar.Print		Natisni
+    tmenu ToolBar.Undo		Razveljavi
+    tmenu ToolBar.Redo		Obnovi
+    tmenu ToolBar.Cut		Izreži
+    tmenu ToolBar.Copy		Kopiraj
+    tmenu ToolBar.Paste		Prilepi
+    tmenu ToolBar.Find		Najdi ...
+    tmenu ToolBar.FindNext	Najdi naslednje
+    tmenu ToolBar.FindPrev	Najdi prejšnje
+    tmenu ToolBar.Replace	Najdi in zamenjaj ...
+    tmenu ToolBar.LoadSesn	Naloži sejo
+    tmenu ToolBar.SaveSesn	Shrani trenutno sejo
+    tmenu ToolBar.RunScript	Izberi Vim skripto za izvajanje
+    tmenu ToolBar.Make		Napravi trenutni projekt (:make)
+    tmenu ToolBar.RunCtags	Napravi znaÄke v trenutnem direktoriju (!ctags -R.)
+    tmenu ToolBar.TagJump	SkoÄi k znaÄki pod kurzorjem
+    tmenu ToolBar.Help		PomoÄ za Vim
+    tmenu ToolBar.FindHelp	IÅ¡Äi v pomoÄi za Vim
+  endfun
+endif
+" }}} TOOLBAR
+
+" {{{ DIALOG TEXTS
+let g:menutrans_no_file = "[Brez datoteke]"
+let g:menutrans_help_dialog = "Vnesite ukaz ali besedo, za katero želite pomoÄ:\n\nUporabite predpono i_ za ukaze v naÄinu za pisanje (npr.: i_CTRL-X)\nUporabite predpono c_ za ukaze v ukazni vrstici (command-line) (npr.: c_<Del>)\nUporabite predpono ' za imena opcij (npr.: 'shiftwidth')"
+let g:menutrans_path_dialog = "Vnesite poti za iskanje datotek.\nImena direktorijev loÄite z vejico."
+let g:menutrans_tags_dialog = "Vnesite imena datotek z znaÄkami ('tag').\nImana loÄite z vejicami."
+let g:menutrans_textwidth_dialog = "Vnesite novo Å¡irino besedila (ali 0 za izklop formatiranja): "
+let g:menutrans_fileformat_dialog = "Izberite format datoteke"
+let g:menutrans_fileformat_choices = "&Unix\n&Dos\n&Mac\n&PrekliÄi"
+" }}}
--- a/runtime/lang/menu_zh_cn.gb2312.vim
+++ b/runtime/lang/menu_zh_cn.gb2312.vim
@@ -10,7 +10,10 @@ if exists("did_menu_trans")
 endif
 let did_menu_trans = 1
 
-scriptencoding gb2312
+" This causes trouble for a broken iconv (symptom: last character is always
+" ??).  Without this it works fine anyway, because gbk/cp936 is a superset of
+" gb2312. (suggested by Edward L. Fox)
+" scriptencoding gb2312
 
 " Help menu
 menutrans &Help			°ïÖú(&H)
@@ -109,7 +112,7 @@ menutrans &Keymap			¼üÅÌÓ³Éä(&K)
 menutrans &Tools			¹¤¾ß(&T)
 menutrans &Jump\ to\ this\ tag<Tab>g^]	Ìøתµ½Õâ¸ö\ tag(&J)<Tab>g^]
 menutrans Jump\ &back<Tab>^T		Ìøת·µ»Ø(&B)<Tab>^T
-menutrans Build\ &Tags\ File		½¨Á¢ Tags Îļþ(&T)
+menutrans Build\ &Tags\ File		½¨Á¢\ Tags\ Îļþ(&T)
 
 " Tools.Spelling Menu
 menutrans &Spelling				ƴд¼ì²é(&S)
@@ -209,7 +212,7 @@ menutrans Min\ Widt&h<Tab>^W1\|		×îС¿í¶È(&H)<Tab>^W1\|
 menutrans &Undo			³·Ïú(&U)
 menutrans Cu&t			¼ôÇÐ(&T)
 menutrans &Copy			¸´ÖÆ(&C)
-menutrans &Paste		Õ³Ìû(&P)
+menutrans &Paste		Õ³Ìù(&P)
 menutrans &Delete		ɾ³ý(&D)
 menutrans Select\ Blockwise	Ñ¡Ôñ¿é
 menutrans Select\ &Word		Ñ¡Ôñµ¥´Ê(&W)
@@ -233,7 +236,7 @@ if has("toolbar")
     tmenu ToolBar.Redo		ÖØ×ö
     tmenu ToolBar.Cut		¼ôÇе½¼ôÌù°å
     tmenu ToolBar.Copy		¸´ÖƵ½¼ôÌù°å
-    tmenu ToolBar.Paste		´Ó¼ôÌù°åÕ³Ìû
+    tmenu ToolBar.Paste		´Ó¼ôÌù°åÕ³Ìù
     tmenu ToolBar.Find		²éÕÒ...
     tmenu ToolBar.FindNext	²éÕÒÏÂÒ»¸ö
     tmenu ToolBar.FindPrev	²éÕÒÉÏÒ»¸ö
--- a/runtime/macros/less.vim
+++ b/runtime/macros/less.vim
@@ -1,6 +1,6 @@
 " Vim script to work like "less"
 " Maintainer:	Bram Moolenaar <Bram@vim.org>
-" Last Change:	2006 May 07
+" Last Change:	2006 Dec 05
 
 " Avoid loading this file twice, allow the user to define his own script.
 if exists("loaded_less")
@@ -168,7 +168,7 @@ fun! s:Forward()
   else
     noremap <script> N Hg0Nzt<SID>L
   endif
-  cnoremap <script> <CR> <CR>:cunmap <lt>CR><CR>zt<SID>L
+  cnoremap <silent> <script> <CR> <CR>:cunmap <lt>CR><CR>zt<SID>L
 endfun
 
 fun! s:Backward()
@@ -179,7 +179,7 @@ fun! s:Backward()
     noremap <script> n Hg0nzt<SID>L
   endif
   noremap <script> N H$Nzt<SID>L
-  cnoremap <script> <CR> <CR>:cunmap <lt>CR><CR>zt<SID>L
+  cnoremap <silent> <script> <CR> <CR>:cunmap <lt>CR><CR>zt<SID>L
 endfun
 
 call s:Forward()
--- a/runtime/macros/matchit.vim
+++ b/runtime/macros/matchit.vim
@@ -1,7 +1,7 @@
 "  matchit.vim: (global plugin) Extended "%" matching
-"  Last Change: Sun Feb 26 10:00 AM 2006 EST
+"  Last Change: Mon May 15 10:00 PM 2006 EDT
 "  Maintainer:  Benji Fisher PhD   <benji@member.AMS.org>
-"  Version:     1.10, for Vim 6.3
+"  Version:     1.11, for Vim 6.3+
 "  URL:		http://www.vim.org/script.php?script_id=39
 
 " Documentation:
@@ -15,7 +15,7 @@
 "  Support for many languages by Johannes Zellner
 "  Suggestions for improvement, bug reports, and support for additional
 "  languages by Jordi-Albert Batalla, Neil Bird, Servatius Brandt, Mark
-"  Collett, Stephen Wall, Dany St-Amant, and Johannes Zellner.
+"  Collett, Stephen Wall, Dany St-Amant, Yuheng Xie, and Johannes Zellner.
 
 " Debugging:
 "  If you'd like to try the built-in debugging commands...
@@ -172,9 +172,10 @@ function! s:Match_wrapper(word, forward,
   else	" Find the match that ends on or after the cursor and set curcol.
     let regexp = s:Wholematch(matchline, s:all, startcol-1)
     let curcol = match(matchline, regexp)
-    let suf = strlen(matchline) - matchend(matchline, regexp)
-    let prefix = (curcol ? '^.\{'  . curcol . '}\%(' : '^\%(')
-    let suffix = (suf ? '\).\{' . suf . '}$'  : '\)$')
+    let endcol = matchend(matchline, regexp)
+    let suf = strlen(matchline) - endcol
+    let prefix = (curcol ? '^.*\%'  . (curcol + 1) . 'c\%(' : '^\%(')
+    let suffix = (suf ? '\)\%' . (endcol + 1) . 'c.*$'  : '\)$')
     " If the match comes from the defaults, bail out.
     if matchline !~ prefix .
       \ substitute(s:pat, s:notslash.'\zs[,:]\+', '\\|', 'g') . suffix
@@ -262,10 +263,11 @@ function! s:Match_wrapper(word, forward,
   normal! H
   let restore_cursor = "normal!" . line(".") . "Gzt" . restore_cursor
   execute restore_cursor
-  normal! 0
-  if curcol
-    execute "normal!" . curcol . "l"
-  endif
+  call cursor(0, curcol + 1)
+  " normal! 0
+  " if curcol
+  "   execute "normal!" . curcol . "l"
+  " endif
   if skip =~ 'synID' && !(has("syntax") && exists("g:syntax_on"))
     let skip = "0"
   else
@@ -415,9 +417,9 @@ endfun
 " let match  = matchstr(getline("."), regexp)
 fun! s:Wholematch(string, pat, start)
   let group = '\%(' . a:pat . '\)'
-  let prefix = (a:start ? '\(^.\{,' . a:start . '}\)\zs' : '^')
+  let prefix = (a:start ? '\(^.*\%<' . (a:start + 2) . 'c\)\zs' : '^')
   let len = strlen(a:string)
-  let suffix = (a:start+1 < len ? '\(.\{,'.(len-a:start-1).'}$\)\@=' : '$')
+  let suffix = (a:start+1 < len ? '\(\%>'.(a:start+1).'c.*$\)\@=' : '$')
   if a:string !~ prefix . group . suffix
     let prefix = ''
   endif
new file mode 100644
--- /dev/null
+++ b/runtime/plugin/getscriptPlugin.vim
@@ -0,0 +1,38 @@
+" ---------------------------------------------------------------------
+" getscriptPlugin.vim
+"  Author:	Charles E. Campbell, Jr.
+"  Date:	Jul 18, 2006
+"  Installing:	:help glvs-install
+"  Usage:	:help glvs
+"
+" GetLatestVimScripts: 642 1 :AutoInstall: GetLatestVimScripts.vim
+"
+" (Rom 15:11 WEB) Again, "Praise the Lord, all you Gentiles!  Let
+" all the peoples praise Him."
+" ---------------------------------------------------------------------
+" Initialization:	{{{1
+" if you're sourcing this file, surely you can't be
+" expecting vim to be in its vi-compatible mode
+if &cp || exists("g:loaded_getscriptPlugin")
+ if &verbose
+  echo "GetLatestVimScripts is not vi-compatible; not loaded (you need to set nocp)"
+ endif
+ finish
+endif
+let g:loaded_getscriptPlugin = 1
+let s:keepfo                 = &fo
+let s:keepcpo                = &cpo
+set cpo&vim
+
+" ---------------------------------------------------------------------
+"  Public Interface: {{{1
+com!        -nargs=0 GetLatestVimScripts call getscript#GetLatestVimScripts()
+com!        -nargs=0 GetScripts          call getscript#GetLatestVimScripts()
+silent! com -nargs=0 GLVS                call getscript#GetLatestVimScripts()
+
+" Restore Options: {{{1
+let &fo = s:keepfo
+let &cpo= s:keepcpo
+
+" ---------------------------------------------------------------------
+" vim: ts=8 sts=2 fdm=marker nowrap
--- a/runtime/spell/pt/main.aap
+++ b/runtime/spell/pt/main.aap
@@ -1,4 +1,19 @@
 # Aap recipe for Portuguese Vim spell files.
+#
+# Based on a shell script by Leonardo Fontenelle.
+# His remarks:
+#
+# Makes a Vim pt dictionary from OpenOffice.org's pt_BR and pt_PT.
+#
+# AFAIK, will have to update the script every time a new dictionary is 
+# released for pt_BR. I asked the maintainer to update OOo's FTP site,
+# but it didn't happen yet. As for the pt_PT dictionary, they won't be
+# in OOo's FTP site for some time, because the Portuguese OOo project
+# decided to adapt the pt_BR dictionary, which is much more extensive.
+# I picked the Natura project unofficial dictionary, because it has been
+# developed by a team with linguists, and for a longer time. At least the
+# pt_PT dictionary has a "latest" file to make our lives easier.
+
 
 # Use a freshly compiled Vim if it exists.
 @if os.path.exists('../../../src/vim'):
@@ -10,15 +25,31 @@ SPELLDIR = ..
 FILES    = pt_PT.aff pt_PT.dic
 	   pt_BR.aff pt_BR.dic
 
+#
+# Fetching the pt_PT files from the Natura project.
+#
+PT_DIR = http://natura.di.uminho.pt/download/sources/Dictionaries/myspell
+PT_FNAME = myspell.pt-latest.zip
+:attr {fetch = $PT_DIR/%file%} $PT_FNAME
+
+#
+# Fetching the pt_BR files from BrOffice.org (Brazilian OOo) 2.1. Should be
+# updated really soon.
+#
+BR_DIR = http://www.deso-se.com.br/downloads/download.php?arquivo=pt_BR-2700g
+BR_FNAME = pt_BR-2700g.zip
+
+:attr {fetch = $BR_DIR} $BR_FNAME
+
 all: $SPELLDIR/pt.latin1.spl $SPELLDIR/pt.utf-8.spl \
         ../README_pt.txt
 
 $SPELLDIR/pt.latin1.spl : $FILES
-        :sys env LANG=pt_PT.ISO8859-1
+        :sys env LANG=pt_PT.ISO8859-1 LC_ALL=pt_PT.ISO8859-1
 		$VIM -u NONE -e -c "mkspell! $SPELLDIR/pt pt_PT pt_BR" -c q
 
 $SPELLDIR/pt.utf-8.spl : $FILES
-        :sys env LANG=pt_PT.UTF-8
+        :sys env LANG=pt_PT.UTF-8 LC_ALL=pt_PT.UTF-8
 		$VIM -u NONE -e -c "mkspell! $SPELLDIR/pt pt_PT pt_BR" -c q
 
 ../README_pt.txt: README_pt_PT.txt README_pt_BR.txt
@@ -26,23 +57,21 @@ all: $SPELLDIR/pt.latin1.spl $SPELLDIR/p
         :cat README_pt_PT.txt | :eval re.sub('\r', '', stdin) >>$target
         :print =================================================== >>$target
         :print pt_BR: >>$target
-        :cat README_pt_BR.txt | :eval re.sub('\r', '', stdin) >>$target
-
-#
-# Fetching the files from OpenOffice.org.
-#
-OODIR = http://ftp.services.openoffice.org/pub/OpenOffice.org/contrib/dictionaries
-:attr {fetch = $OODIR/%file%} pt_PT.zip pt_BR.zip
+        :print Information is in Leia-me.pdf, see $BR_DIR >>$target
+        :cat README_pt_BR.txt >>$target
 
 # The files don't depend on the .zip file so that we can delete it.
 # Only download the zip file if the targets don't exist.
 pt_PT.aff pt_PT.dic: {buildcheck=}
         :assertpkg unzip patch
-        :fetch pt_PT.zip
-        :sys $UNZIP pt_PT.zip
-        :delete pt_PT.zip
-        :sys $VIM pt_PT.dic -e -c "set ff=unix" -c update -c q
-        :sys $VIM README_pt_PT.txt -e -c "set ff=unix" -c update -c q
+        :fetch $PT_FNAME
+        :sys $UNZIP $PT_FNAME
+        :delete $PT_FNAME
+        :move myspell.pt-*/pt_PT.dic .
+        :move myspell.pt-*/pt_PT.aff .
+        :move myspell.pt-*/README_pt_PT.txt .
+        :move myspell.pt-*/COPYING COPYING_pt_PT.txt
+        :deldir myspell.pt-*
         @if not os.path.exists('pt_PT.orig.aff'):
             :copy pt_PT.aff pt_PT.orig.aff
         @if not os.path.exists('pt_PT.orig.dic'):
@@ -52,12 +81,22 @@ pt_PT.aff pt_PT.dic: {buildcheck=}
 
 pt_BR.aff pt_BR.dic: {buildcheck=}
         :assertpkg unzip patch
-        :fetch pt_BR.zip
-        :sys $UNZIP pt_BR.zip
-        :delete pt_BR.zip
-        :sys $VIM pt_BR.aff -e -c "set ff=unix" -c update -c q
-        :sys $VIM pt_BR.dic -e -c "set ff=unix" -c update -c q
-        :sys $VIM README_pt_BR.txt -e -c "set ff=unix" -c update -c q
+        :fetch $BR_FNAME
+        :sys $UNZIP $BR_FNAME
+        :delete $BR_FNAME
+        :move Leia-me.pdf Leia-me_pt_BR.pdf
+
+# 1. pt_BR.dic contains a cp1252-specific character.
+#    Changing it to its latin1 equivalent.
+# 2. Vim seems to ignore the dots from the word list.
+#    Removing words with dot to avoid misbehaviour.
+        :sys $VIM pt_BR.dic -e -c "set ff=unix" -c "%s/\%x92/'/g" -c "/\./d" -c update -c q
+
+# Removing /* ... */ header to avoid warnings.  Write it to the README file, it
+# contains the copyright notice.
+        :sys $VIM pt_BR.aff -e -c "set ff=unix" -c "/\/\*/,/\*\//w README_pt_BR.txt" -c "/\/\*/,/\*\//+1d" -c update -c q
+
+        #:sys $VIM README_pt_BR.txt -e -c "set ff=unix" -c update -c q
         @if not os.path.exists('pt_BR.orig.aff'):
             :copy pt_BR.aff pt_BR.orig.aff
         @if not os.path.exists('pt_BR.orig.dic'):
@@ -79,10 +118,11 @@ diff:
 
 # Check for updated OpenOffice spell files.  When there are changes the
 # ".new.aff" and ".new.dic" files are left behind for manual inspection.
+# TO BE IMPLEMENTED
 
-check: check-us check-au
+check: check-pt check-br
 
-check-us:
+check-pt:
         :assertpkg unzip diff
         :fetch pt_PT.zip
         :mkdir tmp
@@ -101,7 +141,7 @@ check-us:
             :delete {r}{f}{q} tmp
             :delete pt_PT.zip
 
-check-au:
+check-br:
         :assertpkg unzip diff
         :fetch pt_BR.zip
         :mkdir tmp
--- a/runtime/spell/pt/pt_BR.diff
+++ b/runtime/spell/pt/pt_BR.diff
@@ -1,46 +1,12 @@
-*** pt_BR.orig.aff	Wed Aug 31 20:05:18 2005
---- pt_BR.aff	Wed Aug 31 20:05:18 2005
+*** pt_BR.orig.aff	Mon Apr 16 15:38:54 2007
+--- pt_BR.aff	Mon Apr 16 15:49:01 2007
 ***************
 *** 3,4 ****
---- 3,22 ----
+--- 3,9 ----
   
 + FOL  ßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþÿ
 + LOW  ßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþÿ
 + UPP  ßÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞÿ
 + 
-+ SOFOFROM abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞ¿
-+ SOFOTO   ebctefghejklnnepkrstevvkesebctefghejklnnepkrstevvkeseeeeeeeceeeeeeeedneeeeeeeeeeepseeeeeeeeceeeeeeeedneeeeeeeeeeep?
-+ 
-+ MAP 9
-+ MAP aàáâãäå
-+ MAP eèéêë
-+ MAP iìíîï
-+ MAP oòóôõö
-+ MAP uùúûü
-+ MAP nñ
-+ MAP cç
-+ MAP yÿý
-+ MAP sß
-+ 
-  # Plural apenas
-***************
-*** 526,534 ****
-  SFX I   ar      ês       dar
-! SFX I   iar     eia       [^]iar
-! SFX I   iar     eiam       [^]iar
-! SFX I   iar     eias       [^]iar
-! SFX I   iar     eie       [^]iar
-! SFX I   iar     eiem       [^]iar
-! SFX I   iar     eies       [^]iar
-! SFX I   iar     eio       [^]iar
-  SFX I   oiar    óia       oiar
---- 544,552 ----
-  SFX I   ar      ês       dar
-! SFX I   iar     eia       [^o]iar
-! SFX I   iar     eiam       [^o]iar
-! SFX I   iar     eias       [^o]iar
-! SFX I   iar     eie       [^o]iar
-! SFX I   iar     eiem       [^o]iar
-! SFX I   iar     eies       [^o]iar
-! SFX I   iar     eio       [^o]iar
-  SFX I   oiar    óia       oiar
++ MIDWORD	'
+  
--- a/runtime/syntax/ada.vim
+++ b/runtime/syntax/ada.vim
@@ -1,287 +1,367 @@
-" Vim syntax file
-" Language:	Ada (95)
-" Maintainer:	David A. Wheeler <dwheeler@dwheeler.com>
-" URL: http://www.dwheeler.com/vim
-" Last Change:	2001-11-02
-
-" Former Maintainer:	Simon Bradley <simon.bradley@pitechnology.com>
-"			(was <sib93@aber.ac.uk>)
-" Other contributors: Preben Randhol.
-" The formal spec of Ada95 (ARM) is the "Ada95 Reference Manual".
-" For more Ada95 info, see http://www.gnuada.org and http://www.adapower.com.
+"----------------------------------------------------------------------------
+"  Description: Vim Ada syntax file
+"     Language: Ada (2005)
+"	   $Id$
+"    Copyright: Copyright (C) 2006 Martin Krischik
+"   Maintainer: Martin Krischik
+"		David A. Wheeler <dwheeler@dwheeler.com>
+"		Simon Bradley <simon.bradley@pitechnology.com>
+" Contributors: Preben Randhol.
+"      $Author$
+"	 $Date$
+"      Version: 4.2
+"    $Revision$
+"     $HeadURL: https://svn.sourceforge.net/svnroot/gnuada/trunk/tools/vim/syntax/ada.vim $
+"		http://www.dwheeler.com/vim
+"      History: 24.05.2006 MK Unified Headers
+"		26.05.2006 MK ' should not be in iskeyword.
+"		16.07.2006 MK Ada-Mode as vim-ball
+"		02.10.2006 MK Better folding.
+"		15.10.2006 MK Bram's suggestion for runtime integration
+"		05.11.2006 MK Spell check for comments and strings only
+"		05.11.2006 MK Bram suggested to save on spaces
+"    Help Page: help ft-ada-syntax
+"------------------------------------------------------------------------------
+" The formal spec of Ada 2005 (ARM) is the "Ada 2005 Reference Manual".
+" For more Ada 2005 info, see http://www.gnuada.org and http://www.adapower.com.
+"
+" This vim syntax file works on vim 7.0 only and makes use of most of Voim 7.0 
+" advanced features.
+"------------------------------------------------------------------------------
 
-" This vim syntax file works on vim 5.6, 5.7, 5.8 and 6.x.
-" It implements Bram Moolenaar's April 25, 2001 recommendations to make
-" the syntax file maximally portable across different versions of vim.
-" If vim 6.0+ is available,
-" this syntax file takes advantage of the vim 6.0 advanced pattern-matching
-" functions to avoid highlighting uninteresting leading spaces in
-" some expressions containing "with" and "use".
-
-" For version 5.x: Clear all syntax items
-" For version 6.x: Quit when a syntax file was already loaded
-if version < 600
- syntax clear
-elseif exists("b:current_syntax")
- finish
+if exists("b:current_syntax") || version < 700
+    finish
 endif
 
-" Ada is entirely case-insensitive.
-syn case ignore
+let b:current_syntax = "ada"
 
-" We don't need to look backwards to highlight correctly;
-" this speeds things up greatly.
-syn sync minlines=1 maxlines=1
+" Section: Ada is entirely case-insensitive. {{{1
+"
+syntax   case ignore
+setlocal nosmartcase
+setlocal ignorecase
 
-" Highlighting commands.  There are 69 reserved words in total in Ada95.
-" Some keywords are used in more than one way. For example:
+" Section: Highlighting commands {{{1
+"
+" There are 72 reserved words in total in Ada2005. Some keywords are
+" used in more than one way. For example:
 " 1. "end" is a general keyword, but "end if" ends a Conditional.
 " 2. "then" is a conditional, but "and then" is an operator.
+"
+for b:Item in g:ada#Keywords
+   " Standard Exceptions (including I/O).
+   " We'll highlight the standard exceptions, similar to vim's Python mode.
+   " It's possible to redefine the standard exceptions as something else,
+   " but doing so is very bad practice, so simply highlighting them makes sense.
+   if b:Item['kind'] == "x"
+      execute "syntax keyword adaException " . b:Item['word']
+   endif
+   if b:Item['kind'] == "a"
+      execute 'syntax match adaAttribute "\V' . b:Item['word'] . '"'
+   endif
+   " We don't normally highlight types in package Standard
+   " (Integer, Character, Float, etc.).  I don't think it looks good
+   " with the other type keywords, and many Ada programs define
+   " so many of their own types that it looks inconsistent.
+   " However, if you want this highlighting, turn on "ada_standard_types".
+   " For package Standard's definition, see ARM section A.1.
+   if b:Item['kind'] == "t" && exists ("g:ada_standard_types")
+      execute "syntax keyword adaBuiltinType " . b:Item['word']
+   endif
+endfor
 
+" Section: others {{{1
+"
+syntax keyword  adaLabel	others
 
-" Standard Exceptions (including I/O).
-" We'll highlight the standard exceptions, similar to vim's Python mode.
-" It's possible to redefine the standard exceptions as something else,
-" but doing so is very bad practice, so simply highlighting them makes sense.
-syn keyword adaException Constraint_Error Program_Error Storage_Error
-syn keyword adaException Tasking_Error
-syn keyword adaException Status_Error Mode_Error Name_Error Use_Error
-syn keyword adaException Device_Error End_Error Data_Error Layout_Error
-syn keyword adaException Length_Error Pattern_Error Index_Error
-syn keyword adaException Translation_Error
-syn keyword adaException Time_Error Argument_Error
-syn keyword adaException Tag_Error
-syn keyword adaException Picture_Error
-" Interfaces
-syn keyword adaException Terminator_Error Conversion_Error
-syn keyword adaException Pointer_Error Dereference_Error Update_Error
-" This isn't in the Ada spec, but a GNAT extension.
-syn keyword adaException Assert_Failure
-" We don't list ALL exceptions defined in particular compilers (e.g., GNAT),
-" because it's quite reasonable to define those phrases as non-exceptions.
+" Section: Operatoren {{{1
+"
+syntax keyword  adaOperator abs mod not rem xor
+syntax match    adaOperator "\<and\>"
+syntax match    adaOperator "\<and\s\+then\>"
+syntax match    adaOperator "\<or\>"
+syntax match    adaOperator "\<or\s\+else\>"
+syntax match    adaOperator "[-+*/<>&]"
+syntax keyword  adaOperator **
+syntax match    adaOperator "[/<>]="
+syntax keyword  adaOperator =>
+syntax match    adaOperator "\.\."
+syntax match    adaOperator "="
 
-
-" We don't normally highlight types in package Standard
-" (Integer, Character, Float, etc.).  I don't think it looks good
-" with the other type keywords, and many Ada programs define
-" so many of their own types that it looks inconsistent.
-" However, if you want this highlighting, turn on "ada_standard_types".
-" For package Standard's definition, see ARM section A.1.
+" Section: <> {{{1
+"
+" Handle the box, <>, specially:
+"
+syntax keyword  adaSpecial	    <>
 
-if exists("ada_standard_types")
-  syn keyword adaBuiltinType	Boolean Integer Natural Positive Float
-  syn keyword adaBuiltinType	Character Wide_Character
-  syn keyword adaBuiltinType	String Wide_String
-  syn keyword adaBuiltinType	Duration
-  " These aren't listed in ARM section A.1's code, but they're noted as
-  " options in ARM sections 3.5.4 and 3.5.7:
-  syn keyword adaBuiltinType	Short_Integer Short_Short_Integer
-  syn keyword adaBuiltinType	Long_Integer Long_Long_Integer
-  syn keyword adaBuiltinType	Short_Float Short_Short_Float
-  syn keyword adaBuiltinType	Long_Float Long_Long_Float
+" Section: rainbow color {{{1
+"
+if exists("g:ada_rainbow_color")
+    syntax match	adaSpecial	 "[:;.,]"
+    runtime plugin/Rainbow_Parenthsis.vim
+else
+    syntax match	adaSpecial	 "[:;().,]"
 endif
 
-" There are MANY other predefined types; they've not been added, because
-" determining when they're a type requires context in general.
-" One potential addition would be Unbounded_String.
-
-
-syn keyword adaLabel		others
-
-syn keyword adaOperator		abs mod not rem xor
-syn match adaOperator		"\<and\>"
-syn match adaOperator		"\<and\s\+then\>"
-syn match adaOperator		"\<or\>"
-syn match adaOperator		"\<or\s\+else\>"
-syn match adaOperator		"[-+*/<>&]"
-syn keyword adaOperator		**
-syn match adaOperator		"[/<>]="
-syn keyword adaOperator		=>
-syn match adaOperator		"\.\."
-syn match adaOperator		"="
-
+" Section: := {{{1
+"
 " We won't map "adaAssignment" by default, but we need to map ":=" to
 " something or the "=" inside it will be mislabelled as an operator.
 " Note that in Ada, assignment (:=) is not considered an operator.
-syn match adaAssignment		":="
+"
+syntax match adaAssignment		":="
 
-" Handle the box, <>, specially:
-syn keyword adaSpecial	<>
-
-" Numbers, including floating point, exponents, and alternate bases.
-syn match   adaNumber		"\<\d[0-9_]*\(\.\d[0-9_]*\)\=\([Ee][+-]\=\d[0-9_]*\)\=\>"
-syn match   adaNumber		"\<\d\d\=#\x[0-9A-Fa-f_]*\(\.\x[0-9A-Fa-f_]*\)\=#\([Ee][+-]\=\d[0-9_]*\)\="
+" Section: Numbers, including floating point, exponents, and alternate bases. {{{1
+"
+syntax match   adaNumber		"\<\d[0-9_]*\(\.\d[0-9_]*\)\=\([Ee][+-]\=\d[0-9_]*\)\=\>"
+syntax match   adaNumber		"\<\d\d\=#\x[0-9A-Fa-f_]*\(\.\x[0-9A-Fa-f_]*\)\=#\([Ee][+-]\=\d[0-9_]*\)\="
 
-" Identify leading numeric signs. In "A-5" the "-" is an operator,
-" but in "A:=-5" the "-" is a sign. This handles "A3+-5" (etc.) correctly.
-" This assumes that if you put a don't put a space after +/- when it's used
-" as an operator, you won't put a space before it either -- which is true
-" in code I've seen.
-syn match adaSign "[[:space:]<>=(,|:;&*/+-][+-]\d"lc=1,hs=s+1,he=e-1,me=e-1
+" Section: Identify leading numeric signs {{{1
+"
+" In "A-5" the "-" is an operator, " but in "A:=-5" the "-" is a sign. This
+" handles "A3+-5" (etc.) correctly.  " This assumes that if you put a
+" don't put a space after +/- when it's used " as an operator, you won't
+" put a space before it either -- which is true " in code I've seen.
+"
+syntax match adaSign "[[:space:]<>=(,|:;&*/+-][+-]\d"lc=1,hs=s+1,he=e-1,me=e-1
 
-" Labels for the goto statement.
-syn region  adaLabel		start="<<"  end=">>"
+" Section: Labels for the goto statement. {{{1
+"
+syntax region  adaLabel		start="<<"  end=">>"
 
+" Section: Boolean Constants {{{1
 " Boolean Constants.
-syn keyword adaBoolean	true false
+syntax keyword adaBoolean	true false
 
+" Section: Warn C/C++ {{{1
+"
 " Warn people who try to use C/C++ notation erroneously:
-syn match adaError "//"
-syn match adaError "/\*"
-syn match adaError "=="
+"
+syntax match adaError "//"
+syntax match adaError "/\*"
+syntax match adaError "=="
 
 
-if exists("ada_space_errors")
-  if !exists("ada_no_trail_space_error")
-    syn match   adaSpaceError     excludenl "\s\+$"
-  endif
-  if !exists("ada_no_tab_space_error")
-    syn match   adaSpaceError     " \+\t"me=e-1
-  endif
+" Section: Space Errors {{{1
+"
+if exists("g:ada_space_errors")
+   if !exists("g:ada_no_trail_space_error")
+       syntax match   adaSpaceError	 excludenl "\s\+$"
+   endif
+   if !exists("g:ada_no_tab_space_error")
+      syntax match   adaSpaceError	 " \+\t"me=e-1
+   endif
+   if !exists("g:ada_all_tab_usage")
+      syntax match   adaSpecial	 "\t"
+   endif
 endif
 
+" Section: end {{{1
 " Unless special ("end loop", "end if", etc.), "end" marks the end of a
 " begin, package, task etc. Assiging it to adaEnd.
-syn match adaEnd		"\<end\>"
+syntax match    adaEnd	"\<end\>"
 
-syn keyword adaPreproc		pragma
+syntax keyword  adaPreproc		 pragma
+
+syntax keyword  adaRepeat	 exit for loop reverse while
+syntax match    adaRepeat		   "\<end\s\+loop\>"
 
-syn keyword adaRepeat		exit for loop reverse while
-syn match adaRepeat		"\<end\s\+loop\>"
+syntax keyword  adaStatement accept delay goto raise requeue return
+syntax keyword  adaStatement terminate
+syntax match    adaStatement  "\<abort\>"
 
-syn keyword adaStatement	accept delay goto raise requeue return
-syn keyword adaStatement	terminate
-syn match adaStatement	"\<abort\>"
-
-" Handle Ada's record keywords.
+" Section: Handle Ada's record keywords. {{{1
+"
 " 'record' usually starts a structure, but "with null record;" does not,
 " and 'end record;' ends a structure.  The ordering here is critical -
 " 'record;' matches a "with null record", so make it a keyword (this can
 " match when the 'with' or 'null' is on a previous line).
 " We see the "end" in "end record" before the word record, so we match that
 " pattern as adaStructure (and it won't match the "record;" pattern).
-syn match adaStructure	"\<record\>"
-syn match adaStructure	"\<end\s\+record\>"
-syn match adaKeyword	"\<record;"me=e-1
+"
+syntax match adaStructure   "\<record\>"	contains=adaRecord
+syntax match adaStructure   "\<end\s\+record\>"	contains=adaRecord
+syntax match adaKeyword	    "\<record;"me=e-1
 
-syn keyword adaStorageClass	abstract access aliased array at constant delta
-syn keyword adaStorageClass	digits limited of private range tagged
-syn keyword adaTypedef		subtype type
+" Section: type classes {{{1
+"
+syntax keyword adaStorageClass	abstract access aliased array at constant delta
+syntax keyword adaStorageClass	digits limited of private range tagged
+syntax keyword adaStorageClass	interface synchronized
+syntax keyword adaTypedef	subtype type
 
-" Conditionals. "abort" after "then" is a conditional of its own.
-syn match adaConditional	"\<then\>"
-syn match adaConditional	"\<then\s\+abort\>"
-syn match adaConditional	"\<else\>"
-syn match adaConditional	"\<end\s\+if\>"
-syn match adaConditional	"\<end\s\+case\>"
-syn match adaConditional	"\<end\s\+select\>"
-syn keyword adaConditional	if case select
-syn keyword adaConditional	elsif when
+" Section: Conditionals {{{1
+"
+" "abort" after "then" is a conditional of its own.
+"
+syntax match    adaConditional  "\<then\>"
+syntax match    adaConditional	"\<then\s\+abort\>"
+syntax match    adaConditional	"\<else\>"
+syntax match    adaConditional	"\<end\s\+if\>"
+syntax match    adaConditional	"\<end\s\+case\>"
+syntax match    adaConditional	"\<end\s\+select\>"
+syntax keyword  adaConditional	if case select
+syntax keyword  adaConditional	elsif when
 
-syn keyword adaKeyword		all do exception in is new null out
-syn keyword adaKeyword		separate until
+" Section: other keywords {{{1
+syntax match    adaKeyword	    "\<is\>" contains=adaRecord
+syntax keyword  adaKeyword	    all do exception in new null out
+syntax keyword  adaKeyword	    separate until overriding
 
+" Section: begin keywords {{{1
+"
 " These keywords begin various constructs, and you _might_ want to
 " highlight them differently.
-syn keyword adaBegin		begin body declare entry function generic
-syn keyword adaBegin		package procedure protected renames task
+"
+syntax keyword  adaBegin	begin body declare entry generic
+syntax keyword  adaBegin	protected renames task
 
+syntax match    adaBegin	"\<function\>" contains=adaFunction
+syntax match    adaBegin	"\<procedure\>" contains=adaProcedure
+syntax match    adaBegin	"\<package\>" contains=adaPackage
 
+if exists("ada_with_gnat_project_files")
+   syntax keyword adaBegin	project
+endif
+
+" Section: with, use {{{1
+"
 if exists("ada_withuse_ordinary")
-" Don't be fancy. Display "with" and "use" as ordinary keywords in all cases.
- syn keyword adaKeyword		with use
+   " Don't be fancy. Display "with" and "use" as ordinary keywords in all cases.
+   syntax keyword adaKeyword		with use
 else
- " Highlight "with" and "use" clauses like C's "#include" when they're used
- " to reference other compilation units; otherwise they're ordinary keywords.
- " If we have vim 6.0 or later, we'll use its advanced pattern-matching
- " capabilities so that we won't match leading spaces.
- syn match adaKeyword	"\<with\>"
- syn match adaKeyword	"\<use\>"
- if version < 600
-  syn match adaBeginWith "^\s*\(\(with\(\s\+type\)\=\)\|\(use\)\)\>" contains=adaInc
-  syn match adaSemiWith	";\s*\(\(with\(\s\+type\)\=\)\|\(use\)\)\>"lc=1 contains=adaInc
- else
-  syn match adaBeginWith "^\s*\zs\(\(with\(\s\+type\)\=\)\|\(use\)\)\>" contains=adaInc
-  syn match adaSemiWith	";\s*\zs\(\(with\(\s\+type\)\=\)\|\(use\)\)\>" contains=adaInc
- endif
- syn match adaInc	"\<with\>" contained contains=NONE
- syn match adaInc	"\<with\s\+type\>" contained contains=NONE
- syn match adaInc	"\<use\>" contained contains=NONE
- " Recognize "with null record" as a keyword (even the "record").
- syn match adaKeyword	"\<with\s\+null\s\+record\>"
- " Consider generic formal parameters of subprograms and packages as keywords.
- if version < 600
-  syn match adaKeyword	";\s*with\s\+\(function\|procedure\|package\)\>"
-  syn match adaKeyword	"^\s*with\s\+\(function\|procedure\|package\)\>"
- else
-  syn match adaKeyword	";\s*\zswith\s\+\(function\|procedure\|package\)\>"
-  syn match adaKeyword	"^\s*\zswith\s\+\(function\|procedure\|package\)\>"
- endif
+   " Highlight "with" and "use" clauses like C's "#include" when they're used
+   " to reference other compilation units; otherwise they're ordinary keywords.
+   " If we have vim 6.0 or later, we'll use its advanced pattern-matching
+   " capabilities so that we won't match leading spaces.
+   syntax match adaKeyword	"\<with\>"
+   syntax match adaKeyword	"\<use\>"
+   syntax match adaBeginWith	"^\s*\zs\(\(with\(\s\+type\)\=\)\|\(use\)\)\>" contains=adaInc
+   syntax match adaSemiWith	";\s*\zs\(\(with\(\s\+type\)\=\)\|\(use\)\)\>" contains=adaInc
+   syntax match adaInc		"\<with\>" contained contains=NONE
+   syntax match adaInc		"\<with\s\+type\>" contained contains=NONE
+   syntax match adaInc		"\<use\>" contained contains=NONE
+   " Recognize "with null record" as a keyword (even the "record").
+   syntax match adaKeyword	"\<with\s\+null\s\+record\>"
+   " Consider generic formal parameters of subprograms and packages as keywords.
+   syntax match adaKeyword	";\s*\zswith\s\+\(function\|procedure\|package\)\>"
+   syntax match adaKeyword	"^\s*\zswith\s\+\(function\|procedure\|package\)\>"
+endif
+
+" Section: String and character constants. {{{1
+"
+syntax region  adaString	contains=@Spell start=+"+ skip=+""+ end=+"+ 
+syntax match   adaCharacter "'.'"
+
+" Section: Todo (only highlighted in comments) {{{1
+"
+syntax keyword adaTodo contained TODO FIXME XXX NOTE
+
+" Section: Comments. {{{1
+"
+syntax region  adaComment 
+    \ oneline 
+    \ contains=adaTodo,adaLineError,@Spell
+    \ start="--" 
+    \ end="$"
+
+" Section: line errors {{{1
+"
+" Note: Line errors have become quite slow with Vim 7.0
+"
+if exists("g:ada_line_errors")
+    syntax match adaLineError "\(^.\{79}\)\@<=."  contains=ALL containedin=ALL
+endif
+
+" Section: syntax folding {{{1
+"
+"	Syntax folding is very tricky - for now I still suggest to use
+"	indent folding
+"
+if exists("g:ada_folding") && g:ada_folding[0] == 's'
+   if stridx (g:ada_folding, 'p') >= 0
+      syntax region adaPackage
+         \ start="\(\<package\s\+body\>\|\<package\>\)\s*\z(\k*\)"
+         \ end="end\s\+\z1\s*;"
+         \ keepend extend transparent fold contains=ALL
+   endif
+   if stridx (g:ada_folding, 'f') >= 0
+      syntax region adaProcedure
+         \ start="\<procedure\>\s*\z(\k*\)"
+         \ end="\<end\>\s\+\z1\s*;"
+         \ keepend extend transparent fold contains=ALL
+      syntax region adaFunction
+         \ start="\<procedure\>\s*\z(\k*\)"
+         \ end="end\s\+\z1\s*;"
+         \ keepend extend transparent fold contains=ALL
+   endif
+   if stridx (g:ada_folding, 'f') >= 0
+      syntax region adaRecord
+         \ start="\<is\s\+record\>"
+         \ end="\<end\s\+record\>"
+         \ keepend extend transparent fold contains=ALL
+   endif
+endif
+
+" Section: The default methods for highlighting. Can be overridden later. {{{1
+"
+highlight def link adaCharacter	    Character
+highlight def link adaComment	    Comment
+highlight def link adaConditional   Conditional
+highlight def link adaKeyword	    Keyword
+highlight def link adaLabel	    Label
+highlight def link adaNumber	    Number
+highlight def link adaSign	    Number
+highlight def link adaOperator	    Operator
+highlight def link adaPreproc	    PreProc
+highlight def link adaRepeat	    Repeat
+highlight def link adaSpecial	    Special
+highlight def link adaStatement	    Statement
+highlight def link adaString	    String
+highlight def link adaStructure	    Structure
+highlight def link adaTodo	    Todo
+highlight def link adaType	    Type
+highlight def link adaTypedef	    Typedef
+highlight def link adaStorageClass  StorageClass
+highlight def link adaBoolean	    Boolean
+highlight def link adaException	    Exception
+highlight def link adaAttribute	    Tag
+highlight def link adaInc	    Include
+highlight def link adaError	    Error
+highlight def link adaSpaceError    Error
+highlight def link adaLineError	    Error
+highlight def link adaBuiltinType   Type
+highlight def link adaAssignment    Special
+
+" Subsection: Begin, End {{{2
+"
+if exists ("ada_begin_preproc")
+   " This is the old default display:
+   highlight def link adaBegin   PreProc
+   highlight def link adaEnd     PreProc
+else
+   " This is the new default display:
+   highlight def link adaBegin   Keyword
+   highlight def link adaEnd     Keyword
 endif
 
 
-" String and character constants.
-syn region  adaString		start=+"+  skip=+""+  end=+"+
-syn match   adaCharacter	"'.'"
-
-" Todo (only highlighted in comments)
-syn keyword adaTodo contained	TODO FIXME XXX
-
-" Comments.
-syn region  adaComment	oneline contains=adaTodo start="--"  end="$"
-
+" Section: formatoptions {{{1
+"
+setlocal formatoptions+=ron
 
-
-" Define the default highlighting.
-" For version 5.7 and earlier: only when not done already
-" For version 5.8 and later: only when an item doesn't have highlighting yet
-if version >= 508 || !exists("did_ada_syn_inits")
-  if version < 508
-    let did_ada_syn_inits = 1
-    command -nargs=+ HiLink hi link <args>
-  else
-    command -nargs=+ HiLink hi def link <args>
-  endif
+" Section: sync {{{1
+"
+" We don't need to look backwards to highlight correctly;
+" this speeds things up greatly.
+syntax sync minlines=1 maxlines=1
 
-  " The default methods for highlighting. Can be overridden later.
-  HiLink adaCharacter	Character
-  HiLink adaComment	Comment
-  HiLink adaConditional	Conditional
-  HiLink adaKeyword	Keyword
-  HiLink adaLabel	Label
-  HiLink adaNumber	Number
-  HiLink adaSign	Number
-  HiLink adaOperator	Operator
-  HiLink adaPreproc	PreProc
-  HiLink adaRepeat	Repeat
-  HiLink adaSpecial	Special
-  HiLink adaStatement	Statement
-  HiLink adaString	String
-  HiLink adaStructure	Structure
-  HiLink adaTodo	Todo
-  HiLink adaType	Type
-  HiLink adaTypedef	Typedef
-  HiLink adaStorageClass	StorageClass
-  HiLink adaBoolean	Boolean
-  HiLink adaException	Exception
-  HiLink adaInc	Include
-  HiLink adaError	Error
-  HiLink adaSpaceError	Error
-  HiLink adaBuiltinType Type
+finish " 1}}}
 
-  if exists("ada_begin_preproc")
-   " This is the old default display:
-   HiLink adaBegin	PreProc
-   HiLink adaEnd	PreProc
-  else
-   " This is the new default display:
-   HiLink adaBegin	Keyword
-   HiLink adaEnd	Keyword
-  endif
-
-  delcommand HiLink
-endif
-
-let b:current_syntax = "ada"
-
-" vim: ts=8
+"------------------------------------------------------------------------------
+"   Copyright (C) 2006	Martin Krischik
+"
+"   Vim is Charityware - see ":help license" or uganda.txt for licence details.
+"------------------------------------------------------------------------------
+"vim: textwidth=78 nowrap tabstop=8 shiftwidth=3 softtabstop=3 noexpandtab
+"vim: foldmethod=marker
--- a/runtime/syntax/bst.vim
+++ b/runtime/syntax/bst.vim
@@ -1,7 +1,6 @@
 " Vim syntax file
 " Language:     BibTeX Bibliography Style
-" Maintainer:   Tim Pope <vim@rebelongto.us>
-" Last Change:  2006 Apr 27
+" Maintainer:   Tim Pope <vimNOSPAM@tpope.info>
 " Filenames:    *.bst
 " $Id$
 
@@ -23,7 +22,11 @@ delcommand SetIsk
 
 syn case ignore
 
-syn region  bstString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=bstField,bstType
+syn match   bstString +"[^"]*\%("\|$\)+ contains=bstField,bstType,bstError
+" Highlight the last character of an unclosed string, but only when the cursor
+" is not beyond it (i.e., it is still being edited). Imperfect.
+syn match   bstError     '[^"]\%#\@!$' contained
+
 syn match   bstNumber         "#-\=\d\+\>"
 syn keyword bstNumber         entry.max$ global.max$
 syn match   bstComment        "%.*"
@@ -77,6 +80,7 @@ if version >= 508 || !exists("did_bst_sy
     HiLink bstNumber            Number
     HiLink bstType              Type
     HiLink bstIdentifier        Identifier
+    HiLink bstError             Error
     delcommand HiLink
 endif
 
--- a/runtime/syntax/cobol.vim
+++ b/runtime/syntax/cobol.vim
@@ -1,9 +1,10 @@
 " Vim syntax file
-" Language: COBOL
-" Maintainers:  Davyd Ondrejko <vondraco@columbus.rr.com>
+" Language:   COBOL
+" Maintainer: Tim Pope <vimNOSPAM@tpope.info>
+"     (formerly Davyd Ondrejko <vondraco@columbus.rr.com>)
 "     (formerly Sitaram Chamarty <sitaram@diac.com> and
 "		    James Mitchell <james_mitchell@acm.org>)
-" Last change:  2001 Sep 02
+" $Id$
 
 " For version 5.x: Clear all syntax items
 " For version 6.x: Quit when a syntax file was already loaded
@@ -22,77 +23,97 @@ endif
 
 syn case ignore
 
-syn match cobolKeys "^\a\{1,6\}" contains=cobolReserved
+syn cluster cobolStart      contains=cobolAreaA,cobolAreaB,cobolComment,cobolCompiler
+syn cluster cobolAreaA      contains=cobolParagraph,cobolSection,cobolDivision
+"syn cluster cobolAreaB      contains=
+syn cluster cobolAreaAB     contains=cobolLine
+syn cluster cobolLine       contains=cobolReserved
+syn match   cobolMarker     "^\%( \{,5\}[^ ]\)\@=.\{,6}" nextgroup=@cobolStart
+syn match   cobolSpace      "^ \{6\}"  nextgroup=@cobolStart
+syn match   cobolAreaA      " \{1,4\}"  contained nextgroup=@cobolAreaA,@cobolAreaAB
+syn match   cobolAreaB      " \{5,\}\|- *" contained nextgroup=@cobolAreaB,@cobolAreaAB
+syn match   cobolComment    "[/*C].*$" contained
+syn match   cobolCompiler   "$.*$"     contained
+syn match   cobolLine       ".*$"      contained contains=cobolReserved,@cobolLine
+
+syn match   cobolDivision       "[A-Z][A-Z0-9-]*[A-Z0-9]\s\+DIVISION\."he=e-1 contained contains=cobolDivisionName
+syn keyword cobolDivisionName   contained IDENTIFICATION ENVIRONMENT DATA PROCEDURE
+syn match   cobolSection        "[A-Z][A-Z0-9-]*[A-Z0-9]\s\+SECTION\."he=e-1  contained contains=cobolSectionName
+syn keyword cobolSectionName    contained CONFIGURATION INPUT-OUTPUT FILE WORKING-STORAGE LOCAL-STORAGE LINKAGE
+syn match   cobolParagraph      "\a[A-Z0-9-]*[A-Z0-9]\.\|\d[A-Z0-9-]*[A-Z]\."he=e-1             contained contains=cobolParagraphName
+syn keyword cobolParagraphName  contained PROGRAM-ID SOURCE-COMPUTER OBJECT-COMPUTER SPECIAL-NAMES FILE-CONTROL I-O-CONTROL
+
+
+"syn match cobolKeys "^\a\{1,6\}" contains=cobolReserved
 syn keyword cobolReserved contained ACCEPT ACCESS ADD ADDRESS ADVANCING AFTER ALPHABET ALPHABETIC
 syn keyword cobolReserved contained ALPHABETIC-LOWER ALPHABETIC-UPPER ALPHANUMERIC ALPHANUMERIC-EDITED ALS
 syn keyword cobolReserved contained ALTERNATE AND ANY ARE AREA AREAS ASCENDING ASSIGN AT AUTHOR BEFORE BINARY
 syn keyword cobolReserved contained BLANK BLOCK BOTTOM BY CANCEL CBLL CD CF CH CHARACTER CHARACTERS CLASS
 syn keyword cobolReserved contained CLOCK-UNITS CLOSE COBOL CODE CODE-SET COLLATING COLUMN COMMA COMMON
-syn keyword cobolReserved contained COMMUNICATIONS COMPUTATIONAL COMPUTE CONFIGURATION CONTENT CONTINUE
-syn keyword cobolReserved contained CONTROL CONVERTING CORR CORRESPONDING COUNT CURRENCY DATA DATE DATE-COMPILED
+syn keyword cobolReserved contained COMMUNICATIONS COMPUTATIONAL COMPUTE CONTENT CONTINUE
+syn keyword cobolReserved contained CONTROL CONVERTING CORR CORRESPONDING COUNT CURRENCY DATE DATE-COMPILED
 syn keyword cobolReserved contained DATE-WRITTEN DAY DAY-OF-WEEK DE DEBUG-CONTENTS DEBUG-ITEM DEBUG-LINE
 syn keyword cobolReserved contained DEBUG-NAME DEBUG-SUB-1 DEBUG-SUB-2 DEBUG-SUB-3 DEBUGGING DECIMAL-POINT
 syn keyword cobolReserved contained DELARATIVES DELETE DELIMITED DELIMITER DEPENDING DESCENDING DESTINATION
 syn keyword cobolReserved contained DETAIL DISABLE DISPLAY DIVIDE DIVISION DOWN DUPLICATES DYNAMIC EGI ELSE EMI
 syn keyword cobolReserved contained ENABLE END-ADD END-COMPUTE END-DELETE END-DIVIDE END-EVALUATE END-IF
-syn keyword cobolReserved contained END-MULTIPLY END-OF-PAGE END-PERFORM END-READ END-RECEIVE END-RETURN
+syn keyword cobolReserved contained END-MULTIPLY END-OF-PAGE END-READ END-RECEIVE END-RETURN
 syn keyword cobolReserved contained END-REWRITE END-SEARCH END-START END-STRING END-SUBTRACT END-UNSTRING
-syn keyword cobolReserved contained END-WRITE ENVIRONMENT EQUAL ERROR ESI EVALUATE EVERY EXCEPTION EXIT
-syn keyword cobolReserved contained EXTEND EXTERNAL FALSE FD FILE FILE-CONTROL FILLER FINAL FIRST FOOTING FOR FROM
+syn keyword cobolReserved contained END-WRITE EQUAL ERROR ESI EVALUATE EVERY EXCEPTION EXIT
+syn keyword cobolReserved contained EXTEND EXTERNAL FALSE FD FILLER FINAL FIRST FOOTING FOR FROM
 syn keyword cobolReserved contained GENERATE GIVING GLOBAL GREATER GROUP HEADING HIGH-VALUE HIGH-VALUES I-O
-syn keyword cobolReserved contained I-O-CONTROL IDENTIFICATION IN INDEX INDEXED INDICATE INITIAL INITIALIZE
-syn keyword cobolReserved contained INITIATE INPUT INPUT-OUTPUT INSPECT INSTALLATION INTO IS JUST
+syn keyword cobolReserved contained IN INDEX INDEXED INDICATE INITIAL INITIALIZE
+syn keyword cobolReserved contained INITIATE INPUT INSPECT INSTALLATION INTO IS JUST
 syn keyword cobolReserved contained JUSTIFIED KEY LABEL LAST LEADING LEFT LENGTH LOCK MEMORY
 syn keyword cobolReserved contained MERGE MESSAGE MODE MODULES MOVE MULTIPLE MULTIPLY NATIVE NEGATIVE NEXT NO NOT
-syn keyword cobolReserved contained NUMBER NUMERIC NUMERIC-EDITED OBJECT-COMPUTER OCCURS OF OFF OMITTED ON OPEN
+syn keyword cobolReserved contained NUMBER NUMERIC NUMERIC-EDITED OCCURS OF OFF OMITTED ON OPEN
 syn keyword cobolReserved contained OPTIONAL OR ORDER ORGANIZATION OTHER OUTPUT OVERFLOW PACKED-DECIMAL PADDING
 syn keyword cobolReserved contained PAGE PAGE-COUNTER PERFORM PF PH PIC PICTURE PLUS POINTER POSITION POSITIVE
-syn keyword cobolReserved contained PRINTING PROCEDURE PROCEDURES PROCEDD PROGRAM PROGRAM-ID PURGE QUEUE QUOTES
+syn keyword cobolReserved contained PRINTING PROCEDURES PROCEDD PROGRAM PURGE QUEUE QUOTES
 syn keyword cobolReserved contained RANDOM RD READ RECEIVE RECORD RECORDS REDEFINES REEL REFERENCE REFERENCES
 syn keyword cobolReserved contained RELATIVE RELEASE REMAINDER REMOVAL REPLACE REPLACING REPORT REPORTING
 syn keyword cobolReserved contained REPORTS RERUN RESERVE RESET RETURN RETURNING REVERSED REWIND REWRITE RF RH
 syn keyword cobolReserved contained RIGHT ROUNDED RUN SAME SD SEARCH SECTION SECURITY SEGMENT SEGMENT-LIMITED
 syn keyword cobolReserved contained SELECT SEND SENTENCE SEPARATE SEQUENCE SEQUENTIAL SET SIGN SIZE SORT
-syn keyword cobolReserved contained SORT-MERGE SOURCE SOURCE-COMPUTER SPECIAL-NAMES STANDARD
+syn keyword cobolReserved contained SORT-MERGE SOURCE STANDARD
 syn keyword cobolReserved contained STANDARD-1 STANDARD-2 START STATUS STOP STRING SUB-QUEUE-1 SUB-QUEUE-2
 syn keyword cobolReserved contained SUB-QUEUE-3 SUBTRACT SUM SUPPRESS SYMBOLIC SYNC SYNCHRONIZED TABLE TALLYING
 syn keyword cobolReserved contained TAPE TERMINAL TERMINATE TEST TEXT THAN THEN THROUGH THRU TIME TIMES TO TOP
 syn keyword cobolReserved contained TRAILING TRUE TYPE UNIT UNSTRING UNTIL UP UPON USAGE USE USING VALUE VALUES
-syn keyword cobolReserved contained VARYING WHEN WITH WORDS WORKING-STORAGE WRITE
+syn keyword cobolReserved contained VARYING WHEN WITH WORDS WRITE
 syn match   cobolReserved contained "\<CONTAINS\>"
 syn match   cobolReserved contained "\<\(IF\|INVALID\|END\|EOP\)\>"
 syn match   cobolReserved contained "\<ALL\>"
 
+syn cluster cobolLine     add=cobolConstant,cobolNumber,cobolPic
 syn keyword cobolConstant SPACE SPACES NULL ZERO ZEROES ZEROS LOW-VALUE LOW-VALUES
 
-syn match   cobolMarker       "^.\{6\}"
-syn match   cobolBadLine      "^.\{6\}[^ D\-*$/].*"hs=s+6
-
-" If comment mark somehow gets into column past Column 7.
-syn match   cobolBadLine      "^.\{6\}\s\+\*.*"
-
-syn match   cobolNumber       "\<-\=\d*\.\=\d\+\>" contains=cobolMarker,cobolComment
-syn match   cobolPic		"\<S*9\+\>" contains=cobolMarker,cobolComment
-syn match   cobolPic		"\<$*\.\=9\+\>" contains=cobolMarker,cobolComment
-syn match   cobolPic		"\<Z*\.\=9\+\>" contains=cobolMarker,cobolComment
-syn match   cobolPic		"\<V9\+\>" contains=cobolMarker,cobolComment
-syn match   cobolPic		"\<9\+V\>" contains=cobolMarker,cobolComment
-syn match   cobolPic		"\<-\+[Z9]\+\>" contains=cobolMarker,cobolComment
-syn match   cobolTodo		"todo" contained
-syn match   cobolComment      "^.\{6\}\*.*"hs=s+6 contains=cobolTodo,cobolMarker
-syn match   cobolComment      "^.\{6\}/.*"hs=s+6 contains=cobolTodo,cobolMarker
-syn match   cobolComment      "^.\{6\}C.*"hs=s+6 contains=cobolTodo,cobolMarker
-syn match   cobolCompiler     "^.\{6\}$.*"hs=s+6
+syn match   cobolNumber       "\<-\=\d*\.\=\d\+\>" contained
+syn match   cobolPic		"\<S*9\+\>" contained
+syn match   cobolPic		"\<$*\.\=9\+\>" contained
+syn match   cobolPic		"\<Z*\.\=9\+\>" contained
+syn match   cobolPic		"\<V9\+\>" contained
+syn match   cobolPic		"\<9\+V\>" contained
+syn match   cobolPic		"\<-\+[Z9]\+\>" contained
+syn match   cobolTodo		"todo" contained containedin=cobolComment
 
 " For MicroFocus or other inline comments, include this line.
 " syn region  cobolComment      start="*>" end="$" contains=cobolTodo,cobolMarker
 
+syn match   cobolBadLine      "[^ D\*$/-].*" contained
+" If comment mark somehow gets into column past Column 7.
+syn match   cobolBadLine      "\s\+\*.*" contained
+syn cluster cobolStart        add=cobolBadLine
+
+
 syn keyword cobolGoTo		GO GOTO
 syn keyword cobolCopy		COPY
 
 " cobolBAD: things that are BAD NEWS!
 syn keyword cobolBAD		ALTER ENTER RENAMES
 
+syn cluster cobolLine       add=cobolGoTo,cobolCopy,cobolBAD,cobolWatch,cobolEXECs
+
 " cobolWatch: things that are important when trying to understand a program
 syn keyword cobolWatch		OCCURS DEPENDING VARYING BINARY COMP REDEFINES
 syn keyword cobolWatch		REPLACING RUN
@@ -101,39 +122,38 @@ syn match   cobolWatch		"COMP-[123456XN]
 syn keyword cobolEXECs		EXEC END-EXEC
 
 
-syn match   cobolDecl		"^.\{6} \{1,4}\(0\=1\|77\|78\) "hs=s+7,he=e-1 contains=cobolMarker
-syn match   cobolDecl		"^.\{6} \+[1-4]\d "hs=s+7,he=e-1 contains=cobolMarker
-syn match   cobolDecl		"^.\{6} \+0\=[2-9] "hs=s+7,he=e-1 contains=cobolMarker
-syn match   cobolDecl		"^.\{6} \+66 "hs=s+7,he=e-1 contains=cobolMarker
+syn cluster cobolAreaA      add=cobolDeclA
+syn cluster cobolAreaAB     add=cobolDecl
+syn match   cobolDeclA      "\(0\=1\|77\|78\) " contained nextgroup=cobolLine
+syn match   cobolDecl		"[1-4]\d " contained nextgroup=cobolLine
+syn match   cobolDecl		"0\=[2-9] " contained nextgroup=cobolLine
+syn match   cobolDecl		"66 " contained nextgroup=cobolLine
 
-syn match   cobolWatch		"^.\{6} \+88 "hs=s+7,he=e-1 contains=cobolMarker
+syn match   cobolWatch		"88 " contained nextgroup=cobolLine
 
-syn match   cobolBadID		"\k\+-\($\|[^-A-Z0-9]\)"
+"syn match   cobolBadID		"\k\+-\($\|[^-A-Z0-9]\)" contained
 
-syn keyword cobolCALLs		CALL CANCEL GOBACK PERFORM INVOKE
+syn cluster cobolLine       add=cobolCALLs,cobolString,cobolCondFlow
+syn keyword cobolCALLs		CALL END-CALL CANCEL GOBACK PERFORM END-PERFORM INVOKE
 syn match   cobolCALLs		"EXIT \+PROGRAM"
 syn match   cobolExtras       /\<VALUE \+\d\+\./hs=s+6,he=e-1
 
 syn match   cobolString       /"[^"]*\("\|$\)/
 syn match   cobolString       /'[^']*\('\|$\)/
 
-syn region  cobolLine       start="^.\{6} " end="$" contains=ALL
+"syn region  cobolLine        start="^.\{6}[ D-]" end="$" contains=ALL
+syn match   cobolIndicator   "\%7c[D-]" contained
 
 if exists("cobol_legacy_code")
-syn region  cobolCondFlow     contains=ALLBUT,cobolLine start="\<\(IF\|INVALID\|END\|EOP\)\>" skip=/\('\|"\)[^"]\{-}\("\|'\|$\)/ end="\." keepend
-endif
-
-if ! exists("cobol_legacy_code")
-    " catch junk in columns 1-6 for modern code
-    syn match cobolBAD      "^ \{0,5\}[^ ].*"
+  syn region  cobolCondFlow     contains=ALLBUT,cobolLine start="\<\(IF\|INVALID\|END\|EOP\)\>" skip=/\('\|"\)[^"]\{-}\("\|'\|$\)/ end="\." keepend
 endif
 
 " many legacy sources have junk in columns 1-6: must be before others
 " Stuff after column 72 is in error - must be after all other "match" entries
 if exists("cobol_legacy_code")
-    syn match   cobolBadLine      "^.\{6}[^*/].\{66,\}"
+    syn match   cobolBadLine      "\%73c.*" containedin=ALLBUT,cobolComment
 else
-    syn match   cobolBadLine      "^.\{6}.\{67,\}"
+    syn match   cobolBadLine      "\%73c.*" containedin=ALL
 endif
 
 " Define the default highlighting.
@@ -150,7 +170,11 @@ if version >= 508 || !exists("did_cobol_
   HiLink cobolBAD      Error
   HiLink cobolBadID    Error
   HiLink cobolBadLine  Error
-  HiLink cobolMarker   Comment
+  if exists("g:cobol_legacy_code")
+      HiLink cobolMarker   Comment
+  else
+      HiLink cobolMarker   Error
+  endif
   HiLink cobolCALLs    Function
   HiLink cobolComment  Comment
   HiLink cobolKeys     Comment
@@ -158,6 +182,7 @@ if version >= 508 || !exists("did_cobol_
   HiLink cobolCompiler PreProc
   HiLink cobolCondFlow Special
   HiLink cobolCopy     PreProc
+  HiLink cobolDeclA    cobolDecl
   HiLink cobolDecl     Type
   HiLink cobolExtras   Special
   HiLink cobolGoTo     Special
@@ -165,9 +190,16 @@ if version >= 508 || !exists("did_cobol_
   HiLink cobolNumber   Constant
   HiLink cobolPic      Constant
   HiLink cobolReserved Statement
+  HiLink cobolDivision Label
+  HiLink cobolSection  Label
+  HiLink cobolParagraph Label
+  HiLink cobolDivisionName  Keyword
+  HiLink cobolSectionName   Keyword
+  HiLink cobolParagraphName Keyword
   HiLink cobolString   Constant
   HiLink cobolTodo     Todo
   HiLink cobolWatch    Special
+  HiLink cobolIndicator Special
 
   delcommand HiLink
 endif
--- a/runtime/syntax/dosini.vim
+++ b/runtime/syntax/dosini.vim
@@ -1,8 +1,10 @@
 " Vim syntax file
 " Language:	Configuration File (ini file) for MSDOS/MS Windows
-" Maintainer:	Sean M. McKee <mckee@misslink.net>
-" Last Change:	2001 May 09
-" Version Info: @(#)dosini.vim	1.6	97/12/15 08:54:12
+" 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
+
 
 " For version 5.x: Clear all syntax items
 " For version 6.x: Quit when a syntax file was already loaded
@@ -16,7 +18,7 @@ endif
 syn case ignore
 
 syn match  dosiniLabel		"^.\{-}="
-syn region dosiniHeader		start="\[" end="\]"
+syn region dosiniHeader		start="^\[" end="\]"
 syn match  dosiniComment	"^;.*$"
 
 " Define the default highlighting.
--- a/runtime/syntax/doxygen.vim
+++ b/runtime/syntax/doxygen.vim
@@ -1,11 +1,11 @@
 " DoxyGen syntax hilighting extension for c/c++/idl/java
 " Language:     doxygen on top of c, cpp, idl, java
-" Maintainer:   Michael Geddes <michaelrgeddes@optushome.com.au>
+" Maintainer:   Michael Geddes <vimmer@frog.wheelycreek.net>
 " Author:       Michael Geddes
-" Last Change:  12 December 2005
-" Version:      1.15
+" Last Change:  April 2007
+" Version:      1.20
 "
-" Copyright 2004 Michael Geddes
+" Copyright 2004-2006 Michael Geddes
 " Please feel free to use, modify & distribute all or part of this script,
 " providing this copyright message remains.
 " I would appreciate being acknowledged in any derived scripts, and would
@@ -13,26 +13,27 @@
 
 " NOTE:  Comments welcome!
 "
-" There are two variables that control the syntax hilighting produced by this
+" There are two variables that control the syntax highlighting produced by this
 " script:
-" doxygen_enhanced_colour  - Use the (non-standard) original colours designed for this hilighting.
+" doxygen_enhanced_colour  - Use the (non-standard) original colours designed
+"                            for this highlighting.
 " doxygen_my_rendering     - Disable the HTML bold/italic/underline rendering.
 "
 " A brief description without '.' or '!' will cause the end comment
 " character to be marked as an error.  You can define the colour of this using
 " the highlight doxygenErrorComment.
-" A \link without an \endlink will cause an error hilight on the end-comment.
+" A \link without an \endlink will cause an error highlight on the end-comment.
 " This is defined by doxygenLinkError
 "
 " The variable g:doxygen_codeword_font can be set to the guifont for marking \c
 " words - a 'typewriter' like font normally. Spaces must be escaped.  It can
-" also be set to any hilight attribute. Alternatively, a hilight for doxygenCodeWord
+" also be set to any highlight attribute. Alternatively, a highlight for doxygenCodeWord
 " can be used to override it.
 "
-" By default, hilighting is done assumng you have the JAVADOC_AUTOBRIEF
-" setting tunred on in your Doxygen configuration.  If you don't, you
+" By default, highlighting is done assumng you have the JAVADOC_AUTOBRIEF
+" setting turned on in your Doxygen configuration.  If you don't, you
 " can set the variable g:doxygen_javadoc_autobrief to 0 to have the
-" hilighting more accurately reflect the way Doxygen will interpret your
+" highlighting more accurately reflect the way Doxygen will interpret your
 " comments.
 "
 " Special thanks to:  Wu Yongwei, Toby Allsopp
@@ -55,13 +56,13 @@ try
   "
 
   " C/C++ Style line comments
-  syn region doxygenComment start=+/\*\(\*/\)\@![*!]+  end=+\*/+ contains=doxygenSyncStart,doxygenStart,doxygenTODO keepend
-  syn region doxygenCommentL start=+//[/!]<\@!+me=e-1 end=+$+ contains=doxygenStartL keepend skipwhite skipnl nextgroup=doxygenComment2
-  syn region doxygenCommentL start=+//[/!]<+me=e-2 end=+$+ contains=doxygenStartL keepend skipwhite skipnl
-  syn region doxygenCommentL start=+//@\ze[{}]+ end=+$+ contains=doxygenGroupDefine,doxygenGroupDefineSpecial
+  syn region doxygenComment start=+/\*\(\*/\)\@![*!]+  end=+\*/+ contains=doxygenSyncStart,doxygenStart,doxygenTODO keepend fold
+  syn region doxygenCommentL start=+//[/!]<\@!+me=e-1 end=+$+ contains=doxygenStartL keepend skipwhite skipnl nextgroup=doxygenComment2 fold
+  syn region doxygenCommentL start=+//[/!]<+me=e-2 end=+$+ contains=doxygenStartL keepend skipwhite skipnl fold
+  syn region doxygenCommentL start=+//@\ze[{}]+ end=+$+ contains=doxygenGroupDefine,doxygenGroupDefineSpecial fold
 
   " Single line brief followed by multiline comment.
-  syn region doxygenComment2 start=+/\*\(\*/\)\@![*!]+ end=+\*/+ contained contains=doxygenSyncStart2,doxygenStart2,doxygenTODO keepend
+  syn region doxygenComment2 start=+/\*\(\*/\)\@![*!]+ end=+\*/+ contained contains=doxygenSyncStart2,doxygenStart2,doxygenTODO keepend fold
   " This helps with sync-ing as for some reason, syncing behaves differently to a normal region, and the start pattern does not get matched.
   syn match doxygenSyncStart2 +[^*/]+ contained nextgroup=doxygenBody,doxygenPrev,doxygenStartSpecial,doxygenSkipComment,doxygenStartSkip2 skipwhite skipnl
 
@@ -70,46 +71,56 @@ try
   syn match doxygenStartSkip2 +^\s*\*$+ contained nextgroup=doxygenBody,doxygenStartSpecial,,doxygenStartSkip skipwhite skipnl
   syn match doxygenStart2 +/\*[*!]+ contained nextgroup=doxygenBody,doxygenPrev,doxygenStartSpecial,doxygenStartSkip2 skipwhite skipnl
 
+
   " Match the Starting pattern (effectively creating the start of a BNF)
   if !exists('g:doxygen_javadoc_autobrief') || g:doxygen_javadoc_autobrief
     syn match doxygenStart +/\*[*!]+ contained nextgroup=doxygenBrief,doxygenPrev,doxygenFindBriefSpecial,doxygenStartSpecial,doxygenStartSkip,doxygenPage skipwhite skipnl
+    syn match doxygenStartL +//[/!]+ contained nextgroup=doxygenPrevL,doxygenBriefL,doxygenSpecial skipwhite
+    " Match the first sentence as a brief comment
+    if ! exists('g:doxygen_end_punctuation')
+      let g:doxygen_end_punctuation='[.]'
+    endif
+
+    exe 'syn region doxygenBrief contained start=+[\\@]\([npcbea]\>\|em\>\|ref\>\|link\>\|f\$\|[$\\&<>#]\)\|[^ \t\\@*]+ start=+\(^\s*\)\@<!\*/\@!+ start=+\<\k+ skip=+'.doxygen_end_punctuation.'\S\@=+ end=+'.doxygen_end_punctuation.'+ end=+\(\s*\(\n\s*\*\=\s*\)[@\\]\([npcbea]\>\|em\>\|ref\>\|link\>\|f\$\|[$\\&<>#]\)\@!\)\@=+ contains=doxygenSmallSpecial,doxygenContinueComment,doxygenBriefEndComment,doxygenFindBriefSpecial,doxygenSmallSpecial,@doxygenHtmlGroup,doxygenTODO,doxygenHyperLink,doxygenHashLink,@Spell  skipnl nextgroup=doxygenBody'
+
+    syn match doxygenBriefEndComment +\*/+ contained
+
+    exe 'syn region doxygenBriefL start=+@\k\@!\|[\\@]\([npcbea]\>\|em\>\|ref\>\|link\>\|f\$\|[$\\&<>#]\)\|[^ \t\\@]+ start=+\<+ skip=+'.doxygen_end_punctuation.'\S+ end=+'.doxygen_end_punctuation.'\|$+ contained contains=doxygenSmallSpecial,doxygenHyperLink,doxygenHashLink,@doxygenHtmlGroup,@Spell keepend'
+    syn match doxygenPrevL +<+ contained  nextgroup=doxygenBriefL,doxygenSpecial skipwhite
   else
     syn match doxygenStart +/\*[*!]+ contained nextgroup=doxygenBody,doxygenPrev,doxygenFindBriefSpecial,doxygenStartSpecial,doxygenStartSkip,doxygenPage skipwhite skipnl
+    syn match doxygenStartL +//[/!]+ contained nextgroup=doxygenPrevL,doxygenLine,doxygenSpecial skipwhite
+    syn region doxygenLine start=+@\k\@!\|[\\@]\([npcbea]\>\|em\>\|ref\>\|link\>\|f\$\|[$\\&<>#]\)\|[^ \t\\@<]+ start=+\<+ end='$' contained contains=doxygenSmallSpecial,doxygenHyperLink,doxygenHashLink,@doxygenHtmlGroup,@Spell keepend
+    syn match doxygenPrevL +<+ contained  nextgroup=doxygenLine,doxygenSpecial skipwhite
+
   endif
-  syn match doxygenStartL +//[/!]+ contained nextgroup=doxygenPrevL,doxygenBriefL,doxygenSpecial skipwhite
 
   " This helps with sync-ing as for some reason, syncing behaves differently to a normal region, and the start pattern does not get matched.
   syn match doxygenSyncStart +\ze[^*/]+ contained nextgroup=doxygenBrief,doxygenPrev,doxygenStartSpecial,doxygenFindBriefSpecial,doxygenStartSkip,doxygenPage skipwhite skipnl
 
-  " Match the first sentence as a brief comment
-  if ! exists('g:doxygen_end_punctuation')
-    let g:doxygen_end_punctuation='[.]'
-  endif
-  exe 'syn region doxygenBrief contained start=+[\\@]\([pcbea]\>\|em\>\|ref\>\|link\>\|f\$\|[$\\&<>#]\)\|[^ \t\\@*]+ start=+\(^\s*\)\@<!\*/\@!+ start=+\<\k+ skip=+'.doxygen_end_punctuation.'\S+ end=+'.doxygen_end_punctuation.'+ end=+\(\s*\(\n\s*\*\=\s*\)[@\\]\([pcbea]\>\|em\>\|ref\>\|link\>\|f\$\|[$\\&<>#]\)\@!\)\@=+ contains=doxygenSmallSpecial,doxygenContinueComment,doxygenBriefEndComment,doxygenFindBriefSpecial,doxygenSmallSpecial,@doxygenHtmlGroup,doxygenTODO,doxygenOtherLink,doxygenHyperLink,doxygenHashLink  skipnl nextgroup=doxygenBody'
-
-  syn match doxygenBriefEndComment +\*/+ contained
-
-  exe 'syn region doxygenBriefL start=+@\k\@!\|[\\@]\([pcbea]\>\|em\>\|ref\>\|link\>\|f\$\|[$\\&<>#]\)\|[^ \t\\@]+ start=+\<+ skip=+'.doxygen_end_punctuation.'\S+ end=+'.doxygen_end_punctuation.'\|$+ contained contains=doxygenSmallSpecial,doxygenHyperLink,doxygenHashLink,@doxygenHtmlGroup keepend'
-
-  syn region doxygenBriefLine contained start=+\<\k+ end=+\(\n\s*\*\=\s*\([@\\]\([pcbea]\>\|em\>\|ref\>\|link\>\|f\$\|[$\\&<>#]\)\@!\)\|\s*$\)\@=+ contains=doxygenContinueComment,doxygenFindBriefSpecial,doxygenSmallSpecial,@doxygenHtmlGroup,doxygenTODO,doxygenOtherLink,doxygenHyperLink,doxygenHashLink  skipwhite keepend
+  syn region doxygenBriefLine contained start=+\<\k+ end=+\(\n\s*\*\=\s*\([@\\]\([npcbea]\>\|em\>\|ref\>\|link\>\|f\$\|[$\\&<>#]\)\@!\)\|\s*$\)\@=+ contains=doxygenContinueComment,doxygenFindBriefSpecial,doxygenSmallSpecial,@doxygenHtmlGroup,doxygenTODO,doxygenHyperLink,doxygenHashLink  skipwhite keepend
 
   " Match a '<' for applying a comment to the previous element.
-  syn match doxygenPrev +<+ contained nextgroup=doxygenBrief,doxygenSpecial,doxygenStartSkip skipwhite
-  syn match doxygenPrevL +<+ contained  nextgroup=doxygenBriefL,doxygenSpecial skipwhite
+  syn match doxygenPrev +<+ contained nextgroup=doxygenBrief,doxygenBody,doxygenSpecial,doxygenStartSkip skipwhite
 
-  " These are anti-doxygen comments.  If there are more than two asterisks or 3 '/'s
+if exists("c_comment_strings")
+  " These are anti-Doxygen comments.  If there are more than two asterisks or 3 '/'s
   " then turn the comments back into normal C comments.
   syn region cComment start="/\*\*\*" end="\*/" contains=@cCommentGroup,cCommentString,cCharacter,cNumbersCom,cSpaceError
   syn region cCommentL start="////" skip="\\$" end="$" contains=@cCommentGroup,cComment2String,cCharacter,cNumbersCom,cSpaceError
+else
+  syn region cComment start="/\*\*\*" end="\*/" contains=@cCommentGroup,cSpaceError
+  syn region cCommentL start="////" skip="\\$" end="$" contains=@cCommentGroup,cSpaceError
+endif
 
   " Special commands at the start of the area:  starting with '@' or '\'
-  syn region doxygenStartSpecial contained start=+[@\\]\([pcbea]\>\|em\>\|ref\>\|link\>\|f\$\|[$\\&<>#]\)\@!+ end=+$+ end=+\*/+me=s-1,he=s-1  contains=doxygenSpecial nextgroup=doxygenSkipComment skipnl keepend
+  syn region doxygenStartSpecial contained start=+[@\\]\([npcbea]\>\|em\>\|ref\>\|link\>\|f\$\|[$\\&<>#]\)\@!+ end=+$+ end=+\*/+me=s-1,he=s-1  contains=doxygenSpecial nextgroup=doxygenSkipComment skipnl keepend
   syn match doxygenSkipComment contained +^\s*\*/\@!+ nextgroup=doxygenBrief,doxygenStartSpecial,doxygenFindBriefSpecial,doxygenPage skipwhite
 
   "syn region doxygenBodyBit contained start=+$+
 
   " The main body of a doxygen comment.
-  syn region doxygenBody contained start=+.\|$+ matchgroup=doxygenEndComment end=+\*/+re=e-2,me=e-2 contains=doxygenContinueComment,doxygenTODO,doxygenSpecial,doxygenSmallSpecial,doxygenHyperLink,doxygenHashLink,@doxygenHtmlGroup
+  syn region doxygenBody contained start=+\(/\*[*!]\)\@<!<\|[^<]\|$+ matchgroup=doxygenEndComment end=+\*/+re=e-2,me=e-2 contains=doxygenContinueComment,doxygenTODO,doxygenSpecial,doxygenSmallSpecial,doxygenHyperLink,doxygenHashLink,@doxygenHtmlGroup,@Spell
 
   " These allow the skipping of comment continuation '*' characters.
   syn match doxygenContinueComment contained +^\s*\*/\@!\s*+
@@ -133,7 +144,7 @@ try
   "
   " syn match doxygenBriefLine  contained
   syn match doxygenBriefSpecial contained +[@\\]+ nextgroup=doxygenBriefWord skipwhite
-  syn region doxygenFindBriefSpecial start=+[@\\]brief\>+ end=+\(\n\s*\*\=\s*\([@\\]\([pcbea]\>\|em\>\|ref\>\|link\>\|f\$\|[$\\&<>#]\)\@!\)\|\s*$\)\@=+ keepend contains=doxygenBriefSpecial nextgroup=doxygenBody keepend skipwhite skipnl contained
+  syn region doxygenFindBriefSpecial start=+[@\\]brief\>+ end=+\(\n\s*\*\=\s*\([@\\]\([npcbea]\>\|em\>\|ref\>\|link\>\|f\$\|[$\\&<>#]\)\@!\)\|\s*$\)\@=+ keepend contains=doxygenBriefSpecial nextgroup=doxygenBody keepend skipwhite skipnl contained
 
 
   " Create the single word matching special identifiers.
@@ -142,7 +153,7 @@ try
 
     let mx='[-:0-9A-Za-z_%=&+*/!~>|]\@<!\([-0-9A-Za-z_%=+*/!~>|#]\+[-0-9A-Za-z_%=+*/!~>|]\@!\|\\[\\<>&.]@\|[.,][0-9a-zA-Z_]\@=\|::\|([^)]*)\|&[0-9a-zA-Z]\{2,7};\)\+'
     exe 'syn region doxygenSpecial'.a:name.'Word contained start=+'.a:kword.'+ end=+\(\_s\+'.mx.'\)\@<=[-a-zA-Z_0-9+*/^%|~!=&\\]\@!+ skipwhite contains=doxygenContinueComment,doxygen'.a:name.'Word'
-    exe 'syn match doxygen'.a:name.'Word contained "\_s\@<='.mx.'" contains=doxygenHtmlSpecial keepend'
+    exe 'syn match doxygen'.a:name.'Word contained "\_s\@<='.mx.'" contains=doxygenHtmlSpecial,@Spell keepend'
   endfun
   call s:DxyCreateSmallSpecial('p', 'Code')
   call s:DxyCreateSmallSpecial('c', 'Code')
@@ -153,10 +164,10 @@ try
   call s:DxyCreateSmallSpecial('ref', 'Ref')
   delfun s:DxyCreateSmallSpecial
 
-  syn match doxygenSmallSpecial contained +[@\\]\(\<[pcbea]\>\|\<em\>\|\<ref\>\|\<link\>\|f\$\|[$\\&<>#]\)\@=+ nextgroup=doxygenOtherLink,doxygenHyperLink,doxygenHashLink,doxygenFormula,doxygenSymbol,doxygenSpecial.*Word
+  syn match doxygenSmallSpecial contained +[@\\]\(\<[npcbea]\>\|\<em\>\|\<ref\>\|\<link\>\|f\$\|[$\\&<>#]\)\@=+ nextgroup=doxygenOtherLink,doxygenHyperLink,doxygenHashLink,doxygenFormula,doxygenSymbol,doxygenSpecial.*Word
 
   " Now for special characters
-  syn match doxygenSpecial contained +[@\\]\(\<[pcbea]\>\|\<em\>\|\<ref\|\<link\>\>\|\<f\$\|[$\\&<>#]\)\@!+ nextgroup=doxygenParam,doxygenRetval,doxygenBriefWord,doxygenBold,doxygenBOther,doxygenOther,doxygenOtherTODO,doxygenOtherWARN,doxygenOtherBUG,doxygenPage,doxygenGroupDefine,doxygenCodeRegion,doxygenVerbatimRegion,doxygenDotRegion
+  syn match doxygenSpecial contained +[@\\]\(\<[npcbea]\>\|\<em\>\|\<ref\|\<link\>\>\|\<f\$\|[$\\&<>#]\)\@!+ nextgroup=doxygenParam,doxygenRetval,doxygenBriefWord,doxygenBold,doxygenBOther,doxygenOther,doxygenOtherTODO,doxygenOtherWARN,doxygenOtherBUG,doxygenPage,doxygenGroupDefine,doxygenCodeRegion,doxygenVerbatimRegion,doxygenDotRegion
   " doxygenOtherLink,doxygenSymbol,doxygenFormula,doxygenErrorSpecial,doxygenSpecial.*Word
   "
   syn match doxygenGroupDefine contained +@\@<=[{}]+
@@ -164,8 +175,8 @@ try
 
   syn match doxygenErrorSpecial contained +\s+
 
-  " Match Parmaters and retvals (hilighting the first word as special).
-  syn match doxygenParamDirection contained +\[\(\<in\>\|\<out\>\|,\)\+\]+ nextgroup=doxygenParamName skipwhite
+  " Match parameters and retvals (highlighting the first word as special).
+  syn match doxygenParamDirection contained "\v\[(\s*in>((]\s*\[|\s*,\s*)out>)=|out>((]\s*\[|\s*,\s*)in>)=)\]" nextgroup=doxygenParamName skipwhite
   syn keyword doxygenParam contained param nextgroup=doxygenParamName,doxygenParamDirection skipwhite
   syn match doxygenParamName contained +[A-Za-z0-9_:]\++ nextgroup=doxygenSpecialMultilineDesc skipwhite
   syn keyword doxygenRetval contained retval throw exception nextgroup=doxygenParamName skipwhite
@@ -179,10 +190,10 @@ try
   \ xmlonly endxmlonly
   \ nextgroup=doxygenSpecialOnelineDesc
 
-  syn region doxygenCodeRegion contained matchgroup=doxygenOther start=+\<code\>+ matchgroup=doxygenOther end=+[\\@]\@<=\<endcode\>+ contains=doxygenCodeRegionSpecial,doxygenContinueComment,doxygenErrorComment
+  syn region doxygenCodeRegion contained matchgroup=doxygenOther start=+\<code\>+ matchgroup=doxygenOther end=+[\\@]\@<=\<endcode\>+ contains=doxygenCodeRegionSpecial,doxygenContinueComment,doxygenErrorComment,@NoSpell
   syn match doxygenCodeRegionSpecial contained +[\\@]\(endcode\>\)\@=+
 
-  syn region doxygenVerbatimRegion contained matchgroup=doxygenOther start=+\<verbatim\>+ matchgroup=doxygenOther end=+[\\@]\@<=\<endverbatim\>+ contains=doxygenVerbatimRegionSpecial,doxygenContinueComment,doxygenErrorComment
+  syn region doxygenVerbatimRegion contained matchgroup=doxygenOther start=+\<verbatim\>+ matchgroup=doxygenOther end=+[\\@]\@<=\<endverbatim\>+ contains=doxygenVerbatimRegionSpecial,doxygenContinueComment,doxygenErrorComment,@NoSpell
   syn match doxygenVerbatimRegionSpecial contained +[\\@]\(endverbatim\>\)\@=+
 
   if exists('b:current_syntax') 
@@ -199,7 +210,7 @@ try
     unlet b:current_syntax
   endif
 
-  syn region doxygenDotRegion contained matchgroup=doxygenOther start=+\<dot\>+ matchgroup=doxygenOther end=+[\\@]\@<=\<enddot\>+ contains=doxygenDotRegionSpecial,doxygenErrorComment,doxygenContinueComment,@Dotx
+  syn region doxygenDotRegion contained matchgroup=doxygenOther start=+\<dot\>+ matchgroup=doxygenOther end=+[\\@]\@<=\<enddot\>+ contains=doxygenDotRegionSpecial,doxygenErrorComment,doxygenContinueComment,@NoSpell,@Dotx
   syn match doxygenDotRegionSpecial contained +[\\@]\(enddot\>\)\@=+
 
   " Match single line identifiers.
@@ -210,13 +221,13 @@ try
   syn keyword doxygenOther contained par nextgroup=doxygenHeaderLine
   syn region doxygenHeaderLine start=+.+ end=+^+ contained skipwhite nextgroup=doxygenSpecialMultilineDesc
 
-  syn keyword doxygenOther contained arg author date deprecated li return see invariant note post pre remarks since test nextgroup=doxygenSpecialMultilineDesc
+  syn keyword doxygenOther contained arg author date deprecated li return returns see invariant note post pre remarks since test nextgroup=doxygenSpecialMultilineDesc
   syn keyword doxygenOtherTODO contained todo attention nextgroup=doxygenSpecialMultilineDesc
   syn keyword doxygenOtherWARN contained warning nextgroup=doxygenSpecialMultilineDesc
   syn keyword doxygenOtherBUG contained bug nextgroup=doxygenSpecialMultilineDesc
 
-  " Handle \link, \endlink, hilighting the link-to and the link text bits separately.
-  syn region doxygenOtherLink matchgroup=doxygenOther start=+link+ end=+[\@]\@<=endlink\>+ contained contains=doxygenLinkWord,doxygenContinueComment,doxygenLinkError,doxygenEndlinkSpecial
+  " Handle \link, \endlink, highlighting the link-to and the link text bits separately.
+  syn region doxygenOtherLink matchgroup=doxygenOther start=+\<link\>+ end=+[\@]\@<=endlink\>+ contained contains=doxygenLinkWord,doxygenContinueComment,doxygenLinkError,doxygenEndlinkSpecial
   syn match doxygenEndlinkSpecial contained +[\\@]\zeendlink\>+
 
   syn match doxygenLinkWord "[_a-zA-Z:#()][_a-z0-9A-Z:#()]*\>" contained skipnl nextgroup=doxygenLinkRest,doxygenContinueLinkComment
@@ -232,12 +243,12 @@ try
   syn match doxygenPage "[\\@]page\>"me=s+1 contained skipwhite nextgroup=doxygenPagePage
   syn keyword doxygenPagePage page contained skipwhite nextgroup=doxygenPageIdent
   syn region doxygenPageDesc  start=+.\++ end=+$+ contained skipwhite contains=doxygenSmallSpecial,@doxygenHtmlGroup keepend skipwhite skipnl nextgroup=doxygenBody
-  syn match doxygenPageIdent "\<[a-zA-Z0-9]\+\>" contained nextgroup=doxygenPageDesc
+  syn match doxygenPageIdent "\<[a-zA-Z_0-9]\+\>" contained nextgroup=doxygenPageDesc
 
   " Handle section
   syn keyword doxygenOther defgroup section subsection subsubsection weakgroup contained skipwhite nextgroup=doxygenSpecialIdent
   syn region doxygenSpecialSectionDesc  start=+.\++ end=+$+ contained skipwhite contains=doxygenSmallSpecial,@doxygenHtmlGroup keepend skipwhite skipnl nextgroup=doxygenContinueComment
-  syn match doxygenSpecialIdent "\<[a-zA-Z0-9]\+\>" contained nextgroup=doxygenSpecialSectionDesc
+  syn match doxygenSpecialIdent "\<[a-zA-Z_0-9]\+\>" contained nextgroup=doxygenSpecialSectionDesc
 
   " Does the one-line description for the one-line type identifiers.
   syn region doxygenSpecialTypeOnelineDesc  start=+.\++ end=+$+ contained skipwhite contains=doxygenSmallSpecial,@doxygenHtmlGroup keepend
@@ -246,7 +257,7 @@ try
   " Handle the multiline description for the multiline type identifiers.
   " Continue until an 'empty' line (can contain a '*' continuation) or until the
   " next whole-line @ command \ command.
-  syn region doxygenSpecialMultilineDesc  start=+.\++ skip=+^\s*\(\*/\@!\s*\)\=\(\<\|[@\\]\<\([pcbea]\>\|em\>\|ref\|link\>\>\|f\$\|[$\\&<>#]\)\|[^ \t\\@*]\)+ end=+^+ contained contains=doxygenSpecialContinueComment,doxygenSmallSpecial,doxygenHyperLink,doxygenHashLink,@doxygenHtmlGroup  skipwhite keepend
+  syn region doxygenSpecialMultilineDesc  start=+.\++ skip=+^\s*\(\*/\@!\s*\)\=\(\<\|[@\\]\<\([npcbea]\>\|em\>\|ref\|link\>\>\|f\$\|[$\\&<>#]\)\|[^ \t\\@*]\)+ end=+^+ contained contains=doxygenSpecialContinueComment,doxygenSmallSpecial,doxygenHyperLink,doxygenHashLink,@doxygenHtmlGroup,@Spell  skipwhite keepend
   syn match doxygenSpecialContinueComment contained +^\s*\*/\@!\s*+ nextgroup=doxygenSpecial skipwhite
 
   " Handle special cases  'bold' and 'group'
@@ -257,7 +268,7 @@ try
   syn keyword doxygenGroupName contained +\k\++ nextgroup=doxygenSpecialOnelineDesc skipwhite
 
   " Handle special symbol identifiers  @$, @\, @$ etc
-  syn match doxygenSymbol contained +[$\\&<>#]+
+  syn match doxygenSymbol contained +[$\\&<>#n]+
 
   " Simplistic handling of formula regions
   syn region doxygenFormula contained matchgroup=doxygenFormulaEnds start=+f\$+ end=+[@\\]f\$+ contains=doxygenFormulaSpecial,doxygenFormulaOperator
@@ -289,37 +300,37 @@ try
   syn region doxygenHtmlLink contained start=+<[aA]\>\s*\(\n\s*\*\s*\)\=\(\(name\|href\)=\("[^"]*"\|'[^']*'\)\)\=\s*>+ end=+</[aA]>+me=e-4 contains=@doxygenHtmlTop
   hi link doxygenHtmlLink Underlined
 
-  syn region doxygenHtmlBold contained start="\c<b\>" end="\c</b>"me=e-4 contains=@doxygenHtmlTop,doxygenHtmlBoldUnderline,doxygenHtmlBoldItalic
-  syn region doxygenHtmlBold contained start="\c<strong\>" end="\c</strong>"me=e-9 contains=@doxygenHtmlTop,doxygenHtmlBoldUnderline,doxygenHtmlBoldItalic
-  syn region doxygenHtmlBoldUnderline contained start="\c<u\>" end="\c</u>"me=e-4 contains=@doxygenHtmlTop,doxygenHtmlBoldUnderlineItalic
-  syn region doxygenHtmlBoldItalic contained start="\c<i\>" end="\c</i>"me=e-4 contains=@doxygenHtmlTop,doxygenHtmlBoldItalicUnderline
-  syn region doxygenHtmlBoldItalic contained start="\c<em\>" end="\c</em>"me=e-5 contains=@doxygenHtmlTop,doxygenHtmlBoldItalicUnderline
-  syn region doxygenHtmlBoldUnderlineItalic contained start="\c<i\>" end="\c</i>"me=e-4 contains=@doxygenHtmlTop
-  syn region doxygenHtmlBoldUnderlineItalic contained start="\c<em\>" end="\c</em>"me=e-5 contains=@doxygenHtmlTop
-  syn region doxygenHtmlBoldItalicUnderline contained start="\c<u\>" end="\c</u>"me=e-4 contains=@doxygenHtmlTop,doxygenHtmlBoldUnderlineItalic
+  syn region doxygenHtmlBold contained start="\c<b\>" end="\c</b>"me=e-4 contains=@doxygenHtmlTop,doxygenHtmlBoldUnderline,doxygenHtmlBoldItalic,@Spell
+  syn region doxygenHtmlBold contained start="\c<strong\>" end="\c</strong>"me=e-9 contains=@doxygenHtmlTop,doxygenHtmlBoldUnderline,doxygenHtmlBoldItalic,@Spell
+  syn region doxygenHtmlBoldUnderline contained start="\c<u\>" end="\c</u>"me=e-4 contains=@doxygenHtmlTop,doxygenHtmlBoldUnderlineItalic,@Spell
+  syn region doxygenHtmlBoldItalic contained start="\c<i\>" end="\c</i>"me=e-4 contains=@doxygenHtmlTop,doxygenHtmlBoldItalicUnderline,@Spell
+  syn region doxygenHtmlBoldItalic contained start="\c<em\>" end="\c</em>"me=e-5 contains=@doxygenHtmlTop,doxygenHtmlBoldItalicUnderline,@Spell
+  syn region doxygenHtmlBoldUnderlineItalic contained start="\c<i\>" end="\c</i>"me=e-4 contains=@doxygenHtmlTop,@Spell
+  syn region doxygenHtmlBoldUnderlineItalic contained start="\c<em\>" end="\c</em>"me=e-5 contains=@doxygenHtmlTop,@Spell
+  syn region doxygenHtmlBoldItalicUnderline contained start="\c<u\>" end="\c</u>"me=e-4 contains=@doxygenHtmlTop,doxygenHtmlBoldUnderlineItalic,@Spell
 
-  syn region doxygenHtmlUnderline contained start="\c<u\>" end="\c</u>"me=e-4 contains=@doxygenHtmlTop,doxygenHtmlUnderlineBold,doxygenHtmlUnderlineItalic
-  syn region doxygenHtmlUnderlineBold contained start="\c<b\>" end="\c</b>"me=e-4 contains=@doxygenHtmlTop,doxygenHtmlUnderlineBoldItalic
-  syn region doxygenHtmlUnderlineBold contained start="\c<strong\>" end="\c</strong>"me=e-9 contains=@doxygenHtmlTop,doxygenHtmlUnderlineBoldItalic
-  syn region doxygenHtmlUnderlineItalic contained start="\c<i\>" end="\c</i>"me=e-4 contains=@doxygenHtmlTop,htmUnderlineItalicBold
-  syn region doxygenHtmlUnderlineItalic contained start="\c<em\>" end="\c</em>"me=e-5 contains=@doxygenHtmlTop,htmUnderlineItalicBold
-  syn region doxygenHtmlUnderlineItalicBold contained start="\c<b\>" end="\c</b>"me=e-4 contains=@doxygenHtmlTop
-  syn region doxygenHtmlUnderlineItalicBold contained start="\c<strong\>" end="\c</strong>"me=e-9 contains=@doxygenHtmlTop
-  syn region doxygenHtmlUnderlineBoldItalic contained start="\c<i\>" end="\c</i>"me=e-4 contains=@doxygenHtmlTop
-  syn region doxygenHtmlUnderlineBoldItalic contained start="\c<em\>" end="\c</em>"me=e-5 contains=@doxygenHtmlTop
+  syn region doxygenHtmlUnderline contained start="\c<u\>" end="\c</u>"me=e-4 contains=@doxygenHtmlTop,doxygenHtmlUnderlineBold,doxygenHtmlUnderlineItalic,@Spell
+  syn region doxygenHtmlUnderlineBold contained start="\c<b\>" end="\c</b>"me=e-4 contains=@doxygenHtmlTop,doxygenHtmlUnderlineBoldItalic,@Spell
+  syn region doxygenHtmlUnderlineBold contained start="\c<strong\>" end="\c</strong>"me=e-9 contains=@doxygenHtmlTop,doxygenHtmlUnderlineBoldItalic,@Spell
+  syn region doxygenHtmlUnderlineItalic contained start="\c<i\>" end="\c</i>"me=e-4 contains=@doxygenHtmlTop,htmUnderlineItalicBold,@Spell
+  syn region doxygenHtmlUnderlineItalic contained start="\c<em\>" end="\c</em>"me=e-5 contains=@doxygenHtmlTop,htmUnderlineItalicBold,@Spell
+  syn region doxygenHtmlUnderlineItalicBold contained start="\c<b\>" end="\c</b>"me=e-4 contains=@doxygenHtmlTop,@Spell
+  syn region doxygenHtmlUnderlineItalicBold contained start="\c<strong\>" end="\c</strong>"me=e-9 contains=@doxygenHtmlTop,@Spell
+  syn region doxygenHtmlUnderlineBoldItalic contained start="\c<i\>" end="\c</i>"me=e-4 contains=@doxygenHtmlTop,@Spell
+  syn region doxygenHtmlUnderlineBoldItalic contained start="\c<em\>" end="\c</em>"me=e-5 contains=@doxygenHtmlTop,@Spell
 
-  syn region doxygenHtmlItalic contained start="\c<i\>" end="\c</i>"me=e-4 contains=@doxygenHtmlTop,doxygenHtmlItalicBold,doxygenHtmlItalicUnderline
-  syn region doxygenHtmlItalic contained start="\c<em\>" end="\c</em>"me=e-5 contains=@doxygenHtmlTop
-  syn region doxygenHtmlItalicBold contained start="\c<b\>" end="\c</b>"me=e-4 contains=@doxygenHtmlTop,doxygenHtmlItalicBoldUnderline
-  syn region doxygenHtmlItalicBold contained start="\c<strong\>" end="\c</strong>"me=e-9 contains=@doxygenHtmlTop,doxygenHtmlItalicBoldUnderline
-  syn region doxygenHtmlItalicBoldUnderline contained start="\c<u\>" end="\c</u>"me=e-4 contains=@doxygenHtmlTop
-  syn region doxygenHtmlItalicUnderline contained start="\c<u\>" end="\c</u>"me=e-4 contains=@doxygenHtmlTop,doxygenHtmlItalicUnderlineBold
-  syn region doxygenHtmlItalicUnderlineBold contained start="\c<b\>" end="\c</b>"me=e-4 contains=@doxygenHtmlTop
-  syn region doxygenHtmlItalicUnderlineBold contained start="\c<strong\>" end="\c</strong>"me=e-9 contains=@doxygenHtmlTop
+  syn region doxygenHtmlItalic contained start="\c<i\>" end="\c</i>"me=e-4 contains=@doxygenHtmlTop,doxygenHtmlItalicBold,doxygenHtmlItalicUnderline,@Spell
+  syn region doxygenHtmlItalic contained start="\c<em\>" end="\c</em>"me=e-5 contains=@doxygenHtmlTop,@Spell
+  syn region doxygenHtmlItalicBold contained start="\c<b\>" end="\c</b>"me=e-4 contains=@doxygenHtmlTop,doxygenHtmlItalicBoldUnderline,@Spell
+  syn region doxygenHtmlItalicBold contained start="\c<strong\>" end="\c</strong>"me=e-9 contains=@doxygenHtmlTop,doxygenHtmlItalicBoldUnderline,@Spell
+  syn region doxygenHtmlItalicBoldUnderline contained start="\c<u\>" end="\c</u>"me=e-4 contains=@doxygenHtmlTop,@Spell
+  syn region doxygenHtmlItalicUnderline contained start="\c<u\>" end="\c</u>"me=e-4 contains=@doxygenHtmlTop,doxygenHtmlItalicUnderlineBold,@Spell
+  syn region doxygenHtmlItalicUnderlineBold contained start="\c<b\>" end="\c</b>"me=e-4 contains=@doxygenHtmlTop,@Spell
+  syn region doxygenHtmlItalicUnderlineBold contained start="\c<strong\>" end="\c</strong>"me=e-9 contains=@doxygenHtmlTop,@Spell
 
-  syn region doxygenHtmlCode contained start="\c<code\>" end="\c</code>"me=e-7 contains=@doxygenHtmlTop
+  syn region doxygenHtmlCode contained start="\c<code\>" end="\c</code>"me=e-7 contains=@doxygenHtmlTop,@NoSpell
 
-  " Prevent the doxygen contained matches from leaking into the c groups.
+  " Prevent the doxygen contained matches from leaking into the c/rc groups.
   syn cluster cParenGroup add=doxygen.*
   syn cluster cParenGroup remove=doxygenComment,doxygenCommentL
   syn cluster cPreProcGroup add=doxygen.*
@@ -389,10 +400,16 @@ try
             endif
 
           elseif has('gui_win32') || has('gui_win16') || has('gui_win95')
+
+            if exists('g:doxygen_use_bitsream_vera')  && g:doxygen_use_bitsream_vera
+              let font_base='Bitstream_Vera_Sans_Mono'
+            else
+              let font_base='Lucida_Console'
+            endif
             if &guifont == ''
-              let font='font=Lucida_Console:h10'
+              let font='font='.font_base.':h10'
             else
-              let font='font='.substitute(&guifont, '^[^:]*', 'Lucida_Console','')
+              let font='font='.matchstr(substitute(&guifont, '^[^:]*', font_base,''),'[^,]*')
             endif
           elseif has('gui_athena') || has('gui_gtk') || &guifont=~'^\(-[^-]\+\)\{14}'
             if &guifont == ''
@@ -458,6 +475,7 @@ try
 
 
     SynLink doxygenBody                   Comment
+    SynLink doxygenLine                   doxygenBody
     SynLink doxygenTODO                   Todo
     SynLink doxygenOtherTODO              Todo
     SynLink doxygenOtherWARN              Todo
@@ -473,6 +491,7 @@ try
     SynLink doxygenEndlinkSpecial         doxygenSpecial
     SynLink doxygenCodeRegionSpecial      doxygenSpecial
     SynLink doxygenVerbatimRegionSpecial  doxygenSpecial
+    SynLink doxygenDotRegionSpecial       doxygenSpecial
     SynLink doxygenGroupDefine            doxygenParam
 
     SynLink doxygenSpecialMultilineDesc   doxygenSpecialOnelineDesc
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/freebasic.vim
@@ -0,0 +1,252 @@
+" Vim syntax file
+" Language:    FreeBasic
+" Maintainer:  Mark Manning <markem@airmail.net>
+" Updated:     10/22/2006
+"
+" Description:
+"
+"	Based originally on the work done by Allan Kelly <Allan.Kelly@ed.ac.uk>
+"	Updated by Mark Manning <markem@airmail.net>
+"	Applied FreeBasic support to the already excellent support
+"	for standard basic syntax (like QB).
+"
+"	First version based on Micro$soft QBASIC circa
+"	1989, as documented in 'Learn BASIC Now' by
+"	Halvorson&Rygmyr. Microsoft Press 1989.  This syntax file
+"	not a complete implementation yet.  Send suggestions to
+"	the maintainer.
+"
+"	Quit when a (custom) syntax file was already loaded (Taken from c.vim)
+"
+if exists("b:current_syntax")
+  finish
+endif
+"
+"	Be sure to turn on the "case ignore" since current versions
+"	of freebasic support both upper as well as lowercase
+"	letters. - MEM 10/1/2006
+"
+syn case ignore
+"
+"	This list of keywords is taken directly from the FreeBasic
+"	user's guide as presented by the FreeBasic online site.
+"
+syn keyword	freebasicArrays			ERASE LBOUND REDIM PRESERVE UBOUND
+
+syn keyword	freebasicBitManipulation	BIT BITRESET BITSET HIBYTE HIWORD LOBYTE LOWORD SHL SHR
+
+syn keyword	freebasicCompilerSwitches	DEFBYTE DEFDBL DEFINT DEFLNG DEFLNGINT DEFSHORT DEFSNG DEFSTR
+syn keyword	freebasicCompilerSwitches	DEFUBYTE DEFUINT DEFULNGINT DEFUSHORT
+syn match	freebasicCompilerSwitches	"\<option\s+\(BASE\|BYVAL\|DYNAMIC\|ESCAPE\|EXPLICIT\|NOKEYWORD\)\>"
+syn match	freebasicCompilerSwitches	"\<option\s+\(PRIVATE\|STATIC\)\>"
+
+syn region	freebasicConditional		start="\son\s+" skip=".*" end="gosub"
+syn region	freebasicConditional		start="\son\s+" skip=".*" end="goto"
+syn match	freebasicConditional		"\<select\s+case\>"
+syn keyword	freebasicConditional		if iif then case else elseif with
+
+syn match	freebasicConsole		"\<open\s+\(CONS\|ERR\|PIPE\|SCRN\)\>"
+syn keyword	freebasicConsole		BEEP CLS CSRLIN LOCATE PRINT POS SPC TAB VIEW WIDTH
+
+syn keyword	freebasicDataTypes		BYTE AS DIM CONST DOUBLE ENUM INTEGER LONG LONGINT SHARED SHORT STRING
+syn keyword	freebasicDataTypes		SINGLE TYPE UBYTE UINTEGER ULONGINT UNION UNSIGNED USHORT WSTRING ZSTRING
+
+syn keyword	freebasicDateTime		DATE DATEADD DATEDIFF DATEPART DATESERIAL DATEVALUE DAY HOUR MINUTE
+syn keyword	freebasicDateTime		MONTH MONTHNAME NOW SECOND SETDATE SETTIME TIME TIMESERIAL TIMEVALUE
+syn keyword	freebasicDateTime		TIMER YEAR WEEKDAY WEEKDAYNAME
+
+syn keyword	freebasicDebug			ASSERT STOP
+
+syn keyword	freebasicErrorHandling		ERR ERL ERROR LOCAL RESUME
+syn match	freebasicErrorHandling		"\<resume\s+next\>"
+syn match	freebasicErrorHandling		"\<on\s+error\>"
+
+syn match	freebasicFiles			"\<get\s+#\>"
+syn match	freebasicFiles			"\<input\s+#\>"
+syn match	freebasicFiles			"\<line\s+input\s+#\>"
+syn match	freebasicFiles			"\<put\s+#\>"
+syn keyword	freebasicFiles			ACCESS APPEND BINARY BLOAD BSAVE CLOSE EOF FREEFILE INPUT LOC
+syn keyword	freebasicFiles			LOCK LOF OPEN OUTPUT RANDOM RESET SEEK UNLOCK WRITE
+
+syn keyword	freebasicFunctions		ALIAS ANY BYREF BYVAL CALL CDECL CONSTRUCTOR DESTRUCTOR
+syn keyword	freebasicFunctions		DECLARE FUNCTION LIB OVERLOAD PASCAL STATIC SUB STDCALL
+syn keyword	freebasicFunctions		VA_ARG VA_FIRST VA_NEXT
+
+syn match	freebasicGraphics		"\<palette\s+get\>"
+syn keyword	freebasicGraphics		ALPHA CIRCLE CLS COLOR CUSTOM DRAW FLIP GET
+syn keyword	freebasicGraphics		IMAGECREATE IMAGEDESTROY LINE PAINT PALETTE PCOPY PMAP POINT
+syn keyword	freebasicGraphics		PRESET PSET PUT RGB RGBA SCREEN SCREENCOPY SCREENINFO SCREENLIST
+syn keyword	freebasicGraphics		SCREENLOCK SCREENPTR SCREENRES SCREENSET SCREENSYNC SCREENUNLOCK
+syn keyword	freebasicGraphics		TRANS USING VIEW WINDOW
+
+syn match	freebasicHardware		"\<open\s+com\>"
+syn keyword	freebasicHardware		INP OUT WAIT LPT LPOS LPRINT
+
+syn keyword	freebasicLogical		AND EQV IMP OR NOT XOR
+
+syn keyword	freebasicMath			ABS ACOS ASIN ATAN2 ATN COS EXP FIX INT LOG MOD RANDOMIZE
+syn keyword	freebasicMath			RND SGN SIN SQR TAN
+
+syn keyword	freebasicMemory			ALLOCATE CALLOCATE CLEAR DEALLOCATE FIELD FRE PEEK POKE REALLOCATE
+
+syn keyword	freebasicMisc			ASM DATA LET TO READ RESTORE SIZEOF SWAP OFFSETOF
+
+syn keyword	freebasicModularizing		CHAIN COMMON EXPORT EXTERN DYLIBFREE DYLIBLOAD DYLIBSYMBOL
+syn keyword	freebasicModularizing		PRIVATE PUBLIC
+
+syn keyword	freebasicMultithreading		MUTEXCREATE MUTEXDESTROY MUTEXLOCK MUTEXUNLOCK THREADCREATE THREADWAIT
+
+syn keyword	freebasicShell			CHDIR DIR COMMAND ENVIRON EXEC EXEPATH KILL NAME MKDIR RMDIR RUN
+
+syn keyword	freebasicEnviron		SHELL SYSTEM WINDOWTITLE POINTERS
+
+syn keyword	freebasicLoops			FOR LOOP WHILE WEND DO CONTINUE STEP UNTIL next
+
+syn match	freebasicInclude		"\<#\s*\(inclib\|include\)\>"
+syn match	freebasicInclude		"\<\$\s*include\>"
+
+syn keyword	freebasicPointer		PROCPTR PTR SADD STRPTR VARPTR
+
+syn keyword	freebasicPredefined		__DATE__ __FB_DOS__ __FB_LINUX__ __FB_MAIN__ __FB_MIN_VERSION__
+syn keyword	freebasicPredefined		__FB_SIGNATURE__ __FB_VERSION__ __FB_WIN32__ __FB_VER_MAJOR__
+syn keyword	freebasicPredefined		__FB_VER_MINOR__ __FB_VER_PATCH__ __FILE__ __FUNCTION__
+syn keyword	freebasicPredefined		__LINE__ __TIME__
+
+syn match	freebasicPreProcessor		"\<^#\s*\(define\|undef\)\>"
+syn match	freebasicPreProcessor		"\<^#\s*\(ifdef\|ifndef\|else\|elseif\|endif\|if\)\>"
+syn match	freebasicPreProcessor		"\<#\s*error\>"
+syn match	freebasicPreProcessor		"\<#\s*\(print\|dynamic\|static\)\>"
+syn keyword	freebasicPreProcessor		DEFINED ONCE
+
+syn keyword	freebasicProgramFlow		END EXIT GOSUB GOTO
+syn keyword	freebasicProgramFlow		IS RETURN SCOPE SLEEP
+
+syn keyword	freebasicString			INSTR LCASE LEFT LEN LSET LTRIM MID RIGHT RSET RTRIM
+syn keyword	freebasicString			SPACE STRING TRIM UCASE ASC BIN CHR CVD CVI CVL CVLONGINT
+syn keyword	freebasicString			CVS CVSHORT FORMAT HEX MKD MKI MKL MKLONGINT MKS MKSHORT
+syn keyword	freebasicString			OCT STR VAL VALLNG VALINT VALUINT VALULNG
+
+syn keyword	freebasicTypeCasting		CAST CBYTE CDBL CINT CLNG CLNGINT CPTR CSHORT CSIGN CSNG
+syn keyword	freebasicTypeCasting		CUBYTE CUINT CULNGINT CUNSG CURDIR CUSHORT
+
+syn match	freebasicUserInput		"\<line\s+input\>"
+syn keyword	freebasicUserInput		GETJOYSTICK GETKEY GETMOUSE INKEY INPUT MULTIKEY SETMOUSE
+"
+"	Do the Basic variables names first.  This is because it
+"	is the most inclusive of the tests.  Later on we change
+"	this so the identifiers are split up into the various
+"	types of identifiers like functions, basic commands and
+"	such. MEM 9/9/2006
+"
+syn match	freebasicIdentifier		"\<[a-zA-Z_][a-zA-Z0-9_]*\>"
+syn match	freebasicGenericFunction	"\<[a-zA-Z_][a-zA-Z0-9_]*\>\s*("me=e-1,he=e-1
+"
+"	Function list
+"
+syn keyword	freebasicTodo		contained TODO
+"
+"	Catch errors caused by wrong parenthesis
+"
+syn region	freebasicParen		transparent start='(' end=')' contains=ALLBUT,@freebasicParenGroup
+syn match	freebasicParenError	")"
+syn match	freebasicInParen	contained "[{}]"
+syn cluster	freebasicParenGroup	contains=freebasicParenError,freebasicSpecial,freebasicTodo,freebasicUserCont,freebasicUserLabel,freebasicBitField
+"
+"	Integer number, or floating point number without a dot and with "f".
+"
+syn region	freebasicHex		start="&h" end="\W"
+syn region	freebasicHexError	start="&h\x*[g-zG-Z]" end="\W"
+syn match	freebasicInteger	"\<\d\+\(u\=l\=\|lu\|f\)\>"
+"
+"	Floating point number, with dot, optional exponent
+"
+syn match	freebasicFloat		"\<\d\+\.\d*\(e[-+]\=\d\+\)\=[fl]\=\>"
+"
+"	Floating point number, starting with a dot, optional exponent
+"
+syn match	freebasicFloat		"\.\d\+\(e[-+]\=\d\+\)\=[fl]\=\>"
+"
+"	Floating point number, without dot, with exponent
+"
+syn match	freebasicFloat		"\<\d\+e[-+]\=\d\+[fl]\=\>"
+"
+"	Hex number
+"
+syn case match
+syn match	freebasicOctal		"\<0\o*\>"
+syn match	freebasicOctalError	"\<0\o*[89]"
+"
+"	String and Character contstants
+"
+syn region	freebasicString		start='"' end='"' contains=freebasicSpecial,freebasicTodo
+syn region	freebasicString		start="'" end="'" contains=freebasicSpecial,freebasicTodo
+"
+"	Comments
+"
+syn match	freebasicSpecial	contained "\\."
+syn region	freebasicComment	start="^rem" end="$" contains=freebasicSpecial,freebasicTodo
+syn region	freebasicComment	start=":\s*rem" end="$" contains=freebasicSpecial,freebasicTodo
+syn region	freebasicComment	start="\s*'" end="$" contains=freebasicSpecial,freebasicTodo
+syn region	freebasicComment	start="^'" end="$" contains=freebasicSpecial,freebasicTodo
+"
+"	Now do the comments and labels
+"
+syn match	freebasicLabel		"^\d"
+syn match	freebasicLabel		"\<^\w+:\>"
+syn region	freebasicLineNumber	start="^\d" end="\s"
+"
+"	Create the clusters
+"
+syn cluster	freebasicNumber		contains=freebasicHex,freebasicOctal,freebasicInteger,freebasicFloat
+syn cluster	freebasicError		contains=freebasicHexError,freebasicOctalError
+"
+"	Used with OPEN statement
+"
+syn match	freebasicFilenumber	"#\d\+"
+syn match	freebasicMathOperator	"[\+\-\=\|\*\/\>\<\%\()[\]]" contains=freebasicParen
+"
+"	The default methods for highlighting.  Can be overridden later
+"
+hi def link freebasicArrays		StorageClass
+hi def link freebasicBitManipulation	Operator
+hi def link freebasicCompilerSwitches	PreCondit
+hi def link freebasicConsole		Special
+hi def link freebasicDataTypes		Type
+hi def link freebasicDateTime		Type
+hi def link freebasicDebug		Special
+hi def link freebasicErrorHandling	Special
+hi def link freebasicFiles		Special
+hi def link freebasicFunctions		Function
+hi def link freebasicGraphics		Function
+hi def link freebasicHardware		Special
+hi def link freebasicLogical		Conditional
+hi def link freebasicMath		Function
+hi def link freebasicMemory		Function
+hi def link freebasicMisc		Special
+hi def link freebasicModularizing	Special
+hi def link freebasicMultithreading	Special
+hi def link freebasicShell		Special
+hi def link freebasicEnviron		Special
+hi def link freebasicPointer		Special
+hi def link freebasicPredefined		PreProc
+hi def link freebasicPreProcessor	PreProc
+hi def link freebasicProgramFlow	Statement
+hi def link freebasicString		String
+hi def link freebasicTypeCasting	Type
+hi def link freebasicUserInput		Statement
+hi def link freebasicComment		Comment
+hi def link freebasicConditional	Conditional
+hi def link freebasicError		Error
+hi def link freebasicIdentifier		Identifier
+hi def link freebasicInclude		Include
+hi def link freebasicGenericFunction	Function
+hi def link freebasicLabel		Label
+hi def link freebasicLineNumber		Label
+hi def link freebasicMathOperator	Operator
+hi def link freebasicNumber		Number
+hi def link freebasicSpecial		Special
+hi def link freebasicTodo		Todo
+
+let b:current_syntax = "freebasic"
+
+" vim: ts=8
--- 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:	2006 Apr 13
+" Last Change:	2006 May 13
 
 " Quit when a (custom) syntax file was already loaded
 if exists("b:current_syntax")
--- a/runtime/syntax/html.vim
+++ b/runtime/syntax/html.vim
@@ -2,7 +2,7 @@
 " Language:	HTML
 " Maintainer:	Claudio Fleiner <claudio@fleiner.com>
 " URL:		http://www.fleiner.com/vim/syntax/html.vim
-" Last Change:  2006 April 13
+" Last Change:  2006 Jun 19
 
 " Please check :help html.vim for some comments and a description of the options
 
@@ -24,6 +24,7 @@ else
   command! -nargs=+ HtmlHiLink hi def link <args>
 endif
 
+syntax spell toplevel
 
 syn case ignore
 
--- a/runtime/syntax/htmldjango.vim
+++ b/runtime/syntax/htmldjango.vim
@@ -1,7 +1,7 @@
 " Vim syntax file
 " Language:	Django HTML template
 " Maintainer:	Dave Hodder <dmh@dmh.org.uk>
-" Last Change:	2006 Mar 06
+" Last Change:	2007 Jan 26
 
 " For version 5.x: Clear all syntax items
 " For version 6.x: Quit when a syntax file was already loaded
@@ -24,7 +24,11 @@ else
   unlet b:current_syntax
 endif
 
-syntax cluster htmlPreproc add=djangoPlaceHolder
-syntax cluster htmlString add=djangoPlaceHolder
+syn cluster djangoBlocks add=djangoTagBlock,djangoVarBlock,djangoComment,djangoComBlock
+
+syn region djangoTagBlock start="{%" end="%}" contains=djangoStatement,djangoFilter,djangoArgument,djangoTagError display containedin=ALLBUT,@djangoBlocks
+syn region djangoVarBlock start="{{" end="}}" contains=djangoFilter,djangoArgument,djangoVarError display containedin=ALLBUT,@djangoBlocks
+syn region djangoComment start="{%\s*comment\s*%}" end="{%\s*endcomment\s*%}" contains=djangoTodo containedin=ALLBUT,@djangoBlocks
+syn region djangoComBlock start="{#" end="#}" contains=djangoTodo containedin=ALLBUT,@djangoBlocks
 
 let b:current_syntax = "htmldjango"
--- a/runtime/syntax/lisp.vim
+++ b/runtime/syntax/lisp.vim
@@ -1,8 +1,8 @@
 " Vim syntax file
 " Language:    Lisp
 " Maintainer:  Dr. Charles E. Campbell, Jr. <NdrOchipS@PcampbellAfamily.Mbiz>
-" Last Change: Oct 12, 2005
-" Version:     17a
+" Last Change: Apr 12, 2007
+" Version:     19
 " URL:	       http://mysite.verizon.net/astronaut/vim/index.html#vimlinks_syntax
 "
 "  Thanks to F Xavier Noria for a list of 978 Common Lisp symbols
@@ -34,6 +34,8 @@ else
  syn cluster			 lispListCluster		  contains=@lispBaseListCluster,lispString
 endif
 
+syn case ignore
+
 " ---------------------------------------------------------------------
 " Lists: {{{1
 syn match			 lispSymbol			  contained			   ![^()'`,"; \t]\+!
@@ -436,7 +438,7 @@ syn keyword lispVar		 *gensym-counter*		
 
 " ---------------------------------------------------------------------
 " Strings: {{{1
-syn region			 lispString			  start=+"+ skip=+\\\\\|\\"+ end=+"+
+syn region			 lispString			  start=+"+ skip=+\\\\\|\\"+ end=+"+	contains=@Spell
 if exists("g:lisp_instring")
  syn region			 lispInString			  keepend matchgroup=Delimiter start=+"(+rs=s+1 skip=+|.\{-}|+ matchgroup=Delimiter end=+)"+ contains=@lispBaseListCluster,lispInStringString
  syn region			 lispInStringString		  start=+\\"+ skip=+\\\\+ end=+\\"+ contained
@@ -454,14 +456,15 @@ syn keyword lispDecl		 do*				  flet				
 " Numbers: supporting integers and floating point numbers {{{1
 syn match lispNumber		 "-\=\(\.\d\+\|\d\+\(\.\d*\)\=\)\(e[-+]\=\d\+\)\="
 
-syn match lispSpecial		 "\*[a-zA-Z_][a-zA-Z_0-9-]*\*"
+syn match lispSpecial		 "\*\w[a-z_0-9-]*\*"
 syn match lispSpecial		 !#|[^()'`,"; \t]\+|#!
-syn match lispSpecial		 !#x[0-9a-fA-F]\+!
-syn match lispSpecial		 !#o[0-7]\+!
+syn match lispSpecial		 !#x\x\+!
+syn match lispSpecial		 !#o\o\+!
 syn match lispSpecial		 !#b[01]\+!
-syn match lispSpecial		 !#\\[ -\~]!
+syn match lispSpecial		 !#\\[ -}\~]!
 syn match lispSpecial		 !#[':][^()'`,"; \t]\+!
 syn match lispSpecial		 !#([^()'`,"; \t]\+)!
+syn match lispSpecial		 !#\\\%(Space\|Newline\|Tab\|Page\|Rubout\|Linefeed\|Return\|Backspace\)!
 
 syn match lispConcat		 "\s\.\s"
 syn match lispParenError	 ")"
@@ -471,9 +474,7 @@ syn match lispParenError	 ")"
 syn cluster lispCommentGroup	 contains=lispTodo,@Spell
 syn match   lispComment		 ";.*$"				  contains=@lispCommentGroup
 syn region  lispCommentRegion	 start="#|" end="|#"		  contains=lispCommentRegion,@lispCommentGroup
-syn case ignore
 syn keyword lispTodo		 contained			  combak			   combak:			    todo			     todo:
-syn case match
 
 " ---------------------------------------------------------------------
 " Synchronization: {{{1
--- a/runtime/syntax/mail.vim
+++ b/runtime/syntax/mail.vim
@@ -22,13 +22,15 @@ syn cluster mailQuoteExps	contains=mailQ
 syn case match
 " For "From " matching case is required. The "From " is not matched in quoted
 " emails
-syn region	mailHeader	contains=@mailHeaderFields,@NoSpell start="^From " skip="^\s" end="\v^[-A-Za-z0-9]*([^-A-Za-z0-9:]|$)"me=s-1
+" According to RFC 2822 any printable ASCII character can appear in a field
+" name, except ':'.
+syn region	mailHeader	contains=@mailHeaderFields,@NoSpell start="^From " skip="^\s" end="\v^[!-9;-~]*([^!-~]|$)"me=s-1
 syn match	mailHeaderKey	contained contains=mailEmail,@NoSpell "^From\s.*$"
 
 syn case ignore
 " Nothing else depends on case. Headers in properly quoted (with "> " or ">")
 " emails are matched
-syn region	mailHeader	keepend contains=@mailHeaderFields,@mailQuoteExps,@NoSpell start="^\z(\(> \?\)*\)\v(newsgroups|from|((in-)?reply-)?to|b?cc|subject|return-path|received|date|replied):" skip="^\z1\s" end="\v^\z1[-a-z0-9]*([^-a-z0-9:]|$)"me=s-1 end="\v^\z1@!"me=s-1 end="\v^\z1(\> ?)+"me=s-1
+syn region	mailHeader	keepend contains=@mailHeaderFields,@mailQuoteExps,@NoSpell start="^\z(\(> \?\)*\)\v(newsgroups|from|((in-)?reply-)?to|b?cc|subject|return-path|received|date|replied):" skip="^\z1\s" end="\v^\z1[!-9;-~]*([^!-~]|$)"me=s-1 end="\v^\z1@!"me=s-1 end="\v^\z1(\> ?)+"me=s-1
 
 syn region	mailHeaderKey	contained contains=mailHeaderEmail,mailEmail,@mailQuoteExps,@NoSpell start="\v(^(\> ?)*)@<=(to|b?cc):" skip=",$" end="$"
 syn match	mailHeaderKey	contained contains=mailHeaderEmail,mailEmail,@NoSpell "\v(^(\> ?)*)@<=(from|reply-to):.*$"
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/messages.vim
@@ -0,0 +1,59 @@
+" Vim syntax file
+" Language:         /var/log/messages file
+" Maintainer:       Yakov Lerner <iler.ml@gmail.com>
+" Latest Revision:  2006-06-19
+
+if exists("b:current_syntax")
+  finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+syn match   messagesBegin       display '^' nextgroup=messagesDate
+
+syn match   messagesDate        contained display '\a\a\a [ 0-9]\d *'
+                                \ nextgroup=messagesHour
+
+syn match   messagesHour        contained display '\d\d:\d\d:\d\d\s*'
+                                \ nextgroup=messagesHost
+
+syn match   messagesHost        contained display '\S*\s*'
+                                \ nextgroup=messagesLabel
+
+syn match   messagesLabel       contained display '\s*[^:]*:\s*'
+                                \ nextgroup=messagesText contains=messagesKernel,messagesPID
+
+syn match   messagesPID         contained display '\[\zs\d\+\ze\]'
+
+syn match   messagesKernel      contained display 'kernel:'
+
+
+syn match   messagesIP          '\d\+\.\d\+\.\d\+\.\d\+'
+
+syn match   messagesURL         '\w\+://\S\+'
+
+syn match   messagesText        contained display '.*'
+                                \ contains=messagesNumber,messagesIP,messagesURL,messagesError
+
+syn match   messagesNumber      contained '0x[0-9a-fA-F]*\|\[<[0-9a-f]\+>\]\|\<\d[0-9a-fA-F]*'
+
+syn match   messagesError       contained '\c.*\<\(FATAL\|ERROR\|ERRORS\|FAILED\|FAILURE\).*'
+
+
+hi def link messagesDate        Constant
+hi def link messagesHour        Type
+hi def link messagesHost        Identifier
+hi def link messagesLabel       Operator
+hi def link messagesPID         Constant
+hi def link messagesKernel      Special
+hi def link messagesError       ErrorMsg
+hi def link messagesIP          Constant
+hi def link messagesURL         Underlined
+hi def link messagesText        Normal
+hi def link messagesNumber      Number
+
+let b:current_syntax = "messages"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
--- a/runtime/syntax/mrxvtrc.vim
+++ b/runtime/syntax/mrxvtrc.vim
@@ -1,129 +1,254 @@
 " Created	: Wed 26 Apr 2006 01:20:53 AM CDT
-" Modified	: Thu 27 Apr 2006 02:29:25 PM CDT
+" Modified	: Mon 20 Nov 2006 12:14:16 AM PST
 " Author	: Gautam Iyer <gi1242@users.sourceforge.net>
-" Description	: Syntax file for mrxvtrc
+" Description	: Vim syntax file for mrxvtrc (for mrxvt-0.5.0 and up)
 
 " Quit when a syntax file was already loaded
 if exists("b:current_syntax")
   finish
 endif
 
-" Define options.
-let s:boolOpts = '(highlightTabOnBell|syncTabTitle|hideTabbar|autohideTabbar|bottomTabbar|hideButtons|syncTabIcon|veryBoldFont|maximized|fullscreen|reverseVideo|loginShell|jumpScroll|scrollBar|scrollbarRight|scrollbarFloating|scrollTtyOutputInhibit|scrollTtyKeypress|scrollWithBuffer|transparent|transparentForce|transparentScrollbar|transparentMenubar|transparentTabbar|tabUsePixmap|utmpInhibit|visualBell|mapAlert|meta8|mouseWheelScrollPage|multibyte_cursor|tripleclickwords|showMenu|xft|xftNomFont|xftSlowOutput|xftAntialias|xftHinting|xftAutoHint|xftGlobalAdvance|tabShell|cmdAllTabs|cmdInitTabs|protectSecondary|thai|borderLess|overrideRedirect|holdExit|broadcast|smartResize|smoothResize|pointerBlank|cursorBlink|noSysConfig|disableMacros|linuxHomeEndKey|sessionMgt)'
-
-let s:colorOpts = '(vt\d+.(foreground|background)|background|foreground|ufBackground|textShadow|i?tab(Foreground|Background)|color([0-9]|1[0-5]|BD|UL|RV)|(scroll|trough|highlight|cursor|pointer|border|tint)Color|cursorColor2)'
-
-let s:numOpts = '(vt\d+.saveLines|maxTabWidth|minVisibleTabs|saveLines|scrollbarThickness|xftmSize|xftSize|desktop|externalBorder|internalBorder|lineSpace|pointerBlankDelay|cursorBlinkInterval|initTermNumber|shading|backgroundFade|bgRefreshInterval|fading|opacity|opacityDegree|xftPSize)'
-
-let s:strOpts = '(vt\d+\.(tabTitle|command)|tabTitle|termName|title|clientName|iconName|bellCommand|holdExitText|backspaceKey|deleteKey|printPipe|cutChars|answerbackString|smClientID|geometry|confFileSave|path|boldFont|m?font[1-5]?|xftFont|xftmFont|xftPFont|inputMethod|greektoggle_key|menu|menubarPixmap|vt\d+\.Pixmap|Pixmap|scrollbarPixmap|tabbarPixmap|appIcon|multichar_encoding)'
-
 syn case match
 
-syn match	mrxvtrcComment	contains=@Spell '^\s*!.*$'
-syn match	mrxvtrcComment	'\v^\s*!\s*\w+[.*]\w+.*:.*'
+" Errors
+syn match	mrxvtrcError	contained	'\v\S+'
+
+" Comments
+syn match	mrxvtrcComment	contains=@Spell '^\s*[!#].*$'
+syn match	mrxvtrcComment	'\v^\s*[#!]\s*\w+[.*]\w+.*:.*'
 
 "
-" Generic options (string / color / number / boolean)
+" Options.
 "
-syn match	mrxvtrcOptErr	'\v^\s*\w+[.*]?.{-}(:|$)'
-exec 'syn match	mrxvtrcBoolOpts	nextgroup=mrxvtrcBoolVal,mrxvtrcValErr'
-	    \ '"\v^\w+[.*]'.s:boolOpts.':\s*"'
-exec 'syn match	mrxvtrcNumOpts	nextgroup=mrxvtrcNumVal,mrxvtrcValErr'
-	    \ '"\v^\w+[.*]'.s:numOpts.':\s*"'
-exec 'syn match	mrxvtrcColorOpts	nextgroup=mrxvtrcColorVal'
-	    \ '"\v^\w+[.*]'.s:colorOpts.':\s*"'
-exec 'syn match	mrxvtrcStrOpts	nextgroup=mrxvtrcStrVal,mrxvtrcValErr'
-	    \ '"\v^\w+[.*]'.s:strOpts.':\s*"'
+syn match	mrxvtrcClass	'\v^\s*\w+[.*]'
+	    \ nextgroup=mrxvtrcOptions,mrxvtrcProfile,@mrxvtrcPOpts,mrxvtrcError
 
+" Boolean options
+syn keyword	mrxvtrcOptions	contained nextgroup=mrxvtrcBColon,mrxvtrcError
+				\ highlightTabOnBell syncTabTitle hideTabbar
+				\ autohideTabbar bottomTabbar hideButtons
+				\ syncTabIcon veryBoldFont maximized
+				\ fullscreen reverseVideo loginShell
+				\ jumpScroll scrollBar scrollbarRight
+				\ scrollbarFloating scrollTtyOutputInhibit
+				\ scrollTtyKeypress scrollWithBuffer
+				\ transparentForce transparentScrollbar
+				\ transparentMenubar transparentTabbar
+				\ tabUsePixmap utmpInhibit visualBell mapAlert
+				\ meta8 mouseWheelScrollPage multibyte_cursor
+				\ tripleclickwords showMenu xft xftNomFont
+				\ xftSlowOutput xftAntialias xftHinting
+				\ xftAutoHint xftGlobalAdvance cmdAllTabs
+				\ protectSecondary thai borderLess
+				\ overrideRedirect broadcast
+				\ smartResize smoothResize pointerBlank
+				\ cursorBlink noSysConfig disableMacros
+				\ linuxHomeEndKey sessionMgt
+syn match	mrxvtrcOptions	contained nextgroup=mrxvtrcBColon,mrxvtrcError
+				\ '\v<transparent>'
+syn match	mrxvtrcBColon	contained skipwhite
+				\ nextgroup=mrxvtrcBoolVal,mrxvtrcError ':'
 syn case ignore
-
-syn match	mrxvtrcValErr	contained '\v.+$'
-syn keyword	mrxvtrcBoolVal	contained 0 1 yes no on off true false
-syn match	mrxvtrcStrVal	contained '\v.+$'
-syn match	mrxvtrcColorVal	contained '\v#[0-9a-f]{6}\s*$'
-syn match	mrxvtrcNumVal	contained '\v[+-]?(0[0-7]+|\d+|0x[0-9a-f]+)$'
-
+syn keyword	mrxvtrcBoolVal	contained skipwhite nextgroup=mrxvtrcError
+				\ 0 1 yes no on off true false
 syn case match
 
-"
-" Options with special values
-"
-syn match	mrxvtrcOptions	nextgroup=mrxvtrcSBstyle,mrxvtrcValErr
-				\ '\v^\w+[.*]scrollbarStyle:\s*'
-syn keyword	mrxvtrcSBstyle	contained plain xterm rxvt next sgi
+" Color options
+syn keyword	mrxvtrcOptions	contained nextgroup=mrxvtrcCColon,mrxvtrcError
+				\ ufBackground textShadow tabForeground
+				\ itabForeground tabBackground itabBackground
+				\ scrollColor troughColor highlightColor
+				\ cursorColor cursorColor2 pointerColor
+				\ borderColor tintColor
+syn match	mrxvtrcOptions	contained nextgroup=mrxvtrcCColon,mrxvtrcError
+				\ '\v<color([0-9]|1[0-5]|BD|UL|RV)>'
+syn match	mrxvtrcCColon	contained skipwhite
+				\ nextgroup=mrxvtrcColorVal ':'
+syn match	mrxvtrcColorVal	contained skipwhite nextgroup=mrxvtrcError
+				\ '\v#[0-9a-fA-F]{6}'
+
+" Numeric options
+syn keyword	mrxvtrcOptions	contained nextgroup=mrxvtrcNColon,mrxvtrcError
+				\ maxTabWidth minVisibleTabs
+				\ scrollbarThickness xftmSize xftSize desktop
+				\ externalBorder internalBorder lineSpace
+				\ pointerBlankDelay cursorBlinkInterval
+				\ shading backgroundFade bgRefreshInterval
+				\ fading focusDelay opacity opacityDegree
+				\ xftPSize
+syn match	mrxvtrcNColon	contained skipwhite
+				\ nextgroup=mrxvtrcNumVal,mrxvtrcError ':'
+syn match	mrxvtrcNumVal	contained skipwhite nextgroup=mrxvtrcError
+				\ '\v[+-]?<(0[0-7]+|\d+|0x[0-9a-f]+)>'
 
-syn match	mrxvtrcOptions	nextgroup=mrxvtrcSBalign,mrxvtrcValErr
-				\ '\v^\w+[.*]scrollbarAlign:\s*'
-syn keyword	mrxvtrcSBalign	contained top bottom
+" String options
+syn keyword	mrxvtrcOptions	contained nextgroup=mrxvtrcSColon,mrxvtrcError
+				\ tabTitle termName title clientName iconName
+				\ bellCommand backspaceKey deleteKey
+				\ printPipe cutChars answerbackString
+				\ smClientID geometry path boldFont xftFont
+				\ xftmFont xftPFont inputMethod
+				\ greektoggle_key menu menubarPixmap
+				\ scrollbarPixmap tabbarPixmap appIcon
+				\ multichar_encoding initProfileList
+				\ winTitleFormat
+syn match	mrxvtrcOptions	contained nextgroup=mrxvtrcSColon,mrxvtrcError
+				\ '\v<m?font[1-5]?>'
+syn match	mrxvtrcSColon	contained skipwhite nextgroup=mrxvtrcStrVal ':'
+syn match	mrxvtrcStrVal	contained '\v\S.*'
 
-syn match	mrxvtrcOptions	nextgroup=mrxvtrcTSmode,mrxvtrcValErr
-				\ '\v^\w+[.*]textShadowMode:\s*'
-syn keyword	mrxvtrcTSmode	contained
+" Profile options
+syn cluster	mrxvtrcPOpts	contains=mrxvtrcPSOpts,mrxvtrcPCOpts,mrxvtrcPNOpts
+syn match	mrxvtrcProfile	contained nextgroup=@mrxvtrcPOpts,mrxvtrcError
+				\ '\vprofile\d+\.'
+syn keyword	mrxvtrcPSOpts	contained nextgroup=mrxvtrcSColon,mrxvtrcError
+				\ tabTitle command holdExitText holdExitTitle
+				\ Pixmap workingDirectory titleFormat
+syn keyword	mrxvtrcPCOpts	contained nextgroup=mrxvtrcCColon,mrxvtrcError
+				\ background foreground
+syn keyword	mrxvtrcPNOpts	contained nextgroup=mrxvtrcNColon,mrxvtrcError
+				\ holdExit saveLines
+
+" scrollbarStyle
+syn match	mrxvtrcOptions	contained skipwhite
+				\ nextgroup=mrxvtrcSBstyle,mrxvtrcError
+				\ '\v<scrollbarStyle:'
+syn keyword	mrxvtrcSBstyle	contained skipwhite nextgroup=mrxvtrcError
+				\ plain xterm rxvt next sgi
+
+" scrollbarAlign
+syn match	mrxvtrcOptions	contained skipwhite
+				\ nextgroup=mrxvtrcSBalign,mrxvtrcError
+				\ '\v<scrollbarAlign:'
+syn keyword	mrxvtrcSBalign	contained skipwhite nextgroup=mrxvtrcError
+				\ top bottom
+
+" textShadowMode
+syn match	mrxvtrcOptions	contained skipwhite
+				\ nextgroup=mrxvtrcTSmode,mrxvtrcError
+				\ '\v<textShadowMode:'
+syn keyword	mrxvtrcTSmode	contained skipwhite nextgroup=mrxvtrcError
 				\ none top bottom left right topleft topright
 				\ botleft botright
 
-syn match	mrxvtrcOptions	nextgroup=mrxvtrcGrkKbd,mrxvtrcValErr
-				\ '\v^\w+[.*]greek_keyboard:\s*'
-syn keyword	mrxvtrcGrkKbd	contained iso ibm
-
-syn match	mrxvtrcOptions	nextgroup=mrxvtrcXftWt,mrxvtrcValErr
-				\ '\v^\w+[.*]xftWeight:\s*'
-syn keyword	mrxvtrcXftWt	contained light medium bold
+" greek_keyboard
+syn match	mrxvtrcOptions	contained skipwhite
+				\ nextgroup=mrxvtrcGrkKbd,mrxvtrcError
+				\ '\v<greek_keyboard:'
+syn keyword	mrxvtrcGrkKbd	contained skipwhite nextgroup=mrxvtrcError
+				\ iso ibm
 
-syn match	mrxvtrcOptions	nextgroup=mrxvtrcXftSl,mrxvtrcValErr
-				\ '\v^\w+[.*]xftSlant:\s*'
-syn keyword	mrxvtrcXftSl	contained roman italic oblique
+" xftWeight
+syn match	mrxvtrcOptions	contained skipwhite
+				\ nextgroup=mrxvtrcXftWt,mrxvtrcError
+				\ '\v<(xftWeight|xftBoldWeight):'
+syn keyword	mrxvtrcXftWt	contained skipwhite nextgroup=mrxvtrcError
+				\ light medium demibold bold black
 
-syn match	mrxvtrcOptions	nextgroup=mrxvtrcXftWd,mrxvtrcValErr
-				\ '\v^\w+[.*]xftWidth:\s*'
-syn keyword	mrxvtrcXftWd	contained
+" xftSlant
+syn match	mrxvtrcOptions	contained skipwhite
+				\ nextgroup=mrxvtrcXftSl,mrxvtrcError
+				\ '\v<xftSlant:'
+syn keyword	mrxvtrcXftSl	contained skipwhite nextgroup=mrxvtrcError
+				\ roman italic oblique
+
+" xftWidth
+syn match	mrxvtrcOptions	contained skipwhite
+				\ nextgroup=mrxvtrcXftWd,mrxvtrcError
+				\ '\v<xftWidth:'
+syn keyword	mrxvtrcXftWd	contained skipwhite nextgroup=mrxvtrcError
 				\ ultracondensed ultraexpanded
 				\ condensed expanded normal
 
-syn match	mrxvtrcOptions	nextgroup=mrxvtrcXftHt,mrxvtrcValErr
-				\ '\v^\w+[.*]xftRGBA:\s*'
-syn keyword	mrxvtrcXftHt	contained rgb bgr vrgb vbgr none
+" xftRGBA
+syn match	mrxvtrcOptions	contained skipwhite
+				\ nextgroup=mrxvtrcXftHt,mrxvtrcError
+				\ '\v<xftRGBA:'
+syn keyword	mrxvtrcXftHt	contained skipwhite nextgroup=mrxvtrcError
+				\ rgb bgr vrgb vbgr none
 
-syn match	mrxvtrcOptions	nextgroup=mrxvtrcPedit,mrxvtrcValErr
-				\ '\v^\w+[.*]preeditType:\s*'
-syn keyword	mrxvtrcPedit	contained OverTheSpot OffTheSpot Root
+" preeditType
+syn match	mrxvtrcOptions	contained skipwhite
+				\ nextgroup=mrxvtrcPedit,mrxvtrcError
+				\ '\v<preeditType:'
+syn keyword	mrxvtrcPedit	contained skipwhite nextgroup=mrxvtrcError
+				\ OverTheSpot OffTheSpot Root
 
-syn match	mrxvtrcOptions	nextgroup=mrxvtrcMod,mrxvtrcValErr
-				\ '\v^\w+[.*]modifier:\s*'
-syn keyword	mrxvtrcMod	contained
+" modifier
+syn match	mrxvtrcOptions	contained skipwhite
+				\ nextgroup=mrxvtrcMod,mrxvtrcError
+				\ '\v<modifier:'
+syn keyword	mrxvtrcMod	contained skipwhite nextgroup=mrxvtrcError
 				\ alt meta hyper super mod1 mod2 mod3 mod4 mod5
 
-syn match	mrxvtrcOptions	nextgroup=mrxvtrcSelSty,mrxvtrcValErr
-				\ '\v^\w+[.*]selectStyle:\s*'
-syn keyword	mrxvtrcSelSty	contained old oldword
+" selectStyle
+syn match	mrxvtrcOptions	contained skipwhite
+				\ nextgroup=mrxvtrcSelSty,mrxvtrcError
+				\ '\v<selectStyle:'
+syn keyword	mrxvtrcSelSty	contained skipwhite nextgroup=mrxvtrcError
+				\ old oldword
 
 
 "
 " Macros
 "
-syn match	mrxvtrcOptions	nextgroup=mrxvtrcMacro,mrxvtrcValErr
-	    \ '\v\c^\w+[.*]macro.(primary\+)?((ctrl|alt|meta|shift)\+)*\w+:\s*'
-syn keyword	mrxvtrcMacro	contained nextgroup=mrxvtrcMacroArg
-				\ Dummy Esc Str NewTab Close GotoTab MoveTab
-				\ Scroll Copy Paste ToggleSubwin ResizeFont
-				\ ToggleVeryBold ToggleTransparency
-				\ ToggleBroadcast ToggleHold SetTitle
-				\ PrintScreen SaveConfig ToggleMacros
-syn match	mrxvtrcMacroArg	contained '.\+$'
+syn keyword	mrxvtrcOptions	contained nextgroup=mrxvtrcKey,mrxvtrcError
+				\ macro
+syn case ignore
+syn match	mrxvtrcKey	contained skipwhite
+			    \ nextgroup=mrxvtrcMacro,mrxvtrcError
+			    \ '\v\.((primary|add|ctrl|alt|meta|shift)\+)*\w+:'
+syn case match
+
+" Macros without arguments
+syn keyword	mrxvtrcMacro	contained skipwhite nextgroup=mrxvtrcError
+				\ Dummy Copy Paste ToggleVeryBold
+				\ ToggleTransparency ToggleBroadcast
+				\ ToggleHold SetTitle ToggleMacros
+				\ ToggleFullscreen
+
+" Macros with a string argument
+syn keyword	mrxvtrcMacro	contained skipwhite nextgroup=mrxvtrcStrVal
+				\ Esc Str Exec Scroll PrintScreen SaveConfig
 
+" Macros with a numeric argument
+syn keyword	mrxvtrcMacro	contained skipwhite
+				\ nextgroup=mrxvtrcNumVal,mrxvtrcError
+				\ Close GotoTab MoveTab ResizeFont
 
-unlet s:strOpts s:boolOpts s:colorOpts s:numOpts
+" NewTab macro
+syn keyword	mrxvtrcMacro	contained skipwhite
+				\ nextgroup=mrxvtrcTitle,mrxvtrcShell,mrxvtrcCmd
+				\ NewTab
+syn region	mrxvtrcTitle	contained oneline skipwhite
+				\ nextgroup=mrxvtrcShell,mrxvtrcCmd
+				\ start='"' end='"'
+syn match	mrxvtrcShell	contained nextgroup=mrxvtrcCmd '!' 
+syn match	mrxvtrcCmd	contained '\v[^!" \t].*'
+
+" ToggleSubwin macro
+syn keyword	mrxvtrcMacro	contained skipwhite
+				\ nextgroup=mrxvtrcSubwin,mrxvtrcError
+				\ ToggleSubwin
+syn match	mrxvtrcSubwin	contained skipwhite nextgroup=mrxvtrcError
+				\ '\v[-+]?[bmst]>'
 
 "
 " Highlighting groups
 "
+hi def link mrxvtrcError	Error
 hi def link mrxvtrcComment	Comment
 
-hi def link mrxvtrcBoolOpts	Statement
-hi def link mrxvtrcColorOpts	mrxvtrcBoolOpts
-hi def link mrxvtrcNumOpts	mrxvtrcBoolOpts
-hi def link mrxvtrcStrOpts	mrxvtrcBoolOpts
-hi def link mrxvtrcOptions	mrxvtrcBoolOpts
+hi def link mrxvtrcClass	Statement
+hi def link mrxvtrcOptions	mrxvtrcClass
+hi def link mrxvtrcBColon	mrxvtrcClass
+hi def link mrxvtrcCColon	mrxvtrcClass
+hi def link mrxvtrcNColon	mrxvtrcClass
+hi def link mrxvtrcSColon	mrxvtrcClass
+hi def link mrxvtrcProfile	mrxvtrcClass
+hi def link mrxvtrcPSOpts	mrxvtrcClass
+hi def link mrxvtrcPCOpts	mrxvtrcClass
+hi def link mrxvtrcPNOpts	mrxvtrcClass
 
 hi def link mrxvtrcBoolVal	Boolean
 hi def link mrxvtrcStrVal	String
@@ -143,9 +268,10 @@ hi def link mrxvtrcMod		mrxvtrcStrVal
 hi def link mrxvtrcSelSty	mrxvtrcStrVal
 
 hi def link mrxvtrcMacro	Identifier
-hi def link mrxvtrcMacroArg	String
-
-hi def link mrxvtrcOptErr	Error
-hi def link mrxvtrcValErr	Error
+hi def link mrxvtrcKey		mrxvtrcClass
+hi def link mrxvtrcTitle	mrxvtrcStrVal
+hi def link mrxvtrcShell	Special
+hi def link mrxvtrcCmd		PreProc
+hi def link mrxvtrcSubwin	mrxvtrcStrVal
 
 let b:current_syntax = "mrxvtrc"
--- a/runtime/syntax/pod.vim
+++ b/runtime/syntax/pod.vim
@@ -1,7 +1,7 @@
 " Vim syntax file
 " Language:	Perl POD format
 " Maintainer:	Scott Bigham <dsb@killerbunnies.org>
-" Last Change:	2005 Jul 05
+" Last Change:	2007 Jan 21
 
 " To add embedded POD documentation highlighting to your syntax file, add
 " the commands:
@@ -53,6 +53,7 @@ syn match podSpecial	"[$@%]\I\i*\(::\I\i
 
 " Special formatting sequences
 syn region podFormat	start="[IBSCLFX]<[^<]"me=e-1 end=">" oneline contains=podFormat,@NoSpell
+syn region podFormat	start="[IBSCLFX]<<\s" end="\s>>" oneline contains=podFormat,@NoSpell
 syn match  podFormat	"Z<>"
 syn match  podFormat	"E<\(\d\+\|\I\i*\)>" contains=podEscape,podEscape2,@NoSpell
 syn match  podEscape	"\I\i*>"me=e-1 contained contains=@NoSpell
--- a/runtime/syntax/python.vim
+++ b/runtime/syntax/python.vim
@@ -1,7 +1,7 @@
 " Vim syntax file
 " Language:	Python
 " Maintainer:	Neil Schemenauer <nas@python.ca>
-" Updated:	2002-10-18
+" Updated:	2006-10-15
 "		Added Python 2.4 features 2006 May 4 (Dmitry Vasiliev)
 "
 " Options to control Python syntax highlighting:
@@ -40,7 +40,7 @@ endif
 syn keyword pythonStatement	break continue del
 syn keyword pythonStatement	except exec finally
 syn keyword pythonStatement	pass print raise
-syn keyword pythonStatement	return try
+syn keyword pythonStatement	return try with
 syn keyword pythonStatement	global assert
 syn keyword pythonStatement	lambda yield
 syn keyword pythonStatement	def class nextgroup=pythonFunction skipwhite
@@ -50,21 +50,21 @@ syn keyword pythonConditional	if elif el
 syn keyword pythonOperator	and in is not or
 " AS will be a keyword in Python 3
 syn keyword pythonPreCondit	import from as
-syn match   pythonComment	"#.*$" contains=pythonTodo
+syn match   pythonComment	"#.*$" contains=pythonTodo,@Spell
 syn keyword pythonTodo		TODO FIXME XXX contained
 
 " Decorators (new in Python 2.4)
 syn match   pythonDecorator	"@" display nextgroup=pythonFunction skipwhite
 
 " strings
-syn region pythonString		matchgroup=Normal start=+[uU]\='+ end=+'+ skip=+\\\\\|\\'+ contains=pythonEscape
-syn region pythonString		matchgroup=Normal start=+[uU]\="+ end=+"+ skip=+\\\\\|\\"+ contains=pythonEscape
-syn region pythonString		matchgroup=Normal start=+[uU]\="""+ end=+"""+ contains=pythonEscape
-syn region pythonString		matchgroup=Normal start=+[uU]\='''+ end=+'''+ contains=pythonEscape
-syn region pythonRawString	matchgroup=Normal start=+[uU]\=[rR]'+ end=+'+ skip=+\\\\\|\\'+
-syn region pythonRawString	matchgroup=Normal start=+[uU]\=[rR]"+ end=+"+ skip=+\\\\\|\\"+
-syn region pythonRawString	matchgroup=Normal start=+[uU]\=[rR]"""+ end=+"""+
-syn region pythonRawString	matchgroup=Normal start=+[uU]\=[rR]'''+ end=+'''+
+syn region pythonString		matchgroup=Normal start=+[uU]\='+ end=+'+ skip=+\\\\\|\\'+ contains=pythonEscape,@Spell
+syn region pythonString		matchgroup=Normal start=+[uU]\="+ end=+"+ skip=+\\\\\|\\"+ contains=pythonEscape,@Spell
+syn region pythonString		matchgroup=Normal start=+[uU]\="""+ end=+"""+ contains=pythonEscape,@Spell
+syn region pythonString		matchgroup=Normal start=+[uU]\='''+ end=+'''+ contains=pythonEscape,@Spell
+syn region pythonRawString	matchgroup=Normal start=+[uU]\=[rR]'+ end=+'+ skip=+\\\\\|\\'+ contains=@Spell
+syn region pythonRawString	matchgroup=Normal start=+[uU]\=[rR]"+ end=+"+ skip=+\\\\\|\\"+ contains=@Spell
+syn region pythonRawString	matchgroup=Normal start=+[uU]\=[rR]"""+ end=+"""+ contains=@Spell
+syn region pythonRawString	matchgroup=Normal start=+[uU]\=[rR]'''+ end=+'''+ contains=@Spell
 syn match  pythonEscape		+\\[abfnrtv'"\\]+ contained
 syn match  pythonEscape		"\\\o\{1,3}" contained
 syn match  pythonEscape		"\\x\x\{2}" contained
--- a/runtime/syntax/tcl.vim
+++ b/runtime/syntax/tcl.vim
@@ -1,10 +1,11 @@
 " Vim syntax file
 " Language:	TCL/TK
-" Maintainer:	Dean Copsey <copsey@cs.ucdavis.edu>
+" Maintainer:	Brett Cannon <brett@python.org>
+" 		(previously Dean Copsey <copsey@cs.ucdavis.edu>)
 "		(previously Matt Neumann <mattneu@purpleturtle.com>)
 "		(previously Allan Kelly <allan@fruitloaf.co.uk>)
 " Original:	Robin Becker <robin@jessikat.demon.co.uk>
-" Last Change:	2004 May 16
+" Last Change:	2006 Nov 17
 "
 " Keywords TODO: format clock click anchor
 
@@ -17,9 +18,16 @@ elseif exists("b:current_syntax")
 endif
 
 " A bunch of useful keywords
-syn keyword tclStatement	proc global return lindex
-syn keyword tclStatement	llength lappend lreplace lrange list concat incr
-syn keyword tclStatement	upvar set
+syn keyword tclStatement  tell socket subst open eof pwd glob list exec pid
+syn keyword tclStatement  auto_load_index time unknown eval lrange fblocked
+syn keyword tclStatement  lsearch auto_import gets lappend proc variable llength
+syn keyword tclStatement  auto_execok return linsert error catch clock info
+syn keyword tclStatement  split array fconfigure concat join lreplace source
+syn keyword tclStatement  fcopy global auto_qualify update close cd auto_load
+syn keyword tclStatement  file append format read package set binary namespace
+syn keyword tclStatement  scan trace seek flush after vwait uplevel lset rename
+syn keyword tclStatement  fileevent regexp upvar unset encoding expr load regsub
+syn keyword tclStatement interp exit puts incr lindex lsort tclLog string
 syn keyword tclLabel		case default
 syn keyword tclConditional	if then else elseif switch
 syn keyword tclRepeat		while for foreach break continue
--- a/runtime/syntax/zsh.vim
+++ b/runtime/syntax/zsh.vim
@@ -1,118 +1,194 @@
 " Vim syntax file
-" Language:	Z shell (zsh)
-" Maintainer:	Felix von Leitner <leitner@math.fu-berlin.de>
-" Heavily based on sh.vim by Lennart Schultz
-" Last Change:	2003 May 11
+" Language:         Zsh shell script
+" Maintainer:       Nikolai Weibull <now@bitwi.se>
+" Latest Revision:  2006-08-06
 
-" For version 5.x: Clear all syntax items
-" For version 6.x: Quit when a syntax file was already loaded
-if version < 600
-  syntax clear
-elseif exists("b:current_syntax")
+if exists("b:current_syntax")
   finish
 endif
 
-" String and Character contstants
-" Highlight special characters (those which have a backslash) differently
-syn match   zshSpecial	"\\\d\d\d\|\\[abcfnrtv\\']"
-syn region	zshSinglequote	start=+'+ skip=+\\'+ end=+'+
-" A bunch of useful zsh keywords
-" syn keyword	zshFunction	function
-syn keyword	zshStatement	bg break cd chdir continue echo eval exec
-syn keyword	zshStatement	exit export fg getopts hash jobs kill
-syn keyword	zshStatement	pwd read readonly return set zshift function
-syn keyword	zshStatement	stop suspend test times trap type ulimit
-syn keyword	zshStatement	umask unset wait setopt compctl source
-syn keyword	zshStatement	whence disown shift which unhash unalias
-syn keyword	zshStatement	alias functions unfunction getln disable
-syn keyword	zshStatement	vared getopt enable unsetopt autoload
-syn keyword	zshStatement	bindkey pushln command limit unlimit fc
-syn keyword	zshStatement	print builtin noglob sched r time
-syn keyword	zshStatement	typeset declare local integer
+let s:cpo_save = &cpo
+set cpo&vim
+
+setlocal iskeyword=@,48-57,_,-
+
+syn keyword zshTodo             contained TODO FIXME XXX NOTE
+
+syn region  zshComment          display oneline start='\%(^\|\s\)#' end='$'
+                                \ contains=zshTodo,@Spell
+
+syn match   zshPreProc          '^\%1l#\%(!\|compdef\|autoload\).*$'
+
+syn match   zshQuoted           '\\.'
+syn region  zshString           matchgroup=zshStringDelimiter start=+"+ end=+"+
+                                \ contains=zshQuoted,@zshDerefs,@zshSubst
+syn region  zshString           matchgroup=zshStringDelimiter start=+'+ end=+'+
+" XXX: This should probably be more precise, but Zsh seems a bit confused about it itself
+syn region  zshPOSIXString      matchgroup=zshStringDelimiter start=+\$'+
+                                \ end=+'+ contains=zshQuoted
+syn match   zshJobSpec          '%\(\d\+\|?\=\w\+\|[%+-]\)'
+
+syn keyword zshPrecommand       noglob nocorrect exec command builtin - time
+
+syn keyword zshDelimiter        do done
+
+syn keyword zshConditional      if then elif else fi case in esac select
+
+syn keyword zshRepeat           for while until repeat foreach
+
+syn keyword zshException        always
+
+syn keyword zshKeyword          function nextgroup=zshKSHFunction skipwhite
+
+syn match   zshKSHFunction      contained '\k\+'
+syn match   zshFunction         '^\s*\k\+\ze\s*()'
+
+syn match   zshOperator         '||\|&&\|;\|&!\='
 
-syn keyword	zshConditional	if else esac case then elif fi in
-syn keyword	zshRepeat	while for do done
+syn match   zshRedir            '\d\=\(<\|<>\|<<<\|<&\s*[0-9p-]\=\)'
+syn match   zshRedir            '\d\=\(>\|>>\|>&\s*[0-9p-]\=\|&>\|>>&\|&>>\)[|!]\='
+syn match   zshRedir            '|&\='
+
+syn region  zshHereDoc          matchgroup=zshRedir start='<<\s*\z(\S*\)'
+                                \ end='^\z1\>' contains=@zshSubst
+syn region  zshHereDoc          matchgroup=zshRedir start='<<-\s*\z(\S*\)'
+                                \ end='^\s*\z1\>' contains=@zshSubst
+syn region  zshHereDoc          matchgroup=zshRedir
+                                \ start=+<<\s*\(["']\)\z(\S*\)\1+  end='^\z1\>'
+syn region  zshHereDoc          matchgroup=zshRedir
+                                \ start=+<<-\s*\(["']\)\z(\S*\)\1+
+                                \ end='^\s*\z1\>'
+
+syn match   zshVariable         '\<\h\w*\ze+\=='
+" XXX: how safe is this?
+syn region  zshVariable         oneline
+                                \ start='\$\@<!\<\h\w*\[' end='\]\ze+\=='
+                                \ contains=@zshSubst
+
+syn cluster zshDerefs           contains=zshShortDeref,zshLongDeref,zshDeref
 
-" Following is worth to notice: command substitution, file redirection and functions (so these features turns red)
-syn match	zshFunctionName	"\h\w*\s*()"
-syn region	zshCommandSub	start=+`+ skip=+\\`+ end=+`+
-" contains=ALLBUT,zshFunction
-syn match	zshRedir	"\d\=\(<\|<<\|>\|>>\)\(|\|&\d\)\="
+if !exists("g:zsh_syntax_variables")
+  let s:zsh_syntax_variables = 'all'
+else
+  let s:zsh_syntax_variables = g:zsh_syntax_variables
+endif
+
+if s:zsh_syntax_variables =~ 'short\|all'
+  syn match zshShortDeref       '\$[!#$*@?_-]\w\@!'
+  syn match zshShortDeref       '\$[=^~]*[#+]*\d\+\>'
+endif
 
-syn keyword	zshTodo contained TODO
+if s:zsh_syntax_variables =~ 'long\|all'
+  syn match zshLongDeref        '\$\%(ARGC\|argv\|status\|pipestatus\|CPUTYPE\|EGID\|EUID\|ERRNO\|GID\|HOST\|LINENO\|LOGNAME\)'
+  syn match zshLongDeref        '\$\%(MACHTYPE\|OLDPWD OPTARG\|OPTIND\|OSTYPE\|PPID\|PWD\|RANDOM\|SECONDS\|SHLVL\|signals\)'
+  syn match zshLongDeref        '\$\%(TRY_BLOCK_ERROR\|TTY\|TTYIDLE\|UID\|USERNAME\|VENDOR\|ZSH_NAME\|ZSH_VERSION\|REPLY\|reply\|TERM\)'
+endif
+
+if s:zsh_syntax_variables =~ 'all'
+  syn match zshDeref            '\$[=^~]*[#+]*\h\w*\>'
+else
+  syn match zshDeref            transparent '\$[=^~]*[#+]*\h\w*\>'
+endif
 
-syn keyword	zshShellVariables	USER LOGNAME HOME PATH CDPATH SHELL
-syn keyword	zshShellVariables	LC_TYPE LC_MESSAGE MAIL MAILCHECK
-syn keyword	zshShellVariables	PS1 PS2 IFS EGID EUID ERRNO GID UID
-syn keyword	zshShellVariables	HOST LINENO MACHTYPE OLDPWD OPTARG
-syn keyword	zshShellVariables	OPTIND OSTYPE PPID PWD RANDOM SECONDS
-syn keyword	zshShellVariables	SHLVL TTY signals TTYIDLE USERNAME
-syn keyword	zshShellVariables	VENDOR ZSH_NAME ZSH_VERSION ARGV0
-syn keyword	zshShellVariables	BAUD COLUMNS cdpath DIRSTACKSIZE
-syn keyword	zshShellVariables	FCEDIT fignore fpath histchars HISTCHARS
-syn keyword	zshShellVariables	HISTFILE HISTSIZE KEYTIMEOUT LANG
-syn keyword	zshShellVariables	LC_ALL LC_COLLATE LC_CTYPE LC_MESSAGES
-syn keyword	zshShellVariables	LC_TIME LINES LISTMAX LOGCHECK mailpath
-syn keyword	zshShellVariables	MAILPATH MANPATH manpath module_path
-syn keyword	zshShellVariables	MODULE_PATH NULLCMD path POSTEDIT
-syn keyword	zshShellVariables	PS3 PS4 PROMPT PROMPT2 PROMPT3 PROMPT4
-syn keyword	zshShellVariables	psvar PSVAR prompt READNULLCMD
-syn keyword	zshShellVariables	REPORTTIME RPROMPT RPS1 SAVEHIST
-syn keyword	zshShellVariables	SPROMPT STTY TIMEFMT TMOUT TMPPREFIX
-syn keyword	zshShellVariables	watch WATCH WATCHFMT WORDCHARS ZDOTDIR
-syn match	zshSpecialShellVar	"\$[-#@*$?!0-9]"
-syn keyword	zshSetVariables		ignoreeof noclobber
-syn region	zshDerefOpr	start="\${" end="}" contains=zshShellVariables
-syn match	zshDerefIdentifier	"\$[a-zA-Z_][a-zA-Z0-9_]*\>"
-syn match	zshOperator		"[][}{&;|)(]"
+syn match   zshCommands         '\%(^\|\s\)[.:]\ze\s'
+syn keyword zshCommands         alias autoload bg bindkey break bye cap cd
+                                \ chdir clone comparguments compcall compctl
+                                \ compdescribe compfiles compgroups compquote
+                                \ comptags comptry compvalues continue dirs
+                                \ disable disown echo echotc echoti emulate
+                                \ enable eval exec exit export false fc fg
+                                \ functions getcap getln getopts hash history
+                                \ jobs kill let limit log logout popd print
+                                \ printf pushd pushln pwd r read readonly
+                                \ rehash return sched set setcap setopt shift
+                                \ source stat suspend test times trap true
+                                \ ttyctl type ulimit umask unalias unfunction
+                                \ unhash unlimit unset unsetopt vared wait
+                                \ whence where which zcompile zformat zftp zle
+                                \ zmodload zparseopts zprof zpty zregexparse
+                                \ zsocket zstyle ztcp
+
+syn keyword zshTypes            float integer local typeset declare
 
-
+" XXX: this may be too much
+" syn match   zshSwitches         '\s\zs--\=[a-zA-Z0-9-]\+'
 
-syn match  zshNumber		"-\=\<\d\+\>"
-syn match  zshComment	"#.*$" contains=zshNumber,zshTodo
+syn match   zshNumber           '[+-]\=\<\d\+\>'
+syn match   zshNumber           '[+-]\=\<0x\x\+\>'
+syn match   zshNumber           '[+-]\=\<0\o\+\>'
+syn match   zshNumber           '[+-]\=\d\+#[-+]\=\w\+\>'
+syn match   zshNumber           '[+-]\=\d\+\.\d\+\>'
 
-
-syn match zshTestOpr	"-\<[oeaznlg][tfqet]\=\>\|!\==\|-\<[b-gkLprsStuwjxOG]\>"
-"syn region zshTest	      start="\[" skip="\\$" end="\]" contains=zshString,zshTestOpr,zshDerefIdentifier,zshDerefOpr
-syn region  zshString	start=+"+  skip=+\\"+  end=+"+  contains=zshSpecial,zshOperator,zshDerefIdentifier,zshDerefOpr,zshSpecialShellVar,zshSinglequote,zshCommandSub
+syn cluster zshSubst            contains=zshSubst,zshOldSubst,zshMathSubst
+syn region  zshSubst            matchgroup=zshSubstDelim transparent
+                                \ start='\$(' skip='\\)' end=')' contains=TOP
+syn region  zshParentheses      transparent start='(' skip='\\)' end=')'
+syn region  zshMathSubst        matchgroup=zshSubstDelim transparent
+                                \ start='\$((' skip='\\)'
+                                \ matchgroup=zshSubstDelim end='))'
+                                \ contains=zshParentheses,@zshSubst,zshNumber,
+                                \ @zshDerefs,zshString
+syn region  zshBrackets         contained transparent start='{' skip='\\}'
+                                \ end='}'
+syn region  zshSubst            matchgroup=zshSubstDelim start='\${' skip='\\}'
+                                \ end='}' contains=@zshSubst,zshBrackets,zshQuoted
+syn region  zshOldSubst         matchgroup=zshSubstDelim start=+`+ skip=+\\`+
+                                \ end=+`+ contains=TOP,zshOldSubst
 
-" Define the default highlighting.
-" For version 5.7 and earlier: only when not done already
-" For version 5.8 and later: only when an item doesn't have highlighting yet
-if version >= 508 || !exists("did_zsh_syntax_inits")
-  if version < 508
-    let did_zsh_syntax_inits = 1
-    command -nargs=+ HiLink hi link <args>
-  else
-    command -nargs=+ HiLink hi def link <args>
-  endif
-
-  HiLink zshSinglequote		zshString
-  HiLink zshConditional		zshStatement
-  HiLink zshRepeat		zshStatement
-  HiLink zshFunctionName	zshFunction
-  HiLink zshCommandSub		zshOperator
-  HiLink zshRedir		zshOperator
-  HiLink zshSetVariables	zshShellVariables
-  HiLink zshSpecialShellVar	zshShellVariables
-  HiLink zshTestOpr		zshOperator
-  HiLink zshDerefOpr		zshSpecial
-  HiLink zshDerefIdentifier	zshShellVariables
-  HiLink zshOperator		Operator
-  HiLink zshStatement		Statement
-  HiLink zshNumber		Number
-  HiLink zshString		String
-  HiLink zshComment		Comment
-  HiLink zshSpecial		Special
-  HiLink zshTodo		Todo
-  HiLink zshShellVariables	Special
-"  hi zshOperator		term=underline ctermfg=6 guifg=Purple gui=bold
-"  hi zshShellVariables	term=underline ctermfg=2 guifg=SeaGreen gui=bold
-"  hi zshFunction		term=bold ctermbg=1 guifg=Red
-
-  delcommand HiLink
+hi def link zshTodo             Todo
+hi def link zshComment          Comment
+hi def link zshPreProc          PreProc
+hi def link zshQuoted           SpecialChar
+hi def link zshString           String
+hi def link zshStringDelimiter  zshString
+hi def link zshPOSIXString      zshString
+hi def link zshJobSpec          Special
+hi def link zshPrecommand       Special
+hi def link zshDelimiter        Keyword
+hi def link zshConditional      Conditional
+hi def link zshException        Exception
+hi def link zshRepeat           Repeat
+hi def link zshKeyword          Keyword
+hi def link zshFunction         None
+hi def link zshKSHFunction      zshFunction
+hi def link zshHereDoc          String
+if 0
+  hi def link zshOperator         Operator
+else
+  hi def link zshOperator         None
 endif
+if 1
+  hi def link zshRedir            Operator
+else
+  hi def link zshRedir            None
+endif
+hi def link zshVariable         None
+hi def link zshDereferencing    PreProc
+if s:zsh_syntax_variables =~ 'short\|all'
+  hi def link zshShortDeref     zshDereferencing
+else
+  hi def link zshShortDeref     None
+endif
+if s:zsh_syntax_variables =~ 'long\|all'
+  hi def link zshLongDeref      zshDereferencing
+else
+  hi def link zshLongDeref      None
+endif
+if s:zsh_syntax_variables =~ 'all'
+  hi def link zshDeref          zshDereferencing
+else
+  hi def link zshDeref          None
+endif
+hi def link zshCommands         Keyword
+hi def link zshTypes            Type
+hi def link zshSwitches         Special
+hi def link zshNumber           Number
+hi def link zshSubst            PreProc
+hi def link zshMathSubst        zshSubst
+hi def link zshOldSubst         zshSubst
+hi def link zshSubstDelim       zshSubst
 
 let b:current_syntax = "zsh"
 
-" vim: ts=8
+let &cpo = s:cpo_save
+unlet s:cpo_save
--- a/runtime/tutor/tutor.de
+++ b/runtime/tutor/tutor.de
@@ -1,84 +1,77 @@
 ===============================================================================
-=    W i l l k o m m e n   z u m   V I M   T u t o r    -    Version 1.5D     =
+=      W i l l k o m m e n   im   V I M   T u t o r    -    Version 1.7D      =
 ===============================================================================
 
    Vim ist ein sehr mächtiger Editor, der viele Befehle bereitstellt; zu viele,
    um alle in einem Tutor wie diesem zu erklären.  Dieser Tutor ist so
-   gestaltet, um genug Befehle vorzustellen, so dass Du die Fähigkeit erlangst,
+   gestaltet, um genug Befehle vorzustellen, dass Du die Fähigkeit erlangst,
    Vim mit Leichtigkeit als einen Allzweck-Editor zu benutzen.
-
    Die Zeit für das Durcharbeiten dieses Tutors beträgt ca. 25-30 Minuten,
    abhängig davon, wie viel Zeit Du mit Experimentieren verbringst.
+
+   ACHTUNG:
    Die in den Lektionen angewendeten Kommandos werden den Text modifizieren.
-   Erstelle eine Kopie dieser Datei, in der Du üben willst (falls Du
-   "vimtutor.bat" aufgerufen hast, ist dies bereits eine Kopie).
+   Erstelle eine Kopie dieser Datei, in der Du üben willst (falls Du "vimtutor"
+   aufgerufen hast, ist dies bereits eine Kopie).
 
-   Es ist wichtig, sich zu vergegenwärtigen, dass dieser Tutor angelegt ist, um
-   über das Anwenden zu lehren. Das bedeutet, dass Du die Befehle ausführen
-   musst, um sie richtig zu lernen. Wenn Du nur den Text liest, vergisst Du die
-   Befehle!
+   Es ist wichtig, sich zu vergegenwärtigen, dass dieser Tutor für das Anwenden
+   konzipiert ist. Das bedeutet, dass Du die Befehle ausführen musst, um sie
+   richtig zu lernen. Wenn Du nur den Text liest, vergisst Du die Befehle!
 
-   Jetzt stelle sicher, dass Deine Umstelltaste NICHT gedrückt ist, und
-   betätige die   j   Taste genügend Male, um den Cursor nach unten zu bewegen,
-   so dass Lektion 1.1 den Bildschirm vollkommen ausfüllt.
+   Jetzt stelle sicher, dass Deine Umstelltaste NICHT gedrückt ist und betätige
+   die   j   Taste genügend Male, um den Cursor nach unten zu bewegen, so dass
+   Lektion 1.1 den Bildschirm vollkommen ausfüllt.
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 			Lektion 1.1: BEWEGEN DES CURSORS
 
-
   ** Um den Cursor zu bewegen, drücke die h,j,k,l Tasten wie unten gezeigt. **
-
 	     ^		 Hilfestellung:
 	     k		 Die h Taste befindet sich links und bewegt nach links.
        < h	 l >	 Die l Taste liegt rechts und bewegt nach rechts.
 	     j		 Die j Taste ähnelt einem Pfeil nach unten.
 	     v
-  1. Bewege den Cursor auf dem Bildschirm herum, bis Du Dich sicher fühlst.
+  1. Bewege den Cursor auf dem Bildschirm umher, bis Du Dich sicher fühlst.
 
   2. Halte die Nach-Unten-Taste (j) gedrückt, bis sie sich wiederholt.
----> Jetzt weißt Du, wie Du Dich zur nächsten Lektion bewegen kannst.
+     Jetzt weißt Du, wie Du Dich zur nächsten Lektion bewegen kannst.
 
   3. Benutze die Nach-Unten-Taste, um Dich zu Lektion 1.2 zu bewegen.
 
 Bemerkung: Immer, wenn Du Dir unsicher bist über das, was Du getippt hast,
-	   drücke <ESC> , um Dich in den Normal-Modus zu begeben.
+	   drücke <ESC> , um Dich in den Normalmodus zu begeben.
 	   Dann gib das gewünschte Kommando noch einmal ein.
 
 Bemerkung: Die Cursor-Tasten sollten ebenfalls funktionieren.  Aber wenn Du
 	   hjkl benutzt, wirst Du in der Lage sein, Dich sehr viel schneller
-	   umherzubewegen, wenn Du Dich erst einmal daran gewöhnt hast.
-
-
+	   umherzubewegen, wenn Du Dich einmal daran gewöhnt hast. Wirklich!
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-		   Lektion 1.2: STARTEN UND VERLASSEN VON VIM
+			    Lektion 1.2: VIM BEENDEN
 
 
   !! ACHTUNG: Bevor Du einen der unten aufgeführten Schritte ausführst, lies
      diese gesamte Lektion!!
 
-  1. Drücke die <ESC> Taste (um sicherzustellen, dass Du im Normal-Modus bist).
-
-  2. Tippe:			:q! <ENTER>.
+  1. Drücke die <ESC> Taste (um sicherzustellen, dass Du im Normalmodus bist).
 
----> Dies beendet den Editor OHNE jedwelche Änderungen, die Du gemacht hast.
-     Wenn Du die Änderungen speichern und beenden willst, tippe:
-				:wq  <ENTER>
+  2. Tippe:	:q! <ENTER>.
+     Dies beendet den Editor und VERWIRFT alle Änderungen, die Du gemacht hast.
+
+  3. Wenn Du die Eingabeaufforderung siehst, gib das Kommando ein, das Dich zu
+     diesem Tutor geführt hat. Dies wäre:	vimtutor <ENTER>
 
-  3. Wenn Du die Eingabeaufforderung siehst, tippe das Kommando, das Dich zu
-     diesem Tutor geführt hat. Das könnte sein: vimtutor <ENTER>
-     Im Normalfall würdest Du eingeben			Vim tutor <ENTER>
-
----> 'Vim' ist der Aufruf des Editors, 'tutor' ist die zu editierende Datei.
+  4. Wenn Du Dir diese Schritte eingeprägt hast und Du Dich sicher fühlst,
+     führe Schritte 1 bis 3 aus, um den Editor zu verlassen und wieder
+     hineinzugelangen.
 
-  4. Wenn Du Dir diese Schritte eingeprägt hast und Du Dich sicher genug fühlst,
-     führe Schritte 1 bis 3 aus, um den Editor zu verlassen und wieder
-     hineinzugelangen. Dann bewege den Cursor nach unten zur Lektion 1.3.
+Bemerkung:  :q! <ENTER>  verwirft alle Änderungen, die Du gemacht hast. In
+     einigen Lektionen lernst Du , die Änderungen in einer Datei zu speichern.
 
-
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+  5. Bewege den Cursor abwärts zu Lektion 1.3.
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 		     Lektion 1.3: TEXT EDITIEREN - LÖSCHEN
 
 
- ** Im Normal-Modus, drücke  x  um das Zeichen unter dem Cursor zu löschen. **
+	 ** Drücke  x  um das Zeichen unter dem Cursor zu löschen. **
 
   1. Bewege den Cursor zu der mit ---> markierten Zeile unten.
 
@@ -101,89 +94,130 @@ Anmerkung: Während Du durch diesen Tutor gehst, versuche nicht, auswendig zu
 		     Lektion 1.4: TEXT EDITIEREN - EINFÜGEN
 
 
-     ** Während Du im Normal-Modus bist, drücke  i  , um Text einzufügen. **
+		    **  Drücke  i  , um Text einzufügen. **
 
-  1.Bewege den Cursor zu der mit ---> markierten Zeile unten.
+  1. Bewege den Cursor zur ersten unten stehenden mit ---> markierten Zeile.
 
   2. Um die erste Zeile mit der zweiten gleichzumachen, bewege den Cursor auf
      das erste Zeichen NACH der Stelle, wo der Text eingefügt werden soll.
 
-  3. Drücke  i  und gib die notwendige Ergänzung ein.
+  3. Drücke  i  und gib die notwendigen Ergänzungen ein.
 
-  4. Wenn jeweils ein Fehler beseitigt ist, drücke <ESC> , um zum Normal-Modus
+  4. Wenn jeweils ein Fehler beseitigt ist, drücke <ESC> , um zum Normalmodus
      zurückzukehren.
      Wiederhole die Schritte 2 bis 4, um den Satz zu korrigieren.
 
 ---> In dieser ft etwas .
 ---> In dieser Zeile fehlt etwas Text.
 
-  5. Wenn Du Dich mit dem Einfügen von Text sicher fühlst, bewege den Cursor zur
-     untenstehenden Zusammenfassung.
+  5. Wenn Du Dich mit dem Einfügen von Text sicher fühlst, gehe zu Lektion 1.5.
 
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-			   ZUSAMMENFASSUNG VON LEKTION 1
+		     Lektion 1.5: TEXT EDITIEREN - ANFÜGEN
 
 
-  1. Der Cursor wird bewegt, indem man entweder die Pfeiltasten oder die
-     hjkl Tasten benutzt.
+		     ** Drücke  A  , um Text anzufügen. **
+
+  1. Bewege den Cursor zur ersten unten stehenden mit ---> markierten Zeile.
+     Es ist gleichgültig, auf welchem Zeichen der Zeile der Cursor steht.
+
+  2. Drücke  A  und gib die nötigen Ergänzungen ein.
+
+  3. Wenn das Anfügen abgeschlossen ist, drücke <ESC>, um in den Normalmodus
+     zurückzukehren.
+
+  4. Bewege den Cursor zur zweiten mit ---> markierten Zeile und wiederhole
+     die Schritte 2 und 3, um den Satz zu korrigieren.
+
+---> In dieser Zeile feh
+     In dieser Zeile fehlt etwas Text.
+---> Auch hier steh
+     Auch hier steht etwas Unvollständiges.
+
+  5. Wenn Du dich mit dem Anfügen von Text sicher fühlst, gehe zu Lektion 1.6.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		       Lektion 1.6: EINE DATEI EDITIEREN
+
+
+     ** Benutze  :wq  , um eine Datei zu speichern und Vim zu verlassen. **
+
+  !! ACHTUNG: Bevor Du einen der unten aufgeführten Schritte ausführst, lies
+     diese gesamte Lektion!!
+
+  1. Verlasse den Editor so wie in Lektion 1.2:  :q!
+
+  2. Gib dieses Kommando in die Eingabeaufforderung ein:  vim tutor <ENTER>
+     'vim' ist der Aufruf des Editors, 'tutor' ist die zu editierende Datei.
+     Benutze eine Datei, die geändert werden kann.
+
+  3. Füge Text ein oder lösche ihn, wie Du in den vorigen Lektionen gelernt
+     hast.
+
+  4. Speichere die geänderte Datei und verlasse Vim mit:  :wq <ENTER>
+
+  5. Starte den vimtutor neu und bewege Dich zu der folgenden Zusammenfassung.
+
+  6. Nachdem Du obige Schritte gelesen und verstanden hast, führe sie durch.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			 ZUSAMMENFASSUNG VON LEKTION 1
+
+
+  1. Der Cursor wird mit den Pfeiltasten oder den Tasten hjkl bewegt.
 	 h (links)     j (unten)     k (aufwärts)    l (rechts)
 
-  2. Um Vim aufzurufen (vom % prompt) tippe:  vim DATEINAME <ENTER>
+  2. Um Vim von der Eingabeaufforderung auszuführen, tippe: vim DATEI <ENTER>
 
-  3. Um Vim zu verlassen, tippe:	<ESC>  :q!  <ENTER> ,
-	 um alle Änderungen zu verwerfen.
-     ODER tippe:			<ESC>  :wq  <ENTER> ,
-	 um die Änderungen zu speichern.
+  3. Um Vim zu verlassen und alle Änderungen zu verwerfen, tippe:
+		<ESC>  :q!  <ENTER> .
+	ODER tippe:	<ESC>  :wq  <ENTER> , um die Änderungen zu speichern.
 
-  4. Um ein Zeichen im Normal-Modus zu löschen, tippe:	x
+  4. Um das Zeichen unter dem Cursor zu löschen, tippe:  x
 
-  5. Um Text beim Cursor einzugeben, während Du im Normal-Modus bist, tippe:
-	 i     Text eingeben	<ESC>
+  5. Um Text einzufügen oder anzufügen, tippe:
+	 i   Einzufügenden Text eingeben   <ESC>    Einfügen vor dem Cursor
+	 A   Anzufügenden Text eingeben    <ESC>    Anfügen nach dem Zeilendene
 
-Bemerkung: Drücken von <ESC> bringt Dich in den Normal-Modus oder bricht ein
+Bemerkung: Drücken von <ESC> bringt Dich in den Normalmodus oder bricht ein
      ungewolltes, erst teilweise eingegebenes Kommando ab.
 
-Nun fahre mit Lektion 2 fort.
-
-
+     Nun fahre mit Lektion 2 fort.
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 			  Lektion 2.1: LÖSCHKOMMANDOS
 
 
-	    ** Tippe  dw  , um bis zum Ende des Wortes zu löschen **
+		   ** Tippe  dw  , um ein Wort zu löschen. **
 
-  1. Drücke  <ESC>  um sicherzustellen, dass Du im Normal-Modus bist.
+  1. Drücke  <ESC>  um sicherzustellen, dass Du im Normalmodus bist.
 
   2. Bewege den Cursor zu der mit ---> markierten Zeile unten.
 
   3. Bewege den Cursor zum Anfang eines Wortes, das gelöscht werden soll.
 
-  4. Tippe   dw , um das Wort zu entfernen.
+  4. Tippe  dw  , um das Wort zu entfernen.
 
-  Bemerkung: Die Buchstaben  dw  erscheinen auf der letzten Zeile des
-     Bildschirms, wenn Du sie eingibst. Wenn Du etwas falsch eingetippt hast,
-     drücke <ESC> und fahre fort.
+  Bemerkung: Der Buchstabe  d  erscheint auf der letzten Zeile des Bildschirms,
+        wenn Du ihn eingibst. Vim wartet darauf, daß Du  w  eingibst. Wenn Du
+        ein anderes Zeichen als  d  siehst, hast Du etwas falsches getippt;
+        drücke <ESC> und beginne neu.
 
 ---> Einige Wörter lustig gehören nicht Papier in diesen Satz.
 
   5. Wiederhole die Schritte 3 und 4, bis der Satz korrekt ist und gehe
      danach zur Lektion 2.2.
-
-
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 		      Lektion 2.2: WEITERE LÖSCHKOMMANDOS
 
 
 	    ** Tippe  d$  , um bis zum Ende der Zeile zu löschen. **
 
-  1. Drücke <ESC> ,um sicherzustellen, dass Du im Normal-Modus bist.
+  1. Drücke <ESC> , um sicherzustellen, dass Du im Normalmodus bist.
 
   2. Bewege den Cursor zu der mit ---> markierten Zeile unten.
 
   3. Bewege den Cursor zum Ende der korrekten Zeile (NACH dem ersten . ).
 
-  4. Tippe    d$  ,um bis zum Ende der Zeile zu löschen.
+  4. Tippe    d$    , um bis zum Ende der Zeile zu löschen.
 
 ---> Jemand hat das Ende der Zeile doppelt eingegeben. doppelt eingegeben.
 
@@ -191,57 +225,103 @@ Nun fahre mit Lektion 2 fort.
   5. Gehe weiter zur Lektion 2.3 , um zu verstehen, was hierbei passiert.
 
 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-		    Lektion 2.3: ÜBER KOMMANDOS UND OBJEKTE
 
 
-  Das Format für das Löschkommando  d  ist folgendermaßen:
-
-	 [Nummer]   d	Objekt	     ODER	d   [Nummer]   Objekt
-
-  Wobei:
-   Nummer - gibt an, wie viele Male das Kommando ausgeführt werden soll
-				       (optional, standardmäßig 1).
-   d - ist das Löschkommando.
-   Objekt - bedeutet, worauf das Kommando angewendet wird (unten aufgeführt).
-
-  Eine kurze Liste von Objekten:
-    w - vom Cursor an bis zum Ende des Wortes, inklusive dem Leerzeichen.
-    e - vom Cursor an bis zum Ende des Wortes, OHNE das Leerzeichen.
-    $ - vom Cursor an bis zum Ende der Zeile.
-
-Bemerkung:  Für die Wagemutigen: die Eingabe lediglich des Objekt-Teils im
-    Normal-Modus ohne ein Kommando bewegt den Cursor so,
-    wie in der Objektliste angegeben ist.
-
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-		Lektion 2.4: EINE AUSNAHME ZU 'KOMMANDO-OBJEKT'
+		 Lektion 2.3: ÜBER OPERATOREN UND BEWEGUNGSZÜGE
+
+
+  Viele Kommandos, die Text ändern, setzen sich aus einem Operator und einer
+  Bewegung zusammen. Das Format für ein Löschkommando mit dem Löschoperator  d
+  lautet wie folgt:
+
+    d  Bewegung
+
+  wobei:
+    d        - der Löschoperator
+    Bewegung - worauf der Löschoperator angewandt wird (unten aufgelistet).
+
+  Eine kleine Auflistung von Bewegungen:
+    w - bis zum Beginn des nächsten Wortes OHNE dessen erstes Zeichen.
+    e - zum Ende des aktuellen Wortes MIT dessen letztem Zeichen.
+    $ - zum Ende der Zeile MIT dem letzen Zeichen.
+
+  Dementsprechend löscht die Eingabe von  de  vom Cursor an bis zum Wortende.
+
+Bemerkung:  Die Eingabe lediglich des Bewegungsteils im Normalmodus bewegt den
+  Cursor entsprechend.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+	Lektion 2.4: ANWENDUNG EINES ZÄHLERS FÜR EINEN BEWEGUNGSSCHRITT
+
+
+   ** Die Eingabe einer Zahl vor einem Bewegungsschritt wiederholt diesen. **
+
+  1. Bewege den Cursor zum Beginn der mit ---> markierten Zeile unten.
+
+  2. Tippe  2w  , um den Cursor zwei Wörter vorwärts zu bewegen.
+
+  3. Tippe  3e  , um den Cursor zum Ende des dritten Wortes zu bewegen.
+
+  4. Tippe  0  (Null) , um zum Anfang der Zeile zu gelangen.
+
+  5. Wiederhole Schritte 2 und 3 mit verschiedenen Zählern.
+
+  ---> Dies ist nur eine Zeile aus Wörten um sich darin herumzubewegen.
+
+  6. Gehe weiter zu Lektion 2.5.
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+	 Lektion 2.5: ANWENDUNG EINES ZÄHLERS FÜR MEHRERE LÖSCHVORGÄNGE
+
+
+   ** Die Eingabe einer Zahl mit einem Operator wiederholt diesen mehrfach. **
+
+  Für die Kombination des Löschoperators und einem Bewegungsschritt (siehe
+  oben) stellt man dem Bewegungsschritt einen Zähler voran, um mehr zu löschen:
+	 d  Nummer  Bewegungsschritt
+
+  1. Bewege den Cursor zum ersten Wort in GROSSBUCHSTABEN in der mit --->
+     markieren Zeile.
+
+  2. Tippe  d2w  , um die zwei Wörter in GROSSBUCHSTABEN zu löschen.
+
+  3. Wiederhole Schritte 1 und  2 mit einem anderen Zähler, um die
+     darauffolgenden Wörter in GROSSBUCHSTABEN mit einem einzigen Kommando
+     zu löschen.
+
+--->  Diese ABC DE Zeile FGHI JK LMN OP mit Wörtern ist Q RS TUV bereinigt.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			Lektion 2.6: ARBEITEN AUF ZEILEN
 
 
 	       ** Tippe  dd  , um eine ganze Zeile zu löschen. **
 
-  Wegen der Häufigkeit, dass man ganze Zeilen löscht, kamen die
-  Entwickler von Vim darauf, dass es leichter wäre, zwei d's hintereinander
-  einzugeben, um eine Zeile zu löschen.
+  Wegen der Häufigkeit, dass man ganze Zeilen löscht, kamen die Entwickler von
+  Vi darauf, dass es leichter wäre, einfach zwei d's einzugeben, um eine Zeile
+  zu löschen.
 
   1. Bewege den Cursor zur zweiten Zeile in der unten stehenden Redewendung.
   2. Tippe  dd  , um die Zeile zu löschen.
   3. Nun bewege Dich zur vierten Zeile.
-  4. Tippe   2dd   (erinnere Dich an  Nummer-Kommando-Objekt),
-     um die überflüssigen Zeilen zu löschen.
+  4. Tippe  2dd  , um zwei Zeilen zu löschen.
 
-      1)  Rosen sind rot,
-      2)  Matsch ist lustig,
-      3)  Veilchen sind blau,
-      4)  Ich habe ein Auto,
-      5)  Die Uhr sagt die Zeit,
-      6)  Zucker ist süß,
-      7)  So wie Du auch.
-
+--->  1)  Rosen sind rot,
+--->  2)  Matsch ist lustig,
+--->  3)  Veilchen sind blau,
+--->  4)  Ich habe ein Auto,
+--->  5)  Die Uhr sagt die Zeit,
+--->  6)  Zucker ist süß,
+--->  7)  So wie Du auch.
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-			 Lektion 2.5: RÜCKGÄNGIG MACHEN (UNDO)
+		     Lektion 2.7: RÜCKGÄNGIG MACHEN (UNDO)
 
 
 	 ** Tippe u , um die letzten Kommandos rückgängig zu machen **
@@ -249,88 +329,82 @@ Bemerkung:  Für die Wagemutigen: die Eingabe lediglich des Objekt-Teils im
 
   1. Bewege den Cursor zu der mit ---> markierten Zeile unten
      und setze ihn auf den ersten Fehler.
-  2. Tippe  x  , um das erste überflüssige Zeichen zu löschen.
+  2. Tippe  x  , um das erste unerwünschte Zeichen zu löschen.
   3. Nun tippe  u  um das soeben ausgeführte Kommando rückgängig zu machen.
-  4. Dieses Mal behebe alle Fehler auf der Zeile, indem Du das  x  Kommando
-     anwendest.
+  4. Jetzt behebe alle Fehler auf der Zeile mit Hilfe des x  Kommandos.
   5. Nun tippe ein großes  U , um die Zeile in ihren Ursprungszustand
      wiederherzustellen.
-  6. Nun tippe  u  mehrere Male, um das U und die vorhergehenden Kommandos
+  6. Nun tippe  u  einige Male, um das U und die vorhergehenden Kommandos
      rückgängig zu machen.
-  7. Nun tippe CTRL-R (halte die CTRL-Taste gedrückt und drücke R )
-     mehrere Male, um die Kommandos rückgängig zu machen
-     (die Rückgängigmachungen rückgängig machen).
+  7. Nun tippe CTRL-R (halte CTRL gedrückt und drücke R) mehrere Male, um die
+     Kommandos wiederherzustellen (die Rückgängigmachungen rückgängig machen).
 
 ---> Beehebe die Fehller diesser Zeile und sttelle sie mitt 'undo' wieder her.
 
-  8. Dieses sind sehr nützliche Kommandos.
+  8. Dies sind sehr nützliche Kommandos.
      Nun gehe weiter zur Zusammenfassung von Lektion 2.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			 ZUSAMMENFASSUNG VON LEKTION 2
 
 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-			   ZUSAMMENFASSUNG VON LEKTION 2
-
-
-  1. Um vom Cursor bis zum Ende eines Wortes zu löschen, tippe:    dw
-
+  1. Um vom Cursor bis zum nächsten Wort zu löschen, tippe:    dw
   2. Um vom Cursor bis zum Ende einer Zeile zu löschen, tippe:     d$
-
   3. Um eine ganze Zeile zu löschen, tippe:    dd
 
-  4. Das Format für ein Kommandos im Normal-Modus ist:
+  4. Um eine Bewegung zu wiederholen, stelle eine Nummer voran:   2w
+  5. Das Format für ein Änderungskommando ist:
+               Operator   [Anzahl]   Bewegungsschritt
+     wobei:
+       Operator - gibt an, was getan werden soll, zum Beispiel  d  für delete
+       [Anzahl] - ein optionaler Zähler, um den Bewegungsschritt zu wiederholen
+       Bewegungsschritt - Bewegung über den zu ändernden Text, so wie
+		  w (Wort), $ (zum Ende der Zeile), etc.
 
-       [Nummer]   Kommando   Objekt     ODER     Kommando   [Nummer]   Objekt
-	 wobei:
-       Nummer - gibt an, wie oft das Kommando wiederholt wird
-       Kommando - gibt an, was getan werden soll, zum Beispiel	d  für delete
-       Objekt - gibt an, worauf das Kommando angewendet werden soll,
-	 zum Beispiel w (Wort), $ (zum Ende der Zeile), etc.
+  6. Um Dich zum Anfang der Zeile zu begeben, benutze die Null:  0
 
-  5. Um vorherige Aktionen rückgängig zu machen, tippe:		u (kleines u)
+  7. Um vorherige Aktionen rückgängig zu machen, tippe:		u (kleines u)
      Um alle Änderungen auf einer Zeile rückgängig zu machen:   U (großes U)
      Um die Rückgängigmachungen rückgängig zu machen, tippe:    CTRL-R
 
-
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 			   Lektion 3.1: ANFÜGEN (PUT)
 
 
-       ** Tippe p , um das zuletzt Gelöschte nach dem Cursor anzufügen. **
+     ** Tippe  p  , um vorher gelöschten Text nach dem Cursor anzufügen. **
 
-  1. Bewege den Cursor zur ersten Zeile des unten stehenden Sinnspruchs.
+  1. Bewege den Cursor zur ersten unten stehenden mit ---> markierten Zeile.
 
-  2. Tippe  dd  , um die Zeile zu löschen und sie in Vims Puffer zu speichern.
+  2. Tippe  dd  , um die Zeile zu löschen und sie in eimem Vim-Register zu
+     speichern.
 
-  3. Bewege den Cursor zur Zeile ÜBER derjenigen,
-     wo die gelöschte Zeile platziert werden soll.
+  3. Bewege den Cursor zur Zeile c), ÜBER derjenigen, wo die gelöschte Zeile
+     platziert werden soll.
 
-  4. Im Normal-Modus, tippe    p    ,  um die Zeile zu platzieren.
+  4.  Tippe   p   , um die Zeile unterhalb des Cursors zu platzieren.
 
-  5. Wiederhole die Schritte 2 bis 4, um alle Zeilen in die richtige Reihenfolge
-     zu bringen.
+  5. Wiederhole die Schritte 2 bis 4, um alle Zeilen in die richtige
+     Reihenfolge zu bringen.
 
-     d) Kannst Du das auch?
-     b) Veilchen sind blau,
-     c) Intelligenz ist erlernbar,
-     a) Rosen sind rot,
-
-
+---> d) Kannst Du das auch?
+---> b) Veilchen sind blau,
+---> c) Intelligenz ist erlernbar,
+---> a) Rosen sind rot,
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 			Lektion 3.2: ERSETZEN (REPLACE)
 
 
- ** Tippe  r  und ein Zeichen, um das Zeichen unter dem Cursor zu ersetzen. **
+   ** Tippe  rx  , um das Zeichen unter dem Cursor durch  x zu ersetzen. **
 
-  1. Bewege den Cursor zur ersten unten stehenden, mit ---> markierten Zeile.
+  1. Bewege den Cursor zur ersten unten stehenden mit ---> markierten Zeile.
 
   2. Bewege den Cursor, bis er sich auf dem ersten Fehler befindet.
 
-  3. Tippe  r  und anschließend das Zeichen, welches den Fehler beheben sollte.
+  3. Tippe  r  und anschließend das Zeichen, welches dort stehen sollte.
 
-  4. Wiederhole die Schritte 2 und 3, bis die erste Zeile korrekt ist.
+  4. Wiederhole Schritte 2 und 3, bis die erste Zeile gleich der zweiten ist.
 
---->  Als diese Zeite eingegoben wurde, wurden einike falsche Tasten gelippt.
---->  Als diese Zeile eingegeben wurde, wurden einige falsche Tasten getippt.
+--->  Als diese Zeite eingegoben wurde, wurden einike falsche Tasten gelippt!
+--->  Als diese Zeile eingegeben wurde, wurden einige falsche Tasten getippt!
 
   5. Nun fahre fort mit Lektion 3.2.
 
@@ -342,427 +416,442 @@ Bemerkung: Erinnere Dich, dass Du durch 
 			  Lektion 3.3: ÄNDERN (CHANGE)
 
 
-       ** Um ein Wortteil oder ein ganzes Wort zu ändern, tippe  cw . **
+      ** Um eine Änderung bis zum Wortende durchzuführen, tippe  ce . **
 
-  1. Bewege den Cursor zur ersten unten stehenden, mit ---> markierten Zeile.
+  1. Bewege den Cursor zur ersten unten stehenden mit ---> markierten Zeile.
 
-  2. Platziere den Cursor auf das s von Wstwr.
+  2. Platziere den Cursor auf das  s  von Wstwr.
 
-  3. Tippe  cw  und die Wortkorrektur ein (in diesem Fall, tippe  'örter'.)
+  3. Tippe  ce  und die Wortkorrektur ein (in diesem Fall tippe  örter ).
 
-  4. Drücke <ESC> und bewege den Cursor zum nächsten Fehler
-    (Das erste zu ändernde Zeichen.)
+  4. Drücke <ESC> und bewege den Cursor zum nächsten zu ändernden Zeichen.
 
   5. Wiederhole Schritte 3 und 4 bis der erste Satz gleich dem zweiten ist.
 
----> Einige Wstwr dieser Zlaww lasdjlaf mit dem Ändern-Kommando gaaauu werden.
----> Einige Wörter dieser Zeile sollen mit dem Ändern-Kommando geändert werden.
+---> Einige Wstwr dieser Zlaww lasdjlaf mit dem Ändern-Operator gaaauu werden.
+---> Einige Wörter dieser Zeile sollen mit dem Ändern-Operator geändert werden.
 
-Bemerke, dass  cw  nicht nur das Wort ersetzt, sondern Dich außerdem in den
-     Eingabemodus versetzt.
+Bemerke, dass  ce  das Wort löscht und Dich in den Eingabemodus versetzt.
+
 
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 		     Lektion 3.4: MEHR ÄNDERUNGEN MITTELS c
 
 
-     ** Das change-Kommando arbeitet mit denselben Objekten wie delete  **
+     ** Das change-Kommando arbeitet mit denselben Bewegungen wie delete.  **
+
+  1. Der change Operator arbeitet in gleicher Weise wie delete. Das Format ist:
 
-  1. Das change Kommando arbeitet in gleicher Weise wie delete. Das Format ist:
+         c    [Anzahl]  Bewegungsschritt
+
+  2. Die Bewegungsschritte sind die gleichen , so wie  w  (Wort) und  $
+     (Zeilenende).
 
-       [Nummer]   c   Objekt       ODER       c   [Nummer]   Objekt
+  3. Bewege Dich zur ersten unten stehenden mit ---> markierten Zeile.
+
+  4. Bewege den Cursor zum ersten Fehler.
 
-  2. Auch sind die Objekte gleich, so wie  w  (Wort), $ (Ende der Zeile), etc.
+  5. Tippe  c$  , gib den Rest der Zeile wie in der zweiten ein, drücke <ESC> .
+
+---> Das Ende dieser Zeile soll an die zweite Zeile angeglichen werden.
+---> Das Ende dieser Zeile soll mit dem  c$  Kommando korrigiert werden.
 
-  3. Bewege den Cursor zur ersten unten stehenden, mit ---> markierten Zeile.
+Bemerkung: Du kannst die Rücktaste benutzen, um Tippfehler zu korrigieren.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			 ZUSAMMENFASSUNG VON LEKTION 3
 
-  4. Bewege den Cursor zum ersten Unterschied zur anderen Zeile.
+
+  1. Um einen vorher gelöschten Text anzufügen, tippe   p . Dies fügt den
+     gelöschten Text NACH dem Cursor an (wenn eine ganze Zeile gelöscht wurde,
+     wird diese in die Zeile unter dem Cursor eingefügt).
 
-  5. Tippe  c$  , um den Rest der Zeile an die zweite anzugleichen
-     und drücke abschließend <ESC> .
+  2. Um das Zeichen unter dem Cursor zu ersetzen, tippe   r   und das an dieser
+     Stelle gewünschte Zeichen.
+
+  3. Der Änderungs- (change) Operator erlaubt, vom Cursor bis zum Ende des
+     Bewegungsschrittes zu ändern. Tippe  ce  , um eine Änderung vom Cursor bis
+     zum Ende des Wortes vorzunehmen;  c$  bis zum Ende einer Zeile.
 
----> Das Ende dieser Zeile sollte an die zweite Zeile angeglichen werden.
----> Das Ende dieser Zeile sollte mit dem 'c$' Kommando korrigiert werden.
+  4. Das Format für change ist:
+
+	 c   [Anzahl]  Bewegungsschritt
+
+  Nun fahre mit der nächsten Lektion fort.
+
 
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-			   ZUSAMMENFASSUNG VON LEKTION 3
-
+		  Lektion 4.1: CURSORPOSITION UND DATEISTATUS
 
-  1. Um einen vorher gelöschten Text anzufügen, tippe  p  . Dies fügt den
-     gelöschten Text NACH dem Cursor an (wenn es sich um eine ganze Zeile
-     handelt, wird ab der Zeile unter dem Cursor eingefügt).
-
-  2. Um das Zeichen unter dem Cursor zu ersetzen, tippe   r  ; das danach
-     eingegebene Zeichen ersetzt das Original.
+ ** Tippe CTRL-G , um Deine Dateiposition sowie den Dateistatus anzuzeigen. **
+     ** Tippe G , um Dich zu einer Zeile in der Datei zu begeben. **
 
-  3. Das Änderungs- (change) Kommando erlaubt, das angegebene Objekt vom Cursor
-     bis zum Ende des Objektes zu ändern. Tippe z.B. cw , um eine Änderung vom
-     Cursor bis zum Ende des Wortes vorzunehmen; c$ bis zum Ende der Zeile.
+Bemerkung: Lies diese gesamte Lektion, bevor Du irgendeinen Schritt ausführst!!
 
-  4. Das Format für change ist:
-
-	 [Nummer]   c	Objekt	     ODER	c   [Nummer]   Objekt
-
-Nun fahre mit der nächsten Lektion fort.
-
+  1. Halte die Ctrl Taste unten und drücke  g . Dies nennen wir wir CTRL-G.
+     Eine Statusmeldung am Fuß der Seite erscheint mit dem Dateinamen und der
+     Position innerhalb der Datei. Merke Dir die Zeilennummer für Schritt 3.
 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-		   Lektion 4.1: DATEIPOSITION UND DATEISTATUS
-
+Bemerkung: Möglicherweise siehst Du die Cursorposition in der unteren rechten
+      Bildschirmecke. Dies ist Folge der 'ruler' Option (siehe :help 'ruler')
 
- ** Tippe CTRL-g , um Deine Dateiposition sowie den Dateistatus anzuzeigen. **
-     ** Tippe SHIFT-G , um Dich zu einer Zeile in der Datei zu bewegen. **
-
- Bemerkung: Lies diese gesamte Lektion, bevor Du irgendeinen Schritt ausführst!!
+  2. Drücke  G  , um Dich zum Ende der Datei zu begeben.
+     Tippe  gg  , um Dich zum Anfang der Datei zu begeben.
 
-  1. Halte die Ctrl Taste unten und drücke  g .  Eine Statuszeile erscheint in
-     der untersten Zeile des Fensters mit dem Dateinamen und der Zeile,
-     auf der Du Dich befindest. Präge Dir die Zeilennummer für Schritt 3 ein.
-
-  2. Drücke Shift-G , um Dich zum Ende der Datei zu begeben.
+  3. Gib die Nummer der Zeile ein, auf der Du vorher warst, gefolgt von  G .
+     Dies bringt Dich zurück zu der Zeile, auf der Du gestanden hast, als Du
+     das erste Mal CTRL-G gedrückt hast.
 
-  3. Gib die Nummer der Zeile ein, auf der Du vorher warst, gefolgt von Shift-G.
-     Dieses bringt Dich zurück zu der Zeile, auf der Du gestanden hast, als Du
-     das erste Mal Ctrl-g gedrückt hast.
-     (Wenn Du die Ziffern eingibst, werden sie NICHT auf dem Schirm angezeigt.)
-
-  4. Wenn Du sicher genug fühlst, führe die Schritte 1 bis 3 aus.
-
-
+  4. Wenn Du Dich sicher genug fühlst, führe die Schritte 1 bis 3 aus.
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 		       Lektion 4.2: DAS SUCHEN - KOMMANDO
 
 
   ** Tippe  /  gefolgt von einem Ausdruck, um nach dem Ausdruck zu suchen. **
 
-  1. Wenn Du im Normal-Modus bist, tippe das  /  Zeichen.  Beachte, dass das  /
-     und der Cursor auf der untersten Zeile des Schirms erscheinen,
-     so wie beim  :  Kommando.
+  1. Im Normalmodus, tippe das  /  Zeichen.  Bemerke, dass das  / und der
+     Cursor am Fuß des Schirms erscheinen, so wie beim :	Kommando.
 
-  2. Nun tippe 'Fehhler' <ENTER>.  Dies ist das Wort, nach dem Du suchen willst.
+  2. Nun tippe 'Fehhler' <ENTER>. Dies ist das Wort, nach dem Du suchen willst.
 
-  3. Um nach demselben Ausdruck weiterzusuchen, tippe einfach  n (für *n*ext).
-     Um nach demselben Ausdruck in der anderen Richtung zu suchen, Shift-N .
+  3. Um nach demselben Ausdruck weiterzusuchen, tippe einfach  n (für next).
+     Um nach demselben Ausdruck in der Gegenrichtung zu suchen, tippe  N .
 
-  4. Wenn Du nach einem Ausdruck rückwärts in der Datei suchen willst,
-     benutze das Kommando  ?  statt  / .
+  4. Um nach einem Ausdruck rückwärts zu suchen , benutze  ?  statt  / .
 
----> Wenn die Suche das Dateiende erreicht hat, wird sie am Anfang fortgesetzt.
+  5. Um dahin zurückzukehren, von wo Du gekommen bist, drücke CTRL-O (Halte
+     Ctrl unten und drücke den Buchstaben o). Wiederhole dies, um weiter
+     zurückzugehen.  CTRL-I bringt dich vorwärts.
 
-  Fehler schreibt sich nicht "Fehhler"; "Fehhler" ist ein Fehler
-
-
+--->  Fehler schreibt sich nicht "Fehhler"; Fehhler ist ein Fehler
+Bemerkung: Wenn die Suche das Dateiende erreicht hat, wird sie am Anfang
+        fortgesetzt, es sei denn, die 'wrapscan' Option wurde abgeschaltet.
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 		     Lektion 4.3: PASSENDE KLAMMERN FINDEN
 
 
    ** Tippe  % , um eine korrespondierende Klammer ),], oder } zu finden. **
 
-  1. Platziere den Cursor auf irgendeinem der Zeichen (, [, oder {
-     in der unten stehenden Zeile, die mit ---> markiert ist.
+  1. Platziere den Cursor auf irgendeines der Zeichen (, [, oder { in der unten
+     stehenden Zeile, die mit ---> markiert ist.
 
   2. Nun tippe das  %  Zeichen.
 
-  3. Der Cursor sollte sich nun auf der gegenüberliegenden Klammer befinden.
+  3. Der Cursor bewegt sich zur passenden gegenüberliegenden Klammer.
+
+  4. Tippe  % , um den Cursor zur anderen passenden Klammer zu bewegen.
 
-  4. Tippe  % , um den Cursor zurück auf die erste Gegenklammer zurückzubewegen.
+  5. Setze den Cursor auf ein anderes (,),[,],{ oder } und probiere  %  aus.
 
----> Dies ( ist eine Testzeile mit ( verschiedenen [ Klammern ] { xx } darin. ))
+---> Dies ( ist eine Testzeile ( mit [ verschiedenen ] { Klammern }  darin. ))
 
 Bemerkung: Diese Funktionalität ist sehr nützlich bei der Fehlersuche in einem
-     Programmtext, in dem eine passende Klammer fehlt!
+     Programmtext, in dem passende Klammern fehlen!
 
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-		   Lektion 4.4: WEGE, UM FEHLER ZU BEHEBEN
+		Lektion 4.4: DAS ERSETZUNGSKOMMANDO (SUBSTITUTE)
 
 
-	 ** Tippe :s/alt/neu/g	, um 'alt' durch 'neu' zu ersetzen. **
+	 ** Tippe :s/alt/neu/g  , um 'alt' durch 'neu' zu ersetzen. **
 
   1. Bewege den Cursor zu der unten stehenden mit ---> markierten Zeile.
 
   2. Tippe  :s/diee/die <ENTER> .  Bemerke, dass der Befehl nur das erste
-     Vorkommen auf der Zeile ersetzt.
+     Vorkommen von "diee" ersetzt.
 
-  3. Nun tippe   :s/diee/die/g    , welches bedeutet, eine zeilenweite
-     (*g*lobale) Ersetzung vorzunehmen.
-     Dies ersetzt alle Vorkommen auf der Zeile.
+  3. Nun tippe   :s/diee/die/g . Das Zufügen des Flags  g   bedeutet, eine
+     globale Ersetzung über die Zeile durchzuführen, was alle Vorkommen von
+     "diee" auf der Zeile ersetzt.
 
 ---> diee schönste Zeit, um diee Blumen anzuschauen, ist diee Frühlingszeit.
 
-  4. Um alle Vorkommen einer Zeichenkette zwischen zwei Zeilen zu ändern,
-     tippe  :#,#s/alt/neu/g  , wobei #,# die zwei Nummern der Zeilen sind.
-     Tippe  :%s/alt/neu/g , um alle Vorkommen in der gesamten Datei zu ändern.
-
-
+  4. Um alle Vorkommen einer Zeichenkette innerhalb zweier Zeilen zu ändern,
+     tippe  :#,#s/alt/neu/g   wobei #,# die Zeilennummern des Zeilenbereiches
+                         sind, in dem die Ersetzung durchgeführt werden soll.
+     Tippe  :%s/alt/neu/g    um alle Vorkommen in der gesamten Datei zu ändern.
+     Tippe  :%s/alt/neu/gc   um alle Vorkommen in der gesamten Datei zu finden
+                     mit einem Fragedialog, ob ersetzt werden soll oder nicht.
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-			   ZUSAMMENFASSUNG VON LEKTION 4
-
+			 ZUSAMMENFASSUNG VON LEKTION 4
 
-  1. Ctrl-g  zeigt die aktuelle Dateiposition sowie den Dateistatus.
-     Shift-G bringt Dich bis zum Ende der Datei.  Eine Zeilennummer
-     gefolgt von Shift-G bewegt den Cursor zu der Zeilennummer.
+  1. CTRL-G  zeigt die aktuelle Dateiposition sowie den Dateistatus.
+             G  bringt Dich zum Ende der Datei.
+     Nummer  G  bringt Dich zur entsprechenden Zeilennummer.
+            gg  bringt Dich zur ersten Zeile.
 
-  2. Die Eingabe von  / gefolgt von einem Ausdruck sucht VORWÄRTS nach dem
-     Ausdruck.
-     Die Eingabe von  ?     gefolgt von einem Ausdruck sucht RÜCKWÄRTS nach dem
-     Ausdruck.
+  2. Die Eingabe von  /  plus einem Ausdruck sucht VORWÄRTS nach dem Ausdruck.
+     Die Eingabe von  ?  plus einem Ausdruck sucht RÜCKWÄRTS nach dem Ausdruck.
      Tippe nach einer Suche  n  , um das nächste Vorkommen in der gleichen
-     Richtung zu finden; oder Shift-N , um in der entgegengesetzten Richtung
-     zu suchen.
+     Richtung zu finden; oder  N  , um in der Gegenrichtung zu suchen.
+     CTRL-O bringt Dich zurück zu älteren Positionen, CTRL-I zu neueren.
 
-  3. Die Eingabe von  %  , wenn der Cursor sich auf  (,),[,],{, oder }
-     befindet, findet die korrespondierende Gegenklammer.
+  3. Die Eingabe von  %  , wenn der Cursor sich auf (,),[,],{, oder }
+     befindet, bringt Dich zur Gegenklammer.
 
-  4. Um das ERSTE Vorkommen von alt in eine Zeile durch neu zu ersetzen, tippe
-		:s/alt/neu
-     Um ALLE Vorkommen von alt in eine Zeile durch neu zu ersetzen, tippe
-		:s/alt/neu/g
-     Um Ausdrücke innerhalb von zwei Zeilen zu ersetzen, tippe
-		:#,#s/alt/neu/g
-     Um alle Vorkommen in der ganzen Datei zu ersetzen, tippe
-		:%s/alt/neu/g
-     Um jedes Mal nach einer Bestätigung gefragt zu werden, füge 'c' hinzu.
-		:%s/alt/neu/gc		(*c*onfirm)
-
-
+  4. Um das erste Vorkommen von "alt" in einer Zeile durch "neu" zu ersetzen,
+             tippe       :s/alt/neu
+     Um alle Vorkommen von "alt" in der Zeile ersetzen, tippe  :s/alt/neu/g
+     Um Ausdrücke innerhalb zweier Zeilennummern zu ersetzen,  :#,#s/alt/neu/g
+     Um alle Vorkommen in der ganzen Datei zu ersetzen, tippe  :%s/alt/neu/g
+     Für eine jedmalige Bestätigung, addiere  'c'  (confirm)   :%s/alt/neu/gc
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 		Lektion 5.1: AUSFÜHREN EINES EXTERNEN KOMMANDOS
 
 
   ** Gib  :! , gefolgt von einem externen Kommando ein, um es auszuführen. **
 
-  1. Tippe das vertraute Kommando  :  , um den Cursor auf die unterste Zeile
-     des Fensters zu setzen. Dies erlaubt Dir, ein Kommando einzugeben.
+  1. Tippe das vertraute Kommando  :  , um den Cursor auf den Fuß des Schirms
+     zu setzen. Dies erlaubt Dir, ein Kommandozeilen-Kommando einzugeben.
 
-  2. Nun tippe ein  !  (Ausrufezeichen).  Dieses ermöglicht Dir, ein
-     beliebiges, externes Shellkommando auszuführen.
+  2. Nun tippe ein  !  (Ausrufezeichen).  Dies ermöglicht Dir, ein beliebiges,
+     externes Shellkommando auszuführen.
 
   3. Als Beispiel tippe   ls   nach dem  !  und drücke <ENTER>. Dies zeigt
      eine Auflistung Deines Verzeichnisses; genauso, als wenn Du auf der
-     Eingabeaufforderung wärst.
-     Verwende  :!dir  , falls ls nicht funktioniert.
+     Eingabeaufforderung wärst.  Oder verwende  :!dir  , falls ls nicht geht.
 
----> Bemerkung:  Mit dieser Methode kann jedes beliebige externe Kommando
-     ausgeführt werden.
+Bemerkung:  Mit dieser Methode kann jedes beliebige externe Kommando
+     ausgeführt werden, auch mit Argumenten.
 
----> Bemerkung:  Alle  :  Kommandos müssen durch Eingabe von <ENTER>
-     abgeschlossen werden.
+Bemerkung:  Alle  :  Kommandos müssen durch Eingabe von <ENTER>
+     abgeschlossen werden. Von jetzt an erwähnen wir dies nicht jedesmal.
 
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 		Lektion 5.2: MEHR ÜBER DAS SCHREIBEN VON DATEIEN
 
 
-** Um an der Datei durchgeführte Änderungen  zu sichern , tippe :w DATEINAME. **
+** Um am Text durchgeführte Änderungen zu speichern, tippe :w DATEINAME. **
 
-  1. Tippe  :!ls  oder :!dir  , um eine Auflistung Deines Verzeichnisses
-     zu erhalten.
-     Du weißt nun bereits, dass Du danach <ENTER> eingeben musst.
+  1. Tippe  :!dir  oder  :!ls  , um eine Auflistung Deines Verzeichnisses zu
+     erhalten.  Du weißt nun bereits, dass Du danach <ENTER> eingeben musst.
 
-  2. Wähle einen Dateinamen, der dort noch nicht existiert, z.B. TEST.
+  2. Wähle einen Dateinamen, der noch nicht existiert, z.B. TEST.
 
-  3. Nun tippe:  :w TEST   (wobei TEST der gewählte Dateiname ist.)
+  3. Nun tippe:  :w TEST   (wobei TEST der gewählte Dateiname ist).
 
-  4. Dieses speichert diese ganze Datei  (Vim Tutor)  unter dem Namen TEST.
-     Um dieses zu überprüfen, tippe nochmals  :!ls  bzw.  !dir,
-     um Deinen Verzeichnisinhalt zu sehen.
+  4. Dies speichert die ganze Datei (den Vim Tutor) unter dem Namen TEST.
+     Um dies zu überprüfen, tippe nochmals  :!ls  bzw.  !dir, um Deinen
+     Verzeichnisinhalt zu sehen.
 
----> Beachte: würdest Du Vim jetzt beenden und danach wieder mit dem Dateinamen
-     TEST öffnen, dann wäre diese Datei eine exakte Kopie des Tutors zu dem
-     Zeitpunkt, als Du ihn gespeichert hast.
+Bemerkung: Würdest Du Vim jetzt beenden und danach wieder mit vim TEST
+    starten, dann wäre diese Datei eine exakte Kopie des Tutors zu dem
+    Zeitpunkt, als Du ihn gespeichert hast.
 
-  5. Nun entferne die Datei durch Eingabe von   :!rm TEST   bzw.   :!del TEST.
-
-
+  5. Nun entferne die Datei durch Eingabe von (MS-DOS):    :!del TEST
+				oder (Unix):	:!rm TEST
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-		 Lektion 5.3: SELEKTIVES SCHREIBEN VON DATEIEN
+		 Lektion 5.3: AUSWÄHLEN VON TEXT ZUM SCHREIBEN
 
-
-    ** Um einen Abschnitt der Datei zu speichern tippe   :#,# w DATEINAME **
+** Um einen Abschnitt der Datei zu speichern,  tippe  v  Bewegung  :w DATEI **
 
-  1. Gib nochmals  :!ls  bzw  :!dir  ein, um eine Auflistung Deines
-     Verzeichnisses zu erhalten und wähle einen geeigneten Dateinamen wie TEST.
+  1. Bewege den Cursor zu dieser Zeile.
 
-  2. Bewege den Cursor zum Anfang dieses Kapitels und tippe  Ctrl-g  , um die
-     Nummer dieser Zeile zu erhalten. PRÄGE DIR DIESE NUMMER EIN!
+  2. Tippe  v  und bewege den Cursor zum fünften Auflistungspunkt unten.
+     Bemerke, daß der Text hervorgehoben wird.
+
+  3. Drücke das Zeichen  : . Am Fuß des Schirms erscheint  :'<,'> .
 
-  3. Nun bewege Dich zum Ende dieses Kapitels und tippe wieder Ctrl-g .
-     PRÄGE DIR AUCH DIESE ZEILENNUMMER EIN!
+  4. Tippe  w TEST  , wobei TEST ein noch nicht vorhandener Dateiname ist.
+     Vergewissere Dich, daß Du  :'<,'>w TEST  siehst, bevor Du Enter drückst.
 
-  4. Um NUR einen Abschnitt einer Datei zu speichern, tippe   :#,# w TEST
-     wobei #,# die zwei Nummern sind, die Du im Gedächtnis hast (oben, unten);
-     und TEST Dein Dateiname ist.
+  5. Vim schreibt die ausgewählten Zeilen in die Datei TEST. Benutze  :!dir
+     oder  :!ls , um sie zu sehen. Lösche sie noch nicht! Wir werden sie in
+     der nächsten Lektion benutzen.
 
-  5. Überprüfe wiederum mit  :!ls   oder  :!dir   nach, dass die Datei
-     existiert, aber lösche sie NICHT.
-
-
+Bemerkung: Drücken von  v  startet die Visuelle Auswahl. Du kannst den Cursor
+   umherbewegen, um die Auswahl größer oder kleiner zu machen. Anschließend
+   kann man einen Operator anwenden, um mit dem Text etwas zu tun. Zum
+   Beispiel löscht  d  den Text.
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 	      Lektion 5.4: EINLESEN UND ZUSAMMENFÜHREN VON DATEIEN
 
 
-	 ** Um den Inhalt einer Datei einzulesen, tippe :r DATEINAME **
+       ** Um den Inhalt einer Datei einzulesen, tippe  :r DATEINAME  **
 
-  1. Tippe   :!ls   bzw.   !dir ,  um sicherzustellen, dass Deine Datei TEST
-     von vorhin vorhanden ist.
+  1. Platziere den Cursor überhalb dieser Zeile.
 
-  2. Platziere den Cursor auf der ersten Zeile dieses Kapitels.
+BEACHTE:  Nachdem Du Schritt 2 ausgeführt hast, wirst Du Text aus Lektion 5.3
+       sehen. Dann bewege Dich wieder ABWÄRTS, um diese Lektion wiederzusehen.
 
-BEACHTE:  Nachdem Du Schritt 3 ausgeführt hast, wirst Du Lektion 5.3  sehen.
-	  An diesem Punkt bewege Dich wieder ABWÄRTS zu dieser Lektion.
+  2. Nun lies Deine Datei TEST ein indem Du das Kommando  :r TEST  ausführst,
+     wobei TEST der von Dir verwendete Dateiname ist.
+     Die eingelesene Datei wird unterhalb der Cursorzeile eingefügt.
 
-  3. Nun lies Deine Datei TEST ein indem Du das Kommando :r TEST  ausführst,
-     wobei TEST der Name der Datei ist.
+  3. Um zu überprüfen, dass die Datei eingelesen wurde, gehe zurück und siehe,
+     dass es jetzt zwei Kopien von Lektion 5.3 gibt, das Original und die
+     eingefügte Dateiversion.
 
-BEMERKUNG:  Die Datei, die Du einliest, wird an der Stelle eingefügt, an der
-    sich der Cursor befindet.
+Bemerkung: Du kannst auch die Ausgabe eines externen Kommandos einlesen. Zum
+     Beispiel liest  :r !ls  die Ausgabe des Kommandos ls ein und platziert
+     sie unterhalb des Cursors.
 
-  4. Um zu überprüfen, dass eine Datei eingelesen wurde, gehe zurück und
-     sehe, dass es jetzt zwei Kopien von Lektion 5.3 gibt, das Original und die
-     eingefügte Version.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			 ZUSAMMENFASSUNG VON LEKTION 5
 
 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-			 ZUSAMMENFASSUNG VON Lektion 5
-
-
-  1.  :!Kommando  führt ein externes (Shell-)Kommando aus.
+  1. :!Kommando  führt ein externes Kommando aus.
 
       Einige nützliche Beispiele sind
-      UNIX:
-	  :!ls		  -    Auflistung des aktuellen Verzeichnisses
-	  :!rm DATEINAME  -    entfernt Datei DATEINAME
-      MS-DOS/Windows:
-	  :!dir		  -    Auflistung des aktuellen Verzeichnisses
-	  :!del DATEINAME -    entfernt Datei DATEINAME
+	(MS-DOS)	  (Unix)
+	 :!dir		   :!ls		   -  zeigt eine Verzeichnisauflistung.
+	 :!del DATEINAME   :!rm DATEINAME  -  entfernt Datei DATEINAME.
+
+  2. :w DATEINAME  speichert die aktuelle Vim-Datei unter dem Namen  DATEINAME.
 
-  2.  :w DATEINAME  schreibt die aktuelle Vim-Datei als DATEINAME auf die
-       Platte.
+  3. v  Bewegung  :w DATEINAME  schreibt die Visuell ausgewählten Zeilen in
+     die Datei DATEINAME.
 
-  3.  :#,#w DATEINAME  speichert die Zeilen # bis # in der Datei DATEINAME.
+  4. :r DATEINAME  lädt die Datei DATEINAME und fügt sie unterhalb der
+     Cursorposition ein.
 
-  4.  :r DATEINAME  lädt die Datei DATEINAME von der Platte und fügt sie in
-       die aktuelle Datei nach der Cursorposition ein.
+  5. :r !dir  liest die Ausgabe des Kommandos dir und fügt sie unterhalb der
+     Cursorposition ein.
 
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 		       Lektion 6.1: ZEILEN ÖFFNEN (OPEN)
 
 
-   ** Tippe  o	, um eine Zeile unter dem Cursor zu öffnen und Dich in den **
-			 ** Einfügemodus zu begeben. **
+   ** Tippe  o	, um eine Zeile unterhalb des Cursors zu öffnen und Dich in **
+                      ** den Einfügemodus zu begeben. **
 
-  1. Bewege den Cursor zu der unten stehenden Zeile, die mit ---> markiert ist.
+  1. Bewege den Cursor zu der ersten mit ---> markierten Zeile unten.
 
-  2. Tippe o (klein geschrieben), um eine Zeile UNTER dem Cursor aufzumachen
+  2. Tippe o (klein geschrieben), um eine Zeile UNTERHALB des Cursos zu öffnen
      und Dich in den Einfügemodus zu begeben.
 
-  3. Nun tippe den Text der mit ---> markierte Zeile ab und drücke <ESC> , um
-     den Einfügemodus zu verlassen.
+  3. Nun tippe etwas Text und drücke <ESC> , um den Einfügemodus zu verlassen.
 
----> Mit  o  wird der Cursor auf der geöffneten Zeile im Eingabemodus platziert.
+---> Mit  o  wird der Cursor auf der offenen Zeile im Einfügemodus platziert.
 
-  4. Um eine Zeile ÜBER dem Cursor aufzumachen, gib einfach ein großes  O
-     anstelle eines kleinen  o  ein. Versuche dies auf der unten stehenden
-     Zeile.
-Öffne eine Zeile über dieser mit Shift-O , wenn der Cursor auf dieser Zeile ist.
+  4. Um eine Zeile ÜBERHALB des Cursos aufzumachen, gib einfach ein großes  O
+     statt einem kleinen  o  ein. Versuche dies auf der unten stehenden Zeile.
+
+---> Öffne eine Zeile über dieser mit O , wenn der Cursor auf dieser Zeile ist.
+
 
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 		       Lektion 6.2: TEXT ANFÜGEN (APPEND)
 
 
-	      ** Tippe a  , um Text NACH dem Cursor einzufügen. **
+	     ** Tippe  a  , um Text NACH dem Cursor einzufügen. **
+
+  1. Bewege den Cursor zum Anfang der ersten Übungszeile mit ---> unten.
 
-  1. Bewege den Cursor zum Ende der unten stehenden Zeile, die mit --->
-     markiert ist, indem Du im Normal-Modus  $   eingibst.
+  2. Drücke  e  , bis der Cursor am Ende von  Zei  steht.
 
-  2. Tippe ein  a  (klein geschrieben), um Text NACH dem Zeichen unter dem
-     Cursor einzugeben.  (Ein großes A fügt nach dem Ende der Zeile an.)
+  3. Tippe ein kleines  a  , um Text NACH dem Cursor anzufügen.
+
+  4. Vervollständige das Wort so wie in der Zeile darunter.  Drücke <ESC> ,
+     um den Einfügemodus zu verlassen.
 
-Bemerkung: Dies macht es überflüssig, erst i zu tippen, dann das letzte
-	   Zeichen, den anzuhängenden Text, <ESC>, Cursor-Rechts,
-	   und schließlich, x, nur um Text an eine Zeile anzuhängen!
+  5. Bewege Dich mit  e  zum nächsten unvollständigen Wort und wiederhole
+     Schritte 3 und 4.
 
-  3. Nun vervollständige die erste Zeile.  Beachte außerdem , dass Anfügen
-     (Append) genau das gleiche ist, wie der Einfüge- (Insert-) Modus,
-     abgesehen von der Stelle, an dem der Text eingefügt wird.
+---> Diese Zei bietet Gelegen , Text in einer Zeile anzufü.
+---> Diese Zeile bietet Gelegenheit, Text in einer Zeile anzufügen.
 
----> Diese Zeile bietet Gelegenheit
----> Diese Zeile bietet Gelegenheit, Text an ihr Ende anzufügen.
-
-
+Bemerkung:  a, i und A gehen alle gleichermaßen in den Einfügemodus; der
+            einzige Unterschied ist, wo die Zeichen eingefügt werden.
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-	    Lektion 6.3: EINE ANDERE VERSION DES ERSETZENS (REPLACE)
+	      Lektion 6.3: EINE ANDERE ART DES ERSETZENS (REPLACE)
 
 
        ** Tippe ein großes  R  , um mehr als ein Zeichen zu ersetzen. **
 
   1. Bewege den Cursor zur ersten unten stehenden, mit ---> markierten Zeile.
+     Bewege den Cursor zum Anfang des ersten  xxx .
 
-  2. Platziere den Cursor auf den Anfang des ersten Wortes, welches sich von
-     der zweiten mit ---> markierten Zeile unterscheidet (das Wort 'benutze').
+  2. Nun drücke  R  und tippe die Nummer, die darunter in der zweiten Zeile
+     steht, so das diese das xxx ersetzt.
+
+  3. Drücke <ESC> , um den Ersetzungsmodus zu verlassen. Bemerke, daß der Rest
+     der Zeile unverändert bleibt.
 
-  3. Nun gib ein R  ein, und ersetze den Rest des Textes auf der ersten
-     Zeile, um diese gleich der zweiten zu machen, indem Du den alten Text
-     überschreibst.
+  4. Wiederhole die Schritte, um das verbliebene xxx zu ersetzen.
 
----> Um die erste Zeile gleich der zweiten zu machen, benutze die Tastatur.
----> Um die erste Zeile gleich der zweiten zu machen, tippe R und neuen Text.
+---> Das Addieren von 123 zu xxx ergibt xxx.
+---> Das Addieren von 123 zu 456 ergibt 579.
 
-  4. Beachte, dass, wenn Du zum Verlassen <ESC> drückst, sämtlicher
-     ungeänderte Text bestehen bleibt.
-
+Bemerkung: Der Ersetzungsmodus ist wie der Einfügemodus, aber jedes eingetippte
+           Zeichen löscht ein vorhandenes Zeichen.
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-			  Lektion 6.4: OPTIONEN SETZEN
+		    Lektion 6.4: TEXT KOPIEREN UND EINFÜGEN
+
+ ** Benutze den  y  Operator, um Text zu kopieren;  p  , um ihn einzufügen **
+
+  1. Gehe zu der mit ---> markierten Zeile unten, setze den Cursor hinter "a)".
+
+  2. Starte den Visuellen Modus mit  v  , bewege den Cursor genau vor "erste".
+
+  3. Tippe  y  , um den hervorgehoben Text zu kopieren.
+
+  4. Bewege den Cursor zum Ende der nächsten Zeile:  j$
 
+  5. Tippe  p , um den Text einzufügen und anschließend:  a zweite <ESC> .
+
+  6. Benutze den Visuellen Modus, um " Eintrag." auszuwählen, kopiere mittels
+     y , bewege Dich zum Ende der nächsten Zeile mit  j$  und füge den Text
+     dort mit  p  an.
+
+--->  a) dies ist der erste Eintrag.
+      b)
+
+Bemerkung: Du kannst  y  auch als Operator verwenden;  yw  kopiert ein Wort.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			  Lektion 6.5: OPTIONEN SETZEN
 
       ** Setze eine Option so, dass eine Suche oder eine Ersetzung Groß- **
 		      ** und Kleinschreibung ignoriert **
 
-
-  1. Suche nach 'igno', indem Du    /igno   eingibst.
+  1. Suche nach 'ignoriere', indem Du    /ignoriere   eingibst.
      Wiederhole die Suche einige Male, indem Du die n - Taste drückst.
 
-  2. Setze die 'ic' (ignorecase; Ignoriere Groß-/Kleinschreibung) - Option,
-     indem Du   :set ic   eingibst.
+  2. Setze die 'ic' (Ignore case) - Option, indem Du   :set ic   eingibst.
 
-  3. Nun suche wieder nach 'igno', indem Du n tippst.
-     Wiederhole dieses noch einige Male, indem Du die n Taste drückst.
+  3. Nun suche wieder nach 'ignoriere', indem Du  n  tippst.
+     Bemerke, daß jetzt Ignoriere und auch IGNORIERE gefunden wird.
+
+  4. Setze die 'hlsearch' und 'incsearch' - Optionen:     :set hls is
 
-  4. Setze die 'hlsearch' (Suche hervorheben) und 'incsearch' (Inkrementelle
-     Suche) - Optionen:
-     :set hls is
+  5. Wiederhole die Suche und beobachte, was passiert: /ignoriere <ENTER>
+
+  6. Um das Ignorieren von Groß/Kleinschreibung abzuschalten, tippe:  :set noic
 
-  5. Jetzt gib den Suchen-Befehl noch einmal ein und beobachte, was passiert:
-     /igno
-
-
+Bemerkung: Um die Hervorhebung der Treffer zu enfernen, gib ein:  :nohlsearch
+Bemerkung: Um die Schreibweise für eine einzige Suche zu ignorieren, benutze
+           \c im Suchausdruck:  /ignoriere\c  <ENTER>
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-			 ZUSAMMENFASSUNG VON Lektion 6
-
+			 ZUSAMMENFASSUNG VON LEKTION 6
 
-  1. Die Eingabe von  o  macht eine Zeile UNTER dem Cursor auf und
-     platziert den Cursor auf der geöffneten Zeile im Einfügemodus.
-     Die Eingabe eines großen  O  öffnet eine Zeile ÜBER derjenigen,
-     auf der sich der Cursor befindet.
+ 1. Tippe  o  , um eine Zeile UNTER dem Cursor zu öffnen und den Einfügemodus
+                zu starten.
+    Tippe  O  , um eine Zeile ÜBER dem Cursor zu öffnen.
+
+ 2. Tippe  a  , um Text NACH dem Cursor anzufügen.
+    Tippe  A  , um Text nach dem Zeilenende anzufügen.
+
+ 3. Das Kommando  e  bringt Dich zum Ende eines Wortes.
+
+ 4. Der Operator  y  (yank) kopiert Text,  p  (put) fügt ihn ein.
 
-  2. Gib ein  a  ein, um Text NACH dem Zeichen, auf dem sich der Cursor
-     befindet, einzufügen.
-     Die Eingabe eines großen  A  erlaubt das Anfügen von Text nach dem
-     Ende der Zeile.
+ 5. Ein großes  R  geht in den Ersetzungsmodus bis zum Drücken von  <ESC> .
 
-  3. Die Eingabe eines großen  R  wechselt in den Ersetzungs-(Replace)-Modus,
-     bis zum Verlassen <ESC> eingegeben wird.
+ 6. Die Eingabe von ":set xxx" setzt die Option "xxx". Einige Optionen sind:
+	'ic' 'ignorecase'    Ignoriere Groß/Kleinschreibung bei einer Suche
+	'is' 'incsearch'     Zeige Teilübereinstimmungen für einen Suchausdruck
+	'hls' 'hlsearch'     Hebe alle passenden Ausdrücke hervor
+    Der Optionsname kann in der Kurz- oder der Langform angegeben werden.
 
-  4. Die Eingabe von ":set xxx" setzt die Option "xxx"
-
+ 7. Stelle einer Option "no" voran, um sie abzuschalten:   :set noic
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			Lektion 7.1 : AUFRUFEN VON HILFE
 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-			  Lektion 7 : DIE ONLINE-HILFE
 
 		     ** Nutze das eingebaute Hilfesystem **
 
@@ -772,82 +861,120 @@ Bemerkung: Dies macht es überflüssig, erst i zu tippen, dann das letzte
 	- Drücke die <F1> Taste (falls Du eine besitzt)
 	- Tippe   :help <ENTER>
 
+  Lies den Text im Hilfefenster, um zu verstehen wie die Hilfe funktioniert.
+  Tippe  CTRL-W CTRL-W   , um von einem Fenster zum anderen zu springen.
   Tippe   :q <ENTER>  , um das Hilfefenster zu schließen.
 
-  Du kannst Hilfe über praktisch jedes Thema finden, indem Du dem ":help"
+  Du kannst Hilfe zu praktisch jedem Thema finden, indem Du dem ":help"-
   Kommando ein Argument gibst.  Probiere folgendes (<ENTER> nicht vergessen):
 
-  :help w
-  :help c_<T
-  :help insert-index
-  :help user-manual
+	:help w
+	:help c_CTRL-D
+	:help insert-index
+	:help user-manual
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		     Lektion 7.2: ERSTELLE EIN START-SKRIPT
 
 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-		      Lektion 8: ERSTELLE EIN START-SKRIPT
-
-		 **  Aktiviere die Funktionalitäten von Vim **
+	   **  Aktiviere die eingebauten Funktionalitäten von Vim **
 
   Vim besitzt viele Funktionalitäten, die über Vi hinausgehen, aber die meisten
-  von ihnen sind standardmäßig deaktiviert.
-  Um diese zu aktivieren, musst Du eine "vimrc" - Datei erstellen.
+  von ihnen sind standardmäßig deaktiviert. Um mehr Funktionalitäten zu nutzen,
+  musst Du eine "vimrc" - Datei erstellen.
+
+  1. Starte das Editieren der "vimrc"-Datei, abhängig von Deinem System:
+	:e ~/.vimrc		für Unix
+	:e $VIM/_vimrc		für MS-Windows
+
+  2. Nun lies den Inhalt der Beispiel-"vimrc"-Datei ein:
+	:r $VIMRUNTIME/vimrc_example.vim
+
+  3. Speichere die Datei mit:
+	:w
 
-1. Starte das Editieren der "vimrc"-Datei, dies ist von Deinem System abhängig:
-	:edit ~/.vimrc			für Unix
-	:edit $VIM/_vimrc		für MS-Windows
+  Beim nächsten Start von Vim wird die Syntaxhervorhebung aktiviert sein.
+  Du kannst all Deine bevorzugten Optionen zu dieser "vimrc"-Datei zufügen.
+  Für mehr Informationen tippe  :help vimrc-intro
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			 Lektion 7.3: VERVOLLSTÄNDIGEN
+
 
-2. Nun lies die Beispiel - "vimrc" ein:
+	   ** Kommandozeilenvervollständigung mit CTRL-D and <TAB> **
+
+  1. Stelle sicher, daß Vim nicht im vi-Kompatibilitätsmodus ist:  :set nocp
+
+  2. Siehe nach, welche Dateien im Verzeichnis existieren:  :!ls  oder  :dir
+
+  3. Tippe den Beginn eines Komandos:  :e
+
+  4. Drücke  CTRL-D  und Vim zeigt eine Liste mit "e" beginnender Kommandos.
 
-	:read $VIMRUNTIME/vimrc_example.vim
+  5. Drücke  <TAB>  und Vim vervollständigt den Kommandonamen zu ":edit".
+
+  6. Nun füge ein Leerzeichen und den Beginn einer existierenden Datei an:
+     :edit DAT
+
+  7. Drücke <TAB>. Vim vervollständigt den Namen (falls er eindeutig ist).
 
-3. Speichere die Datei mit:
+Bemerkung: Vervollständigung funktioniert für viele Kommandos. Versuche
+     einfach CTRL-D und <TAB>.  Dies ist insbesondere nützlich für  :help .
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			 ZUSAMMENFASSUNG VON LEKTION 7
+
+
+  1. Tippe  :help  oder drücke <F1> oder <Help>, um ein Hilfefenster zu öffnen.
 
-	:write
+  2. Tippe  :help Kommando  , um Hilfe über  Kommando  zu erhalten.
+
+  3. Tippe  CTRL-W CTRL-W  , um zum anderen Fenster zu springen.
+
+  4. Tippe  :q  , um das Hilfefenster zu schließen.
+
+  5. Erstelle ein vimrc - Startskript zur Sicherung bevorzugter Einstellungen.
 
-Das nächste Mal, wenn Du Vim startest, wird die Syntax-Hervorhebung
-aktiviert sein.
-Du kannst all Deine Lieblingsoptionen zu dieser "vimrc" - Datei zufügen.
+  6. Drücke CTRL-D nach dem Tippen eines Kommandos  :  , um mögliche
+     Vervollständigungen zu sehen.
+     Drücke <TAB> für eine einzige Vervollständigung.
+
+
+
+
 
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
   Damit ist der Vim Tutor beendet.  Die Intention war, einen kurzen und
   bündigen Überblick über den Vim Editor zu liefern; gerade genug, um relativ
-  leicht mit ihm umgehen zu können.
-  Der Vim Tutor hat nicht den geringsten Anspruch auf Vollständigkeit;
-  Vim hat noch weitaus mehr Kommandos.
-  Wage Dich als nächstes an das User Manual: ":help user-manual".
+  leicht mit ihm umgehen zu können.  Der Vim Tutor hat nicht den geringsten
+  Anspruch auf Vollständigkeit; Vim hat noch weitaus mehr Kommandos. Lies als
+  nächstes das User Manual: ":help user-manual".
 
-  Für weiteres Lesen und Lernen kann folgendes Buch empfohlen werden:
+  Für weiteres Lesen und Lernen ist folgendes Buch empfohlen :
 	Vim - Vi Improved - von Steve Oualline
 	Verlag: New Riders
-  Das erste Buch, das durchgängig Vim gewidmet ist.  Besonders nützlich
-  für Anfänger.
-  Viele Beispiele und Bilder sind enthalten.
-  Siehe http://www.iccf.nl/click5.html
-
-  Als aktuelle Referenz f�r Version 6.2 und knappe Einf�hrung dient das
-  folgende Buch:
-        vim ge-packt von Reinhard Wobst
-	mitp-Verlag, ISBN 3-8266-1425-9
-  Trotz der kompakten Darstellung ist es durch viele n�tzliche Beispiele auch
-  f�r Einsteiger empfehlenswert.  Probekapitel und die Beispielskripte sind
-  online erh�ltlich.  Siehe http://www.iccf.nl/click5.html
+  Das erste Buch, welches durchgängig Vim gewidmet ist.  Besonders nützlich
+  für Anfänger.  Viele Beispiele und Bilder sind enthalten.
+  Siehe http://iccf-holland.org/click5.html
 
   Folgendes Buch ist älter und mehr über Vi als Vim, aber auch empfehlenswert:
-	Linda Lamb und Arnold Robbins
-	Textbearbeitung mit dem vi-Editor
+	Textbearbeitung mit dem vi-Editor  -  von Linda Lamb und Arnold Robbins
 	Verlag O'Reilly - ISBN: 3897211262
   In diesem Buch kann man fast alles finden, was man mit Vi tun möchte.
   Die sechste Ausgabe enthält auch Informationen über Vim.
 
+  Als aktuelle Referenz für Version 6.2 und knappe Einführung dient das
+  folgende Buch:
+	vim ge-packt von Reinhard Wobst
+	mitp-Verlag, ISBN 3-8266-1425-9
+  Trotz der kompakten Darstellung ist es durch viele nützliche Beispiele auch
+  für Einsteiger empfehlenswert.  Probekapitel und die Beispielskripte sind
+  online erhältlich.  Siehe http://iccf-holland.org/click5.html
+
   Dieses Tutorial wurde geschrieben von Michael C. Pierce and Robert K. Ware,
-  Colorado School of Mines. Es benutzt Ideen, die Charles Smith,
-  Colorado State University, zur Verfügung stellte.
-  E-mail: bware@mines.colorado.edu.
+  Colorado School of Mines. Es benutzt Ideen, die Charles Smith, Colorado State
+  University, zur Verfügung stellte.  E-mail: bware@mines.colorado.edu.
 
   Bearbeitet für Vim von Bram Moolenaar.
+  Deutsche Übersetzung von Joachim Hofmann 2007.  E-mail: Joachim.Hof@gmx.de
 
-  Deutsche Übersetzung von Joachim Hofmann, September 2002.
-  E-mail: Joachim.Hof@gmx.de
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
--- a/runtime/tutor/tutor.gr
+++ b/runtime/tutor/tutor.gr
@@ -557,7 +557,7 @@
 
 	  ** Ãéá íá óþóåôå ôìÞìá ôïõ áñ÷åßïõ, ãñÜøôå  :#,# w ÁÑ×ÅÉÏ **
 
-  1. ¢ëëç ìéá öïñÜ, ãñÜøôå  :!dir  Þ  :!ls  ãéá íá ðÜñåôå ìßá ëßóôá áðü ôïí
+  1. ¶ëëç ìéá öïñÜ, ãñÜøôå  :!dir  Þ  :!ls  ãéá íá ðÜñåôå ìßá ëßóôá áðü ôïí
      êáôÜëïãü óáò êáé äéáëÝîôå Ýíá êáôÜëëçëï üíïìá áñ÷åßïõ üðùò ôï TEST.
 
   2. Ìåôáêéíåßóôå ôïí äñïìÝá óôï ðÜíù ìÝñïò áõôÞò ôçò óåëßäáò êáé ðáôÞóôå
@@ -646,7 +646,7 @@
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 			 ÌÜèçìá 6.2: Ç ÅÍÔÏËÇ ÐÑÏÓÈÇÊÇÓ
 
-	  ** ÐáôÞóôå   a   ãéá íá åéóÜãåôå êåßìåíï ÌÅÔ¢ ôïí äñïìÝá. **
+	  ** ÐáôÞóôå   a   ãéá íá åéóÜãåôå êåßìåíï ÌÅÔÁ ôïí äñïìÝá. **
 
   1. Ìåôáêéíåßóôå ôïí äñïìÝá óôï ôÝëïò ôçò ðñþôçò ãñáììÞò ðáñáêÜôù
      óçìåéùìÝíç ìå ---> ðáôþíôáò  $  óôçí ÊáíïíéêÞ ÊáôÜóôáóç.
--- a/runtime/tutor/tutor.gr.cp737
+++ b/runtime/tutor/tutor.gr.cp737
@@ -87,7 +87,7 @@
 
 ---> The ccow jumpedd ovverr thhe mooon.
 
-  5. ’騘 §¦¬ ž š¨˜££ã œå¤˜  ©à©«ã, §žš˜å¤œ«œ ©«¦ ‹áŸž£˜ 1.4.
+  5. ’騘 §¦¬ ž š¨˜££ã œå¤˜  ©à©«ã, §žš˜å¤«œ ©«¦ ‹áŸž£˜ 1.4.
 
 ‘†‹„ˆ—‘†: ‰˜Ÿéª › ˜«¨â®œ«œ ˜¬«ã¤ «ž¤ §œ¨ ãšž©ž, §¨¦©§˜Ÿã©«œ ¤˜ £ž¤
 	  ˜§¦£¤ž£¦¤œçœ«œ, £˜Ÿ˜å¤œ«œ £œ «ž ®¨ã©ž.
@@ -124,7 +124,7 @@
   2. ‚ ˜ ¤˜ £§œå«œ ©«¦¤ Vim (˜§æ «ž¤ §¨¦«¨¦§ã %) š¨á¯«œ:  vim €•„ˆŽ <ENTER>
 
   3. ‚ ˜ ¤˜ ™šœå«œ š¨á¯«œ:  <ESC>   :q!   <ENTER>   š ˜ ˜§æ¨¨ ¯ž «à¤ ˜¢¢˜šé¤.
-		 ì š¨á¯«œ:  <ESC>   :wq	<ENTER>   š ˜ ˜§¦Ÿã¡œ¬©ž «à¤ ˜¢¢˜šé¤.
+		 ì š¨á¯«œ:  <ESC>   :wq   <ENTER>   š ˜ ˜§¦Ÿã¡œ¬©ž «à¤ ˜¢¢˜šé¤.
 
   4. ‚ ˜ ¤˜ › ˜š¨á¯œ«œ ⤘¤ ®˜¨˜¡«ã¨˜ ¡á«à ˜§æ «¦¤ ›¨¦£â˜ ©œ
      ‰˜¤¦¤ ¡ã ‰˜«á©«˜©ž §˜«ã©«œ:  x
@@ -157,7 +157,7 @@
 ---> There are a some words fun that don't belong paper in this sentence.
 
   5. „§˜¤˜¢á™œ«œ «˜ ™ã£˜«˜ 3 ¡˜  4 £â®¨  ž §¨æ«˜©ž ¤˜ œå¤˜  ©à©«ã ¡˜ 
-     §žš˜å¤«œ ©«¦ ‹áŸž£˜ 2.2.
+     §žš˜å¤œ«œ ©«¦ ‹áŸž£˜ 2.2.
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 		   ‹áŸž£˜ 2.2: „ˆ‘‘Ž’„„‘ „Œ’ŽŠ„‘ ƒˆ€‚€”†‘
@@ -277,6 +277,7 @@
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 			‹áŸž£˜ 3.1: † „Œ’ŽŠ† ’ŽŽ‡„’†‘†‘
 
+
   ** ˜«ã©«œ  p  š ˜ ¤˜ «¦§¦Ÿœ«ã©œ«œ «ž¤ «œ¢œ¬«˜å˜ › ˜š¨˜­ã £œ«á «¦¤ ›¨¦£â˜.  **
 
   1. ‹œ«˜¡ ¤œå©«œ «¦¤ ›¨¦£â˜ ©«ž¤ §¨é«ž š¨˜££ã «žª §˜¨˜¡á«à ¦£á›˜ª.
@@ -304,7 +305,7 @@
     ** ˜«ã©«œ  r  ¡˜  ®˜¨˜¡«ã¨˜ š ˜ ¤˜ ˜¢¢á¥œ«œ ˜¬«æ¤ §¦¬ œå¤˜ 
        ¡á«à ˜§æ «¦¤ ›¨¦£â˜. **
 
-  1. ‹œ«˜¡ ¤œå©«œ «¦¤ ›¨¦£â˜ ©«ž¤ §¨é«ž š¨˜££ã §˜¨˜¡á«à ©ž£œ é£œ¤ž £œ --->.
+  1. ‹œ«˜¡ ¤œå©«œ «¦¤ ›¨¦£â˜ ©«ž¤ §¨é«ž š¨˜££ã §˜¨˜¡á«à ©ž£œ à£â¤ž £œ --->.
 
   2. ‹œ«˜¡ ¤œå©«œ «¦¤ ›¨¦£â˜ â«©  é©«œ ¤˜ œå¤˜  §á¤à ©«¦ §¨é«¦ ¢áŸ¦ª.
 
@@ -603,7 +604,7 @@
   1.  :!œ¤«¦¢ã  œ¡«œ¢œå £å˜ œ¥à«œ¨ ¡ã œ¤«¦¢ã.
 
       ‹œ¨ ¡á ®¨ã© £˜ §˜¨˜›œåš£˜«˜ œå¤˜  (MS-DOS):
-      :!dir	       - œ£­á¤ ©ž ¢å©«˜ª œ¤æª ¡˜«˜¢æš¦¬.
+      :!dir            - œ£­á¤ ©ž ¢å©«˜ª œ¤æª ¡˜«˜¢æš¦¬.
       :!del €•„ˆŽ     - › ˜š¨á­œ  «¦ €•„ˆŽ.
 
   2.  :w €•„ˆŽ   š¨á­œ  «¦ «¨â®à¤ ˜¨®œå¦ «¦¬ Vim ©«¦ ›å©¡¦ £œ 椦£˜ €•„ˆŽ.
@@ -645,7 +646,7 @@
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 			 ‹áŸž£˜ 6.2: † „Œ’ŽŠ† Ž‘‡†‰†‘
 
-	  ** ˜«ã©«œ   a   š ˜ ¤˜ œ ©ášœ«œ ¡œå£œ¤¦ ‹„’ê «¦¤ ›¨¦£â˜. **
+	  ** ˜«ã©«œ   a   š ˜ ¤˜ œ ©ášœ«œ ¡œå£œ¤¦ ‹„’€ «¦¤ ›¨¦£â˜. **
 
   1. ‹œ«˜¡ ¤œå©«œ «¦¤ ›¨¦£â˜ ©«¦ «â¢¦ª «žª §¨é«žª š¨˜££ãª §˜¨˜¡á«à
      ©ž£œ à£â¤ž £œ ---> §˜«é¤«˜ª  $  ©«ž¤ ‰˜¤¦¤ ¡ã ‰˜«á©«˜©ž.
@@ -660,7 +661,7 @@
 
   3. ‘¬£§¢ž¨é©«œ «é¨˜ «ž¤ §¨é«ž š¨˜££ã. ‘ž£œ é©«œ œ§å©žª æ«  ž §¨¦©Ÿã¡ž œå¤˜ 
      ˜¡¨ ™éª å› ˜ ©«ž¤ ‰˜«á©«˜©ž ‰œ £â¤¦¬ £œ «ž¤ ‰˜«á©«˜©ž „ ©˜šàšãª, œ¡«æª
-	  ˜§æ «ž Ÿâ©ž §¦¬ œ ©ášœ«˜  «¦ ¡œå£œ¤¦.
+     ˜§æ «ž Ÿâ©ž §¦¬ œ ©ášœ«˜  «¦ ¡œå£œ¤¦.
 
 ---> This line will allow you to practice
 ---> This line will allow you to practice appending text to the end of a line.
@@ -812,4 +813,3 @@
   ¨¦©˜¨£¦šã š ˜ «¦¤ Vim ˜§æ «¦¤ Bram Moolenaar.
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
--- a/runtime/tutor/tutor.no
+++ b/runtime/tutor/tutor.no
@@ -1,25 +1,26 @@
 ===============================================================================
-= V e l k o m m e n   t i l   i n n f ø r i n g e n   i   V i m  --  Ver. 1.5 =
+= V e l k o m m e n   t i l   i n n f ø r i n g e n   i   V i m  --  Ver. 1.7 =
 ===============================================================================
 
-     Vim er en meget kraftig editor med mange kommandoer, alt for mange
-     til å kunne gå gjennom alle i en innføring som denne. Den er beregnet
-     på å sette deg inn i bruken av nok kommandoer så du vil være i stand
-     til lett å kunne bruke Vim som en editor til alle formål.
+     Vim er en meget kraftig editor med mange kommandoer, alt for mange til å
+     kunne gå gjennom alle i en innføring som denne. Den er beregnet på å
+     sette deg inn i bruken av nok kommandoer så du vil være i stand til lett
+     å kunne bruke Vim som en editor til alle formål.
 
      Tiden som kreves for å gå gjennom denne innføringen tar ca. 25-30
      minutter, avhengig av hvor mye tid du bruker til eksperimentering.
 
+     MERK:
      Kommandoene i leksjonene vil modifisere teksten. Lag en kopi av denne
      filen som du kan øve deg på (hvis du kjørte «vimtutor»-kommandoen, er
      dette allerede en kopi).
 
-     Det er viktig å huske at denne innføringen er beregnet på læring
-     gjennom bruk. Det betyr at du må utføre kommandoene for å lære dem
-     skikkelig. Hvis du bare leser teksten, vil du glemme kommandoene!
+     Det er viktig å huske at denne innføringen er beregnet på læring gjennom
+     bruk. Det betyr at du må utføre kommandoene for å lære dem skikkelig.
+     Hvis du bare leser teksten, vil du glemme kommandoene!
 
-     Først av alt, sjekk at «Caps Lock» IKKE er aktiv og trykk «j»-tasten
-     helt til leksjon 1.1 fyller skjermen.
+     Først av alt, sjekk at «Caps Lock» IKKE er aktiv og trykk «j»-tasten for
+     å flytte markøren helt til leksjon 1.1 fyller skjermen.
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 		      Leksjon 1.1:  FLYTTING AV MARKØREN
 
@@ -33,46 +34,46 @@
   1. Flytt markøren rundt på skjermen til du har fått det inn i fingrene.
 
   2. Hold inne nedovertasten (j) til den repeterer.
----> Nå vet du hvordan du beveger deg til neste leksjon.
+     Nå vet du hvordan du beveger deg til neste leksjon.
 
   3. Gå til leksjon 1.2 ved hjelp av nedovertasten.
 
-MERK: Hvis du blir usikker på noe du har skrevet, trykk <ESC> for å gå til
-      normalmodus. Skriv deretter kommandoen du ønsket.
+Merk: Hvis du blir usikker på noe du har skrevet, trykk <ESC> for å gå til
+      normalmodus. Skriv deretter kommandoen du ønsket på nytt.
 
-MERK: Piltastene skal også virke. Men ved å bruke hjkl vil du være i stand til
-      å bevege markøren mye raskere når du er blitt vant til det.
+Merk: Piltastene skal også virke. Men ved å bruke hjkl vil du være i stand til
+      å bevege markøren mye raskere når du er blitt vant til det. Helt sant!
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-		  Leksjon 1.2: OPPSTART OG AVSLUTNING AV VIM
+			  Leksjon 1.2: AVSLUTTE VIM
 
 
-  !! MERK: Før du utfører noen av punktene nedenfor, les hele leksjonen!
+  !! MERK: Før du utfører noen av punktene nedenfor, les hele leksjonen!!
 
   1. Trykk <ESC>-tasten (for å forsikre deg om at du er i normalmodus).
 
-  2. Skriv:  :q! <ENTER>
-
----> Dette avslutter editoren UTEN at endringer blir lagret.
-     Hvis du vil lagre endringene og avslutte, skriver du:
-	     :wq <ENTER>
+  2. Skriv:	:q! <ENTER>.
+     Dette avslutter editoren og FORKASTER alle forandringer som du har gjort.
 
   3. Når du ser kommandolinjen i skallet, skriv kommandoen som startet denne
-     innføringen. Det kan være:  vimtutor <ENTER>
-     Normalt vil du bruke:	 vim tutor <ENTER>
-
----> Med «vim» menes Vim-editoren, «tutor» er filen som du vil redigere.
+     innføringen. Den er:   vimtutor <ENTER>
 
   4. Hvis du er sikker på at du husker dette, utfør punktene 1 til 3 for å
-     avslutte og starte editoren på nytt. Deretter flytter du markøren ned til
-     leksjon 1.3.
+     avslutte og starte editoren på nytt.
+
+MERK:  :q! <ENTER>  forkaster alle forandringer som du gjorde. I løpet av noen
+       få leksjoner vil du lære hvordan du lagrer forandringene til en fil.
+
+  5. Flytt markøren ned til leksjon 1.3.
+
+
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 		 Leksjon 1.3: REDIGERING AV TEKST -- SLETTING
 
 
-	  ** Trykk tasten  x  for å slette tegnet under markøren. **
+	     ** Trykk  x  for å slette tegnet under markøren. **
 
-  1. Flytt markøren til den første linjen merket med  --->  .
+  1. Flytt markøren til den første linjen merket med  --->.
 
   2. For å ordne feilene på linjen, flytt markøren til den er oppå tegnet som
      skal slettes.
@@ -81,21 +82,21 @@ MERK: Piltastene skal også virke. Men ved å bruke hjkl vil du være i stand til
 
   4. Repeter punkt 2 til 4 til setningen er lik den som er under.
 
----> Kkua hoppett ovverr måååånenn.
----> Kua hoppet over månen.
+---> Hessstennnn brrråsnudddde ii gaaata.
+---> Hesten bråsnudde i gata.
 
   5. Nå som linjen er korrekt, gå til leksjon 1.4.
 
-HUSK: Når du går gjennom innføringen, ikke bare prøv å huske kommandoene, men
+MERK: Når du går gjennom innføringen, ikke bare prøv å huske kommandoene, men
       bruk dem helt til de sitter.
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 		Leksjon 1.4: REDIGERING AV TEKST -- INNSETTING
 
 
-       ** Når du er i normalmodus, trykk  i  for å sette inn tekst. **
+		    ** Trykk  i  for å sette inn tekst. **
 
-  1. Flytt markøren til den første linjen som er merket med  --->  .
+  1. Flytt markøren til den første linjen som er merket med --->.
 
   2. For å gjøre den første linjen lik den andre, flytt markøren til den står
      på tegnet ETTER posisjonen der teksten skal settes inn.
@@ -113,45 +114,91 @@ HUSK: Når du går gjennom innføringen, ikke bare prøv å huske kommandoene, men
 
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		Leksjon 1.5: REDIGERING AV TEKST -- LEGGE TIL
+
+
+		    ** Trykk  A  for å legge til tekst. **
+
+  1. Flytt markøren til den første linjen nedenfor merket --->.
+     Det har ikke noe å si hvor markøren er plassert på den linjen.
+
+  2. Trykk  A  og skriv inn det som skal legges til.
+
+  3. Når teksten er lagt til, trykk <ESC> for å returnere til normalmodusen.
+
+  4. Flytt markøren til den andre linjen markert med ---> og repeter steg 2 og
+     3 for å reparere denne setningen.
+
+---> Det mangler noe tekst p
+     Det mangler noe tekst på denne linjen.
+---> Det mangler også litt tek
+     Det mangler også litt tekst på denne linjen.
+
+  5. Når du føler at du behersker å legge til tekst, gå til leksjon 1.6.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			 Leksjon 1.6: REDIGERE EN FIL
+
+
+	       ** Bruk	:wq  for å lagre en fil og avslutte. **
+
+  !! MERK: Før du utfører noen av stegene nedenfor, les hele denne leksjonen!!
+
+  1. Avslutt denne innføringen som du gjorde i leksjon 1.2:  :q!
+
+  2. Skriv denne kommandoen på kommandolinja:  vim tutor <ENTER>
+     «vim» er kommandoen for å starte Vim-editoren, «tutor» er navnet på fila
+     som du vil redigere. Bruk en fil som kan forandres.
+
+  3. Sett inn og slett tekst som du lærte i de foregående leksjonene.
+
+  4. Lagre filen med forandringene og avslutt Vim med:	:wq <ENTER>
+
+  5. Start innføringen på nytt og flytt ned til oppsummeringen som følger.
+
+  6. Etter å ha lest og forstått stegene ovenfor: Sett i gang.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 			  OPPSUMMERING AV LEKSJON 1
 
 
   1. Markøren beveges ved hjelp av piltastene eller hjkl-tastene.
 	 h (venstre)	 j (ned)     k (opp)	 l (høyre)
 
-  2. For å starte Vim (fra skall-kommandolinjen), skriv:  vim FILNAVN <ENTER>
+  2. For å starte Vim fra skall-kommandolinjen, skriv:	vim FILNAVN <ENTER>
 
-  3. For å avslutte Vim, skriv:  <ESC> :q! <ENTER>  for å forkaste forandringer.
+  3. For å avslutte Vim, skriv:  <ESC> :q! <ENTER>  for å forkaste endringer.
 		   ELLER skriv:  <ESC> :wq <ENTER>  for å lagre forandringene.
 
-  4. For å slette et tegn under markøren når du er i normalmodus, trykk  x
+  4. For å slette tegnet under markøren, trykk:  x
 
-  5. For å sette inn tekst ved markøren når du er i normalmodus, trykk:
-	 i    [skriv inn teksten]    <ESC>
+  5. For å sette inn eller legge til tekst, trykk:
+	 i    skriv innsatt tekst  <ESC>	sett inn før markøren
+	 A    skriv tillagt tekst  <ESC>	legg til på slutten av linjen
 
 MERK: Når du trykker <ESC> går du til normalmodus eller du avbryter en uønsket
       og delvis fullført kommando.
 
   Nå kan du gå videre til leksjon 2.
 
-
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 			Leksjon 2.1: SLETTEKOMMANDOER
 
 
-	     ** Trykk  dw  for å slette til slutten av et ord. **
+		    ** Trykk  dw  for å slette et ord. **
 
   1. Trykk <ESC> for å være sikker på at du er i normalmodus.
 
-  2. Flytt markøren til den første linjen nedenfor merket  --->  .
+  2. Flytt markøren til den første linjen nedenfor merket --->.
 
   3. Flytt markøren til begynnelsen av ordet som skal slettes.
 
   4. Trykk  dw	og ordet vil forsvinne.
 
-MERK: Bokstavene vil komme til syne på den nederste linjen på skjermen
-      etterhvert som du skriver dem. Hvis du skriver feil, trykk <ESC> og
-      start på nytt.
+MERK: Bokstaven  d  vil komme til syne på den nederste linjen på skjermen når
+      du skriver den. Vim venter på at du skal skrive w . Hvis du ser et annet
+      tegn enn	d  har du skrevet noe feil; trykk <ESC> og start på nytt.
 
 ---> Det er agurk tre ord eple som ikke hører pære hjemme i denne setningen.
 ---> Det er tre ord som ikke hører hjemme i denne setningen.
@@ -166,13 +213,13 @@ MERK: Bokstavene vil komme til syne på den nederste linjen på skjermen
 
   1. Trykk <ESC> for å være sikker på at du er i normalmodus.
 
-  2. Flytt markøren til linjen nedenfor merket	--->  .
+  2. Flytt markøren til linjen nedenfor merket --->.
 
   3. Flytt markøren til punktet der linjen skal kuttes (ETTER første punktum).
 
   4. Trykk  d$	for å slette alt til slutten av linjen.
 
----> Noen skrev slutten på linjen en gang for mye. på linjen en gang for mye.
+---> Noen skrev slutten på linjen en gang for mye. linjen en gang for mye.
 
   5. Gå til leksjon 2.3 for å forstå hva som skjer.
 
@@ -182,65 +229,112 @@ MERK: Bokstavene vil komme til syne på den nederste linjen på skjermen
 
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-		    Leksjon 2.3: OM KOMMANDOER OG OBJEKTER
+		   Leksjon 2.3: OM OPERATORER OG BEVEGELSER
 
 
-  Formatet for slettekommandoen  d  er som følger:
+  Mange kommandoer som forandrer teksten er laget ut i fra en operator og en
+  bevegelse. Formatet for en slettekommando med sletteoperatoren  d  er:
 
-	[nummer]  d  objekt	ELLER	  d  [nummer]  objekt
+	d   bevegelse
 
   Der:
-    nummer -- hvor mange ganger kommandoen utføres (valgfri, standard=1).
-    d	   -- selve slettekommandoen.
-    objekt -- hva kommandoen vil operere på (listet ut nedenfor).
+    d	      - er sletteoperatoren.
+    bevegelse - er hva operatoren vil opere på (listet nedenfor).
+
+  En kort liste med bevegelser:
+    w - til starten av det neste ordet, UNNTATT det første tegnet.
+    e - til slutten av det nåværende ordet, INKLUDERT det siste tegnet.
+    $ - til slutten av linjen, INKLUDERT det siste tegnet.
+
+  Ved å skrive	de  vil altså alt fra markøren til slutten av ordet bli
+  slettet.
+
+MERK:  Ved å skrive kun bevegelsen i normalmodusen uten en operator vil
+       markøren flyttes som spesifisert.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		 LEKSJON 2.4: BRUK AV TELLER FOR EN BEVEGELSE
+
 
-  En kort liste med objekter:
-    w -- fra markøren til slutten av ordet, inkludert mellomrom.
-    e -- fra markøren til slutten av ordet, IKKE inkludert mellomrom.
-    $ -- fra markøren til slutten av linjen.
+ ** Ved å skrive et tall foran en bevegelse repeterer den så mange ganger. **
+
+  1. Flytt markøren til starten av linjen markert ---> nedenfor.
+
+  2. Skriv  2w	for å flytte markøren to ord framover.
 
-MERK: For den eventyrlystne: Skriving av kun objektet i normalmodus uten en
-      kommando vil flytte markøren til objektet i listen.
+  3. Skriv  3e	for å flytte markøren framover til slutten av det tredje
+     ordet.
+
+  4. Skriv  0  (null) for å flytte til starten av linjen.
+
+  5. Repeter steg 2 og 3 med forskjellige tall.
+
+---> Dette er en linje med noen ord som du kan bevege deg rundt på.
+
+  6. Gå videre til leksjon 2.5.
 
 
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-	     Leksjon 2.4: ET UNNTAK FRA «KOMMANDO-OBJEKT»-REGELEN
+		 Leksjon 2.5: BRUK AV ANTALL FOR Å SLETTE MER
+
+
+     ** Et tall sammen med en operator repeterer den så mange ganger. **
+
+  I kombinasjonen med sletteoperatoren og en bevegelse nevnt ovenfor setter du
+  inn antall før bevegelsen for å slette mer:
+	 d  nummer  bevegelse
+
+  1. Flytt markøren til det første ordet med STORE BOKSTAVER på linjen markert
+     med --->.
+
+  2. Skriv  2dw  for å slette de to ordene med store bokstaver.
+
+  3. Repeter steg 1 og 2 med forskjelling antall for å slette de etterfølgende
+     ordene som har store bokstaver.
+
+---> Denne ABC DE linjen FGHI JK LMN OP er nå Q RS TUV litt mer lesbar.
+
+MERK: Et antall mellom operatoren  d  og bevegelsen virker på samme måte som å
+      bruke bevegelsen uten en operator.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			Leksjon 2.6: OPERERE PÅ LINJER
 
 
 		 ** Trykk  dd  for å slette en hel linje. **
 
   På grunn av at sletting av linjer er mye brukt, fant utviklerne av Vi ut at
-  det vil være lettere å rett og slett trykke to «d»-er etter hverandre for å
-  slette en linje.
+  det vil være lettere å rett og slett trykke to d-er for å slette en linje.
 
   1. Flytt markøren til den andre linjen i verset nedenfor.
-  2. Trykk  dd	for å slette linjen.
+  2. Trykk  dd	 å slette linjen.
   3. Flytt deretter til den fjerde linjen.
-  4. Trykk  2dd  (husk «nummer-kommando-objekt») for å slette disse to
-     linjene.
+  4. Trykk  2dd  for å slette to linjer.
 
-       1) Roser er røde
-       2) Gjørme er gøy,
-       3) Fioler er blå,
-       4) Jeg har en bil,
-       5) Klokker viser tiden,
-       6) Druer er søte
-       7) Og du er likeså.
+--->  1) Roser er røde,
+--->  2) Gjørme er gøy,
+--->  3) Fioler er blå,
+--->  4) Jeg har en bil,
+--->  5) Klokker viser tiden,
+--->  6) Druer er søte
+--->  7) Og du er likeså.
+
+
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-			Leksjon 2.5: ANGRE-KOMMANDOEN
+			Leksjon 2.7: ANGRE-KOMMANDOEN
 
 
   ** Trykk  u  for å angre siste kommando,  U  for å fikse en hel linje. **
 
-  1. Flytt markøren til linjen nedenfor merket	--->  og plasser den på den
+  1. Flytt markøren til linjen nedenfor merket ---> og plasser den på den
      første feilen.
   2. Trykk  x  for å slette det første uønskede tegnet.
   3. Trykk så  u  for å angre den siste utførte kommandoen.
-  4. Deretter ordner du alle feilene på linjene ved å bruke  x	kommandoen.
-  5. Trykk nå en stor  U  for å sette linjen tilbake til det den var.
+  4. Deretter ordner du alle feilene på linjene ved å bruke kommandoen	x  .
+  5. Trykk nå en stor  U  for å sette linjen tilbake til det den var
+     originalt.
   6. Trykk  u  noen ganger for å angre	U  og foregående kommandoer.
-  7. Deretter trykker du  Ctrl-r  (hold Ctrl nede mens du trykker «r») noen
+  7. Deretter trykker du  CTRL-R  (hold CTRL nede mens du trykker R) noen
      ganger for å gjenopprette kommandoene (omgjøre angrekommandoene).
 
 ---> RReparer feiilene påå denne linnnjen oog erssstatt dem meed angre.
@@ -249,50 +343,49 @@ MERK: For den eventyrlystne: Skriving av
      leksjon 2.
 
 
-
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 			  OPPSUMMERING AV LEKSJON 2
 
 
-  1. For å slette fra markøren til slutten av et ord, trykk:  dw
-
+  1. For å slette fra markøren fram til det neste ordet, trykk:  dw
   2. For å slette fra markøren til slutten av en linje, trykk:	d$
-
   3. For å slette en hel linje, trykk:	dd
 
-  4. Formatet for en kommando i normalmodus er:
-
-       [nummer]  kommando  objekt    ELLER    kommando	[nummer]  objekt
+  4. For å repetere en bevegelse, sett et nummer foran:  2w
+  5. Formatet for en forandringskommando er:
+	       operator  [nummer]  bevegelse
      der:
-       nummer	-- hvor mange ganger kommandoen skal repeteres
-       kommando -- hva som skal gjøres, f.eks.	d  for å slette
-       objekt	-- hva kommandoen skal operere på, eksempelvis	w  (ord),
+       operator  - hva som skal gjøres, f.eks.	d  for å slette
+       [nummer]  - et valgfritt antall for å repetere bevegelsen
+       bevegelse - hva kommandoen skal operere på, eksempelvis	w  (ord),
 		   $  (til slutten av linjen) og så videre.
 
-  5. For å angre tidligere kommandoer, skriv  u  (liten u)
-     For å angre alle forandringer på en linje, skriv  U  (stor U)
-     For å omgjøre angringen, trykk  Ctrl-r
+  6. For å gå til starten av en linje, bruk en null:  0
+
+  7. For å angre tidligere endringer, skriv:		u  (liten u)
+     For å angre alle forandringer på en linje, skriv:	U  (stor U)
+     For å omgjøre angringen, trykk:			CTRL-R
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 		      Leksjon 3.1: «LIM INN»-KOMMANDOEN
 
 
-   ** Trykk  p	for å lime inn den siste slettede teksten etter markøren **
+    ** Trykk  p  for å lime inn tidligere slettet tekst etter markøren **
 
-  1. Flytt markøren til den første linjen i listen nedenfor.
+  1. Flytt markøren til den første linjen med ---> nedenfor.
 
-  2. Trykk  dd	for å slette linjen og lagre den i utklippstavlen til Vim.
+  2. Trykk  dd	for å slette linjen og lagre den i et Vim-register.
 
-  3. Flytt markøren til linjen OVER posisjonen linjen skal settes inn.
+  3. Flytt markøren til c)-linjen, OVER posisjonen linjen skal settes inn.
 
-  4. Mens du er i normalmodus, trykk  p  for å erstatte linjen.
+  4. Trykk  p  for å legge linjen under markøren.
 
   5. Repeter punkt 2 til 4 helt til linjene er i riktig rekkefølge.
 
-       d) Kan du også lære?
-       b) Fioler er blå,
-       c) Intelligens må læres,
-       a) Roser er røde,
+---> d) Kan du også lære?
+---> b) Fioler er blå,
+---> c) Intelligens må læres,
+---> a) Roser er røde,
 
 
 
@@ -300,17 +393,17 @@ MERK: For den eventyrlystne: Skriving av
 		      Leksjon 3.2: «ERSTATT»-KOMMANDOEN
 
 
-       ** Trykk  r  og et tegn for å erstatte tegnet under markøren. **
+	 ** Trykk  rx  for å erstatte tegnet under markøren med x. **
 
-  1. Flytt markøren til den første linjen nedenfor merket  --->  .
+  1. Flytt markøren til den første linjen nedenfor merket --->.
 
   2. Flytt markøren så den står oppå den første feilen.
 
-  3. Trykk  r  og deretter tegnet som skal erstatte det som er feil.
+  3. Trykk  r  og deretter tegnet som skal være der.
 
-  4. Repeter punkt 2 og 3 til den første linjen er korrekt.
+  4. Repeter punkt 2 og 3 til den første linjen er lik den andre.
 
----> Da dfnne lynjxn ble zkrevet, var det nøen som trykket feite taster!
+---> Da dfnne lynjxn ble zkrevet, var det nøen som tjykket feite taster!
 ---> Da denne linjen ble skrevet, var det noen som trykket feile taster!
 
   5. Gå videre til leksjon 3.2.
@@ -320,189 +413,189 @@ MERK: Husk at du bør lære ved å BRUKE, ikke pugge.
 
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-		      Leksjon 3.3: «FORANDRE»-KOMMANDOEN
+		      Leksjon 3.3: «FORANDRE»-OPERATOREN
 
 
-	** For å forandre en del av eller et helt ord, trykk  cw  . **
+	   ** For å forandre til slutten av et ord, trykk  ce . **
 
-  1. Flytt markøren til den første linjen nedenfor som er merket  --->	.
+  1. Flytt markøren til den første linjen nedenfor som er merket --->.
 
-  2. Plasser markøren på «u»-en i «lubjwr».
+  2. Plasser markøren på  u  i «lubjwr».
 
-  3. Trykk  cw	og det korrekte ordet (i dette tilfellet, skriv «injen».)
+  3. Trykk  ce	og det korrekte ordet (i dette tilfellet, skriv «injen»).
 
-  4. Trykk <ESC> og gå til den neste feilen (det første tegnet som skal
-     forandres).
+  4. Trykk <ESC> og gå til det neste tegnet som skal forandres.
 
   5. Repeter punkt 3 og 4 helt til den første setningen er lik den andre.
 
 ---> Denne lubjwr har noen wgh som må forkwåp med «forækzryas»-kommandoen.
 ---> Denne linjen har noen ord som må forandres med «forandre»-kommandoen.
 
-  Vær oppmerksom på at	cw  ikke bare forandrer ordet, men også går inn i
-  innsettingsmodus.
+Vær oppmerksom på at  ce  sletter ordet og går inn i innsettingsmodus.
+
+
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 		Leksjon 3.4: FLERE FORANDRINGER VED BRUK AV c
 
 
-  ** «Forandre»-kommandoen blir brukt med de samme objektene som «slett». **
+ ** Forandringskommandoen blir brukt med de samme bevegelser som «slett». **
 
-  1. «Forandre»-kommandoen fungerer på samme måte som «slett». Formatet er:
+  1. Forandringsoperatoren fungerer på samme måte som «slett». Formatet er:
 
-       [nummer]  c  objekt    ELLER    c  [nummer]  objekt
+	 c    [nummer]	 bevegelse
 
-  2. Objektene er også de samme, som for eksempel  w  (ord),  $  (slutten av
-     en linje) og så videre.
+  2. Bevegelsene er de samme, som for eksempel	w  (ord) og  $	(slutten av en
+     linje).
 
-  3. Gå til den første linjen nedenfor som er merket  --->  .
+  3. Gå til den første linjen nedenfor som er merket --->.
 
   4. Flytt markøren til den første feilen.
 
-  5. Skriv  c$	for å forandre resten av linjen lik den andre og trykk <ESC>.
+  5. Skriv  c$	og skriv resten av linjen lik den andre og trykk <ESC>.
 
 ---> Slutten på denne linjen trenger litt hjelp for å gjøre den lik den neste.
----> Slutten på denne linjen trenger å bli rettet ved bruk av «c$»-kommandoen.
+---> Slutten på denne linjen trenger å bli rettet ved bruk av c$-kommandoen.
 
-
+MERK: Du kan bruke slettetasten for å rette feil mens du skriver.
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 			  OPPSUMMERING AV LEKSJON 3
 
 
-  1. For å erstatte tekst som allerede er blitt slettet, trykk	p  . Dette
+  1. For å legge tilbake tekst som nettopp er blitt slettet, trykk  p  . Dette
      limer inn den slettede teksten ETTER markøren (hvis en linje ble slettet
      vil den bli limt inn på linjen under markøren).
 
   2. For å erstatte et tegn under markøren, trykk  r  og deretter tegnet som
-     skal erstatte det originale tegnet.
+     du vil ha der.
 
-  3. «Forandre»-kommandoen lar deg forandre det spesifiserte objektet fra
-     markøren til slutten av objektet, f.eks.: Trykk  cw  for å forandre fra
-     markøren til slutten av ordet,  c$  for å forandre til slutten av linjen.
+  3. Forandringsoperatoren lar deg forandre fra markøren til dit bevegelsen
+     tar deg. Det vil si, skriv  ce  for å forandre fra markøren til slutten
+     av ordet,	c$  for å forandre til slutten av linjen.
 
   4. Formatet for «forandre» er:
 
-	 [nummer]  c  objekt	ELLER	 c  [nummer]  objekt
+	 c   [nummer]	bevegelse
 
-  Nå kan du gå til neste leksjon.
+Nå kan du gå til neste leksjon.
 
 
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-		      Leksjon 4.1: POSISJON OG FILSTATUS
-
+	     Leksjon 4.1: POSISJONERING AV MARKØREN OG FILSTATUS
 
- ** Trykk Ctrl-g for å vise posisjonen i filen og filstatusen.
-    Trykk Shift-G for å gå til en spesifikk linje i filen. **
+	** Trykk CTRL-G for å vise posisjonen i filen og filstatusen.
+	   Trykk  G  for å gå til en spesifikk linje i filen. **
 
-MERK: Les hele leksjonen før du utfører noen av punktene!
+  Merk: Les hele leksjonen før du utfører noen av punktene!
 
-  1. Hold nede Ctrl-tasten og trykk  g	. En statuslinje vil komme til syne på
-     bunnen av skjermen med filnavnet og hvilken linje markøren er på. Husk
-     linjenummeret for bruk i steg 3.
+  1. Hold nede Ctrl-tasten og trykk  g	. Vi kaller dette CTRL-G. En melding
+     vil komme til syne på bunnen av skjermen med filnavnet og posisjonen i
+     filen. Husk linjenummeret for bruk i steg 3.
 
-  2. Trykk Shift-G for å gå til bunnen av filen.
+Merk: Du kan se markørposisjonen i nederste høyre hjørne av skjermen. Dette
+      skjer når «ruler»-valget er satt (forklart i leksjon 6).
 
-  3. Skriv inn linjenummeret du var på og deretter Shift-G. Dette vil føre deg
-     tilbake til linjen du var på da du trykket Ctrl-g. (Når du skriver inn
-     nummeret, vil det IKKE bli vist på skjermen.)
+  2. Trykk  G  for å gå til bunnen av filen.
+     Skriv  gg	for å gå til begynnelsen av filen.
+
+  3. Skriv inn linjenummeret du var på og deretter  G . Dette vil føre deg
+     tilbake til linjen du var på da du først trykket CTRL-G.
 
   4. Utfør steg 1 til 3 hvis du føler deg sikker på prosedyren.
 
-
-
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 			 Leksjon 4.2: SØKEKOMMANDOEN
 
-
       ** Skriv	/  etterfulgt av en søkestreng som du vil lete etter. **
 
   1. Trykk  /  når du er i normalmodusen. Legg merke til at skråstreken og
      markøren kommer til syne på bunnen av skjermen i likhet med
      «:»-kommandoene.
 
-  2. Skriv  feeeiil  og trykk ENTER. Dette er teksten du vil lete etter.
+  2. Skriv «feeeiil» og trykk <ENTER>. Dette er teksten du vil lete etter.
 
-  3. For å finne neste forekomst av søkestrengen, trykk  n  . For å lete etter
-     samme søketeksten i motsatt retning, trykk  Shift-N  .
+  3. For å finne neste forekomst av søkestrengen, trykk  n .
+     For å lete etter samme søketeksten i motsatt retning, trykk  N .
 
-  4. Hvis du vil lete etter en tekst bakover i filen, bruk kommandoen  ?
-     istedenfor  /  .
+  4. For å lete etter en tekst bakover i filen, bruk  ?  istedenfor  /	.
 
-MERK: Når søket treffer slutten av filen vil det fortsette fra den andre enden
-      av filen.
+  5. For å gå tilbake til der du kom fra, trykk  CTRL-O  (Hold Ctrl nede mens
+     du trykker bokstaven  o ). Repeter for å gå enda lengre tilbake. CTRL-I
+     går framover.
 
 ---> «feeeiil» er ikke måten å skrive «feil» på, feeeiil er helt feil.
-
+Merk: Når søkingen når slutten av filen, vil den fortsette fra starten unntatt
+      hvis «wrapscan»-valget er resatt.
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 		   Leksjon 4.3: FINN SAMSVARENDE PARENTESER
 
 
 	  ** Trykk  %  for å finne en samsvarende ), ] eller } . **
 
-  1. Plasser markøren på en (, [ eller { på linjen nedenfor merket  --->  .
+  1. Plasser markøren på en (, [ eller { på linjen nedenfor merket --->.
 
   2. Trykk  %  .
 
-  3. Markøren flytter seg nå til parentesen som samsvarer med den du stod på.
+  3. Markøren vil gå til den samsvarende parentesen eller hakeparentesen.
 
-  4. Trykk  %  for å flytte markøren tilbake til den første parentesen.
+  4. Trykk  %  for å flytte markøren til den andre samsvarende parentesen.
 
----> Dette ( er en testlinje med (, [ ] og { } i den ))
+  5. Flytt markøren til en annen (, ), [, ], { eller } og se hva  %  gjør.
 
-MERK: Dette er meget god hjelp til feilsøking i programmer som har ubalansert
+---> Dette ( er en testlinje med (, [ ] og { } i den )).
+
+Merk: Dette er veldig nyttig til feilsøking i programmer som har ubalansert
       antall parenteser!
 
 
 
-
-
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-		  Leksjon 4.4: EN MÅTE Å RETTE SKRIVEFEIL PÅ
+		       Leksjon 4.4: ERSTATT-KOMMANDOEN
 
 
 	** Skriv  :s/gammel/ny/g  for å erstatte «gammel» med «ny». **
 
-  1. Flytt markøren til linjen nedenfor som begynner med  --->	.
+  1. Flytt markøren til linjen nedenfor som er merket med --->.
 
   2. Skriv  :s/deen/den/ <ENTER>  . Legg merke til at denne kommandoen bare
-     forandrer den første forekomsten av ordet på linjen.
+     forandrer den første forekomsten av «deen» på linjen.
 
-  3. Skriv  :s/deen/den/g  som betyr global erstatning på linjen. Dette vil
-     erstatte alle forekomster av søketeksten på linjen du står på.
+  3. Skriv  :s/deen/den/g . Når g-flagget legges til, betyr dette global
+     erstatning på linjen og erstatter alle forekomster av «deen» på linjen.
 
----> deen beste er deen som kan kaste deen tyngste steinen lengst
+---> deen som kan kaste deen tyngste steinen lengst er deen beste
 
-  4. Skriv  :#,#s/gammel/ny/g  for å erstatte tekst mellom to linjer, der #,#
-			       er linjenumrene på de to linjene.
+  4. For å erstatte alle forekomster av en tekststreng mellom to linjer,
+     skriv  :#,#s/gammel/ny/g  der #,# er linjenumrene på de to linjene for
+			       linjeområdet erstatningen skal gjøres.
      Skriv  :%s/gammel/ny/g    for å erstatte tekst i hele filen.
-
-
-
-
+     Skriv  :%s/gammel/ny/gc   for å finne alle forekomster i hele filen, og
+			       deretter spørre om teksten skal erstattes eller
+			       ikke.
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 			  OPPSUMMERING AV LEKSJON 4
 
 
-  1. Ctrl-g viser nåværende posisjon i filen og filstatusen. Shift-G går til
-     slutten av filen. Et linjenummer etterfulgt av Shift-G går til denne
-     linjen.
+  1. Ctrl-G viser nåværende posisjon i filen og filstatusen.
+	     G	går til slutten av filen.
+     nummer  G	går til det linjenummeret.
+	    gg	går til den første linjen.
 
   2. Skriv  /  etterfulgt av en søketekst for å lete FRAMOVER etter teksten.
      Skriv  ?  etterfulgt av en søketekst for å lete BAKOVER etter teksten.
      Etter et søk kan du trykke  n  for å finne neste forekomst i den samme
-     retningen eller Shift-N for å lete i motsatt retning.
+     retningen eller  N  for å lete i motsatt retning.
+     CTRL-O tar deg tilbake til gamle posisjoner, CTRL-I til nyere posisjoner.
 
-  3. Skriv  %  når markøren står på en (, ), [, ], { eller } for å finne
-     parentesten som samsvarer med den markøren står på.
+  3. Skriv  %  når markøren står på en (, ), [, ], { eller } for å finne den
+     som samsvarer.
 
   4. Erstatte «gammel» med første «ny» på en linje:  :s/gammel/ny
      Erstatte alle «gammel» med «ny» på en linje:    :s/gammel/ny/g
      Erstatte tekst mellom to linjenumre:	     :#,#s/gammel/ny/g
      Erstatte alle forekomster i en fil:	     :%s/gammel/ny/g
      For å godkjenne hver erstatning, legg til «c»:  :%s/gammel/ny/gc
-
-
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 	       Leksjon 5.1: HVORDAN UTFØRE EN EKSTERN KOMMANDO
 
@@ -510,88 +603,88 @@ MERK: Dette er meget god hjelp til feilsøking i programmer som har ubalansert
     ** Skriv  :!  etterfulgt av en ekstern kommando for å utføre denne. **
 
   1. Skriv den velkjente kommandoen  :	 for å plassere markøren på bunnen av
-     skjermen. Dette lar deg skrive en kommando.
+     skjermen. Dette lar deg skrive en kommandolinjekommando.
 
-  2. Nå kan du skrive tegnet !	. Dette lar deg utføre en hvilken som helst
+  2. Nå kan du skrive tegnet  !  . Dette lar deg utføre en hvilken som helst
      ekstern kommando.
 
   3. Som et eksempel, skriv  ls  etter utropstegnet og trykk <ENTER>. Du vil
      nå få en liste over filene i katalogen, akkurat som om du hadde kjørt
-     kommandoen direkte fra skallet. Eller bruk  :!dir	hvis «ls» ikke virker.
+     kommandoen direkte fra kommandolinjen i skallet. Eller bruk  :!dir  hvis
+     «ls» ikke virker.
 
----> MERK: Det er mulig å kjøre alle mulige eksterne kommandoer på denne
-     måten.
+MERK: Det er mulig å kjøre alle eksterne kommandoer på denne måten, også med
+      parametere.
 
----> MERK: Alle «:»-kommandoer må avsluttes med <ENTER>.
-
-
+MERK: Alle «:»-kommandoer må avsluttes med <ENTER>. Fra dette punktet er det
+      ikke alltid vi nevner det.
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 		     Leksjon 5.2: MER OM LAGRING AV FILER
 
 
-     ** For å lagre endringene gjort i en fil, skriv  :w FILNAVN  . **
+      ** For å lagre endringene gjort i en tekst, skriv  :w FILNAVN. **
 
   1. Skriv  :!dir  eller  :!ls	for å få en liste over filene i katalogen. Du
      vet allerede at du må trykke <ENTER> etter dette.
 
-  2. Velg et filnavn på en fil som ikke finnes, som for eksempel  TEST	.
+  2. Velg et filnavn på en fil som ikke finnes, som for eksempel  TEST .
 
   3. Skriv  :w TEST  (der TEST er filnavnet du velger).
 
   4. Dette lagrer hele filen (denne innføringen) under navnet TEST . For å
-     sjekke dette, skriv  :!dir  igjen for å se innholdet av katalogen.
+     sjekke dette, skriv  :!dir  eller	:!ls  igjen for å se innholdet av
+     katalogen.
 
----> Hvis du nå hadde avsluttet Vim og startet på nytt igjen med filnavnet
-     TEST, ville filen vært en eksakt kopi av innføringen da du lagret den.
+Merk: Hvis du nå hadde avsluttet Vim og startet på nytt igjen med «vim TEST»,
+      ville filen vært en eksakt kopi av innføringen da du lagret den.
 
-  5. Fjern filen ved å skrive  :!rm TEST  hvis du er på et UNIX-lignende
+  5. Fjern filen ved å skrive  :!rm TEST  hvis du er på et Unix-lignende
      operativsystem, eller  :!del TEST	hvis du bruker MS-DOS.
 
-
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-		    Leksjon 5.3: DELVIS LAGRING AV EN FIL
+		   Leksjon 5.3: VELGE TEKST SOM SKAL LAGRES
 
 
-	  ** For å lagre en del av en fil, skriv  :#,# w FILNAVN  **
+     ** For å lagre en del av en fil, skriv  v	bevegelse  :w FILNAVN **
+
+  1. Flytt markøren til denne linjen.
 
-  1. En gang til: Skriv  :!dir	eller  :!ls  for å få en liste over filene i
-     katalogen. Velg et passende filnavn, som  TEST  .
+  2. Trykk  v  og flytt markøren til det femte elementet nedenfor. Legg merke
+     til at teksten blir markert.
 
-  2. Flytt markøren til toppen av denne siden og trykk Ctrl-g for å finne
-     nummeret på denne linjen. HUSK DETTE NUMMERET!
+  3. Trykk  :  (kolon). På bunnen av skjermen vil  :'<,'>  komme til syne.
 
-  3. Gå til nederste linje på skjermen og trykk Ctrl-g igjen. HUSK DETTE
-     LINJENUMMERET OGSÅ!
+  4. Trykk  w TEST  , der TEST er et filnavn som ikke finnes enda. Kontroller
+     at du ser	:'<,'>w TEST  før du trykker Enter.
 
-  4. For å lagre BARE en del av filen, skriv  :#,# w TEST  hvor #,# er de to
-     numrene du skulle huske (topp og bunn) og	TEST  er filnavnet.
+  5. Vim vil skrive de valgte linjene til filen TEST. Bruk  :!dir  eller  !ls
+     for å se den. Ikke slett den enda! Vi vil bruke den i neste leksjon.
 
-  5. Sjekk med	:!dir  om filen er der, men IKKE slett den.
-
-
-
+MERK: Ved å trykke  v  startes visuelt valg. Du kan flytte markøren rundt for
+      å gjøre det valgte området større eller mindre. Deretter kan du bruke en
+      operator for å gjøre noe med teksten. For eksempel sletter  d  teksten.
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 		Leksjon 5.4: HENTING OG SAMMENSLÅING AV FILER
 
 
-** For å lese inn en annen fil inn i nåværende buffer, skriv  :r FILNAVN  . **
+ ** For å lese inn en annen fil inn i nåværende buffer, skriv  :r FILNAVN  **
 
-  1. Skriv  :!dir  for å forsikre deg om at filen  TEST  finnes.
+  1. Plasser markøren like over denne linjen.
 
-  2. Plasser markøren på toppen av denne siden.
+MERK: Etter å ha utført steg 2 vil du se teksten fra leksjon 5.3. Gå deretter
+      NED for å se denne leksjonen igjen.
 
-MERK:  Etter at du har utført steg 3 vil du se leksjon 5.3. Gå nedover forbi
-       den og til denne posisjonen igjen.
+  2. Hent TEST-filen ved å bruke kommandoen  :r TEST  der TEST er navnet på
+     filen du brukte. Filen du henter blir plassert nedenfor markørlinjen.
 
-  3. Hent «TEST»-filen din med kommandoen  :r TEST  der TEST er navnet på
-     filen.
+  3. For å sjekke at filen ble hentet, gå tilbake og se at det er to kopier av
+     leksjon 5.3, originalen og denne versjonen.
 
-MERK: Filen du henter vil bli plassert der markøren står.
+MERK: Du kan også lese utdataene av en ekstern kommando. For eksempel,	:r !ls
+      leser utdataene av ls-kommandoen og legger dem nedenfor markøren.
 
-  4. For å sjekke at filen ble hentet, gå tilbake og se at det er to kopier av
-     leksjon 5.3, originalen og denne versjonen.
 
 
 
@@ -599,45 +692,45 @@ MERK: Filen du henter vil bli plassert der markøren står.
 			  OPPSUMMERING AV LEKSJON 5
 
 
-  1.  :!KOMMANDO  utfører en ekstern kommandio.
+  1.  :!kommando  utfører en ekstern kommandio.
 
-	Noen nyttige eksempler er:
-	    (MS-DOS)	(Unix)
-	     :!dir	 :!ls	    -- List filene i katalogen
-	     :!del FIL	 :!rm FIL   -- Slett filen  FIL
+      Noen nyttige eksempler er:
+	 (MS-DOS)	  (Unix)
+	  :!dir		   :!ls		  - List filene i katalogen.
+	  :!del FILNAVN    :!rm FILNAVN   - Slett filen FILNAVN.
 
-  2.  :w FILNAVN  skriver den filen du står i til disken med navnet FILNAVN .
+  2.  :w FILNAVN  skriver den nåværende Vim-filen disken med navnet FILNAVN .
 
-  3.  :#,#w FILNAVN  lagrer linjene # til # til filen FILNAVN .
+  3.  v  bevegelse  :w FILNAVN	lagrer de visuelt valgte linjene til filen
+     FILNAVN.
 
-  4.  :r FILNAVN  henter inn en annen fil og legger den inn like etter
-      markøren.
+  4.  :r FILNAVN  henter filen FILNAVN og legger den inn nedenfor markøren.
 
-
-
+  5.  :r !dir  leser utdataene fra «dir»-kommandoen og legger dem nedenfor
+     markørposisjonen.
 
 
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-			Leksjon 6.1: «ÅPNE LINJE»-KOMMANDOEN
+		     Leksjon 6.1: «ÅPNE LINJE»-KOMMANDOEN
 
 
-     ** Skriv  o  for å «åpne opp» for en ny linje etter markøren og gå i
-	innsettingsmodus **
+    ** Skriv  o  for å «åpne opp» for en ny linje etter markøren og gå til
+       innsettingsmodus **
 
-  1. Flytt markøren til linjen nedenfor merket	--->  .
+  1. Flytt markøren til linjen nedenfor merket --->.
 
-  2. Skriv  o  (liten o) for å starte på en ny linje nedenfor markøren og gå
-     over til innsettingsmodus.
+  2. Skriv  o  (liten o) for å åpne opp en linje NEDENFOR markøren og gå inn i
+     innsettingsmodus.
 
-  3. Kopier linjen som er merket  --->	og trykk <ESC> for å avslutte
-     innsettingsmodusen.
+  3. Skriv litt tekst og trykk <ESC> for å gå ut av innsettingsmodusen.
 
 ---> Etter at  o  er skrevet blir markøren plassert på den tomme linjen.
 
-  4. For å lage en ny linje OVER markøren, trykk rett og slett en stor O
-     istedenfor en liten o . Prøv dette på linjen nedenfor.
----> Lag en ny, tom linje over denne med Shift-O mens markøren står på den.
+  4. For å åpne en ny linje OVER markøren, trykk rett og slett en stor	O
+     istedenfor en liten  o . Prøv dette på linjen nedenfor.
+
+---> Lag ny linje over denne ved å trykke O mens markøren er på denne linjen.
 
 
 
@@ -647,85 +740,200 @@ MERK: Filen du henter vil bli plassert der markøren står.
 
 	    ** Skriv  a  for å legge til tekst ETTER markøren. **
 
-  1. Flytt markøren til slutten av den første linjen merket  --->  ved å
-     trykke  $	i normalmodusen.
+  1. Flytt markøren til starten av linjen merket ---> nedenfor.
+
+  2. Trykk  e  til markøren er på slutten av «li».
 
-  2. Trykk  a  (liten a) for å legge til tekst ETTER tegnet under markøren.
-     (Stor A legger til på slutten av linjen.)
+  3. Trykk  a  (liten a) for å legge til tekst ETTER markøren.
 
-MERK: Dette gjør at du slipper å trykke  i  , det siste tegnet, teksten som
-      skal settes inn, <ESC>, høyrepil og til sist,  x	bare for å legge til
-      på slutten av en linje!
+  4. Fullfør ordet sånn som på linjen nedenfor. Trykk <ESC> for å gå ut av
+     innsettingsmodusen.
 
-  3. Gjør ferdig den øverste linjen. Legg merke til at «legg til» er det samme
-     som innsettingsmodusen, med den forskjellen hvor teksten settes inn.
+  5. Bruk  e  for å gå til det neste ufullstendige ordet og repeter steg 3 og
+     4.
 
----> På denne linjen må det legges
----> På denne linjen må det legges til tekst på slutten.
+---> Denne li lar deg øve på å leg til tek på en linje.
+---> Denne linjen lar deg øve på å legge til tekst på en linje.
 
-
+Merk: a, i og A går alle til den samme innsettingsmodusen, den eneste
+      forskjellen er hvor tegnene blir satt inn.
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-		  Leksjon 6.3: EN ANNEN VERSJON AV «ERSTATT»
+		   Leksjon 6.3: EN ANNEN MÅTE Å ERSTATTE PÅ
 
 
-	   ** Skriv  R	for å erstatte mer enn ett tegn. **
+	   ** Skriv en stor  R	for å erstatte mer enn ett tegn. **
 
-  1. Flytt markøren til den første linjen nedenfor merket  --->  .
+  1. Flytt markøren til den første linjen nedenfor merket --->. Flytt markøren
+     til begynnelsen av den første «xxx»-en.
 
-  2. Plasser markøren på begynnelsen av det første ordet som er forskjellig
-     fra den andre linjen merket  --->	(ordet «siste»).
+  2. Trykk  R  og skriv inn tallet som står nedenfor på den andre linjen så
+     det erstatter xxx.
 
-  3. Trykk  R  og erstatt resten av linjen med den samme teksten som står på
-     den andre linjen.
+  3. Trykk <ESC> for å gå ut av erstatningsmodusen. Legg merke til at resten
+     av linjen forblir uforandret.
 
----> For å gjøre den første linjen lik den andre, må bokstaven stor R brukes.
----> For å gjøre den første linjen lik den andre, trykk R og den nye teksten.
+  4. Repeter stegene for å erstatte den gjenværende xxx.
 
-  4. Legg merke til at når du trykker <ESC> for å avslutte, bevares teksten
-     som ikke er redigert.
+---> Ved å legge 123 til xxx får vi xxx.
+---> Ved å legge 123 til 456 får vi 579.
 
-
-
+MERK: Erstatningsmodus er lik insettingsmodus, men hvert tegn som skrives
+      erstatter et eksisterende tegn.
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-			    Leksjon 6.4: SETT VALG
+		    Leksjon 6.4: KOPIERE OG LIME INN TEKST
 
 
- ** Sett et valg så et søk eller erstatning ignorerer store/små bokstaver. **
+    ** Bruk y-operatoren for å kopiere tekst og  p  for å lime den inn **
+
+  1. Gå til linjen merket ---> nedenfor og plasser markøren etter «a)».
+
+  2. Gå inn i visuell modus med  v  og flytt markøren til like før «første».
+
+  3. Trykk  y  for å kopiere (engelsk: «yank») den uthevede teksten.
 
-  1. Let etter «ignore» ved å skrive:
-     /ignore <ENTER>
-     Repeter flere ganger ved å trykke	n  .
+  4. Flytt markøren til slutten av den neste linjen:  j$
+
+  5. Trykk  p  for å lime inn teksten. Trykk deretter:	a andre <ESC> .
 
-  2. Sett «ic»-valget (Ignore Case) ved å skrive:
-     :set ic
+  6. Bruk visuell modus for å velge « valget.», kopier det med	y , gå til
+     slutten av den neste linjen med  j$  og legg inn teksten der med  p .
+
+---> a) Dette er det første valget.
+     b)
 
-  3. Let etter «ignore» igjen ved å skrive:  n
-     Repeter søket flere ganger ved å trykke  n  .
+Merk: Du kan også bruke  y  som en operator;  yw  kopierer ett ord.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			    Leksjon 6.5: SETT VALG
+
+
+  ** Sett et valg så søk eller erstatning ignorerer store/små bokstaver. **
+
+  1. Let etter «ignore» ved å skrive:  /ignore <ENTER>
+     Repeter flere ganger ved å trykke	n .
+
+  2. Sett «ic»-valget (Ignore Case) ved å skrive:  :set ic
 
-  4. Sett «hlsearch»- og «incsearch»-valgene:
-     :set hls is
+  3. Søk etter «ignore» igjen ved å trykke  n .
+     Legg merke til at både «Ignore» og «IGNORE» blir funnet.
+
+  4. Sett «hlsearch»- og «incsearch»-valgene:  :set hls is
 
-  5. Skriv søkekommandoen igjen, og se hva som skjer:
-     /ignore <ENTER>
+  5. Skriv søkekommandoen igjen og se hva som skjer:  /ignore <ENTER>
+
+  6. For å slå av ignorering av store/små bokstaver, skriv:  :set noic
 
-  6. Hvis du vil slå av uthevingen på søketeksten, skriv  :nohlsearch
+Merk: For å fjerne uthevingen av treff, skriv:	:nohlsearch
+Merk: Hvis du vil ignorere store/små bokstaver for kun en søkekommando, bruk
+      \c  i uttrykket:	/ignore\c <ENTER>
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 			  OPPSUMMERING AV LEKSJON 6
 
+  1. Trykk  o  for å legge til en linje NEDENFOR markøren og gå inn i
+     innsettingsmodus.
+     Trykk  O  for å åpne en linje OVER markøren.
 
-  1. Trykk  o  for å legge til en linje NEDENFOR markøren og plassere markøren
-     på den nye linjen i innsettingsmodus.
-     Hvis du trykker en stor O åpnes linjen OVER linjen markøren står på.
+  2. Skriv  a  for å sette inn tekst ETTER markøren.
+     Skriv  A  for å sette inn tekst etter slutten av linjen.
+
+  3. Kommandoen  e  går til slutten av et ord.
+
+  4. Operatoren  y  («yank») kopierer tekst,  p  («paste») limer den inn.
+
+  5. Ved å trykke  R  går du inn i erstatningsmodus helt til  <ESC>  trykkes.
+
+  6. Skriv «:set xxx» for å sette valget «xxx». Noen valg er:
+	«ic» «ignorecase»	ignorer store/små bokstaver under søk
+	«is» «incsearch»	vis delvise treff for en søketekst
+	«hls» «hlsearch»	uthev alle søketreff
+
+  7. Legg til «no» foran valget for å slå det av:  :set noic
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			    Leksjon 7.1: FÅ HJELP
+
+
+		   ** Bruk det innebygde hjelpesystemet. **
+
+  Vim har et omfattende innebygget hjelpesystem. For å starte det, prøv en av
+  disse måtene:
+    - Trykk Hjelp-tasten (hvis du har en)
+    - Trykk F1-tasten (hvis du har en)
+    - Skriv  :help <ENTER>
+
+  Les teksten i hjelpevinduet for å finne ut hvordan hjelpen virker.
+  Skriv  CTRL-W CTRL-W	for å hoppe fra et vindu til et annet
+  Skriv  :q <ENTER>	for å lukke hjelpevinduet.
+
+  Du kan få hjelp for omtrent alle temaer om Vim ved å skrive et parameter til
+  «:help»-kommandoen. Prøv disse (ikke glem å trykke <ENTER>):
+
+    :help w
+    :help c_CTRL-D
+    :help insert-index
+    :help user-manual
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		     Leksjon 7.2: LAG ET OPPSTARTSSKRIPT
+
+
+			** Slå på funksjoner i Vim **
+
+  Vim har mange flere funksjoner enn Vi, men flesteparten av dem er slått av
+  som standard. For å begynne å bruke flere funksjoner må du lage en
+  «vimrc»-fil.
 
-  2. Skriv en  a  for å sette inn tekst ETTER tegnet markøren er på.
-     En stor A vil legge til tekst på slutten av linjen.
+  1. Start redigeringen av «vimrc»-filen. Dette avhenger av systemet ditt:
+	:e ~/.vimrc	  for Unix
+	:e $VIM/_vimrc	  for MS Windows
+
+  2. Les inn eksempelfilen for «vimrc»:
+	:r $VIMRUNTIME/vimrc_example.vim
+
+  3. Lagre filen med:
+	:w
+
+  Neste gang du starter Vim vil den bruke syntaks-utheving. Du kan legge til
+  alle dine foretrukne oppsett i denne «vimrc»-filen.
+  For mer informasjon, skriv  :help vimrc-intro
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			   Leksjon 7.3: FULLFØRING
+
+
+	      ** Kommandolinjefullføring med CTRL-D og <TAB> **
+
+  1. Vær sikker på at Vim ikke er i Vi-kompatibel modus:  :set nocp
+
+  2. Se hvilke filer som er i katalogen:  :!ls	eller  :!dir
+
+  3. Skriv starten på en kommando:  :e
 
-  3. Ved å trykke  R  for går inn i erstatningsmodus helt til <ESC> trykkes
-     for å avslutte modusen.
+  4. Trykk  CTRL-D  og Vim vil vise en liste over kommandoer som starter med
+     «e».
+
+  5. Trykk  <TAB>  og Vim vil fullføre kommandonavnet til «:edit».
+
+  6. Legg til et mellomrom og starten på et eksisterende filnavn:  :edit FIL
+
+  7. Trykk <TAB>. Vim vil fullføre navnet (hvis det er unikt).
+
+MERK: Fullføring fungerer for mange kommandoer. Prøv ved å trykke CTRL-D og
+      <TAB>. Det er spesielt nyttig for bruk sammen med  :help .
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			  OPPSUMMERING AV LEKSJON 7
 
-  4. Skriv  :set xxx  for å sette valget «xxx».
+
+  1. Skriv  :help  eller trykk <F1> eller <Help> for å åpne et hjelpevindu.
+
+  2. Skriv  :help kommando  for å få hjelp om  kommando .
+
+  3. Trykk  CTRL-W CTRL-W  for å hoppe til et annet vindu.
 
+  4. Trykk  :q	for å lukke hjelpevinduet.
+
+  5. Opprett et vimrc-oppstartsskript for å lagre favorittvalgene dine.
+
+  6. Når du skriver en «:»-kommando, trykk CTRL-D for å se mulige
+     fullføringer. Trykk <TAB> for å bruke en fullføring.
 
 
 
@@ -734,52 +942,7 @@ MERK: Dette gjør at du slipper å trykke  i  , det siste tegnet, teksten som
 
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-		  LEKSJON 7: TILGJENGELIGE HJELPEKOMMANDOER
 
-
-		  ** Bruk det innebyggede hjelpesystemet. **
-
-  Vim har et omfattende innebygget hjelpesystem. For å starte det, prøv en av
-  disse måtene:
-    - Trykk Hjelp-tasten (hvis du har noen)
-    - Trykk F1-tasten (hvis du har noen)
-    - Skriv  :help <ENTER>
-
-  Skriv  :q <ENTER>  for å lukke hjelpevinduet.
-
-  Du kan få hjelp på omtrent alle temaer om Vim ved å skrive et parameter til
-  «:help»-kommandoen. Prøv disse (ikke glem Enter etter hver):
-
-    :help w
-    :help c<T
-    :help insert-index
-    :help user-manual
-
-
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-		      LEKSJON 8: LAG ET OPPSTARTSSKRIPT
-
-
-			** Slå på funksjoner i Vim. **
-
-  Vim har mange flere funksjoner enn Vi, men flesteparten av dem er slått av
-  som standard. For å begynne å bruke dem kan du lage en «vimrc»-fil.
-
-  1. Start redigeringen av «vimrc»-filen, dette avhenger av systemet ditt:
-       :edit ~/.vimrc	  for UNIX
-       :edit $VIM/_vimrc  for MS Windows
-
-  2. Les inn eksempelfilen for «vimrc»:
-       :read $VIMRUNTIME/vimrc_example.vim
-
-  3. Lagre filen med:
-       :write
-
-  Neste gang du starter Vim vil den bruke farger og utheving i henhold til
-  syntaksen i filen. Ved å legge inn forskjellige valg i «vimrc»-filen, kan du
-  forandre oppsettet i Vim til det du foretrekker.
-
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   Her slutter innføringen i Vim. Den var ment som en rask oversikt over
   editoren, akkurat nok til å la deg sette i gang med enkel bruk. Den er på
   langt nær komplett, da Vim har mange flere kommandoer. Les bruksanvisningen
@@ -788,8 +951,8 @@ MERK: Dette gjør at du slipper å trykke  i  , det siste tegnet, teksten som
   For videre lesing og studier, kan denne boken anbefales:
       «Vim - Vi Improved» av Steve Oualline
       Utgiver: New Riders
-  Den førstnevnte boken er fullt og helt dedikert til Vim. Spesielt nyttig
-  for nybegynnere. Inneholder mange eksempler og illustrasjoner.
+  Den første boken som er fullt og helt dedisert til Vim. Spesielt nyttig for
+  nybegynnere. Inneholder mange eksempler og illustrasjoner.
   Se http://iccf-holland.org/click5.html
 
   Denne boken er eldre og handler mer om Vi enn Vim, men anbefales også:
@@ -800,11 +963,11 @@ MERK: Dette gjør at du slipper å trykke  i  , det siste tegnet, teksten som
 
   Denne innføringen er skrevet av Michael C. Pierce og Robert K. Ware,
   Colorado School of Mines med idéer av Charles Smith, Colorado State
-  University. Email: bware@mines.colorado.edu .
+  University. E-mail: bware@mines.colorado.edu .
 
   Modifisert for Vim av Bram Moolenaar.
-  Oversatt av Øyvind A. Holm -- sunny _AT_ sunbase.org
-  tutor.no 279 2004-05-12 09:21:53Z sunny
+  Oversatt av Øyvind A. Holm. E-mail: vimtutor _AT_ sunbase.org
+  Id: tutor.no 406 2007-03-18 22:48:36Z sunny
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 vim: set ts=8 :
new file mode 100644
--- /dev/null
+++ b/runtime/tutor/tutor.sk.utf-8
@@ -0,0 +1,1008 @@
+===============================================================================
+=    V i t a j t e   v o   V I M   T u t o r i a l i    -    Verzia 1.7       =
+===============================================================================
+
+     Vim je veľmi výkonný editor, ktorý má príliž veľa príkazov na to aby
+     mohli byt všetky popísané vo výuke akou je táto. Táto výuka
+     popisuje dostatoÄné množstvo príkazov nato aby bolo možné používaÅ¥
+     Vim ako viacúÄelový editor.
+
+     Približný Äas potrebný na prebratie tejto výuky je 25-30 minút,
+     závisí na tom, koľko je stráveného Äasu s preskúšavaním.
+
+     UPOZORNENIE:
+     Príkazy v lekciách modifikujú text. Vytvor kópiu tohto súboru aby
+     sa mohlo precviÄovaÅ¥ na ňom (pri Å¡tarte "vimtutor" je toto kópia).
+
+     Je dôležité zapamätať si, že táto výuka je vytvorená pre výuku
+     používaním. To znamená, že je potrebné si príkazy vyskúšať, aby bolo
+     uÄenie správne. Ak len Äitas text, príkazy zabudneÅ¡!
+
+     PresvedÄ sa, že Shift-Lock NIEJE stlaÄený a stlaÄt klávesu
+     j  niekoľko krát, aby sa kurzor posunul natoľko, že lekcia 1.1
+     celkom zaplní obrazovku.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			Lekcia 1.1:  POHYB KURZOROM
+
+
+   ** Pre pohyb kurzorum stlaÄ klávesy h,j,k,l ako je znázornené. **
+        ^
+        k        Funkcia: Klávesa h je naľavo a vykoná pohyb doľava.
+   < h     l >   Klávesa l je napravo a vykoná pohyb doprava.
+        j        Klávesa j vyzerá ako šípka dole
+	      v
+  1. Pohybuj kurzorom po obrazovke, kým si na to nezvykneš.
+
+  2. Drž stlaÄenú klávesu pre pohyb dole (j), kým sa jej funkcia nezopakuje.
+---> Teraz sa už vieš pohybovať na nasledujúcu lekciu.
+
+  3. Použitím klávesy pre pohyb dole prejdi na Lekciu 1.2.
+
+Poznámka: Ak si niesi istý tým Äo si napísal, stlaÄ <ESC>
+	        na prechod do normálneho módu.
+
+Poznámka: Kurzorové klávesy sú tiež funkÄné. Ale používaním hjkl sa budeÅ¡
+	        schopný pohybovaÅ¥ rýchlejÅ¡ie, keÄ si zvykneÅ¡ ich používaÅ¥. Naozaj!
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		     LEKCIA 1.2: ZATVÃRANIE VIMU
+
+
+  !! POZNÃMKA: Pred vykonaním týchto krokov si preÄítaj celú túto lekciu !!
+
+  1. StlaÄ klávesu <ESC> (aby si sa uÄite nachádzal v normálnom móde)
+
+  2. Napíš:   :q! <ENTER>.
+     Tým ukonÄíš prácu s editorom BEZ uloženia zmien, ktoré si vykonal.
+
+  3. KeÄ sa dostaneÅ¡ na príkazový riadok, napíš príkaz, ktorým sa dostaneÅ¡
+     speť do tejto výuky. To môže byť:	vimtutor <ENTER>
+
+  4. Ak si si tieto kroky spoľahlivo zapamätal, vykonaj kroky 1 až 3, pre
+     ukonÄenie a znovu spustenie editora.
+
+POZNÃMKA: :q! <ENTER> neuloží zmeny, ktoré si vykonal. O niekoľko lekcií
+          sa nauÄíš ako uložiÅ¥ zmeny do súboru
+
+  5. presuň kurzor dole na lekciu 1.3.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		      Lekcia 1.3: EDITÃCIA TEXTU - MAZANIE
+
+
+** StlaÄenie klávesy  x  v normálnom móde zmaže znak na mieste kurzora. **
+
+  1. Presuň kurzor nižšie na riadok oznaÄený znaÄkou --->.
+
+  2. Aby si mohol odstrániť chyby, pohybuj kurzorom kým neprejde na znak,
+     ktorý chceš zmazať.
+
+  3. StlaÄ klávesu  x  aby sa zmazal nechcený znak.
+
+  4. Zopakuj kroky 2 až 4 až kým veta nieje správna.
+
+---> Kraava skooÄilla ccezz mesiiac.
+
+  5. Ak je veta správna, prejdi na lekciu 1.4.
+
+POZNÃMKA: Neskúšaj si zapamätaÅ¥ obsah tejto výuky, ale sa uÄ používaním.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		     Lekcia 1.4: EDITÃCIA TEXTU - VKLADANIE
+
+
+    ** StlaÄenie klávesy  i  umožňuje vkladanie textu. **
+
+  1. Presuň kurzor nižšie na prvý riadok za znaÄku --->.
+
+  2. Pre upravenie prvého riadku do rovnakého tvaru ako je druhý riadok,
+     presuň kurzor na prvý znak za misto, kde má byť text vložený.
+
+  3. StlaÄ klávesu  i  a napíš potrebný text.
+
+  4. Po opravení každej chyby, stlaÄ <ESC> pre návrat do normálneho módu.
+     Zopakuj kroky 2 až 4 kým nieje veta správna.
+
+---> Tu je text chýbajúci tejto.
+---> Tu je nejaký text chýbajúci od tejto Äiary.
+
+  5. KeÄ sa dostatoÄne nauÄíš vkladaÅ¥ text, prejdi na nasledujúce zhrnutie.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+        Lekcia 1.5: EDITÃCIA TEXTU - PRIDÃVANIE
+
+
+     ** StlaÄenie klávesy  A  umožňuje pridávaÅ¥ text. **
+
+  1. Presuň kurozr nižšie na prvý riadok za znaÄkou --->.
+     Nezáleží na tom, na ktorom znaku sa kurzor v tom riadku nachádza.
+
+  2. StlaÄ klávesu  A  a napíš potrebný text.
+
+  3. Po pridaní textu stlaÄ klávesu <ESC> pre návrat do Normálneho módu.
+
+  4. Presuň kurozr na druhý riadok oznaÄený ---> a zopakuj
+     kroky 2 a 3 kým nieje veta správna.
+
+---> Tu je nejaký text chýbajúci o
+     Tu je nejaký text chýbajúci od tiaľto.
+---> Tu tiež chýba nej
+     Tu tiež chýba nejaký text.
+
+  5. KeÄ sa dostatoÄne nauÄíš pridávaÅ¥ text, prejdi na lekciu 1.6.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+       Lekcia 1.6: EDITÃCIA SÚBORU
+
+
+    ** Napísaním  :wq  sa súbor uloží a zavrie **
+
+!! POZNÃMKA: Pred vykonaním týchto krokov si preÄítaj celú lekciu!!
+
+1. Opusti túto výuku, ako si to urobil v lekcii 1.2:  :q!
+
+2. Do príkazového riadku napíš príkaz:  vim tutor <ENTER>
+   'vim' je príkaz, ktorý spustí editor Vim, 'tutor' je meno súboru,
+   ktorý chceš editovať. Použi taký súbor, ktorý môžeš meniť.
+
+3. Vlož a zmaž text tak, ako si sa nauÄil v predoÅ¡lých lekciach.
+
+4. Ulož súbor so zmenami a opusti Vim príkazom:  :wq  <ENTER>
+
+5. Reštartuj vimtutor a presuň sa dole na nasledujúce zhrnutie.
+
+6. Urob tak po preÄítaní predoÅ¡lých krokov a porozumeniu im.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			       ZHRNUTIE LEKCIE 1
+
+
+  1. Kurzor sa pohybuje použitím kláves so šípkami alebo klávesmi hjkl.
+	  h (do lava)    j (dole)    k (hore)    l (doprava)
+
+  2. Pre spustenie Vimu (z príkazového riadku) napíš: vim FILENAME <ENTER>
+
+  3. Na ukonÄenie Vimu napíš: <ESC>  :q!  <ENTER> pre zruÅ¡enie vÅ¡etkých zmien
+       alebo napíš:   <ESC>   :wq   <ENTER>    pre uloženie zmien.
+
+  4. Na zmazanie znaku na mieste kurzora napíš:  x
+
+  5. Pre vloženie textu na mieste kurzora v normálnom móde napíš:
+	 i     napíš vkladaný text   <ESC>  vkladanie pred kurzor
+   A     napíš pridávaný text  <EXC>  vkladanie za riadok
+
+POZNÃMKA: StlaÄenie <ESC> Å¥a premiestní do normálneho módu alebo zruší
+	        nejaký nechcený a ÄiastoÄne dokonÄený príkaz.
+
+Teraz pokraÄuj lekciou 2.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			Lekcia 2.1: Mazacie príkazy
+
+
+	 ** Napísanie príkazu  dw  zmaže znaky do konca slova. **
+
+1. StlaÄ  <ESC>  aby si bol bezpeÄne v normálnom móde.
+
+2. Presuň kurzor nižšie na riadok oznaÄený znaÄkou --->.
+
+3. Presuň kurzor na zaÄiatok slova, ktoré je potrebné zmazaÅ¥.
+
+4. Napíš  dw  aby slovo zmizlo.
+
+POZNÃMKA: Písmeno d sa zobrazí na poslednom riadku obrazovky keÄ ho
+	        napíšeÅ¡. Vim na teba poÄká, aby si mohol napísaÅ¥
+          písmeno w. Ak vidíš nieÄo iné ako  d , tak si napísal
+          nesprávny znak; stlaÄ  <ESC>  a zaÄni znova.
+
+---> Tu je niekoľko slov zábava, ktoré nie patria list do tejto vety.
+
+5. Zopakuj kroky 3 až 4 kým veta nieje správna a prejdi na lekciu 2.2.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		      Lekcia 2.2: VIAC MAZACÃCH PRÃKAZOV
+
+
+	 ** Napísanie príkazu d$  zmaže znaky do konca riadku **
+
+1. StlaÄ  <ESC>  aby si bol bezpeÄne v normálnom móde.
+
+2. Presuň kurzor nižšie na riadok oznaÄený znaÄkou --->.
+
+3. Presuň kurzor na koniec správnej vety (ZA prvú bodku).
+
+4. Napíš    d$    aby sa zmazali znaky do konca riadku.
+
+---> Niekto napísal koniec tohto riadku dvakrát. koniec tohot riadku dvakrát.
+
+
+5. Prejdi na lekciu 2.3 pre pochopenie toho Äo sa stalo.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		     Lekcia 2.3: OPERÃTORY A POHYBY
+
+  Veľa príkazov, ktoré menia text sú odvodené od operátorov a pohybov.
+  Formát pre príkaz mazania klávesou  d  je nasledovný:
+
+    d   pohyb
+
+  kde:
+    d     - je mazací operátor
+    pohyb - je to Äo operátor vykonáva (vypísané nižšie)
+
+  Krátky list pohybov:
+    w - do zaÄiatku ÄalÅ¡ieho slova, okrem jeho prvého písmena.
+    e - do konca terajšieho slova, vrátane posledného znaku.
+    $ - do konca riadku, vrátane posledného znaku
+
+  Takže napísaním  de  sa zmaže všetko od kurzora do konca slova.
+
+POZNÃMKA: StlaÄením iba pohybu v normálnom móde bez operátora
+          sa presunie kurzor tak ako je to špecivikované.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		Lekcia 2.4: Použitie viacnásobného pohybu
+
+
+   ** Napísaním Äísla pred pohyb ho zopakuje zadný poÄet krát **
+
+  1. Presuň kurozr nižšie na zaÄiatok riadku oznaÄeného --->.
+
+  2. Napíš  2w  a kurozr sa presunie o dve slová vpred.
+
+  3. Napíš  3e  a kurozr sa presunie vpred na koniec tretieho slova.
+
+  4. Napíš  0  (nula) a kurozr sa presunie na zaÄiatok riadku.
+
+  5. Zopakuj kroky 2 a 3 s rôznymi Äíslami.
+
+---> Toto je riadok so slovami po kotrých sa môžete pohybovať.
+
+  6. Prejdi na lekciu 2.5.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		  Lekcia 2.5: POUŽITIE VIACNÃSOBNÉHO MAZANIA PRE HROMADNÉ MAZANIE
+
+
+    ** Napísanie Äísla spolu s operátorom ho zopakuje zadaný poÄet krát **
+
+  V kombinácii operátorov mazania a pohybu spomínaného vyÅ¡Å¡ie vlož poÄet
+  pred pohyb pre docielenie hromadného mazania:
+    d   Äíslo   pohyb
+
+  1. Presuň kurzor na prvé slovo písané VEĽKÃMI PÃSMENAMI
+     v riadku oznaÄenom --->.
+
+  2. Napíš  2dw  a zmažeÅ¡ dve slová písané VEĽKÃMI PÃSMENAMI
+
+  3. Zopakuj kroky 1 a 2 s použitím rôzneho Äísla tak aby si zmazal slová
+     písané veľkými písmenami jedným príkazom.
+
+---> Tento ABC DE riadok FGHI JK LMN OP so slovamI je Q RS TUV vycisteny.
+
+POZNÃMKA: Číslo medzi operátorom  d  a pohybom funguje podobne ako pri
+          použití s pohybom bez operátora.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+    		Lekcia 2.6: OPERÃCIE S RIADKAMI
+
+
+	    ** Napísanie príkazu   dd   zmaže celý riadok. **
+
+Vzhľadom na frekvenciu mazania celého riadku, sa autori Vimu rozhodli,
+že bude jednoduchšie mazať celý riadok napísaním dvoch písmen d.
+
+1. Presuň kurzor na druhý riadok v texte na spodu.
+2. Napíš  dd  aby si zmazal riadok.
+3. Prejdi na štvrtý riadok.
+4. Napíš   2dd   aby si zmazal dva riadky.
+
+    1)  Ruže sú Äervené,
+    2)  Blato je zábavné,
+    3)  Fialky sú modré,
+    4)  Mám auto,
+    5)  Hodinky ukazujú Äas,
+    6)  Cukor je sladký,
+    7)  A to si ty.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			Lekcia 2.7: PRÃKAZ UNDO
+
+
+** StlaÄ  u  pre vrátenie posledného príkazu,  U  pre úpravu celého riadku. **
+
+1. Presuň kurzor nižšie na riadok oznaÄený znaÄkou ---> a premiestni ho na
+   prvú chybu.
+2. Napíš  x  pre zmazanie prvého nechceného riadku.
+3. Teraz napíš  u  Äím vrátíš späť posledne vykonaný príkaz.
+4. Teraz oprav všetky chyby na riadku použitím príkazu  x  .
+5. Teraz napíš veľké   U  Äím vrátíš riadok do pôvodného stavu.
+6. Teraz napíš  u  niekoľko krát, Äím vrátíš späť príkaz U.
+7. Teraz napíš CTRL-R (drž klávesu CTRL stlaÄenú kým stláÄaÅ¡ R) niekoľko
+   krát, Äím vrátíš späť predtým vrátené príkazy (undo z undo).
+
+---> Opprav chybby nna toomto riadku a zmeeň ich pommocou undo.
+
+  8. Tieto príkazy sú Äasto používané. Teraz prejdi na zhrnutie lekcie 2.
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			       LEKCIA 2 ZHRNUTIE
+
+
+  1. Pre zmazanie znakov od kurzora do konca slova napíš:   dw
+
+  2. Pre zmazanie znakov od kurzora do konca riadku napíš:   d$
+
+  3. Pre zmazanie celého riadku napíš:   dd
+
+  4. Pre zopakovanie pohybu, napíš pred neho Äíslo:   2w
+
+  5. Formát pre píkaz:
+
+       operátor   [Äíslo]   pohyb
+     kde:
+       operátor - Äo treba robiÅ¥, napríklad  d  pre zmazanie
+       [Äíslo] - je voliteľný poÄet pre opakovanie pohybu
+       pohyb - pohyb po texte vzhľadom na operátor, napríklad w (slovo),
+		$ (do konca riadku), atÄ.
+
+  6. Pre pohyb na zaÄiatok riadku použi nulu:  0
+
+  7. Pre vrátenie späť predošlej operácie napíš:	u   (malé u)
+     Pre vrátenie všetkých úprav na riadku napíš:    U   (veľké U)
+     Pre vrátenie vrátených úprav napíš:	      CTRL-R
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			 Lekcia 3.1: PRÃKAZ VLOŽIŤ
+
+
+	  ** Napísanie príkazu  p  vloží psledný výmaz za kurzor. **
+
+  1. Presuň kurzor nižšie na prvý riadok textu.
+
+  2. Napíš  dd  Äím zmažeÅ¡ riadok a uložíš ho do buffera editora Vim.
+
+  3. Presuň kurzor vyššie tam, kam zmazaný riadok patrí.
+
+  4. Ak napíšeš v normálnom móde   p   zmazaný riadk sa vloží.
+
+  5. Zopakuj kroky 2 až 4, kým riadky niesú v správnom poradí.
+
+---> d) Tiež sa dokážeš vzdelávať?
+---> b) Fialky sú modré,
+---> c) Inteligencia sa vzdeláva,
+---> a) Ruže sú Äervené,
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		       Lekcia 3.2: PRÃKAZ NAHRADENIA
+
+
+     ** Napísaním  rx  sa nahradí znak na mieste kurzora znakom  x . **
+
+  1. Presuň kurzor nižšie na prví riadok textu oznaÄeného znaÄkou --->.
+
+  2. Presuň kurzor na zaÄiatok prvej chyby.
+
+  3. napíš  r  a potom znak, ktorý tam má byť.
+
+  4. Zopakuj kroky 2 a 3, kým prvý riadok nieje zhodný s druhým.
+
+---> KaÄ bol tento riasok píaaný, niekro stlaÅ¡il nesprábne klávesy!
+---> KeÄ bol tento riadok písaný, niekto stlaÄil nesprávne klávesy!
+
+  5. Teraz prejdi na lekciu 3.2.
+
+POZNÃMKA: Pamätaj si, že nauÄiÅ¥ sa môžeÅ¡ len používanim, nie pamätaním.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		       Lekcia 3.3. PRÃKAZ ÚPRAVY
+
+
+     ** Ak chceÅ¡ zmeniÅ¥ ÄasÅ¥ slova do konca slova, napíš  ce . **
+
+  1. Presuň kurzor nižšie na prvý riadok oznaÄený znaÄkou --->.
+
+  2. Umiestni kurzor na písmeno o v slove rosfpl.
+
+  3. Napíš  ce  a oprav slovo (v tomto prípade napíš 'iadok'.)
+
+  4. StlaÄ <ESC> a prejdi na Äalší znak, ktorý treba zmeniÅ¥.
+
+  5. Zopakuj kroky 3 a 4, kým prvá veta nieje rovnaká ako druhá.
+
+---> Tento rosfpl má niekoľko skic, ktoré je pirewvbí zmeniÅ¥ piyÅ¥uÄán príkazu.
+---> Tento riadok má niekoľko slov, ktoré je potrebné zmeniť použitím príkazu.
+
+Poznámka, že  ce  zmaže slovo a nastaví vkladací mód.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		       Lekcia 3.4: VIAC ZMIEN POUŽITÃM c
+
+
+   ** Príkaz pre úpravy sa používa s rovnakými pohybmi ako pre mazanie **
+
+  1. Príkaz pre úpravy pracuje rovnako ako pre mazanie. Formát je:
+
+        c    [Äíslo]    pohyb
+
+  2. Pohyby sú rovnaké, ako napríklad   w (slovo) a  $ (koniec riadku).
+
+  3. Presuň kurzor nižšie na prvý riadok oznaÄený znaÄkou --->.
+
+  4. Presuň kurzor na prvú chybu.
+
+  5. napíš  c$  aby si mohol upraviť zvyšok riadku podľa druhého
+     a stlaÄ <ESC>.
+
+---> Koniec tohto riadku potrebuje pomoc, aby bol ako druhy.
+---> Koniec tohto riadku potrebuje opraviť použitím príkazu  c$ .
+
+POZNÃMKA: MôžeÅ¡ použiÅ¥ klávesu backspace na úpravu zmien poÄas písania.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			       LEKCIA 3 ZHRNUTIE
+
+
+  1. Na vloženie textu, ktorý už bol zmazaný, napíš  p . To vloží zmazaný
+     text ZA kurzor (ak bol riadok zmazaný prejde na riadok pod kurzorom).
+
+  2. Pre naradenie znaku na mieste kurzora, napíš  r  a potom znak, ktorý
+     nahradí pôvodný znak.
+
+  3. Príkaz na upravenie umožňuje zmeniť od kurzora až po miesto, ktoré
+     urÄuje pohyb.  napr. Napíš  ce  Äím zmníš text od pozície
+     kurzora do konca slova, c$  zmení text do konca riadku.
+
+  4. Formát pre nahradenie je:
+
+	    c    [Äíslo]    pohyb
+
+
+Teraz prejdi na nalsedujúcu lekciu.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		     Lekcia 4.1: POZÃCIA A STATUS SÚBORU
+
+
+  ** StlaÄ CTRL-g pre zobrazenie svojej pozície v súbore a statusu súboru.
+     Napíš  G  pre presun na riadok v súbore. **
+
+  Poznámka: PreÄítaj si celú túto lekciu skôr ako zaÄneÅ¡ vykonávaÅ¥ kroky!!
+
+  1. Drž stlaÄenú klávesu Ctrl a stlaÄ  g . Toto nazývame CTRL-G.
+     Na spodu obrazovky sa zobrazí správa s názvom súboru a pozíciou
+     v súbore. Zapamätajsi si Äíslo riadku pre použitie v kroku 3.
+
+  2. StlaÄ  G  Äím sa dostaneÅ¡ na spodok súboru.
+     Napíš  gg  Äím sa dostaneÅ¡ na zaÄiatok súboru.
+
+  3. Napíš Äíslo riadku na ktorom si sa nachádzal a stlaÄ  G. To Å¥a
+     vráti na riadok, na ktorom si prvý krát stlaÄil CTRL-G.
+
+  4. Ak sa cítíš schopný vykonať teto kroky, vykonaj kroky 1 až 3.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			Lekcia 4.2: PRÃKAZ VYHĽADÃVANIA
+
+
+  ** Napíš  /  nasledované reťazcom pre vyhľadanie príslušného reťazca. **
+
+  1. Napíš znak  /  v normálnom móde. Poznámka, že tento znak sa spolu
+     s kurzorom zobrazí v dolnej Äasti obrazovky s  :  príkazom.
+
+  2. Teraz napíš 'errroor' <ENTER>. To je slovo, ktoré chceš vyhľadať.
+
+  3. Pre vyhľadanie ÄalÅ¡ieho výskytu rovnakého reÅ¥azca, stlaÄ jednoducho  n.
+     Pre vyhľadanie ÄalÅ¡ieho výskytu rovnakého reÅ¥azca opaÄným smerom,
+     N.
+
+  4. Ak chceš vyhľadať reťazec v spätnom smere, použí príkaz  ?  miesto
+     príkazu /.
+
+  5. Pre návrat na miesto z ktorého si priÅ¡iel stlaÄ CTRL-O (drž stlaÄenú
+     klávesu Ctrl poÄas stlaÄenia klávesy o). Zopakuj pre Äalší návrat
+     späť. CTRL-I ide vpred.
+
+POZNÃMKA: "errroor" nieje spôsob hláskovania error; errroor je error.
+POZNÃMKA: KeÄ vyhľadávanie dosiahne koniec tohto súboru, bude pokraÄovaÅ¥ na
+      zaÄiatku, dokiaľ nieje resetované nastavenie 'wrapscan' .
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+	     Lekcia 4.3: VYHĽADÃVANIE ZODPOVEDAJÚCICH ZÃTAVORIEK
+
+
+	 ** Napíš  %  pre vyhľadanie príslušného znaku ),], alebo } . **
+
+  1. Premiestni kurzor na hocaký zo znakov (, [, alebo { v riadku nižšie
+     oznaÄeného znaÄkou --->.
+
+  2. Teraz napíš znak  % .
+
+  3. Kurzor sa premiestni na zodpovedajúcu zátvorku.
+
+  4. Napíš  %  pre presun kurzoru späť na otvárajúcu zátvorku.
+
+  5. Presuň kurzor na iný zo znakov (,),[,],{ alebo } a všimni si
+     Äo % vykonáva.
+
+---> Toto ( je testovací riadok s ('s, ['s ] a {'s } v riadku. ))
+
+Poznámka: Toto je veľmi výhodné použíť pri ladení programu s chýbajúcimi
+	  uzatvárajúcimi zátvorkami!
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		      Lekcia 4.4: PRÃKAZ NAHRADENIA
+
+
+ ** Napíš   :s/starý/nový/g  pre nahradenie slova 'starý' za slovo 'nový'. **
+
+  1. Presuň kurzor nižšie na riadok oznaÄený znaÄkou --->.
+
+  2. Napíš  :s/thee/the <ENTER> . Poznamka, že tento príkaz zmení len prvý
+     výskyt "thee" v riadku.
+
+  3. Teraz napíš   :s/thee/the/g   Äo znamená celkové nahradenie v riadku.
+     Toto nahradí všetky výskyty v riadku.
+
+---> Thee best time to see thee flowers in thee spring.
+
+  4. Pre zmenu všetkých výskytov daného reťazca medzi dvomi ridakami,
+     napíš  :#,#s/starý/nový/g  kde #,# sú Äísla dvoch riadkov, v rozsahu
+                                ktorých sa nahradenie vykoná.
+     napíš  :%s/starý/nový/g    pre zmenu všetkých výskytov v celom riadku
+     napíš  :%s/starý/nový/gc   nájde všetky výskyty v celom súbore,
+                                s otázkou Äi nahradiÅ¥ alebo nie
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			       LEKCIA 4 ZHRNUTIE
+
+
+  1. CTRL-g    vypíše tvoju pozíciu v súbore a status súboru.
+            G  ťa premiestni na koniec riadku.
+     Äíslo  G  Å¥a premiestni na riadok s Äíslom.
+           gg  ťa presunie na prvý riadok
+
+  2. Napísanie  /  nasledované reťazcom vyhľadá reťazec smerom DOPREDU.
+     Napísanie  ?  nasledované reťazcom vyhľada reťazec smerom DOZADU.
+     Napísanie  n  po vyhľadávaní, vyhľadá nasledujúci výskyt reťazca
+     v rovnakom smere, priÄom  N  vyhľadá v opaÄnom smere.
+     CTRL-O ťa vráti späť na staršiu pozíciu, CTRL-I na novšiu pozíciu.
+
+  3. Napísanie  %  keÄ kurzor je na (,),[,],{, alebo } nájde zodpovdajúcu
+     párnu zátvorku.
+
+  4. Pre nahradenie nového za prvý starý v riadku napíš    :s/starý/nový
+     Pre nahradenie nového za všetky staré v riadku napíš  :s/starý/nový/g
+     Pre nahradenie reťazcov medzi dvoma riadkami 3 napíš  :#,#/starý/nový/g
+     Pre nahradenie všetkých výskytov v súbore napíš       :%s/starý/nový/g
+     Pre potvrdenie každého nahradenia pridaj 'c'	         :%s/starý/nový/gc
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		Lekcia 5.1 AKO SPUSTIŤ VONKAJÅ Ã PRÃKAZ
+
+
+ ** Napíš príkaz  :!  nasledovaný vonkajším príkazom pre spustenie príkazu **
+
+  1. Napíš obvyklý píkaz  :  ktorý nastaví kurzor na spodok obrazovky.
+     To umožní napísať príkaz.
+
+  2. Teraz napíš  !  (výkriÄník). To umožní spustiÅ¥ hociaký vonkajší príkaz
+     z príkazového riadku.
+
+  3. Ako príklad napíš  ls  za ! a stlaÄ <ENTER>. Tento príkaz
+     zobrazí obsah tvojho adresára rovnako ako na príkazovom riadku.
+     Alebo použi  :!dir  ak ls nefunguje.
+
+Poznámka:  Takto je možné spustiť hociaký vonkajší príkaz s argumentami.
+Poznámka:  VÅ¡etky príkazy  :  musia byÅ¥ dokonÄené stlaÄením <ENTER>
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		      Lekcia 5.2: VIAC O UKLADANà SÚBOROV
+
+
+     ** Pre uloženie zmien v súbore, napíš  :w FILENAME. **
+
+  1. Napíš  :!dir  alebo  :!ls  pre výpis aktuálneho adresára.
+     Už vieÅ¡, že musíš za týmto stlaÄiÅ¥ <ENTER> .
+
+  2. Vyber názov súboru, ktorý ešte neexistuje, ako napr. TEST.
+
+  3. Teraz napíš:   :w TEST   (kde TEST je názov vybratého súboru.)
+
+  4. To uloží celý súbor  (Vim Tutor)  pod názovm TEST.
+     Pre overenie napíš   :!dir   , Äím  zobrazíš obsah adresára.
+
+Poznámka: že ak ukonÄíš prácu s editorom Vim a znovu ho spustíš príkazom
+	        vim TEST, súbor bude kópia výuky, keÄ si ho uložil.
+
+  5. Teraz odstráň súbor napísaním (MS-DOS):   :!del TEST
+			     alebo (Unix):     :!rm TEST
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		    Lekcia 5.3 VÃBER TEXTU PRE ULOŽENIE
+
+
+  ** Pre uloženie Äasti súboru, napíš  v  pohyb :w FILENAME **
+
+  1. Presuň kurozr na tento riadok.
+
+  2. StlaÄ  v  a presuň kurozr na piatu položku dole. Poznámka, že
+     tento text je vyznaÄený (highlighted).
+
+  3. StlaÄ klávesu  : . V spodnej Äasti okna sa objaví  :'<,'>.
+
+  4. Napíš w TEST  , kde TEST je meno súboru, ktorý zatial neexistuje.
+     Skontroluj, e vidíš  :'<,'>w TEST  predtým než stlaÄíš Enter.
+
+  5. Vim zapíše oznaÄené riadky do súboru TEST. Použi :!dir  alebo  !ls
+     pre overenie. Zatial ho eÅ¡te nemaž! Použijeme ho v ÄalÅ¡ej lekcii.
+
+POZNÃMKA: StlaÄením klávesy  v  sa spustí vizuálne oznaÄovanie.
+          MôžeÅ¡ pohybovaÅ¥ kurzorom pre upresnenie vyznaÄeného textu.
+          Potom môžeš použiť operátor pre vykonanie nejakej akcie
+          s textom. Napríklad  d  zmaže vyznaÄený text.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		   Lekcia 5.4: VÃBER A ZLUÄŒOVANIE SÚBOROV
+
+
+	** Pre vloženie obsahu súboru, napíš   :r FILENAME **
+
+  1. Premiestni kurzor nad tento riadok.
+
+POZNÃMKA: Po vykonaní kroku 2 uvidíš text z lekcie 5.3. Potom sa presuň
+          dole, aby si videl túto lekciu.
+
+  3. Teraz vlož súbor TEST použitím príkazu   :r TEST   kde TEST je názov
+     súboru. Súbor, ktorý si použil je umiestnený pod riadkom s kurzorom.
+
+POZNÃMKA: MôžeÅ¡ tiež naÄítaÅ¥ výstup vonkajÅ¡ieho príkazu. Napríklad :r !ls
+          naÄíta výstup príkazu ls a umiestni ho za pozíciu kurzora.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			       LEKCIA 5 ZHRNUTIE
+
+
+  1.  :!príkaz  spustí vonkajší príkaz.
+
+      Niektoré využiteľné príklady sú:
+	(MS_DOS)    (UNIX)
+	 :!dir       :!ls	    -  zobrazí obsah adresára
+	 :!del FILENAME    :!rm FILENAME    -  odstráni súbor FILENAME
+
+  2.  :w FILENAME  uloží aktuálny súbor na disk pod menom FILENAME.
+
+  3.  v  pohyb  :w FILENAME  uloží vizuálne oznaÄené riadky do
+      súboru FILENAME.
+
+  4.  :r FILENAME  vyberie z disku súbor FILENAME a vloží ho do aktuálneho
+      súboru za pozíciou kurzora.
+
+  5. :r !dir  naÄíta výstup z príkazu dir a vloží ho za pozíciu kurzora.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			 Lekcia 6.1: PRÃKAZ OTVORIŤ
+
+
+** Napíš  o  pre vloženie riadku pod kurzor a prepnutie do vkladacieho módu **
+
+  1. Presuň kurzor nižšie na riadok oznaÄený znaÄkou --->.
+
+  2. Napíš o (malé písmeno) pre vloženie Äistého riadku pod kurzorm
+     a prepnutie do vkladacieho módu.
+
+  3. Teraz skopíruj riadok oznaÄený ---> a stlaÄ <ESC> pre ukonÄenie
+     vkladacieho módu.
+
+---> Po napísaní  o  sa kurzor premiestní na vložený riadok do vkladacieho
+     módu.
+
+  4. Pre otvorenie riadku nad kurzorom, jednotucho napíš veľké  O ,
+     namiesto malého  o. Vyskúšaj si to na riadku dole.
+
+---> Vlož riadok nad týmto napísaním O, keÄ kurzor je na tomto riadku.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			Lekcia 6.2: PRÃKAZ PRIDAŤ
+
+
+	   ** Napíš  a  pre vloženie textu ZA kurzor. **
+
+  1. Presuň kurzor nižšie na koniec prvého riadku oznaÄeného znaÄkou --->
+
+  2. StlaÄ klávesu  e  dokiaľ kurozr nieje na konci riadku.
+
+  3. Napíš  a  (malé písmeno) pre pridanie textu ZA kurzorom.
+
+  4. DokonÄí slovo tak ako je to v druhom riadku. StlaÅ¡ <ESC> pre
+     opustenie vkladacieho módu.
+
+  5. Použi  e  na presun na ÄalÅ¡ie nedokonÄené slovo a zopakuj kroky 3 a 4.
+
+---> Tento ri ti dovoľuje nácv priávan testu na koniec riadku.
+---> Tento riadok ti dovoľuje nácvik pridávania textu na koniec riadku.
+
+POZNÃMKA: a, i, A Å¡tartujú rovnaký vkladací mód, jediný rozidel je, kde
+          sa znaky vkladajú.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		    Lekcia 6.3: INÃ SPOSOB NAHRADZOVANIA
+
+
+      ** Napíš veľké R pre nahradenie viac ako jedného znaku. **
+
+  1. Presuň kurzor nižšie na prvý riadok oznaÄený znaÄkou --->. Premiestni
+     kurzor na zaÄiatok prvého výskytu  xxx.
+
+  2. Teraz napíš  R  a  napíš  Äíslo uvedené v druhom riadku, takže
+     sa ním nahradí pôvodné xxx.
+
+  3. StlaÄ <ESC> pre opustenie nahradzovacieho módu. Poznámka, že zvyÅ¡ok
+     riadku zostane nezmenený.
+
+  4. Zopakuj tieto kroky pre nahradenie zvyšných xxx.
+
+---> Pridaním 123 ku xxx dostaneš xxx.
+---> Pridaním 123 ku 456 dostaneš 579.
+
+POZNÃMKA:  Nahradzovací mód je ako vkladací mód, ale každý napísaný znak
+           zmaže existujúci znak.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+          Lekcia 6.4: Copy Paste textu
+
+    ** použí operátor  y  pre copy textku a  p  pre jeho paste **
+
+  1. ChoÄ nižšie na riadok oznaÄený ---> a umiestni kurozr za "a)".
+
+  2. Naštartuj vizuálny mód použitím  v  a presuň kurozr pred "first".
+
+  3. Napíš  y  pre  vystrihnutie (copy) oznaÄeného textu.
+
+  4. Presuň kurozr na koniec ÄalÅ¡ieho riadku: j$
+
+  5. Napíš  p  pre vložnie (paste) textu. Potom napíš:  a druha <ESC>.
+
+  6. Použi vizuálny mód pre oznaÄenie "položka.", vystrihni to
+     použitím  y, presuň sa na koniec nasledujúceho riadku použitím  j$
+     a vlož sem text použitím  p.
+
+---> a) toto je prvá položka
+---> b)
+
+POZNÃMKA: MôžeÅ¡ použiÅ¥ tiež  y  ako operátor; yw  vystrihne jedno slovo.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			 Lekcia 6.5: NASTAVENIE MOŽNOSTÃ
+
+
+** Nastav možnosti, takže vyhľadávanie alebo nahradzovanie ignoruje
+   rozlišovanie **
+
+
+  1. Vyhľadaj reťazec 'ignore' napísaním:
+     /ignore <ENTER>
+     Zopakuj vyhľadávanie niekoľko krát stlaÄením klávesy  n .
+
+  2. Nastav možnosť 'ic' (Ignore case) napísaním príkazu:
+     :set ic
+
+  3. Teraz vyhľadaj reÅ¥azec 'ingore' znova stlaÄením klávesy  n
+     Poznámka, že teraz sú vyhľadané aj Ignore a IGNORE.
+
+  4. Nastav možnosťi 'hlsearch' a 'incsearch':
+     :set hls is
+
+  5. Teraz spusti vyhľadávací príkaz znovu, a pozri Äo sa stalo:
+     /ignore <ENTER>
+
+  6. Pre opetovné zapnutie rozlyšovania veľkých a malých písmen
+     napíš:  :set noic
+
+POZNÃMKA: Na odstránenie zvýraznenia výrazov napíš:  :nohlsearch
+POZNÃMKA: Ak chceÅ¡ nerozlyÅ¡ovaÅ¥ veľkosÅ¥ písmen len pre jedno
+          použitie vyhľadávacieho príkazu, použi \c:  /ignore\c <ENTER>
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			      LEKCIA 6 ZHRNUTIE
+
+
+  1. Napíš  o  pre otvorenie riadku pod kurzorom a štart vkladacieho módu.
+     Napíš  O  pre otvorenie riadku nad kurzorom.
+
+  2. Napíš  a  pre vkladanie textu ZA kurzor.
+     Napíš  A  pre vkladanie textu za koncom riadku.
+
+  3. Príkaz  e  presunie kurozr na koniec slova
+
+  4. Operátor  y  vystrihne (skopíruje) text,  p  ho vloží.
+
+  5. Napísanie veľkého  R  prepne do nahradzovacieho módu, kým nieje
+     stlaÄené <ESC>.
+
+  6. Napísanie ":set xxx" nastaví možnosť "xxx". Niektoré nastavenia sú:
+     'ic' 'ignorecase' ignoruje veľké a malé písmená poÄas vyhľadávania.
+     'is' 'incsearch' zobrazuje ÄiastoÄné reÅ¥azce vyhľadávaného reÅ¥azca.
+     'hls' 'hlsearch' vyznaÄí vÅ¡etky vyhľadávané reÅ¥azce.
+      Môžeš použiť hociktorý z dlhých a krátkych názvov možností.
+
+  7. Vlož "no" pred nastavenie pre jeho vypnutie:  :set noic
+
+
+
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		    LEKCIA 7.1: ZÃSKANIE NÃPOVEDY
+
+
+	  ** Používaj on-line systém nápovedy **
+
+  Vim má obsiahly on-line systém nápovedy. Pre odštartovanie, vyskúšaj jeden
+  z týchto troch:
+	- stlaÄ klávesu <HELP> (ak nejakú máš)
+	- stlaÄ klávesu <F1> (ak nejakú máš)
+	- napíš  :help <ENTER>
+
+  Čítaj text v okne nápovedy pre získanie predstavy ako nápoveda funguje.
+  Napíš   CTRL-W CTRL-W  pre skok z jedného okna do druhého.
+  Napíš    :q <ENTER>    Äím zatvoríš okno nápovedy.
+
+  Môžeš nájsť help ku hociakej téme pridaním argumentu ku príkazu ":help".
+  Vyskúšaj tieto (nezabudni stlaÄiÅ¥ <ENTER>):
+
+	:help w
+	:help c_CTRL-D
+	:help insert-index
+	:help user-manual
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		 LEKCIA 7.2: VYTVORENIE Å TARTOVACIEHO SKRIPTU
+
+		       ** Zapni funkcie editora Vim **
+
+  Vim má omnoho viac funkcii než Vi, ale veÄÅ¡ina z nich je implicitne
+  vypnutá. Pre používanie viac Vim funkcii vytvor "vimrc" súbor.
+
+  1. ZaÄni editovaÅ¥ "vimrc" súbor, to závisí na použitom systéme:
+	:e ~/.vimrc      pre Unix
+	:e $VIM/_vimrc   pre MS-Windows
+
+  2. Teraz si preÄítaj text príkladu "vimrc" súboru:
+
+	:r $VIMRUNTIME/vimrc_example.vim
+
+  3. Ulož súbor:
+	:w
+
+  Pri nasledujúcom štarte editora Vim sa použije zvýrazňovanie syntaxe.
+  Do "vimrc" súboru môžeš pridať všetky svoje uprednostňované nastavenia.
+  Pre viac informácii napíš  :help vimrc-intro
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+                   LEKCIA 7.3 DOKONÄŒENIE
+
+     ** DokonÄi príkaz na príkazovom riadku použitím CTRL-D a <TAB> **
+
+  1. Uisti sa, že Vim nieje v kompatibilnom móde:  :set nocp
+
+  2. Pozri sa aké súbory sa nachádzajú v adresári:  :!ls  alebo  :!dir
+
+  3. Napíš zaÄiatok príkazu:  :e
+
+  4. StlaÄ  CTRL-D  a Vim zobrazí zoznam príkazov zaÄínajúcich "e".
+
+  5. StlaÄ <TAB> a Vim dokonÄí meno príkazu na ":edit".
+
+  6. Teraz pridaj medzerník a zaÄiatok mena existujúceho súboru:
+     :edit FIL
+
+  7. StlaÄ <TAB>. Vim dokonÄí meno (ak je jedineÄné).
+
+POZNÃMKA: DokonÄovanie funguje pre veľa príkazov. Vyskúšaj stlaÄenie
+          CTRL-D a <TAB>. Å peciálne je to užitoÄné pre príkaz  :help.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+            LEKCIA 7 ZHRNUTIE
+
+  1. Napíš  :help  alebo stlaÄ <F1> alebo <Help> pre otvorenie okna nápovedy.
+
+  2. Napíš  :help príkaz  pre vyhľadanie nápovedy ku príkazu príkaz.
+
+  3. Napíš  CTRL-W CTRL-W  na preskoÄenie do iného okna.
+
+  4. Napíš  :q  pre zatvorenie okna nápovedy
+
+  5. Vytvor štartovací skript vimrc pre udržanie uprednostňovaných nastavení.
+
+  6. PoÄas písania príkazu  :  stlaÄ CTRL-D pre zobrazenie dokonÄení.
+     StlaÄ <TAB> pre použitie jedného z dokonÄení.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+
+
+  Toto vymedzuje výuku Vimu. Toto je urÄené pre strucný prehľad o editore
+  Vim, úplne postaÄujúce pre ľahké a obstojné používanie tohto editora.
+  Táto výuka je Äaleko od kompletnosti, pretože Vim má omnoho viacej príkazov.
+  Ako ÄalÅ¡ie si preÄítaj užívatľský manuál: ":help user-manual".
+
+  Pre ÄalÅ¡ie Äítanie a Å¡túdium je odporúÄaná kniha:
+  Vim - Vi Improved - od Steve Oualline
+  Vydavateľ: New Riders
+  Prvá kniha urÄená pre Vim. Å peciálne vhodná pre zaÄiatoÄníkov.
+  Obsahuje množstvo príkladov a obrázkov.
+  Pozri na http://iccf-holland.org/click5.html
+
+  Táto kniha je starÅ¡ia a je viac o Vi ako o Vim, ale je tiež odporúÄaná:
+  Learning the Vi Editor - od Linda Lamb
+  Vydavateľ: O'Reilly & Associates Inc.
+  Je to dobrá kniha pre získanie vedomostí o práci s editorom Vi.
+  Šieste vydanie obsahuje tiež informácie o editore Vim.
+
+  Táto výuka bola napísaná autormi Michael C. Pierce a Robert K. Ware,
+  Colorado School of Mines s použitím myšlienok dodanými od Charles Smith,
+  Colorado State University.  E-mail: bware@mines.colorado.edu.
+
+  Modifikované pre Vim od Bram Moolenaar.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+  Preklad do SlovenÄiny: ĽuboÅ¡ ÄŒelko
+  e-mail:       celbos@inmail.sk
+  Last Change:  2006 Apr 18
+  encoding:     iso8859-2
--- a/runtime/vimrc_example.vim
+++ b/runtime/vimrc_example.vim
@@ -1,7 +1,7 @@
 " An example for a vimrc file.
 "
 " Maintainer:	Bram Moolenaar <Bram@vim.org>
-" Last change:	2002 Sep 19
+" Last change:	2006 Nov 16
 "
 " To use it, copy it to
 "     for Unix and OS/2:  ~/.vimrc
@@ -37,9 +37,8 @@ set incsearch		" do incremental searchin
 " Don't use Ex mode, use Q for formatting
 map Q gq
 
-" This is an alternative that also works in block mode, but the deleted
-" text is lost and it only works for putting the current register.
-"vnoremap p "_dp
+" In many terminal emulators the mouse works just fine, thus enable it.
+set mouse=a
 
 " Switch syntax highlighting on, when the terminal has colors
 " Also switch on highlighting the last used search pattern.
@@ -69,7 +68,7 @@ if has("autocmd")
   " (happens when dropping a file on gvim).
   autocmd BufReadPost *
     \ if line("'\"") > 0 && line("'\"") <= line("$") |
-    \   exe "normal g`\"" |
+    \   exe "normal! g`\"" |
     \ endif
 
   augroup END
@@ -79,3 +78,8 @@ else
   set autoindent		" always set autoindenting on
 
 endif " has("autocmd")
+
+" Convenient command to see the difference between the current buffer and the
+" file it was loaded from, thus the changes you made.
+command DiffOrig vert new | set bt=nofile | r # | 0d_ | diffthis
+	 	\ | wincmd p | diffthis
--- a/src/if_mzsch.c
+++ b/src/if_mzsch.c
@@ -100,7 +100,7 @@ typedef struct
 #ifdef HAVE_SANDBOX
 static Scheme_Object *sandbox_file_guard(int, Scheme_Object **);
 static Scheme_Object *sandbox_network_guard(int, Scheme_Object **);
-static void sandbox_check();
+static void sandbox_check(void);
 #endif
 /*  Buffer-related commands */
 static Scheme_Object *buffer_new(buf_T *buf);
@@ -2441,7 +2441,8 @@ raise_vim_exn(const char *add_info)
     else
 	argv[0] = scheme_make_string(_("Vim error"));
 
-    argv[1] = scheme_current_continuation_marks();
+    /* TODO: proper argument */
+    argv[1] = scheme_current_continuation_marks(NULL);
 
     scheme_raise(scheme_make_struct_instance(vim_exn, 2, argv));
 }
@@ -2659,7 +2660,7 @@ static Scheme_Object *M_execute = NULL;
 static Scheme_Object *M_delete = NULL;
 
     static void
-sandbox_check()
+sandbox_check(void)
 {
     if (sandbox)
 	raise_vim_exn(_("not allowed in the Vim sandbox"));
--- a/src/if_tcl.c
+++ b/src/if_tcl.c
@@ -1564,7 +1564,9 @@ tclsetdelcmd(interp, reflist, vimobj, de
 	if (reflist->interp == interp && reflist->vimobj == vimobj)
 	{
 	    if (reflist->delcmd)
+	    {
 		Tcl_DecrRefCount(reflist->delcmd);
+	    }
 	    Tcl_IncrRefCount(delcmd);
 	    reflist->delcmd = delcmd;
 	    return TCL_OK;
--- a/src/link.sh
+++ b/src/link.sh
@@ -5,7 +5,8 @@
 # libraries when they exist, but this doesn't mean they are needed for Vim.
 #
 #      Author: Bram Moolenaar
-# Last change: 2005 Jan 25
+# Last change: 2006 Sep 26
+#     License: Public domain
 #
 # Warning: This fails miserably if the linker doesn't return an error code!
 #
--- a/src/po/README.txt
+++ b/src/po/README.txt
@@ -12,9 +12,9 @@ supported by iconv and will be automatic
 encoding.
 
 The GNU gettext library, starting with version 0.10.36, uses a new format for
-some encodings.  This folows the C99 standard for strings.  It means that when
-a multi-byte character includes the 0x5c byte, this is not recognized as a
-backslash.  Since this format is incompatible with Solaris, Vim uses the old
+some encodings.  This follows the C99 standard for strings.  It means that
+when a multi-byte character includes the 0x5c byte, this is not recognized as
+a backslash.  Since this format is incompatible with Solaris, Vim uses the old
 format.  This is done by setting the OLD_PO_FILE_OUTPUT and OLD_PO_FILE_INPUT
 environment variables.  When you use the Makefile in this directory that will
 be done for you.  This does NOT work with gettext 0.10.36.  Don't use it, get
@@ -30,7 +30,7 @@ on MS-Windows.  Download the gettext pac
 
 You might have to do the commands manually.  Example:
 
-   cd c:\vim\vim60
+   cd c:\vim\vim71
    mkdir runtime\lang\ja\LC_MESSAGES
    msgfmt -o runtime\lang\ja\LC_MESSAGES\vim.mo src\po\ja.po
 
--- a/src/po/pl.po
+++ b/src/po/pl.po
@@ -1,22 +1,22 @@
 # translation of pl.po to Polish
 # Polish Translation for Vim
 #
-# updated 2006 for vim-7.0
+# updated 2007 for vim-7.0
 #
 # FIRST AUTHOR Marcin Dalecki <martin@dalecki.de>, 2000.
-# Mikolaj Machowski <mikmach@wp.pl>, 2004, 2005, 2006.
+# Mikolaj Machowski <mikmach@wp.pl>, 2004, 2005, 2006, 2007.
 msgid ""
 msgstr ""
 "Project-Id-Version: pl\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-04-27 18:27+0200\n"
-"PO-Revision-Date: 2006-04-27 19:15+0200\n"
+"POT-Creation-Date: 2007-04-30 20:03+0200\n"
+"PO-Revision-Date: 2007-04-30 20:07+0200\n"
 "Last-Translator: Mikolaj Machowski <mikmach@wp.pl>\n"
 "Language-Team: Polish <kde-transl@mer.chemia.polsl.gliwice.pl>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=ISO-8859-2\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Generator: KBabel 1.11.2\n"
+"X-Generator: KBabel 1.11.4\n"
 
 msgid "E82: Cannot allocate any buffer, exiting..."
 msgstr "E82: Nie mogê zarezerwowaæ bufora; zakoñczenie..."
@@ -194,6 +194,9 @@ msgstr "E98: Nie mogê wczytaæ wyj¶cia ró¿nicy"
 msgid "E99: Current buffer is not in diff mode"
 msgstr "E99: Bie¿±cy bufor nie jest w trybie ró¿nic"
 
+msgid "E793: No other buffer in diff mode is modifiable"
+msgstr "E793: ¯aden inny bufor w trybie diff nie jest modyfikowalny"
+
 msgid "E100: No other buffer in diff mode"
 msgstr "E100: Brak innego bufora w trybie ró¿nic"
 
@@ -619,6 +622,10 @@ msgid "E706: Variable type mismatch for:
 msgstr "E706: Nieprawid³owy typ zmiennej dla: %s"
 
 #, c-format
+msgid "E795: Cannot delete variable %s"
+msgstr "E795: Nie mogê usun±æ zmiennej %s"
+
+#, c-format
 msgid "E741: Value is locked: %s"
 msgstr "E741: Warto¶æ jest zablokowana: %s"
 
@@ -883,6 +890,7 @@ msgstr " zak³adki"
 msgid " FAILED"
 msgstr " NIE POWIOD£O SIÊ"
 
+#. avoid a wait_return for this message, it's annoying
 #, c-format
 msgid "E137: Viminfo file is not writable: %s"
 msgstr "E137: Plik viminfo jest niezapisywalny: %s"
@@ -1457,6 +1465,9 @@ msgstr "jest katalogiem"
 msgid "is not a file"
 msgstr "nie jest plikiem"
 
+msgid "is a device (disabled with 'opendevice' option"
+msgstr "jest urz±dzeniem (wy³±czonym w opcji 'opendevice'"
+
 msgid "[New File]"
 msgstr "[Nowy Plik]"
 
@@ -1553,6 +1564,9 @@ msgstr "Czê¶ciowy zapis niemo¿liwy dla buforów NetBeans"
 msgid "is not a file or writable device"
 msgstr "nie jest plikiem lub zapisywalnym przyrz±dem"
 
+msgid "writing to device disabled with 'opendevice' option"
+msgstr "zapisywanie do urz±dzenia wy³±czone w opcji 'opendevice'"
+
 msgid "is read-only (add ! to override)"
 msgstr "jest tylko do odczytu (wymu¶ poprzez !)"
 
@@ -3288,6 +3302,9 @@ msgstr ""
 ",\n"
 "lub plik zosta³ uszkodzony."
 
+msgid " has been damaged (page size is smaller than minimum value).\n"
+msgstr " zosta³ uszkodzony (wielko¶æ strony jest mniejsza ni¿ najmniejsza warto¶æ).\n"
+
 #, c-format
 msgid "Using swap file \"%s\""
 msgstr "U¿ywam pliku wymiany \"%s\""
@@ -3626,6 +3643,10 @@ msgstr "E328: Menu istnieje tylko w inny
 msgid "E329: No menu \"%s\""
 msgstr "E329: Nie ma menu \"%s\""
 
+#. Only a mnemonic or accelerator is not valid.
+msgid "E792: Empty menu name"
+msgstr "E792: Pusta nazwa menu"
+
 msgid "E330: Menu path must not lead to a sub-menu"
 msgstr "E330: Trop menu nie mo¿e prowadziæ do podmenu"
 
@@ -4999,6 +5020,7 @@ msgstr "Przykro mi, brak podpowiedzi"
 msgid "Sorry, only %ld suggestions"
 msgstr "Przykro mi, tylko %ld podpowiedzi"
 
+#. for when 'cmdheight' > 1
 #. avoid more prompt
 #, c-format
 msgid "Change \"%.*s\" to:"
@@ -5423,6 +5445,13 @@ msgstr ""
 
 msgid ""
 "\n"
+"MS-Windows 64 bit GUI version"
+msgstr ""
+"\n"
+"64 bitowa wersja GUI dla MS-Windows"
+
+msgid ""
+"\n"
 "MS-Windows 32 bit GUI version"
 msgstr ""
 "\n"
@@ -6016,8 +6045,8 @@ msgid "E46: Cannot change read-only vari
 msgstr "E46: Nie mogê zmieniæ zmiennej tylko do odczytu \"%s\""
 
 #, c-format
-msgid "E46: Cannot set variable in the sandbox: \"%s\""
-msgstr "E46: Nie mogê ustawiæ zmiennej w piaskownicy: \"%s\""
+msgid "E794: Cannot set variable in the sandbox: \"%s\""
+msgstr "E794: Nie mogê ustawiæ zmiennej w piaskownicy: \"%s\""
 
 msgid "E47: Error while reading errorfile"
 msgstr "E47: B³±d w trakcie czytania pliku b³êdów"
--- a/src/proto/edit.pro
+++ b/src/proto/edit.pro
@@ -1,41 +1,41 @@
 /* edit.c */
-extern int edit __ARGS((int cmdchar, int startln, long count));
-extern void edit_putchar __ARGS((int c, int highlight));
-extern void edit_unputchar __ARGS((void));
-extern void display_dollar __ARGS((colnr_T col));
-extern void change_indent __ARGS((int type, int amount, int round, int replaced));
-extern void truncate_spaces __ARGS((char_u *line));
-extern void backspace_until_column __ARGS((int col));
-extern int vim_is_ctrl_x_key __ARGS((int c));
-extern int ins_compl_add_infercase __ARGS((char_u *str, int len, int icase, char_u *fname, int dir, int flags));
-extern void set_completion __ARGS((int startcol, list_T *list));
-extern void ins_compl_show_pum __ARGS((void));
-extern char_u *find_word_start __ARGS((char_u *ptr));
-extern char_u *find_word_end __ARGS((char_u *ptr));
-extern int ins_compl_active __ARGS((void));
-extern int ins_compl_add_tv __ARGS((typval_T *tv, int dir));
-extern void ins_compl_check_keys __ARGS((int frequency));
-extern int get_literal __ARGS((void));
-extern void insertchar __ARGS((int c, int flags, int second_indent));
-extern void auto_format __ARGS((int trailblank, int prev_line));
-extern int comp_textwidth __ARGS((int ff));
-extern int stop_arrow __ARGS((void));
-extern void set_last_insert __ARGS((int c));
-extern void free_last_insert __ARGS((void));
-extern char_u *add_char2buf __ARGS((int c, char_u *s));
-extern void beginline __ARGS((int flags));
-extern int oneright __ARGS((void));
-extern int oneleft __ARGS((void));
-extern int cursor_up __ARGS((long n, int upd_topline));
-extern int cursor_down __ARGS((long n, int upd_topline));
-extern int stuff_inserted __ARGS((int c, long count, int no_esc));
-extern char_u *get_last_insert __ARGS((void));
-extern char_u *get_last_insert_save __ARGS((void));
-extern void replace_push __ARGS((int c));
-extern void fixthisline __ARGS((int (*get_the_indent)(void)));
-extern void fix_indent __ARGS((void));
-extern int in_cinkeys __ARGS((int keytyped, int when, int line_is_empty));
-extern int hkmap __ARGS((int c));
-extern void ins_scroll __ARGS((void));
-extern void ins_horscroll __ARGS((void));
+int edit __ARGS((int cmdchar, int startln, long count));
+void edit_putchar __ARGS((int c, int highlight));
+void edit_unputchar __ARGS((void));
+void display_dollar __ARGS((colnr_T col));
+void change_indent __ARGS((int type, int amount, int round, int replaced));
+void truncate_spaces __ARGS((char_u *line));
+void backspace_until_column __ARGS((int col));
+int vim_is_ctrl_x_key __ARGS((int c));
+int ins_compl_add_infercase __ARGS((char_u *str, int len, int icase, char_u *fname, int dir, int flags));
+void set_completion __ARGS((int startcol, list_T *list));
+void ins_compl_show_pum __ARGS((void));
+char_u *find_word_start __ARGS((char_u *ptr));
+char_u *find_word_end __ARGS((char_u *ptr));
+int ins_compl_active __ARGS((void));
+int ins_compl_add_tv __ARGS((typval_T *tv, int dir));
+void ins_compl_check_keys __ARGS((int frequency));
+int get_literal __ARGS((void));
+void insertchar __ARGS((int c, int flags, int second_indent));
+void auto_format __ARGS((int trailblank, int prev_line));
+int comp_textwidth __ARGS((int ff));
+int stop_arrow __ARGS((void));
+void set_last_insert __ARGS((int c));
+void free_last_insert __ARGS((void));
+char_u *add_char2buf __ARGS((int c, char_u *s));
+void beginline __ARGS((int flags));
+int oneright __ARGS((void));
+int oneleft __ARGS((void));
+int cursor_up __ARGS((long n, int upd_topline));
+int cursor_down __ARGS((long n, int upd_topline));
+int stuff_inserted __ARGS((int c, long count, int no_esc));
+char_u *get_last_insert __ARGS((void));
+char_u *get_last_insert_save __ARGS((void));
+void replace_push __ARGS((int c));
+void fixthisline __ARGS((int (*get_the_indent)(void)));
+void fix_indent __ARGS((void));
+int in_cinkeys __ARGS((int keytyped, int when, int line_is_empty));
+int hkmap __ARGS((int c));
+void ins_scroll __ARGS((void));
+void ins_horscroll __ARGS((void));
 /* vim: set ft=c : */
--- a/src/proto/ex_cmds.pro
+++ b/src/proto/ex_cmds.pro
@@ -1,59 +1,59 @@
 /* ex_cmds.c */
-extern void do_ascii __ARGS((exarg_T *eap));
-extern void ex_align __ARGS((exarg_T *eap));
-extern void ex_sort __ARGS((exarg_T *eap));
-extern void ex_retab __ARGS((exarg_T *eap));
-extern int do_move __ARGS((linenr_T line1, linenr_T line2, linenr_T dest));
-extern void ex_copy __ARGS((linenr_T line1, linenr_T line2, linenr_T n));
-extern void free_prev_shellcmd __ARGS((void));
-extern void do_bang __ARGS((int addr_count, exarg_T *eap, int forceit, int do_in, int do_out));
-extern void do_shell __ARGS((char_u *cmd, int flags));
-extern char_u *make_filter_cmd __ARGS((char_u *cmd, char_u *itmp, char_u *otmp));
-extern void append_redir __ARGS((char_u *buf, char_u *opt, char_u *fname));
-extern int viminfo_error __ARGS((char *errnum, char *message, char_u *line));
-extern int read_viminfo __ARGS((char_u *file, int want_info, int want_marks, int forceit));
-extern void write_viminfo __ARGS((char_u *file, int forceit));
-extern int viminfo_readline __ARGS((vir_T *virp));
-extern char_u *viminfo_readstring __ARGS((vir_T *virp, int off, int convert));
-extern void viminfo_writestring __ARGS((FILE *fd, char_u *p));
-extern void do_fixdel __ARGS((exarg_T *eap));
-extern void print_line_no_prefix __ARGS((linenr_T lnum, int use_number, int list));
-extern void print_line __ARGS((linenr_T lnum, int use_number, int list));
-extern void ex_file __ARGS((exarg_T *eap));
-extern void ex_update __ARGS((exarg_T *eap));
-extern void ex_write __ARGS((exarg_T *eap));
-extern int do_write __ARGS((exarg_T *eap));
-extern void ex_wnext __ARGS((exarg_T *eap));
-extern void do_wqall __ARGS((exarg_T *eap));
-extern int not_writing __ARGS((void));
-extern int getfile __ARGS((int fnum, char_u *ffname, char_u *sfname, int setpm, linenr_T lnum, int forceit));
-extern int do_ecmd __ARGS((int fnum, char_u *ffname, char_u *sfname, exarg_T *eap, linenr_T newlnum, int flags));
-extern void ex_append __ARGS((exarg_T *eap));
-extern void ex_change __ARGS((exarg_T *eap));
-extern void ex_z __ARGS((exarg_T *eap));
-extern int check_restricted __ARGS((void));
-extern int check_secure __ARGS((void));
-extern void do_sub __ARGS((exarg_T *eap));
-extern int do_sub_msg __ARGS((int count_only));
-extern void ex_global __ARGS((exarg_T *eap));
-extern void global_exe __ARGS((char_u *cmd));
-extern int read_viminfo_sub_string __ARGS((vir_T *virp, int force));
-extern void write_viminfo_sub_string __ARGS((FILE *fp));
-extern void free_old_sub __ARGS((void));
-extern int prepare_tagpreview __ARGS((int undo_sync));
-extern void ex_help __ARGS((exarg_T *eap));
-extern char_u *check_help_lang __ARGS((char_u *arg));
-extern int help_heuristic __ARGS((char_u *matched_string, int offset, int wrong_case));
-extern int find_help_tags __ARGS((char_u *arg, int *num_matches, char_u ***matches, int keep_lang));
-extern void fix_help_buffer __ARGS((void));
-extern void ex_exusage __ARGS((exarg_T *eap));
-extern void ex_viusage __ARGS((exarg_T *eap));
-extern void ex_helptags __ARGS((exarg_T *eap));
-extern void ex_sign __ARGS((exarg_T *eap));
-extern void sign_gui_started __ARGS((void));
-extern int sign_get_attr __ARGS((int typenr, int line));
-extern char_u *sign_get_text __ARGS((int typenr));
-extern void *sign_get_image __ARGS((int typenr));
-extern char_u *sign_typenr2name __ARGS((int typenr));
-extern void ex_drop __ARGS((exarg_T *eap));
+void do_ascii __ARGS((exarg_T *eap));
+void ex_align __ARGS((exarg_T *eap));
+void ex_sort __ARGS((exarg_T *eap));
+void ex_retab __ARGS((exarg_T *eap));
+int do_move __ARGS((linenr_T line1, linenr_T line2, linenr_T dest));
+void ex_copy __ARGS((linenr_T line1, linenr_T line2, linenr_T n));
+void free_prev_shellcmd __ARGS((void));
+void do_bang __ARGS((int addr_count, exarg_T *eap, int forceit, int do_in, int do_out));
+void do_shell __ARGS((char_u *cmd, int flags));
+char_u *make_filter_cmd __ARGS((char_u *cmd, char_u *itmp, char_u *otmp));
+void append_redir __ARGS((char_u *buf, char_u *opt, char_u *fname));
+int viminfo_error __ARGS((char *errnum, char *message, char_u *line));
+int read_viminfo __ARGS((char_u *file, int want_info, int want_marks, int forceit));
+void write_viminfo __ARGS((char_u *file, int forceit));
+int viminfo_readline __ARGS((vir_T *virp));
+char_u *viminfo_readstring __ARGS((vir_T *virp, int off, int convert));
+void viminfo_writestring __ARGS((FILE *fd, char_u *p));
+void do_fixdel __ARGS((exarg_T *eap));
+void print_line_no_prefix __ARGS((linenr_T lnum, int use_number, int list));
+void print_line __ARGS((linenr_T lnum, int use_number, int list));
+void ex_file __ARGS((exarg_T *eap));
+void ex_update __ARGS((exarg_T *eap));
+void ex_write __ARGS((exarg_T *eap));
+int do_write __ARGS((exarg_T *eap));
+void ex_wnext __ARGS((exarg_T *eap));
+void do_wqall __ARGS((exarg_T *eap));
+int not_writing __ARGS((void));
+int getfile __ARGS((int fnum, char_u *ffname, char_u *sfname, int setpm, linenr_T lnum, int forceit));
+int do_ecmd __ARGS((int fnum, char_u *ffname, char_u *sfname, exarg_T *eap, linenr_T newlnum, int flags));
+void ex_append __ARGS((exarg_T *eap));
+void ex_change __ARGS((exarg_T *eap));
+void ex_z __ARGS((exarg_T *eap));
+int check_restricted __ARGS((void));
+int check_secure __ARGS((void));
+void do_sub __ARGS((exarg_T *eap));
+int do_sub_msg __ARGS((int count_only));
+void ex_global __ARGS((exarg_T *eap));
+void global_exe __ARGS((char_u *cmd));
+int read_viminfo_sub_string __ARGS((vir_T *virp, int force));
+void write_viminfo_sub_string __ARGS((FILE *fp));
+void free_old_sub __ARGS((void));
+int prepare_tagpreview __ARGS((int undo_sync));
+void ex_help __ARGS((exarg_T *eap));
+char_u *check_help_lang __ARGS((char_u *arg));
+int help_heuristic __ARGS((char_u *matched_string, int offset, int wrong_case));
+int find_help_tags __ARGS((char_u *arg, int *num_matches, char_u ***matches, int keep_lang));
+void fix_help_buffer __ARGS((void));
+void ex_exusage __ARGS((exarg_T *eap));
+void ex_viusage __ARGS((exarg_T *eap));
+void ex_helptags __ARGS((exarg_T *eap));
+void ex_sign __ARGS((exarg_T *eap));
+void sign_gui_started __ARGS((void));
+int sign_get_attr __ARGS((int typenr, int line));
+char_u *sign_get_text __ARGS((int typenr));
+void *sign_get_image __ARGS((int typenr));
+char_u *sign_typenr2name __ARGS((int typenr));
+void ex_drop __ARGS((exarg_T *eap));
 /* vim: set ft=c : */
--- a/src/proto/ex_cmds2.pro
+++ b/src/proto/ex_cmds2.pro
@@ -1,83 +1,83 @@
 /* ex_cmds2.c */
-extern void do_debug __ARGS((char_u *cmd));
-extern void ex_debug __ARGS((exarg_T *eap));
-extern void dbg_check_breakpoint __ARGS((exarg_T *eap));
-extern int dbg_check_skipped __ARGS((exarg_T *eap));
-extern void ex_breakadd __ARGS((exarg_T *eap));
-extern void ex_debuggreedy __ARGS((exarg_T *eap));
-extern void ex_breakdel __ARGS((exarg_T *eap));
-extern void ex_breaklist __ARGS((exarg_T *eap));
-extern linenr_T dbg_find_breakpoint __ARGS((int file, char_u *fname, linenr_T after));
-extern int has_profiling __ARGS((int file, char_u *fname, int *fp));
-extern void dbg_breakpoint __ARGS((char_u *name, linenr_T lnum));
-extern void profile_start __ARGS((proftime_T *tm));
-extern void profile_end __ARGS((proftime_T *tm));
-extern void profile_sub __ARGS((proftime_T *tm, proftime_T *tm2));
-extern char *profile_msg __ARGS((proftime_T *tm));
-extern void profile_zero __ARGS((proftime_T *tm));
-extern void profile_add __ARGS((proftime_T *tm, proftime_T *tm2));
-extern void profile_self __ARGS((proftime_T *self, proftime_T *total, proftime_T *children));
-extern void profile_get_wait __ARGS((proftime_T *tm));
-extern void profile_sub_wait __ARGS((proftime_T *tm, proftime_T *tma));
-extern int profile_equal __ARGS((proftime_T *tm1, proftime_T *tm2));
-extern int profile_cmp __ARGS((proftime_T *tm1, proftime_T *tm2));
-extern void ex_profile __ARGS((exarg_T *eap));
-extern void profile_dump __ARGS((void));
-extern void script_prof_save __ARGS((proftime_T *tm));
-extern void script_prof_restore __ARGS((proftime_T *tm));
-extern void prof_inchar_enter __ARGS((void));
-extern void prof_inchar_exit __ARGS((void));
-extern int prof_def_func __ARGS((void));
-extern int autowrite __ARGS((buf_T *buf, int forceit));
-extern void autowrite_all __ARGS((void));
-extern int check_changed __ARGS((buf_T *buf, int checkaw, int mult_win, int forceit, int allbuf));
-extern void browse_save_fname __ARGS((buf_T *buf));
-extern void dialog_changed __ARGS((buf_T *buf, int checkall));
-extern int can_abandon __ARGS((buf_T *buf, int forceit));
-extern int check_changed_any __ARGS((int hidden));
-extern int check_fname __ARGS((void));
-extern int buf_write_all __ARGS((buf_T *buf, int forceit));
-extern int get_arglist __ARGS((garray_T *gap, char_u *str));
-extern int get_arglist_exp __ARGS((char_u *str, int *fcountp, char_u ***fnamesp));
-extern void set_arglist __ARGS((char_u *str));
-extern void check_arg_idx __ARGS((win_T *win));
-extern void ex_args __ARGS((exarg_T *eap));
-extern void ex_previous __ARGS((exarg_T *eap));
-extern void ex_rewind __ARGS((exarg_T *eap));
-extern void ex_last __ARGS((exarg_T *eap));
-extern void ex_argument __ARGS((exarg_T *eap));
-extern void do_argfile __ARGS((exarg_T *eap, int argn));
-extern void ex_next __ARGS((exarg_T *eap));
-extern void ex_argedit __ARGS((exarg_T *eap));
-extern void ex_argadd __ARGS((exarg_T *eap));
-extern void ex_argdelete __ARGS((exarg_T *eap));
-extern void ex_listdo __ARGS((exarg_T *eap));
-extern void ex_compiler __ARGS((exarg_T *eap));
-extern void ex_runtime __ARGS((exarg_T *eap));
-extern int source_runtime __ARGS((char_u *name, int all));
-extern int do_in_runtimepath __ARGS((char_u *name, int all, void (*callback)(char_u *fname, void *ck), void *cookie));
-extern void ex_options __ARGS((exarg_T *eap));
-extern void ex_source __ARGS((exarg_T *eap));
-extern linenr_T *source_breakpoint __ARGS((void *cookie));
-extern int *source_dbg_tick __ARGS((void *cookie));
-extern int source_level __ARGS((void *cookie));
-extern int do_source __ARGS((char_u *fname, int check_other, int is_vimrc));
-extern void ex_scriptnames __ARGS((exarg_T *eap));
-extern void scriptnames_slash_adjust __ARGS((void));
-extern char_u *get_scriptname __ARGS((scid_T id));
-extern void free_scriptnames __ARGS((void));
-extern char *fgets_cr __ARGS((char *s, int n, FILE *stream));
-extern char_u *getsourceline __ARGS((int c, void *cookie, int indent));
-extern void script_line_start __ARGS((void));
-extern void script_line_exec __ARGS((void));
-extern void script_line_end __ARGS((void));
-extern void ex_scriptencoding __ARGS((exarg_T *eap));
-extern void ex_finish __ARGS((exarg_T *eap));
-extern void do_finish __ARGS((exarg_T *eap, int reanimate));
-extern int source_finished __ARGS((char_u *(*getline)(int, void *, int), void *cookie));
-extern void ex_checktime __ARGS((exarg_T *eap));
-extern char_u *get_mess_lang __ARGS((void));
-extern void set_lang_var __ARGS((void));
-extern void ex_language __ARGS((exarg_T *eap));
-extern char_u *get_lang_arg __ARGS((expand_T *xp, int idx));
+void do_debug __ARGS((char_u *cmd));
+void ex_debug __ARGS((exarg_T *eap));
+void dbg_check_breakpoint __ARGS((exarg_T *eap));
+int dbg_check_skipped __ARGS((exarg_T *eap));
+void ex_breakadd __ARGS((exarg_T *eap));
+void ex_debuggreedy __ARGS((exarg_T *eap));
+void ex_breakdel __ARGS((exarg_T *eap));
+void ex_breaklist __ARGS((exarg_T *eap));
+linenr_T dbg_find_breakpoint __ARGS((int file, char_u *fname, linenr_T after));
+int has_profiling __ARGS((int file, char_u *fname, int *fp));
+void dbg_breakpoint __ARGS((char_u *name, linenr_T lnum));
+void profile_start __ARGS((proftime_T *tm));
+void profile_end __ARGS((proftime_T *tm));
+void profile_sub __ARGS((proftime_T *tm, proftime_T *tm2));
+char *profile_msg __ARGS((proftime_T *tm));
+void profile_zero __ARGS((proftime_T *tm));
+void profile_add __ARGS((proftime_T *tm, proftime_T *tm2));
+void profile_self __ARGS((proftime_T *self, proftime_T *total, proftime_T *children));
+void profile_get_wait __ARGS((proftime_T *tm));
+void profile_sub_wait __ARGS((proftime_T *tm, proftime_T *tma));
+int profile_equal __ARGS((proftime_T *tm1, proftime_T *tm2));
+int profile_cmp __ARGS((proftime_T *tm1, proftime_T *tm2));
+void ex_profile __ARGS((exarg_T *eap));
+void profile_dump __ARGS((void));
+void script_prof_save __ARGS((proftime_T *tm));
+void script_prof_restore __ARGS((proftime_T *tm));
+void prof_inchar_enter __ARGS((void));
+void prof_inchar_exit __ARGS((void));
+int prof_def_func __ARGS((void));
+int autowrite __ARGS((buf_T *buf, int forceit));
+void autowrite_all __ARGS((void));
+int check_changed __ARGS((buf_T *buf, int checkaw, int mult_win, int forceit, int allbuf));
+void browse_save_fname __ARGS((buf_T *buf));
+void dialog_changed __ARGS((buf_T *buf, int checkall));
+int can_abandon __ARGS((buf_T *buf, int forceit));
+int check_changed_any __ARGS((int hidden));
+int check_fname __ARGS((void));
+int buf_write_all __ARGS((buf_T *buf, int forceit));
+int get_arglist __ARGS((garray_T *gap, char_u *str));
+int get_arglist_exp __ARGS((char_u *str, int *fcountp, char_u ***fnamesp));
+void set_arglist __ARGS((char_u *str));
+void check_arg_idx __ARGS((win_T *win));
+void ex_args __ARGS((exarg_T *eap));
+void ex_previous __ARGS((exarg_T *eap));
+void ex_rewind __ARGS((exarg_T *eap));
+void ex_last __ARGS((exarg_T *eap));
+void ex_argument __ARGS((exarg_T *eap));
+void do_argfile __ARGS((exarg_T *eap, int argn));
+void ex_next __ARGS((exarg_T *eap));
+void ex_argedit __ARGS((exarg_T *eap));
+void ex_argadd __ARGS((exarg_T *eap));
+void ex_argdelete __ARGS((exarg_T *eap));
+void ex_listdo __ARGS((exarg_T *eap));
+void ex_compiler __ARGS((exarg_T *eap));
+void ex_runtime __ARGS((exarg_T *eap));
+int source_runtime __ARGS((char_u *name, int all));
+int do_in_runtimepath __ARGS((char_u *name, int all, void (*callback)(char_u *fname, void *ck), void *cookie));
+void ex_options __ARGS((exarg_T *eap));
+void ex_source __ARGS((exarg_T *eap));
+linenr_T *source_breakpoint __ARGS((void *cookie));
+int *source_dbg_tick __ARGS((void *cookie));
+int source_level __ARGS((void *cookie));
+int do_source __ARGS((char_u *fname, int check_other, int is_vimrc));
+void ex_scriptnames __ARGS((exarg_T *eap));
+void scriptnames_slash_adjust __ARGS((void));
+char_u *get_scriptname __ARGS((scid_T id));
+void free_scriptnames __ARGS((void));
+char *fgets_cr __ARGS((char *s, int n, FILE *stream));
+char_u *getsourceline __ARGS((int c, void *cookie, int indent));
+void script_line_start __ARGS((void));
+void script_line_exec __ARGS((void));
+void script_line_end __ARGS((void));
+void ex_scriptencoding __ARGS((exarg_T *eap));
+void ex_finish __ARGS((exarg_T *eap));
+void do_finish __ARGS((exarg_T *eap, int reanimate));
+int source_finished __ARGS((char_u *(*fgetline)(int, void *, int), void *cookie));
+void ex_checktime __ARGS((exarg_T *eap));
+char_u *get_mess_lang __ARGS((void));
+void set_lang_var __ARGS((void));
+void ex_language __ARGS((exarg_T *eap));
+char_u *get_lang_arg __ARGS((expand_T *xp, int idx));
 /* vim: set ft=c : */
--- a/src/proto/gui_beval.pro
+++ b/src/proto/gui_beval.pro
@@ -1,11 +1,11 @@
 /* gui_beval.c */
-extern void general_beval_cb __ARGS((BalloonEval *beval, int state));
-extern BalloonEval *gui_mch_create_beval_area __ARGS((void *target, char_u *mesg, void (*mesgCB)(BalloonEval *, int), void *clientData));
-extern void gui_mch_destroy_beval_area __ARGS((BalloonEval *beval));
-extern void gui_mch_enable_beval_area __ARGS((BalloonEval *beval));
-extern void gui_mch_disable_beval_area __ARGS((BalloonEval *beval));
-extern BalloonEval *gui_mch_currently_showing_beval __ARGS((void));
-extern int get_beval_info __ARGS((BalloonEval *beval, int getword, win_T **winp, linenr_T *lnump, char_u **textp, int *colp));
-extern void gui_mch_post_balloon __ARGS((BalloonEval *beval, char_u *mesg));
-extern void gui_mch_unpost_balloon __ARGS((BalloonEval *beval));
+void general_beval_cb __ARGS((BalloonEval *beval, int state));
+BalloonEval *gui_mch_create_beval_area __ARGS((void *target, char_u *mesg, void (*mesgCB)(BalloonEval *, int), void *clientData));
+void gui_mch_destroy_beval_area __ARGS((BalloonEval *beval));
+void gui_mch_enable_beval_area __ARGS((BalloonEval *beval));
+void gui_mch_disable_beval_area __ARGS((BalloonEval *beval));
+BalloonEval *gui_mch_currently_showing_beval __ARGS((void));
+int get_beval_info __ARGS((BalloonEval *beval, int getword, win_T **winp, linenr_T *lnump, char_u **textp, int *colp));
+void gui_mch_post_balloon __ARGS((BalloonEval *beval, char_u *mesg));
+void gui_mch_unpost_balloon __ARGS((BalloonEval *beval));
 /* vim: set ft=c : */
--- a/src/proto/gui_motif.pro
+++ b/src/proto/gui_motif.pro
@@ -1,46 +1,46 @@
 /* gui_motif.c */
-extern void gui_x11_create_widgets __ARGS((void));
-extern void gui_x11_destroy_widgets __ARGS((void));
-extern void gui_mch_set_text_area_pos __ARGS((int x, int y, int w, int h));
-extern void gui_x11_set_back_color __ARGS((void));
-extern void manage_centered __ARGS((Widget dialog_child));
-extern XmFontList gui_motif_create_fontlist __ARGS((XFontStruct *font));
-extern XmFontList gui_motif_fontset2fontlist __ARGS((XFontSet *fontset));
-extern void gui_mch_enable_menu __ARGS((int flag));
-extern void gui_motif_set_mnemonics __ARGS((int enable));
-extern void gui_mch_add_menu __ARGS((vimmenu_T *menu, int idx));
-extern void gui_mch_toggle_tearoffs __ARGS((int enable));
-extern int gui_mch_text_area_extra_height __ARGS((void));
-extern void gui_mch_compute_menu_height __ARGS((Widget id));
-extern void gui_mch_add_menu_item __ARGS((vimmenu_T *menu, int idx));
-extern void gui_motif_update_mousemodel __ARGS((vimmenu_T *menu));
-extern void gui_mch_new_menu_colors __ARGS((void));
-extern void gui_mch_new_menu_font __ARGS((void));
-extern void gui_mch_new_tooltip_font __ARGS((void));
-extern void gui_mch_new_tooltip_colors __ARGS((void));
-extern void gui_mch_destroy_menu __ARGS((vimmenu_T *menu));
-extern void gui_mch_show_popupmenu __ARGS((vimmenu_T *menu));
-extern void gui_mch_def_colors __ARGS((void));
-extern void gui_mch_set_scrollbar_thumb __ARGS((scrollbar_T *sb, long val, long size, long max));
-extern void gui_mch_set_scrollbar_pos __ARGS((scrollbar_T *sb, int x, int y, int w, int h));
-extern void gui_mch_enable_scrollbar __ARGS((scrollbar_T *sb, int flag));
-extern void gui_mch_create_scrollbar __ARGS((scrollbar_T *sb, int orient));
-extern void gui_mch_destroy_scrollbar __ARGS((scrollbar_T *sb));
-extern void gui_mch_set_scrollbar_colors __ARGS((scrollbar_T *sb));
-extern Window gui_x11_get_wid __ARGS((void));
-extern char_u *gui_mch_browse __ARGS((int saving, char_u *title, char_u *dflt, char_u *ext, char_u *initdir, char_u *filter));
-extern int gui_mch_dialog __ARGS((int type, char_u *title, char_u *message, char_u *button_names, int dfltbutton, char_u *textfield));
-extern void gui_mch_enable_footer __ARGS((int showit));
-extern void gui_mch_set_footer __ARGS((char_u *s));
-extern void gui_mch_show_toolbar __ARGS((int showit));
-extern int gui_mch_compute_toolbar_height __ARGS((void));
-extern void motif_get_toolbar_colors __ARGS((Pixel *bgp, Pixel *fgp, Pixel *bsp, Pixel *tsp, Pixel *hsp));
-extern void gui_mch_show_tabline __ARGS((int showit));
-extern int gui_mch_showing_tabline __ARGS((void));
-extern void gui_mch_update_tabline __ARGS((void));
-extern void gui_mch_set_curtab __ARGS((int nr));
-extern void gui_motif_menu_fontlist __ARGS((Widget id));
-extern void gui_mch_find_dialog __ARGS((exarg_T *eap));
-extern void gui_mch_replace_dialog __ARGS((exarg_T *eap));
-extern void gui_motif_synch_fonts __ARGS((void));
+void gui_x11_create_widgets __ARGS((void));
+void gui_x11_destroy_widgets __ARGS((void));
+void gui_mch_set_text_area_pos __ARGS((int x, int y, int w, int h));
+void gui_x11_set_back_color __ARGS((void));
+void manage_centered __ARGS((Widget dialog_child));
+XmFontList gui_motif_create_fontlist __ARGS((XFontStruct *font));
+XmFontList gui_motif_fontset2fontlist __ARGS((XFontSet *fontset));
+void gui_mch_enable_menu __ARGS((int flag));
+void gui_motif_set_mnemonics __ARGS((int enable));
+void gui_mch_add_menu __ARGS((vimmenu_T *menu, int idx));
+void gui_mch_toggle_tearoffs __ARGS((int enable));
+int gui_mch_text_area_extra_height __ARGS((void));
+void gui_mch_compute_menu_height __ARGS((Widget id));
+void gui_mch_add_menu_item __ARGS((vimmenu_T *menu, int idx));
+void gui_motif_update_mousemodel __ARGS((vimmenu_T *menu));
+void gui_mch_new_menu_colors __ARGS((void));
+void gui_mch_new_menu_font __ARGS((void));
+void gui_mch_new_tooltip_font __ARGS((void));
+void gui_mch_new_tooltip_colors __ARGS((void));
+void gui_mch_destroy_menu __ARGS((vimmenu_T *menu));
+void gui_mch_show_popupmenu __ARGS((vimmenu_T *menu));
+void gui_mch_def_colors __ARGS((void));
+void gui_mch_set_scrollbar_thumb __ARGS((scrollbar_T *sb, long val, long size, long max));
+void gui_mch_set_scrollbar_pos __ARGS((scrollbar_T *sb, int x, int y, int w, int h));
+void gui_mch_enable_scrollbar __ARGS((scrollbar_T *sb, int flag));
+void gui_mch_create_scrollbar __ARGS((scrollbar_T *sb, int orient));
+void gui_mch_destroy_scrollbar __ARGS((scrollbar_T *sb));
+void gui_mch_set_scrollbar_colors __ARGS((scrollbar_T *sb));
+Window gui_x11_get_wid __ARGS((void));
+char_u *gui_mch_browse __ARGS((int saving, char_u *title, char_u *dflt, char_u *ext, char_u *initdir, char_u *filter));
+int gui_mch_dialog __ARGS((int type, char_u *title, char_u *message, char_u *button_names, int dfltbutton, char_u *textfield));
+void gui_mch_enable_footer __ARGS((int showit));
+void gui_mch_set_footer __ARGS((char_u *s));
+void gui_mch_show_toolbar __ARGS((int showit));
+int gui_mch_compute_toolbar_height __ARGS((void));
+void motif_get_toolbar_colors __ARGS((Pixel *bgp, Pixel *fgp, Pixel *bsp, Pixel *tsp, Pixel *hsp));
+void gui_mch_show_tabline __ARGS((int showit));
+int gui_mch_showing_tabline __ARGS((void));
+void gui_mch_update_tabline __ARGS((void));
+void gui_mch_set_curtab __ARGS((int nr));
+void gui_motif_menu_fontlist __ARGS((Widget id));
+void gui_mch_find_dialog __ARGS((exarg_T *eap));
+void gui_mch_replace_dialog __ARGS((exarg_T *eap));
+void gui_motif_synch_fonts __ARGS((void));
 /* vim: set ft=c : */
--- a/src/proto/gui_x11.pro
+++ b/src/proto/gui_x11.pro
@@ -1,70 +1,70 @@
 /* gui_x11.c */
-extern void gui_x11_key_hit_cb __ARGS((Widget w, XtPointer dud, XEvent *event, Boolean *dum));
-extern void gui_mch_prepare __ARGS((int *argc, char **argv));
-extern int gui_mch_init_check __ARGS((void));
-extern int gui_mch_init __ARGS((void));
-extern void gui_mch_uninit __ARGS((void));
-extern void gui_mch_new_colors __ARGS((void));
-extern int gui_mch_open __ARGS((void));
-extern void gui_init_tooltip_font __ARGS((void));
-extern void gui_init_menu_font __ARGS((void));
-extern void gui_mch_exit __ARGS((int rc));
-extern int gui_mch_get_winpos __ARGS((int *x, int *y));
-extern void gui_mch_set_winpos __ARGS((int x, int y));
-extern void gui_mch_set_shellsize __ARGS((int width, int height, int min_width, int min_height, int base_width, int base_height, int direction));
-extern void gui_mch_get_screen_dimensions __ARGS((int *screen_w, int *screen_h));
-extern int gui_mch_init_font __ARGS((char_u *font_name, int do_fontset));
-extern GuiFont gui_mch_get_font __ARGS((char_u *name, int giveErrorIfMissing));
-extern char_u *gui_mch_get_fontname __ARGS((GuiFont font, char_u *name));
-extern int gui_mch_adjust_charheight __ARGS((void));
-extern void gui_mch_set_font __ARGS((GuiFont font));
-extern void gui_mch_set_fontset __ARGS((GuiFontset fontset));
-extern void gui_mch_free_font __ARGS((GuiFont font));
-extern void gui_mch_free_fontset __ARGS((GuiFontset fontset));
-extern GuiFontset gui_mch_get_fontset __ARGS((char_u *name, int giveErrorIfMissing, int fixed_width));
-extern int fontset_height __ARGS((XFontSet fs));
-extern int fontset_height2 __ARGS((XFontSet fs));
-extern guicolor_T gui_mch_get_color __ARGS((char_u *reqname));
-extern void gui_mch_set_fg_color __ARGS((guicolor_T color));
-extern void gui_mch_set_bg_color __ARGS((guicolor_T color));
-extern void gui_mch_set_sp_color __ARGS((guicolor_T color));
-extern void gui_mch_draw_string __ARGS((int row, int col, char_u *s, int len, int flags));
-extern int gui_mch_haskey __ARGS((char_u *name));
-extern int gui_get_x11_windis __ARGS((Window *win, Display **dis));
-extern void gui_mch_beep __ARGS((void));
-extern void gui_mch_flash __ARGS((int msec));
-extern void gui_mch_invert_rectangle __ARGS((int r, int c, int nr, int nc));
-extern void gui_mch_iconify __ARGS((void));
-extern void gui_mch_set_foreground __ARGS((void));
-extern void gui_mch_draw_hollow_cursor __ARGS((guicolor_T color));
-extern void gui_mch_draw_part_cursor __ARGS((int w, int h, guicolor_T color));
-extern void gui_mch_update __ARGS((void));
-extern int gui_mch_wait_for_chars __ARGS((long wtime));
-extern void gui_mch_flush __ARGS((void));
-extern void gui_mch_clear_block __ARGS((int row1, int col1, int row2, int col2));
-extern void gui_mch_clear_all __ARGS((void));
-extern void gui_mch_delete_lines __ARGS((int row, int num_lines));
-extern void gui_mch_insert_lines __ARGS((int row, int num_lines));
-extern void clip_mch_lose_selection __ARGS((VimClipboard *cbd));
-extern int clip_mch_own_selection __ARGS((VimClipboard *cbd));
-extern void clip_mch_request_selection __ARGS((VimClipboard *cbd));
-extern void clip_mch_set_selection __ARGS((VimClipboard *cbd));
-extern void gui_mch_menu_grey __ARGS((vimmenu_T *menu, int grey));
-extern void gui_mch_menu_hidden __ARGS((vimmenu_T *menu, int hidden));
-extern void gui_mch_draw_menubar __ARGS((void));
-extern void gui_x11_menu_cb __ARGS((Widget w, XtPointer client_data, XtPointer call_data));
-extern void gui_mch_set_blinking __ARGS((long waittime, long on, long off));
-extern void gui_mch_stop_blink __ARGS((void));
-extern void gui_mch_start_blink __ARGS((void));
-extern long_u gui_mch_get_rgb __ARGS((guicolor_T pixel));
-extern void gui_x11_callbacks __ARGS((Widget textArea, Widget vimForm));
-extern void gui_mch_getmouse __ARGS((int *x, int *y));
-extern void gui_mch_setmouse __ARGS((int x, int y));
-extern XButtonPressedEvent *gui_x11_get_last_mouse_event __ARGS((void));
-extern void gui_mch_drawsign __ARGS((int row, int col, int typenr));
-extern void *gui_mch_register_sign __ARGS((char_u *signfile));
-extern void gui_mch_destroy_sign __ARGS((void *sign));
-extern void gui_mch_mousehide __ARGS((int hide));
-extern void mch_set_mouse_shape __ARGS((int shape));
-extern void gui_mch_menu_set_tip __ARGS((vimmenu_T *menu));
+void gui_x11_key_hit_cb __ARGS((Widget w, XtPointer dud, XEvent *event, Boolean *dum));
+void gui_mch_prepare __ARGS((int *argc, char **argv));
+int gui_mch_init_check __ARGS((void));
+int gui_mch_init __ARGS((void));
+void gui_mch_uninit __ARGS((void));
+void gui_mch_new_colors __ARGS((void));
+int gui_mch_open __ARGS((void));
+void gui_init_tooltip_font __ARGS((void));
+void gui_init_menu_font __ARGS((void));
+void gui_mch_exit __ARGS((int rc));
+int gui_mch_get_winpos __ARGS((int *x, int *y));
+void gui_mch_set_winpos __ARGS((int x, int y));
+void gui_mch_set_shellsize __ARGS((int width, int height, int min_width, int min_height, int base_width, int base_height, int direction));
+void gui_mch_get_screen_dimensions __ARGS((int *screen_w, int *screen_h));
+int gui_mch_init_font __ARGS((char_u *font_name, int do_fontset));
+GuiFont gui_mch_get_font __ARGS((char_u *name, int giveErrorIfMissing));
+char_u *gui_mch_get_fontname __ARGS((GuiFont font, char_u *name));
+int gui_mch_adjust_charheight __ARGS((void));
+void gui_mch_set_font __ARGS((GuiFont font));
+void gui_mch_set_fontset __ARGS((GuiFontset fontset));
+void gui_mch_free_font __ARGS((GuiFont font));
+void gui_mch_free_fontset __ARGS((GuiFontset fontset));
+GuiFontset gui_mch_get_fontset __ARGS((char_u *name, int giveErrorIfMissing, int fixed_width));
+int fontset_height __ARGS((XFontSet fs));
+int fontset_height2 __ARGS((XFontSet fs));
+guicolor_T gui_mch_get_color __ARGS((char_u *reqname));
+void gui_mch_set_fg_color __ARGS((guicolor_T color));
+void gui_mch_set_bg_color __ARGS((guicolor_T color));
+void gui_mch_set_sp_color __ARGS((guicolor_T color));
+void gui_mch_draw_string __ARGS((int row, int col, char_u *s, int len, int flags));
+int gui_mch_haskey __ARGS((char_u *name));
+int gui_get_x11_windis __ARGS((Window *win, Display **dis));
+void gui_mch_beep __ARGS((void));
+void gui_mch_flash __ARGS((int msec));
+void gui_mch_invert_rectangle __ARGS((int r, int c, int nr, int nc));
+void gui_mch_iconify __ARGS((void));
+void gui_mch_set_foreground __ARGS((void));
+void gui_mch_draw_hollow_cursor __ARGS((guicolor_T color));
+void gui_mch_draw_part_cursor __ARGS((int w, int h, guicolor_T color));
+void gui_mch_update __ARGS((void));
+int gui_mch_wait_for_chars __ARGS((long wtime));
+void gui_mch_flush __ARGS((void));
+void gui_mch_clear_block __ARGS((int row1, int col1, int row2, int col2));
+void gui_mch_clear_all __ARGS((void));
+void gui_mch_delete_lines __ARGS((int row, int num_lines));
+void gui_mch_insert_lines __ARGS((int row, int num_lines));
+void clip_mch_lose_selection __ARGS((VimClipboard *cbd));
+int clip_mch_own_selection __ARGS((VimClipboard *cbd));
+void clip_mch_request_selection __ARGS((VimClipboard *cbd));
+void clip_mch_set_selection __ARGS((VimClipboard *cbd));
+void gui_mch_menu_grey __ARGS((vimmenu_T *menu, int grey));
+void gui_mch_menu_hidden __ARGS((vimmenu_T *menu, int hidden));
+void gui_mch_draw_menubar __ARGS((void));
+void gui_x11_menu_cb __ARGS((Widget w, XtPointer client_data, XtPointer call_data));
+void gui_mch_set_blinking __ARGS((long waittime, long on, long off));
+void gui_mch_stop_blink __ARGS((void));
+void gui_mch_start_blink __ARGS((void));
+long_u gui_mch_get_rgb __ARGS((guicolor_T pixel));
+void gui_x11_callbacks __ARGS((Widget textArea, Widget vimForm));
+void gui_mch_getmouse __ARGS((int *x, int *y));
+void gui_mch_setmouse __ARGS((int x, int y));
+XButtonPressedEvent *gui_x11_get_last_mouse_event __ARGS((void));
+void gui_mch_drawsign __ARGS((int row, int col, int typenr));
+void *gui_mch_register_sign __ARGS((char_u *signfile));
+void gui_mch_destroy_sign __ARGS((void *sign));
+void gui_mch_mousehide __ARGS((int hide));
+void mch_set_mouse_shape __ARGS((int shape));
+void gui_mch_menu_set_tip __ARGS((vimmenu_T *menu));
 /* vim: set ft=c : */
--- a/src/proto/hangulin.pro
+++ b/src/proto/hangulin.pro
@@ -1,9 +1,9 @@
 /* hangulin.c */
-extern int hangul_input_state_get __ARGS((void));
-extern void hangul_input_state_set __ARGS((int state));
-extern int im_get_status __ARGS((void));
-extern void hangul_input_state_toggle __ARGS((void));
-extern void hangul_keyboard_set __ARGS((void));
-extern int hangul_input_process __ARGS((char_u *s, int len));
-extern void hangul_input_clear __ARGS((void));
+int hangul_input_state_get __ARGS((void));
+void hangul_input_state_set __ARGS((int state));
+int im_get_status __ARGS((void));
+void hangul_input_state_toggle __ARGS((void));
+void hangul_keyboard_set __ARGS((void));
+int hangul_input_process __ARGS((char_u *s, int len));
+void hangul_input_clear __ARGS((void));
 /* vim: set ft=c : */
--- a/src/proto/if_perl.pro
+++ b/src/proto/if_perl.pro
@@ -1,8 +1,8 @@
 /* auto/if_perl.c */
-extern int perl_enabled __ARGS((int verbose));
-extern void perl_end __ARGS((void));
-extern void msg_split __ARGS((char_u *s, int attr));
-extern void perl_win_free __ARGS((win_T *wp));
-extern void perl_buf_free __ARGS((buf_T *bp));
-extern void ex_perl __ARGS((exarg_T *eap));
-extern void ex_perldo __ARGS((exarg_T *eap));
+int perl_enabled __ARGS((int verbose));
+void perl_end __ARGS((void));
+void msg_split __ARGS((char_u *s, int attr));
+void perl_win_free __ARGS((win_T *wp));
+void perl_buf_free __ARGS((buf_T *bp));
+void ex_perl __ARGS((exarg_T *eap));
+void ex_perldo __ARGS((exarg_T *eap));
--- a/src/proto/if_python.pro
+++ b/src/proto/if_python.pro
@@ -1,8 +1,8 @@
 /* if_python.c */
-extern int python_enabled __ARGS((int verbose));
-extern void python_end __ARGS((void));
-extern void ex_python __ARGS((exarg_T *eap));
-extern void ex_pyfile __ARGS((exarg_T *eap));
-extern void python_buffer_free __ARGS((buf_T *buf));
-extern void python_window_free __ARGS((win_T *win));
+int python_enabled __ARGS((int verbose));
+void python_end __ARGS((void));
+void ex_python __ARGS((exarg_T *eap));
+void ex_pyfile __ARGS((exarg_T *eap));
+void python_buffer_free __ARGS((buf_T *buf));
+void python_window_free __ARGS((win_T *win));
 /* vim: set ft=c : */
--- a/src/proto/if_ruby.pro
+++ b/src/proto/if_ruby.pro
@@ -1,9 +1,9 @@
 /* if_ruby.c */
-extern int ruby_enabled __ARGS((int verbose));
-extern void ruby_end __ARGS((void));
-extern void ex_ruby __ARGS((exarg_T *eap));
-extern void ex_rubydo __ARGS((exarg_T *eap));
-extern void ex_rubyfile __ARGS((exarg_T *eap));
-extern void ruby_buffer_free __ARGS((buf_T *buf));
-extern void ruby_window_free __ARGS((win_T *win));
+int ruby_enabled __ARGS((int verbose));
+void ruby_end __ARGS((void));
+void ex_ruby __ARGS((exarg_T *eap));
+void ex_rubydo __ARGS((exarg_T *eap));
+void ex_rubyfile __ARGS((exarg_T *eap));
+void ruby_buffer_free __ARGS((buf_T *buf));
+void ruby_window_free __ARGS((win_T *win));
 /* vim: set ft=c : */
--- a/src/proto/if_xcmdsrv.pro
+++ b/src/proto/if_xcmdsrv.pro
@@ -1,11 +1,11 @@
 /* if_xcmdsrv.c */
-extern int serverRegisterName __ARGS((Display *dpy, char_u *name));
-extern void serverChangeRegisteredWindow __ARGS((Display *dpy, Window newwin));
-extern int serverSendToVim __ARGS((Display *dpy, char_u *name, char_u *cmd, char_u **result, Window *server, int asExpr, int localLoop, int silent));
-extern char_u *serverGetVimNames __ARGS((Display *dpy));
-extern Window serverStrToWin __ARGS((char_u *str));
-extern int serverSendReply __ARGS((char_u *name, char_u *str));
-extern int serverReadReply __ARGS((Display *dpy, Window win, char_u **str, int localLoop));
-extern int serverPeekReply __ARGS((Display *dpy, Window win, char_u **str));
-extern void serverEventProc __ARGS((Display *dpy, XEvent *eventPtr));
+int serverRegisterName __ARGS((Display *dpy, char_u *name));
+void serverChangeRegisteredWindow __ARGS((Display *dpy, Window newwin));
+int serverSendToVim __ARGS((Display *dpy, char_u *name, char_u *cmd, char_u **result, Window *server, int asExpr, int localLoop, int silent));
+char_u *serverGetVimNames __ARGS((Display *dpy));
+Window serverStrToWin __ARGS((char_u *str));
+int serverSendReply __ARGS((char_u *name, char_u *str));
+int serverReadReply __ARGS((Display *dpy, Window win, char_u **str, int localLoop));
+int serverPeekReply __ARGS((Display *dpy, Window win, char_u **str));
+void serverEventProc __ARGS((Display *dpy, XEvent *eventPtr));
 /* vim: set ft=c : */
--- a/src/proto/mbyte.pro
+++ b/src/proto/mbyte.pro
@@ -1,91 +1,91 @@
 /* mbyte.c */
-extern int enc_canon_props __ARGS((char_u *name));
-extern char_u *mb_init __ARGS((void));
-extern int bomb_size __ARGS((void));
-extern int mb_get_class __ARGS((char_u *p));
-extern int dbcs_class __ARGS((unsigned lead, unsigned trail));
-extern int latin_char2len __ARGS((int c));
-extern int latin_char2bytes __ARGS((int c, char_u *buf));
-extern int latin_ptr2len __ARGS((char_u *p));
-extern int utf_char2cells __ARGS((int c));
-extern int latin_ptr2cells __ARGS((char_u *p));
-extern int utf_ptr2cells __ARGS((char_u *p));
-extern int dbcs_ptr2cells __ARGS((char_u *p));
-extern int latin_char2cells __ARGS((int c));
-extern int latin_off2cells __ARGS((unsigned off));
-extern int dbcs_off2cells __ARGS((unsigned off));
-extern int utf_off2cells __ARGS((unsigned off));
-extern int latin_ptr2char __ARGS((char_u *p));
-extern int utf_ptr2char __ARGS((char_u *p));
-extern int mb_ptr2char_adv __ARGS((char_u **pp));
-extern int mb_cptr2char_adv __ARGS((char_u **pp));
-extern int arabic_combine __ARGS((int one, int two));
-extern int arabic_maycombine __ARGS((int two));
-extern int utf_composinglike __ARGS((char_u *p1, char_u *p2));
-extern int utfc_ptr2char __ARGS((char_u *p, int *pcc));
-extern int utfc_ptr2char_len __ARGS((char_u *p, int *pcc, int maxlen));
-extern int utfc_char2bytes __ARGS((int off, char_u *buf));
-extern int utf_ptr2len __ARGS((char_u *p));
-extern int utf_byte2len __ARGS((int b));
-extern int utf_ptr2len_len __ARGS((char_u *p, int size));
-extern int utfc_ptr2len __ARGS((char_u *p));
-extern int utfc_ptr2len_len __ARGS((char_u *p, int size));
-extern int utf_char2len __ARGS((int c));
-extern int utf_char2bytes __ARGS((int c, char_u *buf));
-extern int utf_iscomposing __ARGS((int c));
-extern int utf_printable __ARGS((int c));
-extern int utf_class __ARGS((int c));
-extern int utf_fold __ARGS((int a));
-extern int utf_toupper __ARGS((int a));
-extern int utf_islower __ARGS((int a));
-extern int utf_tolower __ARGS((int a));
-extern int utf_isupper __ARGS((int a));
-extern int mb_strnicmp __ARGS((char_u *s1, char_u *s2, size_t nn));
-extern void show_utf8 __ARGS((void));
-extern int latin_head_off __ARGS((char_u *base, char_u *p));
-extern int dbcs_head_off __ARGS((char_u *base, char_u *p));
-extern int dbcs_screen_head_off __ARGS((char_u *base, char_u *p));
-extern int utf_head_off __ARGS((char_u *base, char_u *p));
-extern void mb_copy_char __ARGS((char_u **fp, char_u **tp));
-extern int mb_off_next __ARGS((char_u *base, char_u *p));
-extern int mb_tail_off __ARGS((char_u *base, char_u *p));
-extern void utf_find_illegal __ARGS((void));
-extern int utf_valid_string __ARGS((char_u *s, char_u *end));
-extern int dbcs_screen_tail_off __ARGS((char_u *base, char_u *p));
-extern void mb_adjust_cursor __ARGS((void));
-extern void mb_adjustpos __ARGS((pos_T *lp));
-extern char_u *mb_prevptr __ARGS((char_u *line, char_u *p));
-extern int mb_charlen __ARGS((char_u *str));
-extern int mb_charlen_len __ARGS((char_u *str, int len));
-extern char_u *mb_unescape __ARGS((char_u **pp));
-extern int mb_lefthalve __ARGS((int row, int col));
-extern int mb_fix_col __ARGS((int col, int row));
-extern char_u *enc_skip __ARGS((char_u *p));
-extern char_u *enc_canonize __ARGS((char_u *enc));
-extern char_u *enc_locale __ARGS((void));
-extern int encname2codepage __ARGS((char_u *name));
-extern void *my_iconv_open __ARGS((char_u *to, char_u *from));
-extern int iconv_enabled __ARGS((int verbose));
-extern void iconv_end __ARGS((void));
-extern int im_xim_isvalid_imactivate __ARGS((void));
-extern void im_set_active __ARGS((int active));
-extern void xim_set_focus __ARGS((int focus));
-extern void im_set_position __ARGS((int row, int col));
-extern void xim_set_preedit __ARGS((void));
-extern void xim_set_status_area __ARGS((void));
-extern void xim_init __ARGS((void));
-extern void xim_decide_input_style __ARGS((void));
-extern int im_get_feedback_attr __ARGS((int col));
-extern void xim_reset __ARGS((void));
-extern int xim_queue_key_press_event __ARGS((GdkEventKey *event, int down));
-extern void xim_init __ARGS((void));
-extern void im_shutdown __ARGS((void));
-extern int xim_get_status_area_height __ARGS((void));
-extern int im_get_status __ARGS((void));
-extern int im_is_preediting __ARGS((void));
-extern int convert_setup __ARGS((vimconv_T *vcp, char_u *from, char_u *to));
-extern int convert_input __ARGS((char_u *ptr, int len, int maxlen));
-extern int convert_input_safe __ARGS((char_u *ptr, int len, int maxlen, char_u **restp, int *restlenp));
-extern char_u *string_convert __ARGS((vimconv_T *vcp, char_u *ptr, int *lenp));
-extern char_u *string_convert_ext __ARGS((vimconv_T *vcp, char_u *ptr, int *lenp, int *unconvlenp));
+int enc_canon_props __ARGS((char_u *name));
+char_u *mb_init __ARGS((void));
+int bomb_size __ARGS((void));
+int mb_get_class __ARGS((char_u *p));
+int dbcs_class __ARGS((unsigned lead, unsigned trail));
+int latin_char2len __ARGS((int c));
+int latin_char2bytes __ARGS((int c, char_u *buf));
+int latin_ptr2len __ARGS((char_u *p));
+int utf_char2cells __ARGS((int c));
+int latin_ptr2cells __ARGS((char_u *p));
+int utf_ptr2cells __ARGS((char_u *p));
+int dbcs_ptr2cells __ARGS((char_u *p));
+int latin_char2cells __ARGS((int c));
+int latin_off2cells __ARGS((unsigned off));
+int dbcs_off2cells __ARGS((unsigned off));
+int utf_off2cells __ARGS((unsigned off));
+int latin_ptr2char __ARGS((char_u *p));
+int utf_ptr2char __ARGS((char_u *p));
+int mb_ptr2char_adv __ARGS((char_u **pp));
+int mb_cptr2char_adv __ARGS((char_u **pp));
+int arabic_combine __ARGS((int one, int two));
+int arabic_maycombine __ARGS((int two));
+int utf_composinglike __ARGS((char_u *p1, char_u *p2));
+int utfc_ptr2char __ARGS((char_u *p, int *pcc));
+int utfc_ptr2char_len __ARGS((char_u *p, int *pcc, int maxlen));
+int utfc_char2bytes __ARGS((int off, char_u *buf));
+int utf_ptr2len __ARGS((char_u *p));
+int utf_byte2len __ARGS((int b));
+int utf_ptr2len_len __ARGS((char_u *p, int size));
+int utfc_ptr2len __ARGS((char_u *p));
+int utfc_ptr2len_len __ARGS((char_u *p, int size));
+int utf_char2len __ARGS((int c));
+int utf_char2bytes __ARGS((int c, char_u *buf));
+int utf_iscomposing __ARGS((int c));
+int utf_printable __ARGS((int c));
+int utf_class __ARGS((int c));
+int utf_fold __ARGS((int a));
+int utf_toupper __ARGS((int a));
+int utf_islower __ARGS((int a));
+int utf_tolower __ARGS((int a));
+int utf_isupper __ARGS((int a));
+int mb_strnicmp __ARGS((char_u *s1, char_u *s2, size_t nn));
+void show_utf8 __ARGS((void));
+int latin_head_off __ARGS((char_u *base, char_u *p));
+int dbcs_head_off __ARGS((char_u *base, char_u *p));
+int dbcs_screen_head_off __ARGS((char_u *base, char_u *p));
+int utf_head_off __ARGS((char_u *base, char_u *p));
+void mb_copy_char __ARGS((char_u **fp, char_u **tp));
+int mb_off_next __ARGS((char_u *base, char_u *p));
+int mb_tail_off __ARGS((char_u *base, char_u *p));
+void utf_find_illegal __ARGS((void));
+int utf_valid_string __ARGS((char_u *s, char_u *end));
+int dbcs_screen_tail_off __ARGS((char_u *base, char_u *p));
+void mb_adjust_cursor __ARGS((void));
+void mb_adjustpos __ARGS((pos_T *lp));
+char_u *mb_prevptr __ARGS((char_u *line, char_u *p));
+int mb_charlen __ARGS((char_u *str));
+int mb_charlen_len __ARGS((char_u *str, int len));
+char_u *mb_unescape __ARGS((char_u **pp));
+int mb_lefthalve __ARGS((int row, int col));
+int mb_fix_col __ARGS((int col, int row));
+char_u *enc_skip __ARGS((char_u *p));
+char_u *enc_canonize __ARGS((char_u *enc));
+char_u *enc_locale __ARGS((void));
+int encname2codepage __ARGS((char_u *name));
+void *my_iconv_open __ARGS((char_u *to, char_u *from));
+int iconv_enabled __ARGS((int verbose));
+void iconv_end __ARGS((void));
+int im_xim_isvalid_imactivate __ARGS((void));
+void im_set_active __ARGS((int active));
+void xim_set_focus __ARGS((int focus));
+void im_set_position __ARGS((int row, int col));
+void xim_set_preedit __ARGS((void));
+void xim_set_status_area __ARGS((void));
+void xim_init __ARGS((void));
+void xim_decide_input_style __ARGS((void));
+int im_get_feedback_attr __ARGS((int col));
+void xim_reset __ARGS((void));
+int xim_queue_key_press_event __ARGS((GdkEventKey *event, int down));
+void xim_init __ARGS((void));
+void im_shutdown __ARGS((void));
+int xim_get_status_area_height __ARGS((void));
+int im_get_status __ARGS((void));
+int im_is_preediting __ARGS((void));
+int convert_setup __ARGS((vimconv_T *vcp, char_u *from, char_u *to));
+int convert_input __ARGS((char_u *ptr, int len, int maxlen));
+int convert_input_safe __ARGS((char_u *ptr, int len, int maxlen, char_u **restp, int *restlenp));
+char_u *string_convert __ARGS((vimconv_T *vcp, char_u *ptr, int *lenp));
+char_u *string_convert_ext __ARGS((vimconv_T *vcp, char_u *ptr, int *lenp, int *unconvlenp));
 /* vim: set ft=c : */
--- a/src/proto/memline.pro
+++ b/src/proto/memline.pro
@@ -1,33 +1,33 @@
 /* memline.c */
-extern int ml_open __ARGS((buf_T *buf));
-extern void ml_setname __ARGS((buf_T *buf));
-extern void ml_open_files __ARGS((void));
-extern void ml_open_file __ARGS((buf_T *buf));
-extern void check_need_swap __ARGS((int newfile));
-extern void ml_close __ARGS((buf_T *buf, int del_file));
-extern void ml_close_all __ARGS((int del_file));
-extern void ml_close_notmod __ARGS((void));
-extern void ml_timestamp __ARGS((buf_T *buf));
-extern void ml_recover __ARGS((void));
-extern int recover_names __ARGS((char_u **fname, int list, int nr));
-extern void ml_sync_all __ARGS((int check_file, int check_char));
-extern void ml_preserve __ARGS((buf_T *buf, int message));
-extern char_u *ml_get __ARGS((linenr_T lnum));
-extern char_u *ml_get_pos __ARGS((pos_T *pos));
-extern char_u *ml_get_curline __ARGS((void));
-extern char_u *ml_get_cursor __ARGS((void));
-extern char_u *ml_get_buf __ARGS((buf_T *buf, linenr_T lnum, int will_change));
-extern int ml_line_alloced __ARGS((void));
-extern int ml_append __ARGS((linenr_T lnum, char_u *line, colnr_T len, int newfile));
-extern int ml_append_buf __ARGS((buf_T *buf, linenr_T lnum, char_u *line, colnr_T len, int newfile));
-extern int ml_replace __ARGS((linenr_T lnum, char_u *line, int copy));
-extern int ml_delete __ARGS((linenr_T lnum, int message));
-extern void ml_setmarked __ARGS((linenr_T lnum));
-extern linenr_T ml_firstmarked __ARGS((void));
-extern void ml_clearmarked __ARGS((void));
-extern char_u *makeswapname __ARGS((char_u *fname, char_u *ffname, buf_T *buf, char_u *dir_name));
-extern char_u *get_file_in_dir __ARGS((char_u *fname, char_u *dname));
-extern void ml_setflags __ARGS((buf_T *buf));
-extern long ml_find_line_or_offset __ARGS((buf_T *buf, linenr_T lnum, long *offp));
-extern void goto_byte __ARGS((long cnt));
+int ml_open __ARGS((buf_T *buf));
+void ml_setname __ARGS((buf_T *buf));
+void ml_open_files __ARGS((void));
+void ml_open_file __ARGS((buf_T *buf));
+void check_need_swap __ARGS((int newfile));
+void ml_close __ARGS((buf_T *buf, int del_file));
+void ml_close_all __ARGS((int del_file));
+void ml_close_notmod __ARGS((void));
+void ml_timestamp __ARGS((buf_T *buf));
+void ml_recover __ARGS((void));
+int recover_names __ARGS((char_u **fname, int list, int nr));
+void ml_sync_all __ARGS((int check_file, int check_char));
+void ml_preserve __ARGS((buf_T *buf, int message));
+char_u *ml_get __ARGS((linenr_T lnum));
+char_u *ml_get_pos __ARGS((pos_T *pos));
+char_u *ml_get_curline __ARGS((void));
+char_u *ml_get_cursor __ARGS((void));
+char_u *ml_get_buf __ARGS((buf_T *buf, linenr_T lnum, int will_change));
+int ml_line_alloced __ARGS((void));
+int ml_append __ARGS((linenr_T lnum, char_u *line, colnr_T len, int newfile));
+int ml_append_buf __ARGS((buf_T *buf, linenr_T lnum, char_u *line, colnr_T len, int newfile));
+int ml_replace __ARGS((linenr_T lnum, char_u *line, int copy));
+int ml_delete __ARGS((linenr_T lnum, int message));
+void ml_setmarked __ARGS((linenr_T lnum));
+linenr_T ml_firstmarked __ARGS((void));
+void ml_clearmarked __ARGS((void));
+char_u *makeswapname __ARGS((char_u *fname, char_u *ffname, buf_T *buf, char_u *dir_name));
+char_u *get_file_in_dir __ARGS((char_u *fname, char_u *dname));
+void ml_setflags __ARGS((buf_T *buf));
+long ml_find_line_or_offset __ARGS((buf_T *buf, linenr_T lnum, long *offp));
+void goto_byte __ARGS((long cnt));
 /* vim: set ft=c : */
--- a/src/proto/misc1.pro
+++ b/src/proto/misc1.pro
@@ -1,95 +1,95 @@
 /* misc1.c */
-extern int get_indent __ARGS((void));
-extern int get_indent_lnum __ARGS((linenr_T lnum));
-extern int get_indent_buf __ARGS((buf_T *buf, linenr_T lnum));
-extern int get_indent_str __ARGS((char_u *ptr, int ts));
-extern int set_indent __ARGS((int size, int flags));
-extern int get_number_indent __ARGS((linenr_T lnum));
-extern int open_line __ARGS((int dir, int flags, int old_indent));
-extern int get_leader_len __ARGS((char_u *line, char_u **flags, int backward));
-extern int plines __ARGS((linenr_T lnum));
-extern int plines_win __ARGS((win_T *wp, linenr_T lnum, int winheight));
-extern int plines_nofill __ARGS((linenr_T lnum));
-extern int plines_win_nofill __ARGS((win_T *wp, linenr_T lnum, int winheight));
-extern int plines_win_nofold __ARGS((win_T *wp, linenr_T lnum));
-extern int plines_win_col __ARGS((win_T *wp, linenr_T lnum, long column));
-extern int plines_m_win __ARGS((win_T *wp, linenr_T first, linenr_T last));
-extern void ins_bytes __ARGS((char_u *p));
-extern void ins_bytes_len __ARGS((char_u *p, int len));
-extern void ins_char __ARGS((int c));
-extern void ins_char_bytes __ARGS((char_u *buf, int charlen));
-extern void ins_str __ARGS((char_u *s));
-extern int del_char __ARGS((int fixpos));
-extern int del_chars __ARGS((long count, int fixpos));
-extern int del_bytes __ARGS((long count, int fixpos_arg, int use_delcombine));
-extern int truncate_line __ARGS((int fixpos));
-extern void del_lines __ARGS((long nlines, int undo));
-extern int gchar_pos __ARGS((pos_T *pos));
-extern int gchar_cursor __ARGS((void));
-extern void pchar_cursor __ARGS((int c));
-extern int inindent __ARGS((int extra));
-extern char_u *skip_to_option_part __ARGS((char_u *p));
-extern void changed __ARGS((void));
-extern void changed_bytes __ARGS((linenr_T lnum, colnr_T col));
-extern void appended_lines __ARGS((linenr_T lnum, long count));
-extern void appended_lines_mark __ARGS((linenr_T lnum, long count));
-extern void deleted_lines __ARGS((linenr_T lnum, long count));
-extern void deleted_lines_mark __ARGS((linenr_T lnum, long count));
-extern void changed_lines __ARGS((linenr_T lnum, colnr_T col, linenr_T lnume, long xtra));
-extern void unchanged __ARGS((buf_T *buf, int ff));
-extern void check_status __ARGS((buf_T *buf));
-extern void change_warning __ARGS((int col));
-extern int ask_yesno __ARGS((char_u *str, int direct));
-extern int get_keystroke __ARGS((void));
-extern int get_number __ARGS((int colon, int *mouse_used));
-extern int prompt_for_number __ARGS((int *mouse_used));
-extern void msgmore __ARGS((long n));
-extern void beep_flush __ARGS((void));
-extern void vim_beep __ARGS((void));
-extern void init_homedir __ARGS((void));
-extern void free_homedir __ARGS((void));
-extern void expand_env __ARGS((char_u *src, char_u *dst, int dstlen));
-extern void expand_env_esc __ARGS((char_u *srcp, char_u *dst, int dstlen, int esc, char_u *startstr));
-extern char_u *vim_getenv __ARGS((char_u *name, int *mustfree));
-extern char_u *expand_env_save __ARGS((char_u *src));
-extern void vim_setenv __ARGS((char_u *name, char_u *val));
-extern char_u *get_env_name __ARGS((expand_T *xp, int idx));
-extern void home_replace __ARGS((buf_T *buf, char_u *src, char_u *dst, int dstlen, int one));
-extern char_u *home_replace_save __ARGS((buf_T *buf, char_u *src));
-extern int fullpathcmp __ARGS((char_u *s1, char_u *s2, int checkname));
-extern char_u *gettail __ARGS((char_u *fname));
-extern char_u *gettail_sep __ARGS((char_u *fname));
-extern char_u *getnextcomp __ARGS((char_u *fname));
-extern char_u *get_past_head __ARGS((char_u *path));
-extern int vim_ispathsep __ARGS((int c));
-extern int vim_ispathlistsep __ARGS((int c));
-extern void shorten_dir __ARGS((char_u *str));
-extern int dir_of_file_exists __ARGS((char_u *fname));
-extern int vim_fnamecmp __ARGS((char_u *x, char_u *y));
-extern int vim_fnamencmp __ARGS((char_u *x, char_u *y, size_t len));
-extern char_u *concat_fnames __ARGS((char_u *fname1, char_u *fname2, int sep));
-extern char_u *concat_str __ARGS((char_u *str1, char_u *str2));
-extern void add_pathsep __ARGS((char_u *p));
-extern char_u *FullName_save __ARGS((char_u *fname, int force));
-extern pos_T *find_start_comment __ARGS((int ind_maxcomment));
-extern void do_c_expr_indent __ARGS((void));
-extern int cin_islabel __ARGS((int ind_maxcomment));
-extern int cin_iscase __ARGS((char_u *s));
-extern int cin_isscopedecl __ARGS((char_u *s));
-extern int get_c_indent __ARGS((void));
-extern int get_expr_indent __ARGS((void));
-extern int get_lisp_indent __ARGS((void));
-extern void prepare_to_exit __ARGS((void));
-extern void preserve_exit __ARGS((void));
-extern int vim_fexists __ARGS((char_u *fname));
-extern void line_breakcheck __ARGS((void));
-extern void fast_breakcheck __ARGS((void));
-extern int expand_wildcards __ARGS((int num_pat, char_u **pat, int *num_file, char_u ***file, int flags));
-extern int match_suffix __ARGS((char_u *fname));
-extern int unix_expandpath __ARGS((garray_T *gap, char_u *path, int wildoff, int flags, int didstar));
-extern int gen_expand_wildcards __ARGS((int num_pat, char_u **pat, int *num_file, char_u ***file, int flags));
-extern void addfile __ARGS((garray_T *gap, char_u *f, int flags));
-extern char_u *get_cmd_output __ARGS((char_u *cmd, char_u *infile, int flags));
-extern void FreeWild __ARGS((int count, char_u **files));
-extern int goto_im __ARGS((void));
+int get_indent __ARGS((void));
+int get_indent_lnum __ARGS((linenr_T lnum));
+int get_indent_buf __ARGS((buf_T *buf, linenr_T lnum));
+int get_indent_str __ARGS((char_u *ptr, int ts));
+int set_indent __ARGS((int size, int flags));
+int get_number_indent __ARGS((linenr_T lnum));
+int open_line __ARGS((int dir, int flags, int old_indent));
+int get_leader_len __ARGS((char_u *line, char_u **flags, int backward));
+int plines __ARGS((linenr_T lnum));
+int plines_win __ARGS((win_T *wp, linenr_T lnum, int winheight));
+int plines_nofill __ARGS((linenr_T lnum));
+int plines_win_nofill __ARGS((win_T *wp, linenr_T lnum, int winheight));
+int plines_win_nofold __ARGS((win_T *wp, linenr_T lnum));
+int plines_win_col __ARGS((win_T *wp, linenr_T lnum, long column));
+int plines_m_win __ARGS((win_T *wp, linenr_T first, linenr_T last));
+void ins_bytes __ARGS((char_u *p));
+void ins_bytes_len __ARGS((char_u *p, int len));
+void ins_char __ARGS((int c));
+void ins_char_bytes __ARGS((char_u *buf, int charlen));
+void ins_str __ARGS((char_u *s));
+int del_char __ARGS((int fixpos));
+int del_chars __ARGS((long count, int fixpos));
+int del_bytes __ARGS((long count, int fixpos_arg, int use_delcombine));
+int truncate_line __ARGS((int fixpos));
+void del_lines __ARGS((long nlines, int undo));
+int gchar_pos __ARGS((pos_T *pos));
+int gchar_cursor __ARGS((void));
+void pchar_cursor __ARGS((int c));
+int inindent __ARGS((int extra));
+char_u *skip_to_option_part __ARGS((char_u *p));
+void changed __ARGS((void));
+void changed_bytes __ARGS((linenr_T lnum, colnr_T col));
+void appended_lines __ARGS((linenr_T lnum, long count));
+void appended_lines_mark __ARGS((linenr_T lnum, long count));
+void deleted_lines __ARGS((linenr_T lnum, long count));
+void deleted_lines_mark __ARGS((linenr_T lnum, long count));
+void changed_lines __ARGS((linenr_T lnum, colnr_T col, linenr_T lnume, long xtra));
+void unchanged __ARGS((buf_T *buf, int ff));
+void check_status __ARGS((buf_T *buf));
+void change_warning __ARGS((int col));
+int ask_yesno __ARGS((char_u *str, int direct));
+int get_keystroke __ARGS((void));
+int get_number __ARGS((int colon, int *mouse_used));
+int prompt_for_number __ARGS((int *mouse_used));
+void msgmore __ARGS((long n));
+void beep_flush __ARGS((void));
+void vim_beep __ARGS((void));
+void init_homedir __ARGS((void));
+void free_homedir __ARGS((void));
+void expand_env __ARGS((char_u *src, char_u *dst, int dstlen));
+void expand_env_esc __ARGS((char_u *srcp, char_u *dst, int dstlen, int esc, char_u *startstr));
+char_u *vim_getenv __ARGS((char_u *name, int *mustfree));
+char_u *expand_env_save __ARGS((char_u *src));
+void vim_setenv __ARGS((char_u *name, char_u *val));
+char_u *get_env_name __ARGS((expand_T *xp, int idx));
+void home_replace __ARGS((buf_T *buf, char_u *src, char_u *dst, int dstlen, int one));
+char_u *home_replace_save __ARGS((buf_T *buf, char_u *src));
+int fullpathcmp __ARGS((char_u *s1, char_u *s2, int checkname));
+char_u *gettail __ARGS((char_u *fname));
+char_u *gettail_sep __ARGS((char_u *fname));
+char_u *getnextcomp __ARGS((char_u *fname));
+char_u *get_past_head __ARGS((char_u *path));
+int vim_ispathsep __ARGS((int c));
+int vim_ispathlistsep __ARGS((int c));
+void shorten_dir __ARGS((char_u *str));
+int dir_of_file_exists __ARGS((char_u *fname));
+int vim_fnamecmp __ARGS((char_u *x, char_u *y));
+int vim_fnamencmp __ARGS((char_u *x, char_u *y, size_t len));
+char_u *concat_fnames __ARGS((char_u *fname1, char_u *fname2, int sep));
+char_u *concat_str __ARGS((char_u *str1, char_u *str2));
+void add_pathsep __ARGS((char_u *p));
+char_u *FullName_save __ARGS((char_u *fname, int force));
+pos_T *find_start_comment __ARGS((int ind_maxcomment));
+void do_c_expr_indent __ARGS((void));
+int cin_islabel __ARGS((int ind_maxcomment));
+int cin_iscase __ARGS((char_u *s));
+int cin_isscopedecl __ARGS((char_u *s));
+int get_c_indent __ARGS((void));
+int get_expr_indent __ARGS((void));
+int get_lisp_indent __ARGS((void));
+void prepare_to_exit __ARGS((void));
+void preserve_exit __ARGS((void));
+int vim_fexists __ARGS((char_u *fname));
+void line_breakcheck __ARGS((void));
+void fast_breakcheck __ARGS((void));
+int expand_wildcards __ARGS((int num_pat, char_u **pat, int *num_file, char_u ***file, int flags));
+int match_suffix __ARGS((char_u *fname));
+int unix_expandpath __ARGS((garray_T *gap, char_u *path, int wildoff, int flags, int didstar));
+int gen_expand_wildcards __ARGS((int num_pat, char_u **pat, int *num_file, char_u ***file, int flags));
+void addfile __ARGS((garray_T *gap, char_u *f, int flags));
+char_u *get_cmd_output __ARGS((char_u *cmd, char_u *infile, int flags));
+void FreeWild __ARGS((int count, char_u **files));
+int goto_im __ARGS((void));
 /* vim: set ft=c : */
--- a/src/proto/move.pro
+++ b/src/proto/move.pro
@@ -1,40 +1,40 @@
 /* move.c */
-extern void update_topline_redraw __ARGS((void));
-extern void update_topline __ARGS((void));
-extern void update_curswant __ARGS((void));
-extern void check_cursor_moved __ARGS((win_T *wp));
-extern void changed_window_setting __ARGS((void));
-extern void changed_window_setting_win __ARGS((win_T *wp));
-extern void set_topline __ARGS((win_T *wp, linenr_T lnum));
-extern void changed_cline_bef_curs __ARGS((void));
-extern void changed_cline_bef_curs_win __ARGS((win_T *wp));
-extern void changed_line_abv_curs __ARGS((void));
-extern void changed_line_abv_curs_win __ARGS((win_T *wp));
-extern void validate_botline __ARGS((void));
-extern void invalidate_botline __ARGS((void));
-extern void invalidate_botline_win __ARGS((win_T *wp));
-extern void approximate_botline_win __ARGS((win_T *wp));
-extern int cursor_valid __ARGS((void));
-extern void validate_cursor __ARGS((void));
-extern void validate_cline_row __ARGS((void));
-extern void validate_virtcol __ARGS((void));
-extern void validate_virtcol_win __ARGS((win_T *wp));
-extern void validate_cursor_col __ARGS((void));
-extern int win_col_off __ARGS((win_T *wp));
-extern int curwin_col_off __ARGS((void));
-extern int win_col_off2 __ARGS((win_T *wp));
-extern int curwin_col_off2 __ARGS((void));
-extern void curs_columns __ARGS((int scroll));
-extern void scrolldown __ARGS((long line_count, int byfold));
-extern void scrollup __ARGS((long line_count, int byfold));
-extern void check_topfill __ARGS((win_T *wp, int down));
-extern void scrolldown_clamp __ARGS((void));
-extern void scrollup_clamp __ARGS((void));
-extern void scroll_cursor_top __ARGS((int min_scroll, int always));
-extern void set_empty_rows __ARGS((win_T *wp, int used));
-extern void scroll_cursor_bot __ARGS((int min_scroll, int set_topbot));
-extern void scroll_cursor_halfway __ARGS((int atend));
-extern void cursor_correct __ARGS((void));
-extern int onepage __ARGS((int dir, long count));
-extern void halfpage __ARGS((int flag, linenr_T Prenum));
+void update_topline_redraw __ARGS((void));
+void update_topline __ARGS((void));
+void update_curswant __ARGS((void));
+void check_cursor_moved __ARGS((win_T *wp));
+void changed_window_setting __ARGS((void));
+void changed_window_setting_win __ARGS((win_T *wp));
+void set_topline __ARGS((win_T *wp, linenr_T lnum));
+void changed_cline_bef_curs __ARGS((void));
+void changed_cline_bef_curs_win __ARGS((win_T *wp));
+void changed_line_abv_curs __ARGS((void));
+void changed_line_abv_curs_win __ARGS((win_T *wp));
+void validate_botline __ARGS((void));
+void invalidate_botline __ARGS((void));
+void invalidate_botline_win __ARGS((win_T *wp));
+void approximate_botline_win __ARGS((win_T *wp));
+int cursor_valid __ARGS((void));
+void validate_cursor __ARGS((void));
+void validate_cline_row __ARGS((void));
+void validate_virtcol __ARGS((void));
+void validate_virtcol_win __ARGS((win_T *wp));
+void validate_cursor_col __ARGS((void));
+int win_col_off __ARGS((win_T *wp));
+int curwin_col_off __ARGS((void));
+int win_col_off2 __ARGS((win_T *wp));
+int curwin_col_off2 __ARGS((void));
+void curs_columns __ARGS((int scroll));
+void scrolldown __ARGS((long line_count, int byfold));
+void scrollup __ARGS((long line_count, int byfold));
+void check_topfill __ARGS((win_T *wp, int down));
+void scrolldown_clamp __ARGS((void));
+void scrollup_clamp __ARGS((void));
+void scroll_cursor_top __ARGS((int min_scroll, int always));
+void set_empty_rows __ARGS((win_T *wp, int used));
+void scroll_cursor_bot __ARGS((int min_scroll, int set_topbot));
+void scroll_cursor_halfway __ARGS((int atend));
+void cursor_correct __ARGS((void));
+int onepage __ARGS((int dir, long count));
+void halfpage __ARGS((int flag, linenr_T Prenum));
 /* vim: set ft=c : */
--- a/src/proto/os_msdos.pro
+++ b/src/proto/os_msdos.pro
@@ -1,48 +1,48 @@
 /* os_msdos.c */
-extern void mch_set_normal_colors __ARGS((void));
-extern void mch_update_cursor __ARGS((void));
-extern long_u mch_avail_mem __ARGS((int special));
-extern void mch_delay __ARGS((long msec, int ignoreinput));
-extern void mch_write __ARGS((char_u *s, int len));
-extern int mch_inchar __ARGS((char_u *buf, int maxlen, long time, int tb_change_cnt));
-extern int mch_char_avail __ARGS((void));
-extern void mch_suspend __ARGS((void));
-extern void mch_init __ARGS((void));
-extern int mch_check_win __ARGS((int argc, char **argv));
-extern int mch_input_isatty __ARGS((void));
-extern void fname_case __ARGS((char_u *name, int len));
-extern long mch_get_pid __ARGS((void));
-extern int mch_FullName __ARGS((char_u *fname, char_u *buf, int len, int force));
-extern void slash_adjust __ARGS((char_u *p));
-extern int mch_isFullName __ARGS((char_u *fname));
-extern void mch_early_init __ARGS((void));
-extern void mch_exit __ARGS((int r));
-extern void mch_settmode __ARGS((int tmode));
-extern void mch_setmouse __ARGS((int on));
-extern int mch_screenmode __ARGS((char_u *arg));
-extern int mch_get_shellsize __ARGS((void));
-extern void mch_set_shellsize __ARGS((void));
-extern void mch_new_shellsize __ARGS((void));
-extern void mch_check_columns __ARGS((void));
-extern int mch_call_shell __ARGS((char_u *cmd, int options));
-extern void mch_breakcheck __ARGS((void));
-extern int mch_has_exp_wildcard __ARGS((char_u *p));
-extern int mch_has_wildcard __ARGS((char_u *p));
-extern int mch_chdir __ARGS((char *path));
-extern char *djgpp_setlocale __ARGS((void));
-extern int clip_mch_own_selection __ARGS((VimClipboard *cbd));
-extern void clip_mch_lose_selection __ARGS((VimClipboard *cbd));
-extern void clip_mch_request_selection __ARGS((VimClipboard *cbd));
-extern void clip_mch_set_selection __ARGS((VimClipboard *cbd));
-extern long mch_getperm __ARGS((char_u *name));
-extern int mch_setperm __ARGS((char_u *name, long perm));
-extern void mch_hide __ARGS((char_u *name));
-extern int mch_isdir __ARGS((char_u *name));
-extern int mch_can_exe __ARGS((char_u *name));
-extern int mch_nodetype __ARGS((char_u *name));
-extern int mch_dirname __ARGS((char_u *buf, int len));
-extern int mch_remove __ARGS((char_u *name));
-extern char_u *mch_getenv __ARGS((char_u *name));
-extern int mch_get_user_name __ARGS((char_u *s, int len));
-extern void mch_get_host_name __ARGS((char_u *s, int len));
+void mch_set_normal_colors __ARGS((void));
+void mch_update_cursor __ARGS((void));
+long_u mch_avail_mem __ARGS((int special));
+void mch_delay __ARGS((long msec, int ignoreinput));
+void mch_write __ARGS((char_u *s, int len));
+int mch_inchar __ARGS((char_u *buf, int maxlen, long time, int tb_change_cnt));
+int mch_char_avail __ARGS((void));
+void mch_suspend __ARGS((void));
+void mch_init __ARGS((void));
+int mch_check_win __ARGS((int argc, char **argv));
+int mch_input_isatty __ARGS((void));
+void fname_case __ARGS((char_u *name, int len));
+long mch_get_pid __ARGS((void));
+int mch_FullName __ARGS((char_u *fname, char_u *buf, int len, int force));
+void slash_adjust __ARGS((char_u *p));
+int mch_isFullName __ARGS((char_u *fname));
+void mch_early_init __ARGS((void));
+void mch_exit __ARGS((int r));
+void mch_settmode __ARGS((int tmode));
+void mch_setmouse __ARGS((int on));
+int mch_screenmode __ARGS((char_u *arg));
+int mch_get_shellsize __ARGS((void));
+void mch_set_shellsize __ARGS((void));
+void mch_new_shellsize __ARGS((void));
+void mch_check_columns __ARGS((void));
+int mch_call_shell __ARGS((char_u *cmd, int options));
+void mch_breakcheck __ARGS((void));
+int mch_has_exp_wildcard __ARGS((char_u *p));
+int mch_has_wildcard __ARGS((char_u *p));
+int mch_chdir __ARGS((char *path));
+char *djgpp_setlocale __ARGS((void));
+int clip_mch_own_selection __ARGS((VimClipboard *cbd));
+void clip_mch_lose_selection __ARGS((VimClipboard *cbd));
+void clip_mch_request_selection __ARGS((VimClipboard *cbd));
+void clip_mch_set_selection __ARGS((VimClipboard *cbd));
+long mch_getperm __ARGS((char_u *name));
+int mch_setperm __ARGS((char_u *name, long perm));
+void mch_hide __ARGS((char_u *name));
+int mch_isdir __ARGS((char_u *name));
+int mch_can_exe __ARGS((char_u *name));
+int mch_nodetype __ARGS((char_u *name));
+int mch_dirname __ARGS((char_u *buf, int len));
+int mch_remove __ARGS((char_u *name));
+char_u *mch_getenv __ARGS((char_u *name));
+int mch_get_user_name __ARGS((char_u *s, int len));
+void mch_get_host_name __ARGS((char_u *s, int len));
 /* vim: set ft=c : */
--- a/src/proto/os_unix.pro
+++ b/src/proto/os_unix.pro
@@ -1,73 +1,73 @@
 /* os_unix.c */
-extern void mch_write __ARGS((char_u *s, int len));
-extern int mch_inchar __ARGS((char_u *buf, int maxlen, long wtime, int tb_change_cnt));
-extern int mch_char_avail __ARGS((void));
-extern long_u mch_total_mem __ARGS((int special));
-extern void mch_delay __ARGS((long msec, int ignoreinput));
-extern int mch_stackcheck __ARGS((char *p));
-extern void mch_startjmp __ARGS((void));
-extern void mch_endjmp __ARGS((void));
-extern void mch_didjmp __ARGS((void));
-extern void mch_suspend __ARGS((void));
-extern void mch_init __ARGS((void));
-extern void reset_signals __ARGS((void));
-extern int vim_handle_signal __ARGS((int sig));
-extern int mch_check_win __ARGS((int argc, char **argv));
-extern int mch_input_isatty __ARGS((void));
-extern int mch_can_restore_title __ARGS((void));
-extern int mch_can_restore_icon __ARGS((void));
-extern void mch_settitle __ARGS((char_u *title, char_u *icon));
-extern void mch_restore_title __ARGS((int which));
-extern int vim_is_xterm __ARGS((char_u *name));
-extern int use_xterm_mouse __ARGS((void));
-extern int vim_is_iris __ARGS((char_u *name));
-extern int vim_is_vt300 __ARGS((char_u *name));
-extern int vim_is_fastterm __ARGS((char_u *name));
-extern int mch_get_user_name __ARGS((char_u *s, int len));
-extern int mch_get_uname __ARGS((uid_t uid, char_u *s, int len));
-extern void mch_get_host_name __ARGS((char_u *s, int len));
-extern long mch_get_pid __ARGS((void));
-extern int mch_dirname __ARGS((char_u *buf, int len));
-extern void slash_adjust __ARGS((char_u *p));
-extern int mch_FullName __ARGS((char_u *fname, char_u *buf, int len, int force));
-extern int mch_isFullName __ARGS((char_u *fname));
-extern void fname_case __ARGS((char_u *name, int len));
-extern long mch_getperm __ARGS((char_u *name));
-extern int mch_setperm __ARGS((char_u *name, long perm));
-extern vim_acl_T mch_get_acl __ARGS((char_u *fname));
-extern void mch_set_acl __ARGS((char_u *fname, vim_acl_T aclent));
-extern void mch_free_acl __ARGS((vim_acl_T aclent));
-extern void mch_hide __ARGS((char_u *name));
-extern int mch_isdir __ARGS((char_u *name));
-extern int mch_can_exe __ARGS((char_u *name));
-extern int mch_nodetype __ARGS((char_u *name));
-extern void mch_early_init __ARGS((void));
-extern void mch_free_mem __ARGS((void));
-extern void mch_exit __ARGS((int r));
-extern void mch_settmode __ARGS((int tmode));
-extern void get_stty __ARGS((void));
-extern void mch_setmouse __ARGS((int on));
-extern void check_mouse_termcode __ARGS((void));
-extern int mch_screenmode __ARGS((char_u *arg));
-extern int mch_get_shellsize __ARGS((void));
-extern void mch_set_shellsize __ARGS((void));
-extern void mch_new_shellsize __ARGS((void));
-extern int mch_call_shell __ARGS((char_u *cmd, int options));
-extern void mch_breakcheck __ARGS((void));
-extern int mch_expandpath __ARGS((garray_T *gap, char_u *path, int flags));
-extern int mch_expand_wildcards __ARGS((int num_pat, char_u **pat, int *num_file, char_u ***file, int flags));
-extern int mch_has_exp_wildcard __ARGS((char_u *p));
-extern int mch_has_wildcard __ARGS((char_u *p));
-extern int mch_libcall __ARGS((char_u *libname, char_u *funcname, char_u *argstring, int argint, char_u **string_result, int *number_result));
-extern void setup_term_clip __ARGS((void));
-extern void start_xterm_trace __ARGS((int button));
-extern void stop_xterm_trace __ARGS((void));
-extern void clear_xterm_clip __ARGS((void));
-extern int clip_xterm_own_selection __ARGS((VimClipboard *cbd));
-extern void clip_xterm_lose_selection __ARGS((VimClipboard *cbd));
-extern void clip_xterm_request_selection __ARGS((VimClipboard *cbd));
-extern void clip_xterm_set_selection __ARGS((VimClipboard *cbd));
-extern int xsmp_handle_requests __ARGS((void));
-extern void xsmp_init __ARGS((void));
-extern void xsmp_close __ARGS((void));
+void mch_write __ARGS((char_u *s, int len));
+int mch_inchar __ARGS((char_u *buf, int maxlen, long wtime, int tb_change_cnt));
+int mch_char_avail __ARGS((void));
+long_u mch_total_mem __ARGS((int special));
+void mch_delay __ARGS((long msec, int ignoreinput));
+int mch_stackcheck __ARGS((char *p));
+void mch_startjmp __ARGS((void));
+void mch_endjmp __ARGS((void));
+void mch_didjmp __ARGS((void));
+void mch_suspend __ARGS((void));
+void mch_init __ARGS((void));
+void reset_signals __ARGS((void));
+int vim_handle_signal __ARGS((int sig));
+int mch_check_win __ARGS((int argc, char **argv));
+int mch_input_isatty __ARGS((void));
+int mch_can_restore_title __ARGS((void));
+int mch_can_restore_icon __ARGS((void));
+void mch_settitle __ARGS((char_u *title, char_u *icon));
+void mch_restore_title __ARGS((int which));
+int vim_is_xterm __ARGS((char_u *name));
+int use_xterm_mouse __ARGS((void));
+int vim_is_iris __ARGS((char_u *name));
+int vim_is_vt300 __ARGS((char_u *name));
+int vim_is_fastterm __ARGS((char_u *name));
+int mch_get_user_name __ARGS((char_u *s, int len));
+int mch_get_uname __ARGS((uid_t uid, char_u *s, int len));
+void mch_get_host_name __ARGS((char_u *s, int len));
+long mch_get_pid __ARGS((void));
+int mch_dirname __ARGS((char_u *buf, int len));
+void slash_adjust __ARGS((char_u *p));
+int mch_FullName __ARGS((char_u *fname, char_u *buf, int len, int force));
+int mch_isFullName __ARGS((char_u *fname));
+void fname_case __ARGS((char_u *name, int len));
+long mch_getperm __ARGS((char_u *name));
+int mch_setperm __ARGS((char_u *name, long perm));
+vim_acl_T mch_get_acl __ARGS((char_u *fname));
+void mch_set_acl __ARGS((char_u *fname, vim_acl_T aclent));
+void mch_free_acl __ARGS((vim_acl_T aclent));
+void mch_hide __ARGS((char_u *name));
+int mch_isdir __ARGS((char_u *name));
+int mch_can_exe __ARGS((char_u *name));
+int mch_nodetype __ARGS((char_u *name));
+void mch_early_init __ARGS((void));
+void mch_free_mem __ARGS((void));
+void mch_exit __ARGS((int r));
+void mch_settmode __ARGS((int tmode));
+void get_stty __ARGS((void));
+void mch_setmouse __ARGS((int on));
+void check_mouse_termcode __ARGS((void));
+int mch_screenmode __ARGS((char_u *arg));
+int mch_get_shellsize __ARGS((void));
+void mch_set_shellsize __ARGS((void));
+void mch_new_shellsize __ARGS((void));
+int mch_call_shell __ARGS((char_u *cmd, int options));
+void mch_breakcheck __ARGS((void));
+int mch_expandpath __ARGS((garray_T *gap, char_u *path, int flags));
+int mch_expand_wildcards __ARGS((int num_pat, char_u **pat, int *num_file, char_u ***file, int flags));
+int mch_has_exp_wildcard __ARGS((char_u *p));
+int mch_has_wildcard __ARGS((char_u *p));
+int mch_libcall __ARGS((char_u *libname, char_u *funcname, char_u *argstring, int argint, char_u **string_result, int *number_result));
+void setup_term_clip __ARGS((void));
+void start_xterm_trace __ARGS((int button));
+void stop_xterm_trace __ARGS((void));
+void clear_xterm_clip __ARGS((void));
+int clip_xterm_own_selection __ARGS((VimClipboard *cbd));
+void clip_xterm_lose_selection __ARGS((VimClipboard *cbd));
+void clip_xterm_request_selection __ARGS((VimClipboard *cbd));
+void clip_xterm_set_selection __ARGS((VimClipboard *cbd));
+int xsmp_handle_requests __ARGS((void));
+void xsmp_init __ARGS((void));
+void xsmp_close __ARGS((void));
 /* vim: set ft=c : */
--- a/src/proto/os_win32.pro
+++ b/src/proto/os_win32.pro
@@ -1,54 +1,54 @@
 /* os_win32.c */
-extern int dyn_libintl_init __ARGS((char *libname));
-extern void dyn_libintl_end __ARGS((void));
-extern void PlatformId __ARGS((void));
-extern int mch_windows95 __ARGS((void));
-extern void mch_setmouse __ARGS((int on));
-extern void mch_update_cursor __ARGS((void));
-extern int mch_char_avail __ARGS((void));
-extern int mch_inchar __ARGS((char_u *buf, int maxlen, long time, int tb_change_cnt));
-extern void mch_init __ARGS((void));
-extern void mch_exit __ARGS((int r));
-extern int mch_check_win __ARGS((int argc, char **argv));
-extern void fname_case __ARGS((char_u *name, int len));
-extern int mch_get_user_name __ARGS((char_u *s, int len));
-extern void mch_get_host_name __ARGS((char_u *s, int len));
-extern long mch_get_pid __ARGS((void));
-extern int mch_dirname __ARGS((char_u *buf, int len));
-extern long mch_getperm __ARGS((char_u *name));
-extern int mch_setperm __ARGS((char_u *name, long perm));
-extern void mch_hide __ARGS((char_u *name));
-extern int mch_isdir __ARGS((char_u *name));
-extern int mch_is_linked __ARGS((char_u *fname));
-extern int mch_writable __ARGS((char_u *name));
-extern int mch_can_exe __ARGS((char_u *name));
-extern int mch_nodetype __ARGS((char_u *name));
-extern vim_acl_T mch_get_acl __ARGS((char_u *fname));
-extern void mch_set_acl __ARGS((char_u *fname, vim_acl_T acl));
-extern void mch_free_acl __ARGS((vim_acl_T acl));
-extern void mch_settmode __ARGS((int tmode));
-extern int mch_get_shellsize __ARGS((void));
-extern void mch_set_shellsize __ARGS((void));
-extern void mch_new_shellsize __ARGS((void));
-extern void mch_set_winsize_now __ARGS((void));
-extern int mch_call_shell __ARGS((char_u *cmd, int options));
-extern void mch_set_normal_colors __ARGS((void));
-extern void mch_write __ARGS((char_u *s, int len));
-extern void mch_delay __ARGS((long msec, int ignoreinput));
-extern int mch_remove __ARGS((char_u *name));
-extern void mch_breakcheck __ARGS((void));
-extern long_u mch_avail_mem __ARGS((int special));
-extern int mch_wrename __ARGS((WCHAR *wold, WCHAR *wnew));
-extern int mch_rename __ARGS((const char *pszOldFile, const char *pszNewFile));
-extern char *default_shell __ARGS((void));
-extern int mch_access __ARGS((char *n, int p));
-extern int mch_open __ARGS((char *name, int flags, int mode));
-extern FILE *mch_fopen __ARGS((char *name, char *mode));
-extern int mch_copy_file_attribute __ARGS((char_u *from, char_u *to));
-extern int myresetstkoflw __ARGS((void));
-extern int get_cmd_argsW __ARGS((char ***argvp));
-extern void free_cmd_argsW __ARGS((void));
-extern void used_file_arg __ARGS((char *name, int literal, int full_path, int diff_mode));
-extern void set_alist_count __ARGS((void));
-extern void fix_arg_enc __ARGS((void));
+int dyn_libintl_init __ARGS((char *libname));
+void dyn_libintl_end __ARGS((void));
+void PlatformId __ARGS((void));
+int mch_windows95 __ARGS((void));
+void mch_setmouse __ARGS((int on));
+void mch_update_cursor __ARGS((void));
+int mch_char_avail __ARGS((void));
+int mch_inchar __ARGS((char_u *buf, int maxlen, long time, int tb_change_cnt));
+void mch_init __ARGS((void));
+void mch_exit __ARGS((int r));
+int mch_check_win __ARGS((int argc, char **argv));
+void fname_case __ARGS((char_u *name, int len));
+int mch_get_user_name __ARGS((char_u *s, int len));
+void mch_get_host_name __ARGS((char_u *s, int len));
+long mch_get_pid __ARGS((void));
+int mch_dirname __ARGS((char_u *buf, int len));
+long mch_getperm __ARGS((char_u *name));
+int mch_setperm __ARGS((char_u *name, long perm));
+void mch_hide __ARGS((char_u *name));
+int mch_isdir __ARGS((char_u *name));
+int mch_is_linked __ARGS((char_u *fname));
+int mch_writable __ARGS((char_u *name));
+int mch_can_exe __ARGS((char_u *name));
+int mch_nodetype __ARGS((char_u *name));
+vim_acl_T mch_get_acl __ARGS((char_u *fname));
+void mch_set_acl __ARGS((char_u *fname, vim_acl_T acl));
+void mch_free_acl __ARGS((vim_acl_T acl));
+void mch_settmode __ARGS((int tmode));
+int mch_get_shellsize __ARGS((void));
+void mch_set_shellsize __ARGS((void));
+void mch_new_shellsize __ARGS((void));
+void mch_set_winsize_now __ARGS((void));
+int mch_call_shell __ARGS((char_u *cmd, int options));
+void mch_set_normal_colors __ARGS((void));
+void mch_write __ARGS((char_u *s, int len));
+void mch_delay __ARGS((long msec, int ignoreinput));
+int mch_remove __ARGS((char_u *name));
+void mch_breakcheck __ARGS((void));
+long_u mch_avail_mem __ARGS((int special));
+int mch_wrename __ARGS((WCHAR *wold, WCHAR *wnew));
+int mch_rename __ARGS((const char *pszOldFile, const char *pszNewFile));
+char *default_shell __ARGS((void));
+int mch_access __ARGS((char *n, int p));
+int mch_open __ARGS((char *name, int flags, int mode));
+FILE *mch_fopen __ARGS((char *name, char *mode));
+int mch_copy_file_attribute __ARGS((char_u *from, char_u *to));
+int myresetstkoflw __ARGS((void));
+int get_cmd_argsW __ARGS((char ***argvp));
+void free_cmd_argsW __ARGS((void));
+void used_file_arg __ARGS((char *name, int literal, int full_path, int diff_mode));
+void set_alist_count __ARGS((void));
+void fix_arg_enc __ARGS((void));
 /* vim: set ft=c : */
--- a/src/proto/quickfix.pro
+++ b/src/proto/quickfix.pro
@@ -1,30 +1,30 @@
 /* quickfix.c */
-extern int qf_init __ARGS((win_T *wp, char_u *efile, char_u *errorformat, int newlist));
-extern void qf_free_all __ARGS((win_T *wp));
-extern void copy_loclist __ARGS((win_T *from, win_T *to));
-extern void qf_jump __ARGS((qf_info_T *qi, int dir, int errornr, int forceit));
-extern void qf_list __ARGS((exarg_T *eap));
-extern void qf_age __ARGS((exarg_T *eap));
-extern void qf_mark_adjust __ARGS((win_T *wp, linenr_T line1, linenr_T line2, long amount, long amount_after));
-extern void ex_cwindow __ARGS((exarg_T *eap));
-extern void ex_cclose __ARGS((exarg_T *eap));
-extern void ex_copen __ARGS((exarg_T *eap));
-extern linenr_T qf_current_entry __ARGS((win_T *wp));
-extern int bt_quickfix __ARGS((buf_T *buf));
-extern int bt_nofile __ARGS((buf_T *buf));
-extern int bt_dontwrite __ARGS((buf_T *buf));
-extern int bt_dontwrite_msg __ARGS((buf_T *buf));
-extern int buf_hide __ARGS((buf_T *buf));
-extern int grep_internal __ARGS((cmdidx_T cmdidx));
-extern void ex_make __ARGS((exarg_T *eap));
-extern void ex_cc __ARGS((exarg_T *eap));
-extern void ex_cnext __ARGS((exarg_T *eap));
-extern void ex_cfile __ARGS((exarg_T *eap));
-extern void ex_vimgrep __ARGS((exarg_T *eap));
-extern char_u *skip_vimgrep_pat __ARGS((char_u *p, char_u **s, int *flags));
-extern int get_errorlist __ARGS((win_T *wp, list_T *list));
-extern int set_errorlist __ARGS((win_T *wp, list_T *list, int action));
-extern void ex_cbuffer __ARGS((exarg_T *eap));
-extern void ex_cexpr __ARGS((exarg_T *eap));
-extern void ex_helpgrep __ARGS((exarg_T *eap));
+int qf_init __ARGS((win_T *wp, char_u *efile, char_u *errorformat, int newlist));
+void qf_free_all __ARGS((win_T *wp));
+void copy_loclist __ARGS((win_T *from, win_T *to));
+void qf_jump __ARGS((qf_info_T *qi, int dir, int errornr, int forceit));
+void qf_list __ARGS((exarg_T *eap));
+void qf_age __ARGS((exarg_T *eap));
+void qf_mark_adjust __ARGS((win_T *wp, linenr_T line1, linenr_T line2, long amount, long amount_after));
+void ex_cwindow __ARGS((exarg_T *eap));
+void ex_cclose __ARGS((exarg_T *eap));
+void ex_copen __ARGS((exarg_T *eap));
+linenr_T qf_current_entry __ARGS((win_T *wp));
+int bt_quickfix __ARGS((buf_T *buf));
+int bt_nofile __ARGS((buf_T *buf));
+int bt_dontwrite __ARGS((buf_T *buf));
+int bt_dontwrite_msg __ARGS((buf_T *buf));
+int buf_hide __ARGS((buf_T *buf));
+int grep_internal __ARGS((cmdidx_T cmdidx));
+void ex_make __ARGS((exarg_T *eap));
+void ex_cc __ARGS((exarg_T *eap));
+void ex_cnext __ARGS((exarg_T *eap));
+void ex_cfile __ARGS((exarg_T *eap));
+void ex_vimgrep __ARGS((exarg_T *eap));
+char_u *skip_vimgrep_pat __ARGS((char_u *p, char_u **s, int *flags));
+int get_errorlist __ARGS((win_T *wp, list_T *list));
+int set_errorlist __ARGS((win_T *wp, list_T *list, int action));
+void ex_cbuffer __ARGS((exarg_T *eap));
+void ex_cexpr __ARGS((exarg_T *eap));
+void ex_helpgrep __ARGS((exarg_T *eap));
 /* vim: set ft=c : */
--- a/src/proto/screen.pro
+++ b/src/proto/screen.pro
@@ -1,50 +1,50 @@
 /* screen.c */
-extern void redraw_later __ARGS((int type));
-extern void redraw_win_later __ARGS((win_T *wp, int type));
-extern void redraw_later_clear __ARGS((void));
-extern void redraw_all_later __ARGS((int type));
-extern void redraw_curbuf_later __ARGS((int type));
-extern void redraw_buf_later __ARGS((buf_T *buf, int type));
-extern void redrawWinline __ARGS((linenr_T lnum, int invalid));
-extern void update_curbuf __ARGS((int type));
-extern void update_screen __ARGS((int type));
-extern void update_debug_sign __ARGS((buf_T *buf, linenr_T lnum));
-extern void updateWindow __ARGS((win_T *wp));
-extern void rl_mirror __ARGS((char_u *str));
-extern void status_redraw_all __ARGS((void));
-extern void status_redraw_curbuf __ARGS((void));
-extern void redraw_statuslines __ARGS((void));
-extern void win_redraw_last_status __ARGS((frame_T *frp));
-extern void win_redr_status_matches __ARGS((expand_T *xp, int num_matches, char_u **matches, int match, int showtail));
-extern void win_redr_status __ARGS((win_T *wp));
-extern int stl_connected __ARGS((win_T *wp));
-extern int get_keymap_str __ARGS((win_T *wp, char_u *buf, int len));
-extern void screen_putchar __ARGS((int c, int row, int col, int attr));
-extern void screen_getbytes __ARGS((int row, int col, char_u *bytes, int *attrp));
-extern void screen_puts __ARGS((char_u *text, int row, int col, int attr));
-extern void screen_puts_len __ARGS((char_u *text, int len, int row, int col, int attr));
-extern void screen_stop_highlight __ARGS((void));
-extern void reset_cterm_colors __ARGS((void));
-extern void screen_draw_rectangle __ARGS((int row, int col, int height, int width, int invert));
-extern void screen_fill __ARGS((int start_row, int end_row, int start_col, int end_col, int c1, int c2, int attr));
-extern void check_for_delay __ARGS((int check_msg_scroll));
-extern int screen_valid __ARGS((int clear));
-extern void screenalloc __ARGS((int clear));
-extern void free_screenlines __ARGS((void));
-extern void screenclear __ARGS((void));
-extern int can_clear __ARGS((char_u *p));
-extern void screen_start __ARGS((void));
-extern void windgoto __ARGS((int row, int col));
-extern void setcursor __ARGS((void));
-extern int win_ins_lines __ARGS((win_T *wp, int row, int line_count, int invalid, int mayclear));
-extern int win_del_lines __ARGS((win_T *wp, int row, int line_count, int invalid, int mayclear));
-extern int screen_ins_lines __ARGS((int off, int row, int line_count, int end, win_T *wp));
-extern int screen_del_lines __ARGS((int off, int row, int line_count, int end, int force, win_T *wp));
-extern int showmode __ARGS((void));
-extern void unshowmode __ARGS((int force));
-extern void get_trans_bufname __ARGS((buf_T *buf));
-extern int redrawing __ARGS((void));
-extern int messaging __ARGS((void));
-extern void showruler __ARGS((int always));
-extern int number_width __ARGS((win_T *wp));
+void redraw_later __ARGS((int type));
+void redraw_win_later __ARGS((win_T *wp, int type));
+void redraw_later_clear __ARGS((void));
+void redraw_all_later __ARGS((int type));
+void redraw_curbuf_later __ARGS((int type));
+void redraw_buf_later __ARGS((buf_T *buf, int type));
+void redrawWinline __ARGS((linenr_T lnum, int invalid));
+void update_curbuf __ARGS((int type));
+void update_screen __ARGS((int type));
+void update_debug_sign __ARGS((buf_T *buf, linenr_T lnum));
+void updateWindow __ARGS((win_T *wp));
+void rl_mirror __ARGS((char_u *str));
+void status_redraw_all __ARGS((void));
+void status_redraw_curbuf __ARGS((void));
+void redraw_statuslines __ARGS((void));
+void win_redraw_last_status __ARGS((frame_T *frp));
+void win_redr_status_matches __ARGS((expand_T *xp, int num_matches, char_u **matches, int match, int showtail));
+void win_redr_status __ARGS((win_T *wp));
+int stl_connected __ARGS((win_T *wp));
+int get_keymap_str __ARGS((win_T *wp, char_u *buf, int len));
+void screen_putchar __ARGS((int c, int row, int col, int attr));
+void screen_getbytes __ARGS((int row, int col, char_u *bytes, int *attrp));
+void screen_puts __ARGS((char_u *text, int row, int col, int attr));
+void screen_puts_len __ARGS((char_u *text, int len, int row, int col, int attr));
+void screen_stop_highlight __ARGS((void));
+void reset_cterm_colors __ARGS((void));
+void screen_draw_rectangle __ARGS((int row, int col, int height, int width, int invert));
+void screen_fill __ARGS((int start_row, int end_row, int start_col, int end_col, int c1, int c2, int attr));
+void check_for_delay __ARGS((int check_msg_scroll));
+int screen_valid __ARGS((int clear));
+void screenalloc __ARGS((int clear));
+void free_screenlines __ARGS((void));
+void screenclear __ARGS((void));
+int can_clear __ARGS((char_u *p));
+void screen_start __ARGS((void));
+void windgoto __ARGS((int row, int col));
+void setcursor __ARGS((void));
+int win_ins_lines __ARGS((win_T *wp, int row, int line_count, int invalid, int mayclear));
+int win_del_lines __ARGS((win_T *wp, int row, int line_count, int invalid, int mayclear));
+int screen_ins_lines __ARGS((int off, int row, int line_count, int end, win_T *wp));
+int screen_del_lines __ARGS((int off, int row, int line_count, int end, int force, win_T *wp));
+int showmode __ARGS((void));
+void unshowmode __ARGS((int force));
+void get_trans_bufname __ARGS((buf_T *buf));
+int redrawing __ARGS((void));
+int messaging __ARGS((void));
+void showruler __ARGS((int always));
+int number_width __ARGS((win_T *wp));
 /* vim: set ft=c : */
--- a/src/proto/search.pro
+++ b/src/proto/search.pro
@@ -1,36 +1,36 @@
 /* search.c */
-extern int search_regcomp __ARGS((char_u *pat, int pat_save, int pat_use, int options, regmmatch_T *regmatch));
-extern char_u *get_search_pat __ARGS((void));
-extern void save_search_patterns __ARGS((void));
-extern void restore_search_patterns __ARGS((void));
-extern void free_search_patterns __ARGS((void));
-extern int ignorecase __ARGS((char_u *pat));
-extern char_u *last_search_pat __ARGS((void));
-extern void reset_search_dir __ARGS((void));
-extern void set_last_search_pat __ARGS((char_u *s, int idx, int magic, int setlast));
-extern void last_pat_prog __ARGS((regmmatch_T *regmatch));
-extern int searchit __ARGS((win_T *win, buf_T *buf, pos_T *pos, int dir, char_u *pat, long count, int options, int pat_use, linenr_T stop_lnum));
-extern int do_search __ARGS((oparg_T *oap, int dirc, char_u *pat, long count, int options));
-extern int search_for_exact_line __ARGS((buf_T *buf, pos_T *pos, int dir, char_u *pat));
-extern int searchc __ARGS((cmdarg_T *cap, int t_cmd));
-extern pos_T *findmatch __ARGS((oparg_T *oap, int initc));
-extern pos_T *findmatchlimit __ARGS((oparg_T *oap, int initc, int flags, int maxtravel));
-extern void showmatch __ARGS((int c));
-extern int findsent __ARGS((int dir, long count));
-extern int findpar __ARGS((int *pincl, int dir, long count, int what, int both));
-extern int startPS __ARGS((linenr_T lnum, int para, int both));
-extern int fwd_word __ARGS((long count, int bigword, int eol));
-extern int bck_word __ARGS((long count, int bigword, int stop));
-extern int end_word __ARGS((long count, int bigword, int stop, int empty));
-extern int bckend_word __ARGS((long count, int bigword, int eol));
-extern int current_word __ARGS((oparg_T *oap, long count, int include, int bigword));
-extern int current_sent __ARGS((oparg_T *oap, long count, int include));
-extern int current_block __ARGS((oparg_T *oap, long count, int include, int what, int other));
-extern int current_tagblock __ARGS((oparg_T *oap, long count_arg, int include));
-extern int current_par __ARGS((oparg_T *oap, long count, int include, int type));
-extern int current_quote __ARGS((oparg_T *oap, long count, int include, int quotechar));
-extern int linewhite __ARGS((linenr_T lnum));
-extern void find_pattern_in_path __ARGS((char_u *ptr, int dir, int len, int whole, int skip_comments, int type, long count, int action, linenr_T start_lnum, linenr_T end_lnum));
-extern int read_viminfo_search_pattern __ARGS((vir_T *virp, int force));
-extern void write_viminfo_search_pattern __ARGS((FILE *fp));
+int search_regcomp __ARGS((char_u *pat, int pat_save, int pat_use, int options, regmmatch_T *regmatch));
+char_u *get_search_pat __ARGS((void));
+void save_search_patterns __ARGS((void));
+void restore_search_patterns __ARGS((void));
+void free_search_patterns __ARGS((void));
+int ignorecase __ARGS((char_u *pat));
+char_u *last_search_pat __ARGS((void));
+void reset_search_dir __ARGS((void));
+void set_last_search_pat __ARGS((char_u *s, int idx, int magic, int setlast));
+void last_pat_prog __ARGS((regmmatch_T *regmatch));
+int searchit __ARGS((win_T *win, buf_T *buf, pos_T *pos, int dir, char_u *pat, long count, int options, int pat_use, linenr_T stop_lnum));
+int do_search __ARGS((oparg_T *oap, int dirc, char_u *pat, long count, int options));
+int search_for_exact_line __ARGS((buf_T *buf, pos_T *pos, int dir, char_u *pat));
+int searchc __ARGS((cmdarg_T *cap, int t_cmd));
+pos_T *findmatch __ARGS((oparg_T *oap, int initc));
+pos_T *findmatchlimit __ARGS((oparg_T *oap, int initc, int flags, int maxtravel));
+void showmatch __ARGS((int c));
+int findsent __ARGS((int dir, long count));
+int findpar __ARGS((int *pincl, int dir, long count, int what, int both));
+int startPS __ARGS((linenr_T lnum, int para, int both));
+int fwd_word __ARGS((long count, int bigword, int eol));
+int bck_word __ARGS((long count, int bigword, int stop));
+int end_word __ARGS((long count, int bigword, int stop, int empty));
+int bckend_word __ARGS((long count, int bigword, int eol));
+int current_word __ARGS((oparg_T *oap, long count, int include, int bigword));
+int current_sent __ARGS((oparg_T *oap, long count, int include));
+int current_block __ARGS((oparg_T *oap, long count, int include, int what, int other));
+int current_tagblock __ARGS((oparg_T *oap, long count_arg, int include));
+int current_par __ARGS((oparg_T *oap, long count, int include, int type));
+int current_quote __ARGS((oparg_T *oap, long count, int include, int quotechar));
+int linewhite __ARGS((linenr_T lnum));
+void find_pattern_in_path __ARGS((char_u *ptr, int dir, int len, int whole, int skip_comments, int type, long count, int action, linenr_T start_lnum, linenr_T end_lnum));
+int read_viminfo_search_pattern __ARGS((vir_T *virp, int force));
+void write_viminfo_search_pattern __ARGS((FILE *fp));
 /* vim: set ft=c : */
--- a/src/proto/term.pro
+++ b/src/proto/term.pro
@@ -1,60 +1,60 @@
 /* term.c */
-extern int set_termname __ARGS((char_u *term));
-extern void set_mouse_termcode __ARGS((int n, char_u *s));
-extern void del_mouse_termcode __ARGS((int n));
-extern void getlinecol __ARGS((long *cp, long *rp));
-extern int add_termcap_entry __ARGS((char_u *name, int force));
-extern int term_is_8bit __ARGS((char_u *name));
-extern int term_is_gui __ARGS((char_u *name));
-extern char_u *tltoa __ARGS((unsigned long i));
-extern void termcapinit __ARGS((char_u *name));
-extern void out_flush __ARGS((void));
-extern void out_flush_check __ARGS((void));
-extern void out_trash __ARGS((void));
-extern void out_char __ARGS((unsigned c));
-extern void out_str_nf __ARGS((char_u *s));
-extern void out_str __ARGS((char_u *s));
-extern void term_windgoto __ARGS((int row, int col));
-extern void term_cursor_right __ARGS((int i));
-extern void term_append_lines __ARGS((int line_count));
-extern void term_delete_lines __ARGS((int line_count));
-extern void term_set_winpos __ARGS((int x, int y));
-extern void term_set_winsize __ARGS((int width, int height));
-extern void term_fg_color __ARGS((int n));
-extern void term_bg_color __ARGS((int n));
-extern void term_settitle __ARGS((char_u *title));
-extern void ttest __ARGS((int pairs));
-extern void add_long_to_buf __ARGS((long_u val, char_u *dst));
-extern void check_shellsize __ARGS((void));
-extern void win_new_shellsize __ARGS((void));
-extern void shell_resized __ARGS((void));
-extern void shell_resized_check __ARGS((void));
-extern void set_shellsize __ARGS((int width, int height, int mustset));
-extern void settmode __ARGS((int tmode));
-extern void starttermcap __ARGS((void));
-extern void stoptermcap __ARGS((void));
-extern void may_req_termresponse __ARGS((void));
-extern int swapping_screen __ARGS((void));
-extern void setmouse __ARGS((void));
-extern int mouse_has __ARGS((int c));
-extern int mouse_model_popup __ARGS((void));
-extern void scroll_start __ARGS((void));
-extern void cursor_on __ARGS((void));
-extern void cursor_off __ARGS((void));
-extern void term_cursor_shape __ARGS((void));
-extern void scroll_region_set __ARGS((win_T *wp, int off));
-extern void scroll_region_reset __ARGS((void));
-extern void clear_termcodes __ARGS((void));
-extern void add_termcode __ARGS((char_u *name, char_u *string, int flags));
-extern char_u *find_termcode __ARGS((char_u *name));
-extern char_u *get_termcode __ARGS((int i));
-extern void del_termcode __ARGS((char_u *name));
-extern void set_mouse_topline __ARGS((win_T *wp));
-extern int check_termcode __ARGS((int max_offset, char_u *buf, int buflen));
-extern char_u *replace_termcodes __ARGS((char_u *from, char_u **bufp, int from_part, int do_lt, int special));
-extern int find_term_bykeys __ARGS((char_u *src));
-extern void show_termcodes __ARGS((void));
-extern int show_one_termcode __ARGS((char_u *name, char_u *code, int printit));
-extern char_u *translate_mapping __ARGS((char_u *str, int expmap));
-extern void update_tcap __ARGS((int attr));
+int set_termname __ARGS((char_u *term));
+void set_mouse_termcode __ARGS((int n, char_u *s));
+void del_mouse_termcode __ARGS((int n));
+void getlinecol __ARGS((long *cp, long *rp));
+int add_termcap_entry __ARGS((char_u *name, int force));
+int term_is_8bit __ARGS((char_u *name));
+int term_is_gui __ARGS((char_u *name));
+char_u *tltoa __ARGS((unsigned long i));
+void termcapinit __ARGS((char_u *name));
+void out_flush __ARGS((void));
+void out_flush_check __ARGS((void));
+void out_trash __ARGS((void));
+void out_char __ARGS((unsigned c));
+void out_str_nf __ARGS((char_u *s));
+void out_str __ARGS((char_u *s));
+void term_windgoto __ARGS((int row, int col));
+void term_cursor_right __ARGS((int i));
+void term_append_lines __ARGS((int line_count));
+void term_delete_lines __ARGS((int line_count));
+void term_set_winpos __ARGS((int x, int y));
+void term_set_winsize __ARGS((int width, int height));
+void term_fg_color __ARGS((int n));
+void term_bg_color __ARGS((int n));
+void term_settitle __ARGS((char_u *title));
+void ttest __ARGS((int pairs));
+void add_long_to_buf __ARGS((long_u val, char_u *dst));
+void check_shellsize __ARGS((void));
+void win_new_shellsize __ARGS((void));
+void shell_resized __ARGS((void));
+void shell_resized_check __ARGS((void));
+void set_shellsize __ARGS((int width, int height, int mustset));
+void settmode __ARGS((int tmode));
+void starttermcap __ARGS((void));
+void stoptermcap __ARGS((void));
+void may_req_termresponse __ARGS((void));
+int swapping_screen __ARGS((void));
+void setmouse __ARGS((void));
+int mouse_has __ARGS((int c));
+int mouse_model_popup __ARGS((void));
+void scroll_start __ARGS((void));
+void cursor_on __ARGS((void));
+void cursor_off __ARGS((void));
+void term_cursor_shape __ARGS((void));
+void scroll_region_set __ARGS((win_T *wp, int off));
+void scroll_region_reset __ARGS((void));
+void clear_termcodes __ARGS((void));
+void add_termcode __ARGS((char_u *name, char_u *string, int flags));
+char_u *find_termcode __ARGS((char_u *name));
+char_u *get_termcode __ARGS((int i));
+void del_termcode __ARGS((char_u *name));
+void set_mouse_topline __ARGS((win_T *wp));
+int check_termcode __ARGS((int max_offset, char_u *buf, int buflen));
+char_u *replace_termcodes __ARGS((char_u *from, char_u **bufp, int from_part, int do_lt, int special));
+int find_term_bykeys __ARGS((char_u *src));
+void show_termcodes __ARGS((void));
+int show_one_termcode __ARGS((char_u *name, char_u *code, int printit));
+char_u *translate_mapping __ARGS((char_u *str, int expmap));
+void update_tcap __ARGS((int attr));
 /* vim: set ft=c : */
--- a/src/proto/termlib.pro
+++ b/src/proto/termlib.pro
@@ -1,8 +1,8 @@
 /* termlib.c */
-extern int tgetent __ARGS((char *tbuf, char *term));
-extern int tgetflag __ARGS((char *id));
-extern int tgetnum __ARGS((char *id));
-extern char *tgetstr __ARGS((char *id, char **buf));
-extern char *tgoto __ARGS((char *cm, int col, int line));
-extern int tputs __ARGS((char *cp, int affcnt, void (*outc)(unsigned int)));
+int tgetent __ARGS((char *tbuf, char *term));
+int tgetflag __ARGS((char *id));
+int tgetnum __ARGS((char *id));
+char *tgetstr __ARGS((char *id, char **buf));
+char *tgoto __ARGS((char *cm, int col, int line));
+int tputs __ARGS((char *cp, int affcnt, void (*outc)(unsigned int)));
 /* vim: set ft=c : */
--- a/src/testdir/test55.in
+++ b/src/testdir/test55.in
@@ -334,6 +334,14 @@ let l = [0, 1, 2, 3]
 :$put =string(split('abc', '\zs'))
 :$put =string(split('abc', '\zs', 1))
 :"
+:" compare recursively linked list and dict
+:let l = [1, 2, 3, 4]
+:let d = {'1': 1, '2': l, '3': 3}
+:let l[1] = d
+:$put =(l == l)
+:$put =(d == d)
+:$put =(l != deepcopy(l))
+:$put =(d != deepcopy(d))
 :endfun
 :call Test(1, 2, [3, 4], {5: 6})  " This may take a while
 :"