updated for version 7.0105
diff --git a/runtime/doc/gui.txt b/runtime/doc/gui.txt
index f5c1ef4..6158bbc 100644
--- a/runtime/doc/gui.txt
+++ b/runtime/doc/gui.txt
@@ -1,4 +1,4 @@
-*gui.txt*       For Vim version 7.0aa.  Last change: 2005 Apr 11
+*gui.txt*       For Vim version 7.0aa.  Last change: 2005 Jul 07
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -897,9 +897,13 @@
 				appear on the menu-bar (see |hidden-menus|).
 				{only available for Win32 and GTK GUI}
 
+:popu[p]! {name}		Like above, but use the position of the mouse
+				pointer instead of the cursor.
+
 Example: >
 	:popup File
-will make the "File" menu (if there is one) appear at the text cursor. >
+will make the "File" menu (if there is one) appear at the text cursor (mouse
+pointer if ! was used). >
 
 	:amenu ]Toolbar.Make	:make<CR>
 	:popup ]Toolbar
diff --git a/runtime/syntax/pod.vim b/runtime/syntax/pod.vim
index 60f3353..38fa18f 100644
--- 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:	2004 Oct 05
+" Last Change:	2005 Jul 05
 
 " To add embedded POD documentation highlighting to your syntax file, add
 " the commands:
@@ -25,38 +25,38 @@
 endif
 
 " POD commands
-syn match podCommand	"^=head[1234]"	nextgroup=podCmdText
-syn match podCommand	"^=item"	nextgroup=podCmdText
-syn match podCommand	"^=over"	nextgroup=podOverIndent skipwhite
-syn match podCommand	"^=back"
-syn match podCommand	"^=cut"
-syn match podCommand	"^=pod"
-syn match podCommand	"^=for"		nextgroup=podForKeywd skipwhite
-syn match podCommand	"^=begin"	nextgroup=podForKeywd skipwhite
-syn match podCommand	"^=end"		nextgroup=podForKeywd skipwhite
+syn match podCommand	"^=head[1234]"	nextgroup=podCmdText contains=@NoSpell
+syn match podCommand	"^=item"	nextgroup=podCmdText contains=@NoSpell
+syn match podCommand	"^=over"	nextgroup=podOverIndent skipwhite contains=@NoSpell
+syn match podCommand	"^=back" contains=@NoSpell
+syn match podCommand	"^=cut" contains=@NoSpell
+syn match podCommand	"^=pod" contains=@NoSpell
+syn match podCommand	"^=for"		nextgroup=podForKeywd skipwhite contains=@NoSpell
+syn match podCommand	"^=begin"	nextgroup=podForKeywd skipwhite contains=@NoSpell
+syn match podCommand	"^=end"		nextgroup=podForKeywd skipwhite contains=@NoSpell
 
 " Text of a =head1, =head2 or =item command
-syn match podCmdText	".*$" contained contains=podFormat
+syn match podCmdText	".*$" contained contains=podFormat,@NoSpell
 
 " Indent amount of =over command
-syn match podOverIndent	"\d\+" contained
+syn match podOverIndent	"\d\+" contained contains=@NoSpell
 
 " Formatter identifier keyword for =for, =begin and =end commands
-syn match podForKeywd	"\S\+" contained
+syn match podForKeywd	"\S\+" contained contains=@NoSpell
 
 " An indented line, to be displayed verbatim
-syn match podVerbatimLine	"^\s.*$"
+syn match podVerbatimLine	"^\s.*$" contains=@NoSpell
 
 " Inline textual items handled specially by POD
-syn match podSpecial	"\(\<\|&\)\I\i*\(::\I\i*\)*([^)]*)"
-syn match podSpecial	"[$@%]\I\i*\(::\I\i*\)*\>"
+syn match podSpecial	"\(\<\|&\)\I\i*\(::\I\i*\)*([^)]*)" contains=@NoSpell
+syn match podSpecial	"[$@%]\I\i*\(::\I\i*\)*\>" contains=@NoSpell
 
 " Special formatting sequences
-syn region podFormat	start="[IBSCLFX]<[^<]"me=e-1 end=">" oneline contains=podFormat
+syn region podFormat	start="[IBSCLFX]<[^<]"me=e-1 end=">" oneline contains=podFormat,@NoSpell
 syn match  podFormat	"Z<>"
