changeset 2249:6d3d35ff2c2b vim73

Use full path in undofile(). Updated docs.
author Bram Moolenaar <bram@vim.org>
date Sat, 05 Jun 2010 17:43:32 +0200
parents 63157185aea5
children 1bac28a53fae
files README_os390.txt runtime/doc/eval.txt runtime/doc/helphelp.txt runtime/doc/if_mzsch.txt runtime/doc/options.txt runtime/doc/os_390.txt runtime/doc/pi_netrw.txt runtime/doc/pi_vimball.txt runtime/doc/tags runtime/doc/todo.txt runtime/doc/undo.txt runtime/indent/cmake.vim runtime/syntax/cmake.vim src/eval.c src/memfile.c
diffstat 15 files changed, 200 insertions(+), 141 deletions(-) [+]
line wrap: on
line diff
--- a/README_os390.txt
+++ b/README_os390.txt
@@ -1,51 +1,84 @@
-README_os_390.txt for version 7.3a of Vim: Vi IMproved.
+README_zOS.txt for version 7.3 of Vim: Vi IMproved.
+
+This readme explains how to build Vim on z/OS.  Formerly called OS/390.
+See "README.txt" for general information about Vim.
 
-Welcome to the OS/390 Unix port of VIM.
+Most likley there are not many users out there using Vim on z/OS. So chances
+are good, that some bugs are still undiscovered.
+
+Getting the source to z/OS:
+==========================
 
-ATTENTION: THIS IS AN _ALPHA_ VERSION!!!
-I expect you to know how to handle alpha software!
+First get the source code in one big tar file and ftp it a binary to z/OS. If
+the tar file is initially compressed with gzip (tar.gz) or bzip2 (tar.bz2)
+uncompress it on your PC, as this tools are (most likely) not available on the
+mainframe.
 
-This port was done by Ralf Schandl <schandl@de.ibm.com>.
-This port is not maintained or supported by IBM!!
+To reduce the size of the tar file you might compress it into a zip file. On
+z/OS Unix you might have the command "jar" from java to uncompress a zip. Use:
+        jar xvf <zip file name>
 
+Unpack the tar file on z/OS with 
+        pax -o from=ISO8859-1,to=IBM-1047 -rf vim.tar
 
-For the list of changes see runtime/doc/os_390.txt.
+Note: The Vim source contains a few bitmaps etc which will be destroyed by
+this command, but these files are not needed on zOS (at least not for the
+console version).
 
 
 Compiling:
-----------
+==========
 
-Note: After the file configure was created via autoconf, it had been
-      handedited, to make the test for ICEConnectionNumber work.
-      DO NOT run autoconf again!
+Vim can be compiled with or without GUI support. For 7.3 only the compilation
+without GUI was tested. Below is a section about compiling with X11 but this
+is from an earlier version of Vim.
 
-Without X11:
+Console only:
+-------------
 
 If you build VIM without X11 support, compiling and building is nearly
-straightforward. The only restriction is, that you can't call make from the
-VIM toplevel directory. Change to the src directory first and call make from
-there. Here is a what to do:
+straightforward. 
+
+Change to the vim directory and do:
 
     # Don't use c89!
-    # Make additional symbols visible.
     # Allow intermixing of compiler options and files.
 
     $ export CC=cc
-    $ export CFLAGS=-D_ALL_SOURCE
     $ export _CC_CCMODE=1
-    $./configure --enable-max-features --without-x --enable-gui=no
+    $./configure --with-features=big --without-x --enable-gui=no
     $ cd src
     $ make
+
+      There may be warnings:
+        - include files not found (libc, sys/param.h, ...)
+        - Redeclaration of ... differs from ...
+        -- just ignore them.
+
     $ make test
 
-      Note: Test 28 will be reported as failed. This is because diff can't
-	    compare files containing '\0' characters. Test 11 will fail if you
-	    don't have gzip.
+      This will produce lots of garbage on your screen (including error
+      messages). Don't worry.
+
+      If the test stops at one point in vim (might happen in test 11), just
+      press :q!
+
+      Expected test failures:
+        11: If you don't have gzip installed
+        24: test of backslash sequences in regexp are ASCII dependent
+        42: Multibyte is not supported on z/OS
+        55: ASCII<->EBCDIC sorting
+        57: ASCII<->EBCDIC sorting
+        58: Spell checking is not supported with EBCDIC
+        71: Blowfish encryption doesn't work
 
     $ make install
 
 
 With X11:
