updated for version 7.0119
diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt
index 6168b01..d11b77d 100644
--- a/runtime/doc/eval.txt
+++ b/runtime/doc/eval.txt
@@ -1,4 +1,4 @@
-*eval.txt*      For Vim version 7.0aa.  Last change: 2005 Jul 28
+*eval.txt*      For Vim version 7.0aa.  Last change: 2005 Jul 29
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -1585,6 +1585,7 @@
 nextnonblank( {lnum})		Number	line nr of non-blank line >= {lnum}
 nr2char( {expr})		String	single char with ASCII value {expr}
 prevnonblank( {lnum})		Number	line nr of non-blank line <= {lnum}
+printf( {fmt}, {expr1}...)	String  format text
 range( {expr} [, {max} [, {stride}]])
 				List	items from {expr} to {max}
 readfile({fname} [, {binary} [, {max}]])
@@ -3337,6 +3338,127 @@
 		characters.  nr2char(0) is a real NUL and terminates the
 		string, thus results in an empty string.
 
+printf({fmt}, {expr1} ...)				*printf()*
+		Return a String with {fmt}, where "%" items are replaced by
+		the formatted form of their respective arguments.  Example: >
+			:echo printf("%4d: E%d %.30s", lnum, err, text)
+<		May result in:
+			  99: E42 asdfasdfasdfasdfasdfasdfasdfas ~
+
+		Often used items are:
+		  %s   	string
+		  %6s	string right-aligned in 6 characters
+		  %c    character
+		  %d    decimal number
+		  %5d   decimal number padded with spaces to 5 characters
+		  %x    hex number
+		  %04x  hex number padded with zeros to at least 4 characters
+		  %X    hex number using upper case letters
+		  %o    octal number
+		  %%    the % character
+
+		Conversion specifications start with '%' and end with the
+		conversion type.  All other characters are copied unchanged to
+		the result.
+
+		The "%" starts a conversion specification.  The following
+		arguments appear in sequence.  Overview:
+
+			%  flags  min-field-width  .precision  type
+
+	        -   Zero or more of the following flags:
+                
+		    #	      The value should be converted to an "alternate
+			      form".  For c, d, and s conversions, this option
+			      has no effect.  For o conversions, the precision
+			      of the number is increased to force the first
+			      character of the output string to a zero (except
+			      if a zero value is printed with an explicit
+			      precision of zero).
+			      For x and X conversions, a non-zero result has
+			      the string "0x" (or "0X" for X conversions)
+			      prepended to it.
+                
+		    0 (zero)  Zero padding.  For all conversions the converted
+			      value is padded on the left with zeros rather
+			      than blanks.  If a precision is given with a
+			      numeric conversion (d, o, x, and X), the 0 flag
+			      is ignored.
+                
+		    -	      A negative field width flag; the converted value
+			      is to be left adjusted on the field boundary.
+			      The converted value is padded on the right with
+			      blanks, rather than on the left with blanks or
+			      zeros.  A - overrides a 0 if both are given.
+                
+		    ' ' (space)  A blank should be left before a positive
+			      number produced by a signed conversion (d).
+                
+		    +	      A sign must always be placed before a number
+			      produced by a signed conversion.  A + overrides
+			      a space if both are used.
+                
+		-   An optional decimal digit string specifying a minimum
+		    field width.  If the converted value has fewer characters
+		    than the field width, it will be padded with spaces on the
+		    left (or right, if the left-adjustment flag has been
+		    given) to fill out the field width.
+                
+		-   An optional precision, in the form of a period '.'
+		    followed by an optional digit string.  If the digit string
+		    is omitted, the precision is taken as zero.  This gives
+		    the minimum number of digits to appear for d, o, x, and X
+		    conversions, or the maximum number of characters to be
+		    printed from a string for s conversions.
+                
+		-   A character that specifies the type of conversion to be
+		    applied, see below.
+                
+		A field width or precision, or both, may be indicated by an
+		asterisk '*' instead of a digit string.  In this case, a
+		Number argument supplies the field width or precision.  A
+		negative field width is treated as a left adjustment flag
+		followed by a positive field width; a negative precision is
+		treated as though it were missing.  Example: >
+			:echo printf("%d: %.*s", nr, columns, line)
+<		This limits the length of the text used from "line" to
+		"columns" bytes.
+
+	        The conversion specifiers and their meanings are:
+                
+		doxX    The Number argument is converted to signed decimal
+			(d), unsigned octal (o), or unsigned hexadecimal (x
+			and X) notation.  The letters "abcdef" are used for
+			x conversions; the letters "ABCDEF" are used for X
+			conversions.  The precision, if any, gives the minimum
+			number of digits that must appear; if the converted
+			value requires fewer digits, it is padded on the left
+			with zeros.
+                
+		c	The Number argument is converted to a byte, and
+			the resulting character is written.
+                
+		s	The String argument is used.  If a precision is
+			specified, no more bytes than the number specified are
+			written.
+                
+		%	A '%' is written.  No argument is converted.  The
+			complete conversion specification is "%%".
+                
+		Each argument can be Number or String and is converted
+		automatically to fit the conversion specifier.
+
+		In no case does a non-existent or small field width cause
+		truncation of a numeric field; if the result of a conversion
+		is wider than the field width, the field is expanded to
+		contain the conversion result.
+
+							*E766* *767*
+		The number of {exprN} arguments must exactly match the number
+		of "%" items.  If there are not sufficient or too many
+		arguments an error is given.
+
+
 prevnonblank({lnum})					*prevnonblank()*
 		Return the line number of the first line at or above {lnum}
 		that is not blank.  Example: >