-syn match  podFormat	"E<\(\d\+\|\I\i*\)>" contains=podEscape,podEscape2
-syn match  podEscape	"\I\i*>"me=e-1 contained
-syn match  podEscape2	"\d\+>"me=e-1 contained
+syn match  podFormat	"E<\(\d\+\|\I\i*\)>" contains=podEscape,podEscape2,@NoSpell
+syn match  podEscape	"\I\i*>"me=e-1 contained contains=@NoSpell
+syn match  podEscape2	"\d\+>"me=e-1 contained contains=@NoSpell
 
 " Define the default highlighting.
 " For version 5.7 and earlier: only when not done already
diff --git a/src/ex_docmd.c b/src/ex_docmd.c
index b2cc7f9..ebfac55 100644
--- a/src/ex_docmd.c
+++ b/src/ex_docmd.c
@@ -7043,7 +7043,7 @@
 ex_popup(eap)
     exarg_T	*eap;
 {
-    gui_make_popup(eap->arg);
+    gui_make_popup(eap->arg, eap->forceit);
 }
 #endif
 
diff --git a/src/gui_kde.cc b/src/gui_kde.cc
index fc4664e..4b88e98 100644
--- a/src/gui_kde.cc
+++ b/src/gui_kde.cc
@@ -612,8 +612,9 @@
     menu->widget->popup(QCursor::pos());
 }//}}}
 
+/* TODO: use mouse_pos */
 void
-gui_make_popup (char_u *pathname)//{{{
+gui_make_popup (char_u *pathname, int mouse_pos)//{{{
 {
     vimmenu_T *menu = gui_find_menu(pathname);
 
diff --git a/src/proto/gui_w16.pro b/src/proto/gui_w16.pro
index f1bb434..345f148 100644
--- a/src/proto/gui_w16.pro
+++ b/src/proto/gui_w16.pro
@@ -66,7 +66,7 @@
 void gui_mch_flush __ARGS((void));
 void gui_mch_add_menu __ARGS((vimmenu_T *menu, int pos));
 void gui_mch_show_popupmenu __ARGS((vimmenu_T *menu));
-void gui_make_popup __ARGS((char_u *path_name));
+void gui_make_popup __ARGS((char_u *path_name, int mouse_pos));
 void gui_mch_add_menu_item __ARGS((vimmenu_T *menu, int idx));
 void gui_mch_destroy_menu __ARGS((vimmenu_T *menu));
 void gui_mch_menu_grey __ARGS((vimmenu_T *menu, int grey));
diff --git a/src/proto/gui_w32.pro b/src/proto/gui_w32.pro
index c1fe955..680a9f5 100644
--- a/src/proto/gui_w32.pro
+++ b/src/proto/gui_w32.pro
@@ -72,7 +72,7 @@
 void gui_mch_flush __ARGS((void));
 void gui_mch_add_menu __ARGS((vimmenu_T *menu, int pos));
 void gui_mch_show_popupmenu __ARGS((vimmenu_T *menu));
-void gui_make_popup __ARGS((char_u *path_name));
+void gui_make_popup __ARGS((char_u *path_name, int mouse_pos));
 void gui_make_tearoff __ARGS((char_u *path_name));
 void gui_mch_add_menu_item __ARGS((vimmenu_T *menu, int idx));
 void gui_mch_destroy_menu __ARGS((vimmenu_T *menu));
diff --git a/src/spell.c b/src/spell.c
index 175cf0b..f93027d 100644
--- a/src/spell.c
+++ b/src/spell.c
@@ -6143,7 +6143,7 @@
     if (curbuf->b_cap_prog != NULL)
     {
 	endcol = 0;
-	if (skipwhite(line) - line == curwin->w_cursor.col)
+	if ((int)(skipwhite(line) - line) == (int)curwin->w_cursor.col)
 	{
 	    /* At start of line, check if previous line is empty or sentence
 	     * ends there. */
@@ -9622,10 +9622,10 @@
 	 * int array for easy access. */
 	for (p = badword, badlen = 0; *p != NUL; )
 	    wbadword[badlen++] = mb_ptr2char_adv(&p);
-	++badlen;
+	wbadword[badlen++] = 0;
 	for (p = goodword, goodlen = 0; *p != NUL; )
 	    wgoodword[goodlen++] = mb_ptr2char_adv(&p);
-	++goodlen;
+	wgoodword[goodlen++] = 0;
     }
     else
 #endif