+---------
+
+WARNING: This instruction was not tested with Vim 7.3.
 
 There are two ways for building VIM with X11 support. The first way is simple
 and results in a big executable (~13 Mb), the second needs a few additional
@@ -54,8 +87,6 @@ you want Motif.
 
   The easy way:
     $ export CC=cc
-    $ export CFLAGS="-D_ALL_SOURCE -W c,dll"
-    $ export LDFLAGS="-W l,dll"
     $ export _CC_CCMODE=1
     $ ./configure --enable-max-features --enable-gui=motif
     $ cd src
@@ -65,7 +96,7 @@ you want Motif.
 
   The smarter way:
     Make VIM as described above. Then create a file named 'link.sed' with the
-    following content:
+    following content (see src/link.390):
 
 	s/-lXext  *//g
 	s/-lXmu  *//g
@@ -84,47 +115,3 @@ you want Motif.
     See the Makefile and the file link.sh on how link.sed is used.
 
 
-Hint:
------
-Use the online help! (See weaknesses below.)
-
-Example:
-Enter ':help syntax' and then press <TAB> several times, you will switch
-through all help items containing 'syntax'. Press <ENTER> on the one you are
-interested at. Or press <Ctrl-D> and you will get a list of all items printed
-that contain 'syntax'.
-
-The helpfiles contains cross-references. Links are between '|'. Position the
-cursor on them and press <Ctrl-]> to follow this link. Use <Ctrl-T> to jump
-back.
-
-Known weaknesses:
------------------
-
-- You can't call make from the toplevel directory, you have to do a 'cd src'
-  first.  If you do it, make will call configure again. I don't know why and
-  didn't investigate it, there were more important things to do. If you can
-  make it work drop me a note.
-
-- The documentation was not updated for this alpha release. It contains lot of
-  ASCII dependencies, especially in examples.
-
-- Digraphs are dependent on code page 1047. Digraphs are used to enter
-  characters that normally cannot be entered by an ordinary keyboard.
-  See ":help digraphs".
-
-- Using 'ga' to show the code of the character under the cursor shows the
-  correct dec/hex/oct values, but the other informations might be missing or
-  wrong.
-
-- The sed syntax file doesn't work, it is ASCII dependent.
-
-Bugs:
------
-If you find a bug please inform me (schandl@de.ibm.com), don't disturb Bram
-Moolenaar. It's most likely a bug I introduced during porting or some ASCII
-dependency I didn't notice.
-
-Feedback:
----------
-Feedback welcome! Just drop me a note.
--- a/runtime/doc/eval.txt
+++ b/runtime/doc/eval.txt
@@ -1286,7 +1286,7 @@ v:beval_winnr	The number of the window, 
 
 					*v:char* *char-variable*
 v:char		Argument for evaluating 'formatexpr' and used for the typed
-		character when using <expr> in an abbreviation |map-<expr>|.
+		character when using <expr> in an abbreviation |:map-<expr>|.
 
 			*v:charconvert_from* *charconvert_from-variable*
 v:charconvert_from
@@ -5773,6 +5773,8 @@ undofile({name})					*undofile()*
 		with name {name} when writing.  This uses the 'undodir'
 		option, finding directories that exist.  It does not check if
 		the undo file exist.
+		{name} is always expanded to the full path, since that is what
+		is used internally.
 		Useful in combination with |:wundo| and |:rundo|.
 		When compiled without the +persistent_undo option this always
 		returns an empty string.
--- a/runtime/doc/helphelp.txt
+++ b/runtime/doc/helphelp.txt
@@ -273,6 +273,68 @@ Hints for translators:
 ==============================================================================
 3. Writing help files					*help-writing*
 
