updated for version 7.0112
diff --git a/runtime/doc/autocmd.txt b/runtime/doc/autocmd.txt
index 44608a0..a99f184 100644
--- a/runtime/doc/autocmd.txt
+++ b/runtime/doc/autocmd.txt
@@ -1,4 +1,4 @@
-*autocmd.txt*   For Vim version 7.0aa.  Last change: 2005 Mar 04
+*autocmd.txt*   For Vim version 7.0aa.  Last change: 2005 Jul 21
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -542,6 +542,18 @@
 QuickFixCmdPost						*QuickFixCmdPost*
 				like QuickFixCmdPre, but after a quickfix
 				command is run.
+							*MenuPopup*
+MenuPopup			Just before showing the popup menu (under the
+				right mouse button).  Useful for adjusting the
+				menu for what is under the cursor or mouse
+				pointer.
+				The pattern is matched against a single
+				character representing the mode:
+					n	Normal
+					v	Visual
+					o	Operator-pending
+					i	Insert
+					c	Commmand line
 							*UserGettingBored*
 UserGettingBored		When the user hits CTRL-C.  Just kidding! :-)
 							*User*
diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt
index 93a2b4f..307ceae 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 18
+*eval.txt*      For Vim version 7.0aa.  Last change: 2005 Jul 21
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -1511,6 +1511,8 @@
 function( {name})		Funcref reference to function {name}
 get( {list}, {idx} [, {def}])	any	get item {idx} from {list} or {def}
 get( {dict}, {key} [, {def}])	any	get item {key} from {dict} or {def}
+getbufline( {expr}, {lnum} [, {end}])
+				List	lines {lnum} to {end} of buffer {expr}
 getchar( [expr])		Number	get one character from the user
 getcharmod( )			Number	modifiers for the last typed character
 getbufvar( {expr}, {varname})		variable {varname} in buffer {expr}
@@ -2409,6 +2411,35 @@
 		item is not available return {default}.  Return zero when
 		{default} is omitted.
 
+							*getbufline()*
+getbufline({expr}, {lnum} [, {end}])
+		Return the lines starting from {lnum} to {end} in the buffer
+		{expr} as a List. If {end} is omitted, only the line {lnum}
+		is returned.
+
+		For the use of {expr}, see |bufname()| above.
+
+		When {lnum} is a String that doesn't start with a
+		digit, line() is called to translate the String into a Number.
+
+		{end} is used in the same way as {lnum}.
+
+		When {lnum} is smaller than 1 or bigger than the number of
+		lines in the buffer, an empty List is returned.
+
+		When {end} is greater than the number of lines in the buffer,
+		it is treated as {end} is set to the number of lines in the
+		buffer.
+
+		When non-existing line ranges are specified, an empty List is
+		returned.  When {end} is before {lnum} an empty List is
+		returned.
+
+		This function works only for loaded buffers. For unloaded and
+		non-existing buffers, an empty List is returned.
+
+		Example: >
+			:let lines = getbufline(bufnr("myfile"), 1, "$")
 
 getbufvar({expr}, {varname})				*getbufvar()*
 		The result is the value of option or local buffer variable
@@ -2572,7 +2603,7 @@
 		including line {end}.
 		{end} is used in the same way as {lnum}.
 		Non-existing lines are silently omitted.
-		When {end} is before {lnum} an error is given.
+		When {end} is before {lnum} an empty List is returned.
 		Example: >
 			:let start = line('.')
 			:let end = search("^$") - 1
@@ -4290,6 +4321,7 @@
 arp			Compiled with ARP support (Amiga).
 autocmd			Compiled with autocommands support.
 balloon_eval		Compiled with |balloon-eval| support.
+balloon_multiline	GUI supports multiline balloons.
 beos			BeOS version of Vim.
 browse			Compiled with |:browse| support, and browse() will
 			work.
diff --git a/runtime/doc/options.txt b/runtime/doc/options.txt
index d491351..89c5cd5 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 18
+*options.txt*	For Vim version 7.0aa.  Last change: 2005 Jul 21
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -1013,7 +1013,7 @@
 	The evaluation of the expression must not have side effects!
 	Example: >
     function! MyBalloonExpr()
-	return 'Cursor is at line ' . v:beval_lnum . 
+	return 'Cursor is at line ' . v:beval_lnum .
 		\', column ' . v:beval_col .
 		\ ' of file ' .  bufname(v:beval_bufnr) .
 		\ ' on word "' . v:beval_text . '"'
@@ -1026,6 +1026,9 @@
 	Vim does not try to send a message to an external debugger (Netbeans
 	or Sun Workshop).
 
+	To check wether line breaks in the balloon text work use this check: >
+		if has("balloon_multiline")
+<
 				     *'binary'* *'bin'* *'nobinary'* *'nobin'*
 'binary' 'bin'		boolean	(default off)
 			local to buffer