diff --git a/runtime/doc/index.txt b/runtime/doc/index.txt
index 6146ee3..b7be0b8 100644
--- a/runtime/doc/index.txt
+++ b/runtime/doc/index.txt
@@ -1,4 +1,4 @@
-*index.txt*     For Vim version 7.0aa.  Last change: 2005 Jul 28
+*index.txt*     For Vim version 7.0aa.  Last change: 2005 Jul 29
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -150,6 +150,7 @@
 |i_CTRL-X_CTRL-K|	CTRL-X CTRL-K	complete identifiers from dictionary
 |i_CTRL-X_CTRL-L|	CTRL-X CTRL-L	complete whole lines
 |i_CTRL-X_CTRL-N|	CTRL-X CTRL-N	next completion
+|i_CTRL-X_CTRL-O|	CTRL-X CTRL-O	occult completion
 |i_CTRL-X_CTRL-P|	CTRL-X CTRL-P	previous completion
 |i_CTRL-X_CTRL-T|	CTRL-X CTRL-T	complete identifiers from thesaurus
 |i_CTRL-X_CTRL-Y|	CTRL-X CTRL-Y	scroll down
diff --git a/runtime/doc/insert.txt b/runtime/doc/insert.txt
index 95ef238..8389fe5 100644
--- a/runtime/doc/insert.txt
+++ b/runtime/doc/insert.txt
@@ -1,4 +1,4 @@
-*insert.txt*    For Vim version 7.0aa.  Last change: 2005 Jul 26
+*insert.txt*    For Vim version 7.0aa.  Last change: 2005 Jul 29
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -547,7 +547,7 @@
 ==============================================================================
 7. Insert mode completion				*ins-completion*
 
-In Insert and Replace modes, there are several commands to complete part of a
+In Insert and Replace mode, there are several commands to complete part of a
 keyword or line that has been typed.  This is useful if you are using
 complicated keywords (e.g., function names with capitals and underscores).
 
@@ -565,7 +565,9 @@
 7. file names						|i_CTRL-X_CTRL-F|
 8. definitions or macros				|i_CTRL-X_CTRL-D|
 9. Vim command-line					|i_CTRL-X_CTRL-V|
-10. keywords in 'complete'				|i_CTRL-N|
+10. User defined completion				|i_CTRL-X_CTRL-U|
+11. Occult completion					|i_CTRL-X_CTRL-O|
+12. keywords in 'complete'				|i_CTRL-N|
 
 All these (except 2) are done in CTRL-X mode.  This is a sub-mode of Insert
 and Replace modes.  You enter CTRL-X mode by typing CTRL-X and one of the
@@ -839,7 +841,8 @@
 Completing Vim commands					*compl-vim*
 
 Completion is context-sensitive.  It works like on the Command-line.  It
-completes an Ex command as well as its arguments.
+completes an Ex command as well as its arguments.  This is useful when writing
+a Vim script.
 
 							*i_CTRL-X_CTRL-V*
 CTRL-X CTRL-V		Guess what kind of item is in front of the cursor and
@@ -858,7 +861,7 @@
 			completion, for example: >
 				:imap <Tab> <C-X><C-V>
 
-User defined completing					*compl-function*
+User defined completion					*compl-function*
 
 Completion is done by a function that can be defined by the user with the
 'completefunc' option.  See the option for how the function is called and an
@@ -875,6 +878,21 @@
 			previous one.
 
 
+Occult completion					*compl-occult*
+
+Completion is done by a supernatural being.
+
+							*i_CTRL-X_CTRL-O*
+CTRL-X CTRL-O		Guess what kind of item is in front of the cursor and
+			find the first match for it.
+	CTRL-O	or
+	CTRL-N		Use the next match.  This match replaces the previous
+			one.
+
+	CTRL-P		Use the previous match.  This match replaces the
+			previous one.
+
+
 Completing keywords from different sources		*compl-generic*
 
 							*i_CTRL-N*