-TODO
+For ease of use, a Vim help file for a plugin should follow the format of the
+standard Vim help files.  If you are writing a new help file it's best to copy
+one of the existing files and use it as a template.
+
+The first line in a help file should have the following format:
+
+*helpfile_name.txt*	For Vim version 7.3	Last change: 2010 June 4
+
+The first field is a link to the help file name. The second field describes
+the applicable Vim version. The last field specifies the last modification
+date of the file. Each field is separated by a tab.
+
+At the bottom of the help file, place a Vim modeline to set the 'textwidth'
+and 'tabstop' options and the 'filetype' to 'help'.  Never set a global option
+in such a modeline, that can have consequences undesired by whoever reads that
+help.
+
+
+TAGS
+
+To define a help tag, place the name between asterisks (*tag-name*).  The
+tag-name should be different from all the Vim help tag names and ideally
+should begin with the name of the Vim plugin. The tag name is usually right
+aligned on a line.
+
+When referring to an existing help tag and to create a hot-link, place the
+name between two bars (|) eg. |help-writing|.
+
+When referring to a Vim option in the help file, place the option name between
+two single quotes. eg. 'statusline'
+
+
+HIGHLIGHTING
+
+To define a column heading, use a tilde character at the end of the line. This
+will highlight the column heading in a different color. E.g.
+
+Column heading~
+
+To separate sections in a help file, place a series of '=' characters in a
+line starting from the first column. The section separator line is highlighted
+differently.
+
+To quote a block of ex-commands verbatim, place a greater than (>) character
+at the end of the line before the block and a less than (<) character as the
+first non-blank on a line following the block. Any line starting in column 1
+also implicitly stops the block of ex-commands before it.  E.g. >
+    function Example_Func()
+	echo "Example"
+    endfunction
+<
+
+The following are highlighted differently in a Vim help file:
+  - a special key name expressed either in <> notation as in <PageDown>, or
+    as a Ctrl character as in CTRL-X
+  - anything between {braces}, e.g. {lhs} and {rhs}
+
+The word "Note", "Notes" and similar automagically receive distinctive
+highlighting.  So do these:
+	*Todo	something to do
+	*Error	something wrong
+
+You can find the details in $VIMRUNTIME/syntax/help.vim
 
  vim:tw=78:ts=8:ft=help:norl:
--- a/runtime/doc/if_mzsch.txt
+++ b/runtime/doc/if_mzsch.txt
@@ -233,7 +233,7 @@ Windows							    *mzscheme-window*
 ==============================================================================
 5. mzeval() Vim function				    *mzscheme-mzeval*
 
-To facilitate bi-directional interface, you can use |mzeval| function to
+To facilitate bi-directional interface, you can use |mzeval()| function to
 evaluate MzScheme expressions and pass their values to VimL.
 
 ==============================================================================
--- a/runtime/doc/options.txt
+++ b/runtime/doc/options.txt
@@ -7265,10 +7265,11 @@ A jump table for the options with a shor
 		set ul=0
 <	But you can also get Vi compatibility by including the 'u' flag in
 	'cpoptions', and still be able to use CTRL-R to repeat undo.
+	Also see |undo-two-ways|.
 	Set to a negative number for no undo at all: >
 		set ul=-1
 <	This helps when you run out of memory for a single change.
-	Also see |undo-two-ways|.
+	Also see |clear-undo|.
 
 						*'updatecount'* *'uc'*
 'updatecount' 'uc'	number	(default: 200)
--- a/runtime/doc/os_390.txt
+++ b/runtime/doc/os_390.txt
@@ -7,7 +7,7 @@
 This file contains the particulars for the z/OS UNIX version of Vim.
 
 1. ASCII/EBCDIC dependent scripts	|zOS-has-ebcdic|
-2. Putty and Colors                     |zOS-Putty|
+2. Putty and Colors                     |zOS-PuTTY|
 3. Motif Problems			|zOS-Motif|
 4. Bugs					|zOS-Bugs|
 5. Limitations     			|zOS-limitations|
--- a/runtime/doc/pi_netrw.txt
+++ b/runtime/doc/pi_netrw.txt
@@ -589,7 +589,7 @@ password.
 PASSWORD						*netrw-passwd*
 
 The script attempts to get passwords for ftp invisibly using |inputsecret()|,
-a built-in Vim function.  See |netrw-uidpass| for how to change the password
+a built-in Vim function.  See |NetUserPass()| for how to change the password
 after one has set it.
 
 Unfortunately there doesn't appear to be a way for netrw to feed a password to
