updated for version 7.0048
diff --git a/runtime/menu.vim b/runtime/menu.vim
index e89291b..6f30018 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 Jan 30
+" Last Change:	2005 Feb 03
 
 " 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.
@@ -136,7 +136,7 @@
 " the right position, also for "gi".
 " Note: the same stuff appears in mswin.vim.
 if has("virtualedit")
-  nnoremap <silent> <script> <SID>Paste :call <SID>Paste()<CR>
+  let s:paste_cmd = ":call <SID>Paste()<CR>"
   func! <SID>Paste()
     let ove = &ve
     set ve=all
@@ -152,16 +152,17 @@
     let &ve = ove
   endfunc
 else
-  nnoremap <silent> <script> <SID>Paste "=@+.'xy'<CR>gPFx"_2x
+  let s:paste_cmd = "\"=@+.'xy'<CR>gPFx\"_2x"
 endif
 
-" Use maps for items that are present both in Edit, Popup and Toolbar menu.
+" Define the string to use for items that are present both in Edit, Popup and
+" Toolbar menu.
 if has("virtualedit")
-  vnoremap <script> <SID>vPaste	"-c<Esc><SID>Paste
-  inoremap <script> <SID>iPaste	<Esc><SID>Pastegi
+  let s:paste_v_cmd = '"-c<Esc>' . s:paste_cmd
+  let s:paste_i_cmd = '<Esc>' . s:paste_cmd . 'gi'
 else
-  vnoremap <script> <SID>vPaste	"-c<Esc>gix<Esc><SID>Paste"_x
-  inoremap <script> <SID>iPaste	x<Esc><SID>Paste"_s
+  let s:paste_v_cmd = '"-c<Esc>gix<Esc>' . s:paste_cmd . '"_x'
+  let s:paste_i_cmd = 'x<Esc>' . s:paste_cmd . '"_s'
 endif
 
 func! <SID>SelectAll()
@@ -180,8 +181,8 @@
 cnoremenu 20.350 &Edit.&Copy<Tab>"+y		<C-Y>
 nnoremenu 20.360 &Edit.&Paste<Tab>"+gP		"+gP
 cnoremenu	 &Edit.&Paste<Tab>"+gP		<C-R>+
-vnoremenu <script> &Edit.&Paste<Tab>"+gP	<SID>vPaste
-inoremenu <script> &Edit.&Paste<Tab>"+gP	<SID>iPaste
+exe 'vnoremenu <script> &Edit.&Paste<Tab>"+gP	' . s:paste_v_cmd
+exe 'inoremenu <script> &Edit.&Paste<Tab>"+gP	' . s:paste_i_cmd
 nnoremenu 20.370 &Edit.Put\ &Before<Tab>[p	[p
 inoremenu	 &Edit.Put\ &Before<Tab>[p	<C-O>[p
 nnoremenu 20.380 &Edit.Put\ &After<Tab>]p	]p
@@ -781,8 +782,8 @@
 cnoremenu 1.30 PopUp.&Copy		<C-Y>
 nnoremenu 1.40 PopUp.&Paste		"+gP
 cnoremenu 1.40 PopUp.&Paste		<C-R>+
-vnoremenu <script> 1.40 PopUp.&Paste	<SID>vPaste
-inoremenu <script> 1.40 PopUp.&Paste	<SID>iPaste
+exe 'vnoremenu <script> 1.40 PopUp.&Paste	' . s:paste_v_cmd
+exe 'inoremenu <script> 1.40 PopUp.&Paste	' . s:paste_i_cmd
 vnoremenu 1.50 PopUp.&Delete		x
 an 1.55 PopUp.-SEP2-			<Nop>
 vnoremenu 1.60 PopUp.Select\ Blockwise	<C-V>
@@ -848,8 +849,8 @@
   cnoremenu 1.80 ToolBar.Copy		<C-Y>
   nnoremenu 1.90 ToolBar.Paste		"+gP
   cnoremenu	 ToolBar.Paste		<C-R>+
-  vnoremenu <script>	 ToolBar.Paste	<SID>vPaste
-  inoremenu <script>	 ToolBar.Paste	<SID>iPaste
+  exe 'vnoremenu <script>	 ToolBar.Paste	' . s:paste_v_cmd
+  exe 'inoremenu <script>	 ToolBar.Paste	' . s:paste_i_cmd
 
   if !has("gui_athena")
     an 1.95   ToolBar.-sep3-		<Nop>
@@ -996,6 +997,8 @@
 
 endif " !exists("did_install_syntax_menu")
 
+unlet! s:paste_i_cmd s:paste_v_cmd s:paste_cmd
+
 " Restore the previous value of 'cpoptions'.
 let &cpo = s:cpo_save
 unlet s:cpo_save