diff --git a/runtime/doc/spell.txt b/runtime/doc/spell.txt
index 79782c8..f85a49a 100644
--- a/runtime/doc/spell.txt
+++ b/runtime/doc/spell.txt
@@ -1,4 +1,4 @@
-*spell.txt*	For Vim version 7.0aa.  Last change: 2005 Jul 05
+*spell.txt*	For Vim version 7.0aa.  Last change: 2005 Jul 21
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -33,6 +33,11 @@
 
 Vim only checks words for spelling, there is no grammar check.
 
+If the 'mousemodel' option is set to "popup" and the cursor is on a badly
+spelled word or it is "popup_setpos" and the mouse pointer is on a badly
+spelled word, then the popup menu will contain an submenu to replace the bad
+word.  Note: this slows down the appearance of the popup menu.
+
 To search for the next misspelled word:
 
 							*]s* *E756*
diff --git a/runtime/doc/tags b/runtime/doc/tags
index 86ac4fe..6c61c24 100644
--- a/runtime/doc/tags
+++ b/runtime/doc/tags
@@ -3827,6 +3827,7 @@
 Mac-format-write	editing.txt	/*Mac-format-write*
 Macintosh	os_mac.txt	/*Macintosh*
 Mark	motion.txt	/*Mark*
+MenuPopup	autocmd.txt	/*MenuPopup*
 MiNT	os_mint.txt	/*MiNT*
 Moolenaar	intro.txt	/*Moolenaar*
 MorphOS	os_amiga.txt	/*MorphOS*
@@ -5014,6 +5015,7 @@
 gd	pattern.txt	/*gd*
 ge	motion.txt	/*ge*
 get()	eval.txt	/*get()*
+getbufline()	eval.txt	/*getbufline()*
 getbufvar()	eval.txt	/*getbufvar()*
 getchar()	eval.txt	/*getchar()*
 getcharmod()	eval.txt	/*getcharmod()*
diff --git a/runtime/menu.vim b/runtime/menu.vim
index 7239f58..f43fcb9 100644
--- a/runtime/menu.vim
+++ b/runtime/menu.vim
@@ -2,7 +2,7 @@
 " You can also use this as a start for your own set of menus.
 "
 " Maintainer:	Bram Moolenaar <Bram@vim.org>
-" Last Change:	2005 Jul 08
+" Last Change:	2005 Jul 21
 
 " Note that ":an" (short for ":anoremenu") is often used to make a menu work
 " in all modes and avoid side effects from mappings defined by the user.
@@ -873,6 +873,61 @@
 inoremenu <script> <silent> 1.100 PopUp.Select\ &All	<C-O>:call <SID>SelectAll()<CR>
 cnoremenu <script> <silent> 1.100 PopUp.Select\ &All	<C-U>call <SID>SelectAll()<CR>
 
+if has("spell")
+  " Spell suggestions in the popup menu.  Note that this will slow down the
+  " appearance of the menu!
+  func! <SID>SpellPopup()
+    if exists("s:changeitem") && s:changeitem != ''
+      call <SID>SpellDel()
+    endif
+
+    let curcol = col('.')
+    let w = spellbadword()
+    if col('.') > curcol		" don't use word after the cursor
+      let w = ''
+      call cursor(0, curcol)	" put the cursor back where it was
+    endif
+    if w != ''
+      let s:suglist = spellsuggest(w, 10)
+      if len(s:suglist) <= 0
+	call cursor(0, curcol)	" put the cursor back where it was
+      else
+	let s:changeitem = 'change\ "' . escape(w, ' .'). '"\ to'
+	let s:fromword = w
+	let pri = 1
+	for sug in s:suglist
+	  exe 'amenu 1.5.' . pri . ' PopUp.' . s:changeitem . '.' . escape(sug, ' .')
+		\ . ' :call <SID>SpellReplace(' . pri . ')<CR>'
+	  let pri += 1
+	endfor
+
+	let s:additem = 'add\ "' . escape(w, ' .') . '"\ to\ word\ list'
+	exe 'amenu 1.6 PopUp.' . s:additem . ' :spellgood ' . w . '<CR>'
+
+	let s:ignoreitem = 'ignore\ "' . escape(w, ' .') . '"'
+	exe 'amenu 1.7 PopUp.' . s:ignoreitem . ' :spellgood! ' . w . '<CR>'
+
+	amenu 1.8 PopUp.-SpellSep- :
+      endif
+    endif
+  endfunc
+
+  func! <SID>SpellReplace(n)
+    let l = getline('.')
+    call setline('.', strpart(l, 0, col('.') - 1) . s:suglist[a:n - 1]
+	  \ . strpart(l, col('.') + len(s:fromword) - 1))
+  endfunc
+
+  func! <SID>SpellDel()
+    exe "aunmenu PopUp." . s:changeitem
+    exe "aunmenu PopUp." . s:additem
+    exe "aunmenu PopUp." . s:ignoreitem
+    aunmenu PopUp.-SpellSep-
+    let s:changeitem = ''
+  endfun
+
+  au! MenuPopup * call <SID>SpellPopup()
+endif
 
 " The GUI toolbar (for MS-Windows and GTK)
 if has("toolbar")