@@ -803,7 +803,7 @@ temporary file:
                                               get filename tempfile >
   ---------------------------------------------------------------------
 <
-The |g:netrw_ftpmode| and |g:netrw_extracmd| are optional.
+The |g:netrw_ftpmode| and g:netrw_extracmd are optional.
 
 Netrw then executes the lines above by use of a filter:
 >
--- a/runtime/doc/pi_vimball.txt
+++ b/runtime/doc/pi_vimball.txt
@@ -197,7 +197,7 @@ 4. Vimball History					*vimball-history*
 	     Apr 18, 2008 * RmVimball command is now protected by saving and
 	                    restoring settings -- in particular, acd was
 			    causing problems as reported by Zhang Shuhan
-	24 : Nov 15, 2007 * |g:vimball_path_escape| used by s:Path() to
+	24 : Nov 15, 2007 * g:vimball_path_escape used by s:Path() to
 	                    prevent certain characters from causing trouble
 	22 : Mar 21, 2007 * uses setlocal instead of set during BufEnter
 	21 : Nov 27, 2006 * (tnx to Bill McCarthy) vimball had a header
--- a/runtime/doc/tags
+++ b/runtime/doc/tags
@@ -4293,14 +4293,11 @@ OS/2	os_os2.txt	/*OS\/2*
 OS2	os_os2.txt	/*OS2*
 OS390	os_390.txt	/*OS390*
 OS390-Motif	os_390.txt	/*OS390-Motif*
+OS390-PuTTY	os_390.txt	/*OS390-PuTTY*
 OS390-bugs	os_390.txt	/*OS390-bugs*
-OS390-building	os_390.txt	/*OS390-building*
-OS390-changes	os_390.txt	/*OS390-changes*
-OS390-feedback	os_390.txt	/*OS390-feedback*
 OS390-has-ebcdic	os_390.txt	/*OS390-has-ebcdic*
+OS390-limitations	os_390.txt	/*OS390-limitations*
 OS390-open-source	os_390.txt	/*OS390-open-source*
-OS390-weaknesses	os_390.txt	/*OS390-weaknesses*
-OS390-xterm	os_390.txt	/*OS390-xterm*
 OffTheSpot	mbyte.txt	/*OffTheSpot*
 OnTheSpot	mbyte.txt	/*OnTheSpot*
 Operator-pending	intro.txt	/*Operator-pending*
@@ -4890,6 +4887,7 @@ chill.vim	syntax.txt	/*chill.vim*
 cindent()	eval.txt	/*cindent()*
 cinkeys-format	indent.txt	/*cinkeys-format*
 cinoptions-values	indent.txt	/*cinoptions-values*
+clear-undo	undo.txt	/*clear-undo*
 clearmatches()	eval.txt	/*clearmatches()*
 client-server	remote.txt	/*client-server*
 clientserver	remote.txt	/*clientserver*
@@ -5984,6 +5982,7 @@ help-translated	helphelp.txt	/*help-tran
 help-writing	helphelp.txt	/*help-writing*
 help-xterm-window	helphelp.txt	/*help-xterm-window*
 help.txt	help.txt	/*help.txt*
+helpfile_name.txt	helphelp.txt	/*helpfile_name.txt*
 helphelp	helphelp.txt	/*helphelp*
 helphelp.txt	helphelp.txt	/*helphelp.txt*
 hex-editing	tips.txt	/*hex-editing*
@@ -8356,13 +8355,10 @@ zO	fold.txt	/*zO*
 zOS	os_390.txt	/*zOS*
 zOS-Bugs	os_390.txt	/*zOS-Bugs*
 zOS-Motif	os_390.txt	/*zOS-Motif*
-zOS-building	os_390.txt	/*zOS-building*
-zOS-changes	os_390.txt	/*zOS-changes*
-zOS-feedback	os_390.txt	/*zOS-feedback*
+zOS-PuTTY	os_390.txt	/*zOS-PuTTY*
 zOS-has-ebcdic	os_390.txt	/*zOS-has-ebcdic*
+zOS-limitations	os_390.txt	/*zOS-limitations*
 zOS-open-source	os_390.txt	/*zOS-open-source*
-zOS-weaknesses	os_390.txt	/*zOS-weaknesses*
-zOS-xterm	os_390.txt	/*zOS-xterm*
 zR	fold.txt	/*zR*
 zW	spell.txt	/*zW*
 zX	fold.txt	/*zX*
--- a/runtime/doc/todo.txt
+++ b/runtime/doc/todo.txt
@@ -1087,11 +1087,13 @@ Vim 7.3:
    Ron's version: http://dev.ronware.org/p/vim/finfo?name=gvim.nsi
 - Also crypt the swap file, each block separately.  Change mf_write() and
     mf_read().
-    - How to get b_p_key to these functions?   Store it in mfp?
+    - How to get b_p_key to these functions?  -> Store buf_T pointer in mfp.
     - Generate a seed for the swapfile, put it in block 0.
     - For each block, use password + seed + byte offset to crypt/decrypt.
     - When changing the password need to read back with the old password and
       write again with the new one.
+    - Fill the gaps in the block with random bytes, otherwise it's easy to
+      check for correct password by finding NUL bytes.
     - Verify recovery works.
 - Update for crypt code to use salt. (Mohsin May 30)
     Make the strengthen_key value configurable and store it in the header?
@@ -1099,6 +1101,10 @@ Vim 7.3:
 - undofile: keep markers where the file was written/read, so that it's easy to
   go back to a saved version of the file:  ":earlier 1f" (f for file)?
   Also add ":earlier 1d" (d for day).
+  Something like changenr() to see the "file saved" marker?
+  Show "file saved" marker in :undolist
+  Function to get undo tree: undotree().  List of lists.  Each entry is a
+  dictionary: {'nr': 2, 'time': 1234, 'saved': 1}
 - Create a helphelp.txt file, move instructions there to write help files from
   various.txt and list by Tony.
 Patches to include:
--- a/runtime/doc/undo.txt
+++ b/runtime/doc/undo.txt
@@ -314,6 +314,16 @@ The number of changes that are remembere
 If it is zero, the Vi-compatible way is always used.  If it is negative no
 undo is possible.  Use this if you are running out of memory.
 
+							*clear-undo*
+When you set 'undolevels' to -1 the undo information is not immediately
+cleared, this happens at the next change.  To force clearing the undo
+information you can use these commands: >
+	:let old_undolevels = &undolevels
+	:set undolevels=-1
+	:exe "normal a \<BS>\<Esc>"
+	:let &undolevels = old_undolevels
+	:unlet old_undolevels
+
 Marks for the buffer ('a to 'z) are also saved and restored, together with the
 text.  {Vi does this a little bit different}
 
--- a/runtime/indent/cmake.vim
+++ b/runtime/indent/cmake.vim
@@ -1,19 +1,11 @@
-" =============================================================================
-" 
-"   Program:   CMake - Cross-Platform Makefile Generator
-"   Module:    $RCSfile: cmake-indent.vim,v $
-"   Language:  VIM
-"   Date:      $Date: 2006/09/23 21:09:08 $
-"   Version:   $Revision: 1.7 $
-" 
-" =============================================================================
-
 " Vim indent file
+" Program:      CMake - Cross-Platform Makefile Generator
+" Module:       $RCSfile: cmake-indent.vim,v $
 " Language:     CMake (ft=cmake)
 " Author:       Andy Cedilnik <andy.cedilnik@kitware.com>
-" Maintainer:   Andy Cedilnik <andy.cedilnik@kitware.com>
-" Last Change:  $Date: 2006/09/23 21:09:08 $
-" Version:      $Revision: 1.7 $
+" Maintainer:   Karthik Krishnan <karthik.krishnan@kitware.com>
+" Last Change:  $Date: 2008-01-16 16:53:53 $
+" Version:      $Revision: 1.9 $
 "
 " Licence:      The CMake license applies to this file. See
 "               http://www.cmake.org/HTML/Copyright.html
@@ -25,6 +17,7 @@ endif
 let b:did_indent = 1
 
 setlocal indentexpr=CMakeGetIndent(v:lnum)
+setlocal indentkeys+==ENDIF(,ENDFOREACH(,ENDMACRO(,ELSE(,ELSEIF(,ENDWHILE(
 
 " Only define the function once.
 if exists("*CMakeGetIndent")
@@ -65,8 +58,8 @@ fun! CMakeGetIndent(lnum)
                     \            ')\s*' .
                     \            '\(' . cmake_regex_comment . '\)\?$'
 
-  let cmake_indent_begin_regex = '^\s*\(IF\|MACRO\|FOREACH\|ELSE\|ELSEIF\|WHILE\)\s*('
-  let cmake_indent_end_regex = '^\s*\(ENDIF\|ENDFOREACH\|ENDMACRO\|ELSE\|ELSEIF\|ENDWHILE\)\s*('
+  let cmake_indent_begin_regex = '^\s*\(IF\|MACRO\|FOREACH\|ELSE\|ELSEIF\|WHILE\|FUNCTION\)\s*('
+  let cmake_indent_end_regex = '^\s*\(ENDIF\|ENDFOREACH\|ENDMACRO\|ELSE\|ELSEIF\|ENDWHILE\|ENDFUNCTION\)\s*('
 
   " Add
   if previous_line =~? cmake_indent_comment_line " Handle comments
--- a/runtime/syntax/cmake.vim
+++ b/runtime/syntax/cmake.vim
@@ -1,19 +1,11 @@
-" =============================================================================
-"
-"   Program:   CMake - Cross-Platform Makefile Generator
-"   Module:    $RCSfile: cmake-syntax.vim,v $
-"   Language:  VIM
-"   Date:      $Date: 2006/09/23 21:09:08 $
-"   Version:   $Revision: 1.6 $
-"
-" =============================================================================
-
 " Vim syntax file
+" Program:      CMake - Cross-Platform Makefile Generator
+" Module:       $RCSfile: cmake-syntax.vim,v $
 " Language:     CMake
 " Author:       Andy Cedilnik <andy.cedilnik@kitware.com>
-" Maintainer:   Andy Cedilnik <andy.cedilnik@kitware.com>
-" Last Change:  $Date: 2006/09/23 21:09:08 $
-" Version:      $Revision: 1.6 $
+" Maintainer:   Karthik Krishnan <karthik.krishnan@kitware.com>
+" Last Change:  $Date: 2008-08-25 14:31:28 $
+" Version:      $Revision: 1.10 $
 "
 " Licence:      The CMake license applies to this file. See
 "               http://www.cmake.org/HTML/Copyright.html
@@ -28,31 +20,33 @@ elseif exists("b:current_syntax")
 endif
 
 syn case ignore
-syn match cmakeComment /#.*$/
-syn region cmakeRegistry start=/\[/ end=/\]/ skip=/\\[\[\]]/
-            \ contained
-syn match cmakeArgument /[^()"]+/
-            \ contained
-syn match cmakeVariableValue /\${[^}]*}/
-            \ contained oneline
-syn match cmakeEnvironment /\$ENV{.*}/
-            \ contained
+syn match cmakeEscaped /\(\\\\\|\\"\|\\n\|\\t\)/ contained
+syn region cmakeComment start="#" end="$" contains=cmakeTodo
+syn region cmakeRegistry start=/\[/ end=/]/
+            \ contained oneline contains=CONTAINED,cmakeTodo,cmakeEscaped
+syn region cmakeVariableValue start=/\${/ end=/}/
+            \ contained oneline contains=CONTAINED,cmakeTodo
+syn region cmakeEnvironment start=/\$ENV{/ end=/}/
+            \ contained oneline contains=CONTAINED,cmakeTodo
+syn region cmakeString start=/"/ end=/"/ 
+            \ contains=CONTAINED,cmakeTodo,cmakeOperators
+syn region cmakeArguments start=/(/ end=/)/ 
+            \ contains=ALLBUT,cmakeArguments,cmakeTodo
 syn keyword cmakeSystemVariables
-            \ WIN32 UNIX APPLE CYGWIN BORLAND MINGW MSVC MSVC_IDE MSVC60 MSVC70 MSVC71 MSVC80
+            \ WIN32 UNIX APPLE CYGWIN BORLAND MINGW MSVC MSVC_IDE MSVC60 MSVC70 MSVC71 MSVC80 MSVC90
 syn keyword cmakeOperators
-            \ AND BOOL CACHE COMMAND DEFINED DOC EQUAL EXISTS FALSE GREATER INTERNAL LESS MATCHES NAME NAMES NAME_WE NOT OFF ON OR PATH PATHS PROGRAM STREQUAL STRGREATER STRING STRLESS TRUE
-"            \ contained
-syn region cmakeString start=/"/ end=/"/ skip=/\\"/
-            \ contains=ALLBUT,cmakeString
-syn region cmakeArguments start=/\s*(/ end=/)/
-           \ contains=ALLBUT,cmakeArguments
+            \ ABSOLUTE AND BOOL CACHE COMMAND DEFINED DOC EQUAL EXISTS EXT FALSE GREATER INTERNAL LESS MATCHES NAME NAMES NAME_WE NOT OFF ON OR PATH PATHS PROGRAM STREQUAL STRGREATER STRING STRLESS TRUE
+            \ contained
 syn keyword cmakeDeprecated ABSTRACT_FILES BUILD_NAME SOURCE_FILES SOURCE_FILES_REMOVE VTK_MAKE_INSTANTIATOR VTK_WRAP_JAVA VTK_WRAP_PYTHON VTK_WRAP_TCL WRAP_EXCLUDE_FILES
-           \ nextgroup=cmakeArgument
-syn keyword cmakeStatement
-           \ ADD_CUSTOM_COMMAND ADD_CUSTOM_TARGET ADD_DEFINITIONS ADD_DEPENDENCIES ADD_EXECUTABLE ADD_LIBRARY ADD_SUBDIRECTORY ADD_TEST AUX_SOURCE_DIRECTORY BUILD_COMMAND BUILD_NAME CMAKE_MINIMUM_REQUIRED CONFIGURE_FILE CREATE_TEST_SOURCELIST ELSE ELSEIF ENABLE_LANGUAGE ENABLE_TESTING ENDFOREACH ENDIF ENDWHILE EXEC_PROGRAM EXECUTE_PROCESS EXPORT_LIBRARY_DEPENDENCIES FILE FIND_FILE FIND_LIBRARY FIND_PACKAGE FIND_PATH FIND_PROGRAM FLTK_WRAP_UI FOREACH GET_CMAKE_PROPERTY GET_DIRECTORY_PROPERTY GET_FILENAME_COMPONENT GET_SOURCE_FILE_PROPERTY GET_TARGET_PROPERTY GET_TEST_PROPERTY IF INCLUDE INCLUDE_DIRECTORIES INCLUDE_EXTERNAL_MSPROJECT INCLUDE_REGULAR_EXPRESSION INSTALL INSTALL_FILES INSTALL_PROGRAMS INSTALL_TARGETS LINK_DIRECTORIES LINK_LIBRARIES LIST LOAD_CACHE LOAD_COMMAND MACRO MAKE_DIRECTORY MARK_AS_ADVANCED MATH MESSAGE OPTION OUTPUT_REQUIRED_FILES PROJECT QT_WRAP_CPP QT_WRAP_UI REMOVE REMOVE_DEFINITIONS SEPARATE_ARGUMENTS SET SET_DIRECTORY_PROPERTIES SET_SOURCE_FILES_PROPERTIES SET_TARGET_PROPERTIES SET_TESTS_PROPERTIES SITE_NAME SOURCE_GROUP STRING SUBDIR_DEPENDS SUBDIRS TARGET_LINK_LIBRARIES TRY_COMPILE TRY_RUN USE_MANGLED_MESA UTILITY_SOURCE VARIABLE_REQUIRES VTK_MAKE_INSTANTIATOR VTK_WRAP_JAVA VTK_WRAP_PYTHON VTK_WRAP_TCL WHILE WRITE_FILE ENDMACRO
-           \ nextgroup=cmakeArgumnts
+           \ nextgroup=cmakeArguments
 
-"syn match cmakeMacro /^\s*[A-Z_]\+/ nextgroup=cmakeArgumnts
+" The keywords are generated as:  cmake --help-command-list | tr "\n" " "
+syn keyword cmakeStatement 
+      \ ADD_CUSTOM_COMMAND ADD_CUSTOM_TARGET ADD_DEFINITIONS ADD_DEPENDENCIES ADD_EXECUTABLE ADD_LIBRARY ADD_SUBDIRECTORY ADD_TEST AUX_SOURCE_DIRECTORY BUILD_COMMAND BUILD_NAME CMAKE_MINIMUM_REQUIRED CONFIGURE_FILE CREATE_TEST_SOURCELIST ELSE ELSEIF ENABLE_LANGUAGE ENABLE_TESTING ENDFOREACH ENDFUNCTION ENDIF ENDMACRO ENDWHILE EXEC_PROGRAM EXECUTE_PROCESS EXPORT_LIBRARY_DEPENDENCIES FILE FIND_FILE FIND_LIBRARY FIND_PACKAGE FIND_PATH FIND_PROGRAM FLTK_WRAP_UI FOREACH FUNCTION GET_CMAKE_PROPERTY GET_DIRECTORY_PROPERTY GET_FILENAME_COMPONENT GET_SOURCE_FILE_PROPERTY GET_TARGET_PROPERTY GET_TEST_PROPERTY IF INCLUDE INCLUDE_DIRECTORIES INCLUDE_EXTERNAL_MSPROJECT INCLUDE_REGULAR_EXPRESSION INSTALL INSTALL_FILES INSTALL_PROGRAMS INSTALL_TARGETS LINK_DIRECTORIES LINK_LIBRARIES LIST LOAD_CACHE LOAD_COMMAND MACRO MAKE_DIRECTORY MARK_AS_ADVANCED MATH MESSAGE OPTION OUTPUT_REQUIRED_FILES PROJECT QT_WRAP_CPP QT_WRAP_UI REMOVE REMOVE_DEFINITIONS SEPARATE_ARGUMENTS SET SET_DIRECTORY_PROPERTIES SET_SOURCE_FILES_PROPERTIES SET_TARGET_PROPERTIES SET_TESTS_PROPERTIES SITE_NAME SOURCE_GROUP STRING SUBDIR_DEPENDS SUBDIRS TARGET_LINK_LIBRARIES TRY_COMPILE TRY_RUN UNSET USE_MANGLED_MESA UTILITY_SOURCE VARIABLE_REQUIRES VTK_MAKE_INSTANTIATOR VTK_WRAP_JAVA VTK_WRAP_PYTHON VTK_WRAP_TCL WHILE WRITE_FILE
+            \ nextgroup=cmakeArguments
+syn keyword cmakeTodo 
+            \ TODO FIXME XXX 
+            \ contained
 
 " Define the default highlighting.
 " For version 5.7 and earlier: only when not done already
@@ -75,7 +69,9 @@ if version >= 508 || !exists("did_cmake_
   HiLink cmakeEnvironment Special
   HiLink cmakeOperators Operator
   HiLink cmakeMacro PreProc
-  HiLink cmakeError	Error
+  HiLink cmakeError Error
+  HiLink cmakeTodo TODO
+  HiLink cmakeEscaped Special
 
   delcommand HiLink
 endif
--- a/src/eval.c
+++ b/src/eval.c
@@ -17639,8 +17639,13 @@ f_undofile(argvars, rettv)
 {
     rettv->v_type = VAR_STRING;
 #ifdef FEAT_PERSISTENT_UNDO
-    rettv->vval.v_string = u_get_undo_file_name(get_tv_string(&argvars[0]),
-								       FALSE);
+    {
+	char_u *ffname = FullName_save(get_tv_string(&argvars[0]), FALSE);
+
+	if (ffname != NULL)
+	    rettv->vval.v_string = u_get_undo_file_name(ffname, FALSE);
+	vim_free(ffname);
+    }
 #else
     rettv->vval.v_string = NULL;
 #endif
--- a/src/memfile.c
+++ b/src/memfile.c
@@ -234,7 +234,7 @@ mf_open_file(mfp, fname)
 }
 
 /*
- * close a memory file and delete the associated file if 'del_file' is TRUE
+ * Close a memory file and delete the associated file if 'del_file' is TRUE.
  */
     void
 mf_close(mfp, del_file)
@@ -415,7 +415,8 @@ mf_new(mfp, negative, page_count)
      * Init the data to all zero, to avoid reading uninitialized data.
      * This also avoids that the passwd file ends up in the swap file!
      */
-    (void)vim_memset((char *)(hp->bh_data), 0, (size_t)mfp->mf_page_size);
+    (void)vim_memset((char *)(hp->bh_data), 0,
+				      (size_t)mfp->mf_page_size * page_count);
 
     return hp;
 }