diff --git a/runtime/doc/options.txt b/runtime/doc/options.txt
index 88e440a..6c658b0 100644
--- a/runtime/doc/options.txt
+++ b/runtime/doc/options.txt
@@ -1,4 +1,4 @@
-*options.txt*	For Vim version 7.0aa.  Last change: 2005 Jul 28
+*options.txt*	For Vim version 7.0aa.  Last change: 2005 Jul 29
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -1585,7 +1585,7 @@
 			local to buffer
 			{not in Vi}
 	This option specifies a completion function to be used for CTRL-X
-	CTRL-X.  The function will be invoked with four arguments:
+	CTRL-U.  The function will be invoked with four arguments:
 	   a:line	the text of the current line
 	   a:base	the text with which matches should match
 	   a:col        column in a:line where the cursor is, first column is
@@ -2282,8 +2282,6 @@
 	|viminfo-file|.  And Vim expects the terminal to use utf-8 too.  Thus
 	setting 'encoding' to one of these values instead of utf-8 only has
 	effect for encoding used for files when 'fileencoding' is empty.
-	"utf-16" is NOT supported (and probably never will be, since it's such
-	an ugly encoding). *utf-16*
 
 	When 'encoding' is set to a Unicode encoding, and 'fileencodings' was
 	not set yet, the default for 'fileencodings' is changed.
diff --git a/runtime/doc/syntax.txt b/runtime/doc/syntax.txt
index 324d452..dfe93ca 100644
--- a/runtime/doc/syntax.txt
+++ b/runtime/doc/syntax.txt
@@ -1,4 +1,4 @@
-*syntax.txt*	For Vim version 7.0aa.  Last change: 2005 Jul 28
+*syntax.txt*	For Vim version 7.0aa.  Last change: 2005 Jul 29
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -3648,7 +3648,8 @@
            Last set from /home/mool/vim/vim7/runtime/syntax/syncolor.vim ~
 
 For details about when this message is given and when it's valid see
-|:set-verbose|.
+|:set-verbose|.  When ":hi clear" is used then the script where this command
+is used will be mentioned for the default values.
 
 					*highlight-args* *E416* *E417* *E423*
 There are three types of terminals for highlighting:
diff --git a/runtime/doc/tags b/runtime/doc/tags
index cce8395..ac15db6 100644
--- a/runtime/doc/tags
+++ b/runtime/doc/tags
@@ -1596,6 +1596,7 @@
 45.4	usr_45.txt	/*45.4*
 45.5	usr_45.txt	/*45.5*
 755	spell.txt	/*755*
+767	eval.txt	/*767*
 90.1	usr_90.txt	/*90.1*
 90.2	usr_90.txt	/*90.2*
 90.3	usr_90.txt	/*90.3*
@@ -3734,6 +3735,7 @@
 E763	spell.txt	/*E763*
 E764	spell.txt	/*E764*
 E765	options.txt	/*E765*
+E766	eval.txt	/*E766*
 E77	message.txt	/*E77*
 E78	motion.txt	/*E78*
 E79	message.txt	/*E79*
@@ -4449,6 +4451,7 @@
 compl-function	insert.txt	/*compl-function*
 compl-generic	insert.txt	/*compl-generic*
 compl-keyword	insert.txt	/*compl-keyword*
+compl-occult	insert.txt	/*compl-occult*
 compl-tag	insert.txt	/*compl-tag*
 compl-vim	insert.txt	/*compl-vim*
 compl-whole-line	insert.txt	/*compl-whole-line*
@@ -5334,6 +5337,7 @@
 i_CTRL-X_CTRL-K	insert.txt	/*i_CTRL-X_CTRL-K*
 i_CTRL-X_CTRL-L	insert.txt	/*i_CTRL-X_CTRL-L*
 i_CTRL-X_CTRL-N	insert.txt	/*i_CTRL-X_CTRL-N*
+i_CTRL-X_CTRL-O	insert.txt	/*i_CTRL-X_CTRL-O*
 i_CTRL-X_CTRL-P	insert.txt	/*i_CTRL-X_CTRL-P*
 i_CTRL-X_CTRL-T	insert.txt	/*i_CTRL-X_CTRL-T*
 i_CTRL-X_CTRL-U	insert.txt	/*i_CTRL-X_CTRL-U*
@@ -5996,6 +6000,7 @@
 print-options	print.txt	/*print-options*
 print.txt	print.txt	/*print.txt*
 printcap-syntax	syntax.txt	/*printcap-syntax*
+printf()	eval.txt	/*printf()*
 printing	print.txt	/*printing*
 printing-formfeed	print.txt	/*printing-formfeed*
 profile	repeat.txt	/*profile*
diff --git a/runtime/doc/todo.txt b/runtime/doc/todo.txt
index e680568..656bb18 100644
--- a/runtime/doc/todo.txt
+++ b/runtime/doc/todo.txt
@@ -1,4 +1,4 @@
-*todo.txt*      For Vim version 7.0aa.  Last change: 2005 Jul 28
+*todo.txt*      For Vim version 7.0aa.  Last change: 2005 Jul 29
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -30,8 +30,6 @@
 							*known-bugs*
 -------------------- Known bugs and current work -----------------------
 
-Is it simple to let ":verbose hi mailSubject" mention where it was last set?
-
 Mac unicode patch (Da Woon Jung):
 - selecting proportional font breaks display
 - UTF-8 text causes display problems.  Font replacement causes this.
@@ -55,10 +53,31 @@
     the screen.
 -   mblen(NULL, 0) also in Vim 6.3?
 
+Implement printf("blah %d: %s", nr, str)?  Use vim_snprintf code.
 
 PLANNED FOR VERSION 7.0:
 
--   "INTELLISENSE".  First cleanup the Insert-mode completion.
+-   Occult completion: Understands the programming language and finds matches
+    that make sense.  Esp. members of classes/structs.
+
+    It's not much different from other Insert-mode completion, use the same
+    mechanism.  Use CTRL-X CTRL-O.
+    
+    Separately develop the completion logic and the UI.  When adding UI stuff
+    make it work for all completion methods.
+
+    First cleanup the Insert-mode completion.
+
+    UI:
+    - Use 'wildmenu' kind of thing.
+    - Put the list of choices right under the place where they would be
+      inserted.
+
+    Completion logic:
+	Use 'coupler' option to list items that connect words.  For C: ".,->".
+	In function arguments suggest variables of expected type.
+
+	Ideas from others:
 	http://www.vim.org/scripts/script.php?script_id=747
 	www.vim.org script 1213 (Java Development Environment) (Fuchuan Wang)
 	http://sourceforge.net/projects/insenvim
@@ -67,24 +86,22 @@
 	    and http://stud4.tuwien.ac.at/~e0125672/icomplete/
 	http://cedet.sourceforge.net/intellisense.shtml (for Emacs)
 	Ivan Villanueva has something for Java.
-	Ideas from Emads:
-	    http://www.xref-tech.com/xrefactory/more_c_completion.html
-    Can't call it Intellisense, it is a trademark by Microsoft.
-    Ideas from the Vim 7 BOF at SANE:
-    - It's not possible to have one solution for all languages.  Design an
-      interface for completion plugins.  The matches can be done in a
-      Vim-script list.
-    - For interpreted languages, use the interpreter to obtain information.
-      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.
-    Also see "Visual Assist" http://www.wholetomato.com/products:
-    - Put the list of choices right under the place where they would be
-      inserted.
+	Emads: http://www.xref-tech.com/xrefactory/more_c_completion.html
+	Ideas from the Vim 7 BOF at SANE:
+	- It's not possible to have one solution for all languages.  Design an
+	  interface for completion plugins.  The matches can be done in a
+	  Vim-script list.
+	- For interpreted languages, use the interpreter to obtain information.
+	  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.
+	"Visual Assist" http://www.wholetomato.com/products:
+	Completion in .NET framework SharpDevelop: http://www.icsharpcode.net
+
     - Pre-expand abbreviations, show which abbrevs would match?
-    - Completion in .NET framework SharpDevelop: http://www.icsharpcode.net
+
 -   UNDO TREE: keep all states of the text, don't delete undo info.
     When making a change, instead of clearing any future undo (thus redo)
     info, make a new branch.
diff --git a/runtime/doc/version7.txt b/runtime/doc/version7.txt
index 126d767..7094070 100644
--- a/runtime/doc/version7.txt
+++ b/runtime/doc/version7.txt
@@ -1,4 +1,4 @@
-*version7.txt*  For Vim version 7.0aa.  Last change: 2005 Jul 28
+*version7.txt*  For Vim version 7.0aa.  Last change: 2005 Jul 29
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -409,6 +409,7 @@
 |max()|			maximum value in a List or Dictionary
 |min()|			minimum value in a List or Dictionary
 |mkdir()|		create a directory
+|printf()|		format text
 |readfile()|		read a file into a list of lines
 |remove()|		remove one or more items from a List or Dictionary
 |repeat()| 		repeat "expr" "count" times (Christophe Poucet)