home *** CD-ROM | disk | FTP | other *** search
/ Clickx 115 / Clickx 115.iso / software / tools / windows / tails-i386-0.16.iso / live / filesystem.squashfs / usr / share / vim / vim72 / menu.vim < prev    next >
Encoding:
Text File  |  2010-07-11  |  37.2 KB  |  1,106 lines

  1. " Vim support file to define the default menus
  2. " You can also use this as a start for your own set of menus.
  3. "
  4. " Maintainer:    Bram Moolenaar <Bram@vim.org>
  5. " Last Change:    2009 Feb 26
  6.  
  7. " Note that ":an" (short for ":anoremenu") is often used to make a menu work
  8. " in all modes and avoid side effects from mappings defined by the user.
  9.  
  10. " Make sure the '<' and 'C' flags are not included in 'cpoptions', otherwise
  11. " <CR> would not be recognized.  See ":help 'cpoptions'".
  12. let s:cpo_save = &cpo
  13. set cpo&vim
  14.  
  15. " Avoid installing the menus twice
  16. if !exists("did_install_default_menus")
  17. let did_install_default_menus = 1
  18.  
  19.  
  20. if exists("v:lang") || &langmenu != ""
  21.   " Try to find a menu translation file for the current language.
  22.   if &langmenu != ""
  23.     if &langmenu =~ "none"
  24.       let s:lang = ""
  25.     else
  26.       let s:lang = &langmenu
  27.     endif
  28.   else
  29.     let s:lang = v:lang
  30.   endif
  31.   " A language name must be at least two characters, don't accept "C"
  32.   if strlen(s:lang) > 1
  33.     " When the language does not include the charset add 'encoding'
  34.     if s:lang =~ '^\a\a$\|^\a\a_\a\a$'
  35.       let s:lang = s:lang . '.' . &enc
  36.     endif
  37.  
  38.     " We always use a lowercase name.
  39.     " Change "iso-8859" to "iso_8859" and "iso8859" to "iso_8859", some
  40.     " systems appear to use this.
  41.     " Change spaces to underscores.
  42.     let s:lang = substitute(tolower(s:lang), '\.iso-', ".iso_", "")
  43.     let s:lang = substitute(s:lang, '\.iso8859', ".iso_8859", "")
  44.     let s:lang = substitute(s:lang, " ", "_", "g")
  45.     " Remove "@euro", otherwise "LC_ALL=de_DE@euro gvim" will show English menus
  46.     let s:lang = substitute(s:lang, "@euro", "", "")
  47.     " Change "iso_8859-1" and "iso_8859-15" to "latin1", we always use the
  48.     " same menu file for them.
  49.     let s:lang = substitute(s:lang, 'iso_8859-15\=$', "latin1", "")
  50.     menutrans clear
  51.     exe "runtime! lang/menu_" . s:lang . ".vim"
  52.  
  53.     if !exists("did_menu_trans")
  54.       " There is no exact match, try matching with a wildcard added
  55.       " (e.g. find menu_de_de.iso_8859-1.vim if s:lang == de_DE).
  56.       let s:lang = substitute(s:lang, '\.[^.]*', "", "")
  57.       exe "runtime! lang/menu_" . s:lang . "[^a-z]*vim"
  58.  
  59.       if !exists("did_menu_trans") && strlen($LANG) > 1 && s:lang !~ '^en_us'
  60.     " On windows locale names are complicated, try using $LANG, it might
  61.     " have been set by set_init_1().  But don't do this for "en" or "en_us".
  62.     " But don't match "slovak" when $LANG is "sl".
  63.     exe "runtime! lang/menu_" . tolower($LANG) . "[^a-z]*vim"
  64.       endif
  65.     endif
  66.   endif
  67. endif
  68.  
  69.  
  70. " Help menu
  71. an 9999.10 &Help.&Overview<Tab><F1>    :help<CR>
  72. an 9999.20 &Help.&User\ Manual        :help usr_toc<CR>
  73. an 9999.30 &Help.&How-to\ links        :help how-to<CR>
  74. an <silent> 9999.40 &Help.&Find\.\.\.    :call <SID>Helpfind()<CR>
  75. an 9999.45 &Help.-sep1-            <Nop>
  76. an 9999.50 &Help.&Credits        :help credits<CR>
  77. an 9999.60 &Help.Co&pying        :help copying<CR>
  78. an 9999.70 &Help.&Sponsor/Register    :help sponsor<CR>
  79. an 9999.70 &Help.O&rphans        :help kcc<CR>
  80. an 9999.75 &Help.-sep2-            <Nop>
  81. an 9999.80 &Help.&Version        :version<CR>
  82. an 9999.90 &Help.&About            :intro<CR>
  83.  
  84. fun! s:Helpfind()
  85.   if !exists("g:menutrans_help_dialog")
  86.     let g:menutrans_help_dialog = "Enter a command or word to find help on:\n\nPrepend i_ for Input mode commands (e.g.: i_CTRL-X)\nPrepend c_ for command-line editing commands (e.g.: c_<Del>)\nPrepend ' for an option name (e.g.: 'shiftwidth')"
  87.   endif
  88.   let h = inputdialog(g:menutrans_help_dialog)
  89.   if h != ""
  90.     let v:errmsg = ""
  91.     silent! exe "help " . h
  92.     if v:errmsg != ""
  93.       echo v:errmsg
  94.     endif
  95.   endif
  96. endfun
  97.  
  98. " File menu
  99. an 10.310 &File.&Open\.\.\.<Tab>:e        :browse confirm e<CR>
  100. an 10.320 &File.Sp&lit-Open\.\.\.<Tab>:sp    :browse sp<CR>
  101. an 10.320 &File.Open\ Tab\.\.\.<Tab>:tabnew    :browse tabnew<CR>
  102. an 10.325 &File.&New<Tab>:enew            :confirm enew<CR>
  103. an <silent> 10.330 &File.&Close<Tab>:close
  104.     \ :if winheight(2) < 0 <Bar>
  105.     \   confirm enew <Bar>
  106.     \ else <Bar>
  107.     \   confirm close <Bar>
  108.     \ endif<CR>
  109. an 10.335 &File.-SEP1-                <Nop>
  110. an <silent> 10.340 &File.&Save<Tab>:w        :if expand("%") == ""<Bar>browse confirm w<Bar>else<Bar>confirm w<Bar>endif<CR>
  111. an 10.350 &File.Save\ &As\.\.\.<Tab>:sav    :browse confirm saveas<CR>
  112.  
  113. if has("diff")
  114.   an 10.400 &File.-SEP2-            <Nop>
  115.   an 10.410 &File.Split\ &Diff\ with\.\.\.    :browse vert diffsplit<CR>
  116.   an 10.420 &File.Split\ Patched\ &By\.\.\.    :browse vert diffpatch<CR>
  117. endif
  118.  
  119. if has("printer")
  120.   an 10.500 &File.-SEP3-            <Nop>
  121.   an 10.510 &File.&Print            :hardcopy<CR>
  122.   vunmenu   &File.&Print
  123.   vnoremenu &File.&Print            :hardcopy<CR>
  124. elseif has("unix")
  125.   an 10.500 &File.-SEP3-            <Nop>
  126.   an 10.510 &File.&Print            :w !lpr<CR>
  127.   vunmenu   &File.&Print
  128.   vnoremenu &File.&Print            :w !lpr<CR>
  129. endif
  130. an 10.600 &File.-SEP4-                <Nop>
  131. an 10.610 &File.Sa&ve-Exit<Tab>:wqa        :confirm wqa<CR>
  132. an 10.620 &File.E&xit<Tab>:qa            :confirm qa<CR>
  133.  
  134. func! <SID>SelectAll()
  135.   exe "norm gg" . (&slm == "" ? "VG" : "gH\<C-O>G")
  136. endfunc
  137.  
  138. func! s:FnameEscape(fname)
  139.   if exists('*fnameescape')
  140.     return fnameescape(a:fname)
  141.   endif
  142.   return escape(a:fname, " \t\n*?[{`$\\%#'\"|!<")
  143. endfunc
  144.  
  145. " Edit menu
  146. an 20.310 &Edit.&Undo<Tab>u            u
  147. an 20.320 &Edit.&Redo<Tab>^R            <C-R>
  148. an 20.330 &Edit.Rep&eat<Tab>\.            .
  149.  
  150. an 20.335 &Edit.-SEP1-                <Nop>
  151. vnoremenu 20.340 &Edit.Cu&t<Tab>"+x        "+x
  152. vnoremenu 20.350 &Edit.&Copy<Tab>"+y        "+y
  153. cnoremenu 20.350 &Edit.&Copy<Tab>"+y        <C-Y>
  154. nnoremenu 20.360 &Edit.&Paste<Tab>"+gP        "+gP
  155. cnoremenu     &Edit.&Paste<Tab>"+gP        <C-R>+
  156. exe 'vnoremenu <script> &Edit.&Paste<Tab>"+gP    ' . paste#paste_cmd['v']
  157. exe 'inoremenu <script> &Edit.&Paste<Tab>"+gP    ' . paste#paste_cmd['i']
  158. nnoremenu 20.370 &Edit.Put\ &Before<Tab>[p    [p
  159. inoremenu     &Edit.Put\ &Before<Tab>[p    <C-O>[p
  160. nnoremenu 20.380 &Edit.Put\ &After<Tab>]p    ]p
  161. inoremenu     &Edit.Put\ &After<Tab>]p    <C-O>]p
  162. if has("win32") || has("win16")
  163.   vnoremenu 20.390 &Edit.&Delete<Tab>x        x
  164. endif
  165. noremenu  <script> <silent> 20.400 &Edit.&Select\ All<Tab>ggVG    :<C-U>call <SID>SelectAll()<CR>
  166. inoremenu <script> <silent> 20.400 &Edit.&Select\ All<Tab>ggVG    <C-O>:call <SID>SelectAll()<CR>
  167. cnoremenu <script> <silent> 20.400 &Edit.&Select\ All<Tab>ggVG    <C-U>call <SID>SelectAll()<CR>
  168.  
  169. an 20.405     &Edit.-SEP2-                <Nop>
  170. if has("win32")  || has("win16") || has("gui_gtk") || has("gui_kde") || has("gui_motif")
  171.   an 20.410     &Edit.&Find\.\.\.            :promptfind<CR>
  172.   vunmenu     &Edit.&Find\.\.\.
  173.   vnoremenu <silent>     &Edit.&Find\.\.\.        y:promptfind <C-R>=<SID>FixFText()<CR><CR>
  174.   an 20.420     &Edit.Find\ and\ Rep&lace\.\.\.    :promptrepl<CR>
  175.   vunmenu     &Edit.Find\ and\ Rep&lace\.\.\.
  176.   vnoremenu <silent>     &Edit.Find\ and\ Rep&lace\.\.\. y:promptrepl <C-R>=<SID>FixFText()<CR><CR>
  177. else
  178.   an 20.410     &Edit.&Find<Tab>/            /
  179.   an 20.420     &Edit.Find\ and\ Rep&lace<Tab>:%s    :%s/
  180.   vunmenu     &Edit.Find\ and\ Rep&lace<Tab>:%s
  181.   vnoremenu     &Edit.Find\ and\ Rep&lace<Tab>:s    :s/
  182. endif
  183.  
  184. an 20.425     &Edit.-SEP3-                <Nop>
  185. an 20.430     &Edit.Settings\ &Window        :options<CR>
  186. an 20.435     &Edit.Startup\ &Settings        :call <SID>EditVimrc()<CR>
  187.  
  188. fun! s:EditVimrc()
  189.   if $MYVIMRC != ''
  190.     let fname = $MYVIMRC
  191.   elseif has("win32") || has("dos32") || has("dos16") || has("os2")
  192.     if $HOME != ''
  193.       let fname = $HOME . "/_vimrc"
  194.     else
  195.       let fname = $VIM . "/_vimrc"
  196.     endif
  197.   elseif has("amiga")
  198.     let fname = "s:.vimrc"
  199.   else
  200.     let fname = $HOME . "/.vimrc"
  201.   endif
  202.   let fname = s:FnameEscape(fname)
  203.   if &mod
  204.     exe "split " . fname
  205.   else
  206.     exe "edit " . fname
  207.   endif
  208. endfun
  209.  
  210. fun! s:FixFText()
  211.   " Fix text in nameless register to be used with :promptfind.
  212.   return substitute(@", "[\r\n]", '\\n', 'g')
  213. endfun
  214.  
  215. " Edit/Global Settings
  216. an 20.440.100 &Edit.&Global\ Settings.Toggle\ Pattern\ &Highlight<Tab>:set\ hls!    :set hls! hls?<CR>
  217. an 20.440.110 &Edit.&Global\ Settings.Toggle\ &Ignore-case<Tab>:set\ ic!    :set ic! ic?<CR>
  218. an 20.440.110 &Edit.&Global\ Settings.Toggle\ &Showmatch<Tab>:set\ sm!    :set sm! sm?<CR>
  219.  
  220. an 20.440.120 &Edit.&Global\ Settings.&Context\ lines.\ 1\  :set so=1<CR>
  221. an 20.440.120 &Edit.&Global\ Settings.&Context\ lines.\ 2\  :set so=2<CR>
  222. an 20.440.120 &Edit.&Global\ Settings.&Context\ lines.\ 3\  :set so=3<CR>
  223. an 20.440.120 &Edit.&Global\ Settings.&Context\ lines.\ 4\  :set so=4<CR>
  224. an 20.440.120 &Edit.&Global\ Settings.&Context\ lines.\ 5\  :set so=5<CR>
  225. an 20.440.120 &Edit.&Global\ Settings.&Context\ lines.\ 7\  :set so=7<CR>
  226. an 20.440.120 &Edit.&Global\ Settings.&Context\ lines.\ 10\  :set so=10<CR>
  227. an 20.440.120 &Edit.&Global\ Settings.&Context\ lines.\ 100\  :set so=100<CR>
  228.  
  229. an 20.440.130.40 &Edit.&Global\ Settings.&Virtual\ Edit.Never :set ve=<CR>
  230. an 20.440.130.50 &Edit.&Global\ Settings.&Virtual\ Edit.Block\ Selection :set ve=block<CR>
  231. an 20.440.130.60 &Edit.&Global\ Settings.&Virtual\ Edit.Insert\ mode :set ve=insert<CR>
  232. an 20.440.130.70 &Edit.&Global\ Settings.&Virtual\ Edit.Block\ and\ Insert :set ve=block,insert<CR>
  233. an 20.440.130.80 &Edit.&Global\ Settings.&Virtual\ Edit.Always :set ve=all<CR>
  234. an 20.440.140 &Edit.&Global\ Settings.Toggle\ Insert\ &Mode<Tab>:set\ im!    :set im!<CR>
  235. an 20.440.145 &Edit.&Global\ Settings.Toggle\ Vi\ C&ompatible<Tab>:set\ cp!    :set cp!<CR>
  236. an <silent> 20.440.150 &Edit.&Global\ Settings.Search\ &Path\.\.\.  :call <SID>SearchP()<CR>
  237. an <silent> 20.440.160 &Edit.&Global\ Settings.Ta&g\ Files\.\.\.  :call <SID>TagFiles()<CR>
  238. "
  239. " GUI options
  240. an 20.440.300 &Edit.&Global\ Settings.-SEP1-                <Nop>
  241. an <silent> 20.440.310 &Edit.&Global\ Settings.Toggle\ &Toolbar        :call <SID>ToggleGuiOption("T")<CR>
  242. an <silent> 20.440.320 &Edit.&Global\ Settings.Toggle\ &Bottom\ Scrollbar :call <SID>ToggleGuiOption("b")<CR>
  243. an <silent> 20.440.330 &Edit.&Global\ Settings.Toggle\ &Left\ Scrollbar    :call <SID>ToggleGuiOption("l")<CR>
  244. an <silent> 20.440.340 &Edit.&Global\ Settings.Toggle\ &Right\ Scrollbar :call <SID>ToggleGuiOption("r")<CR>
  245.  
  246. fun! s:SearchP()
  247.   if !exists("g:menutrans_path_dialog")
  248.     let g:menutrans_path_dialog = "Enter search path for files.\nSeparate directory names with a comma."
  249.   endif
  250.   let n = inputdialog(g:menutrans_path_dialog, substitute(&path, '\\ ', ' ', 'g'))
  251.   if n != ""
  252.     let &path = substitute(n, ' ', '\\ ', 'g')
  253.   endif
  254. endfun
  255.  
  256. fun! s:TagFiles()
  257.   if !exists("g:menutrans_tags_dialog")
  258.     let g:menutrans_tags_dialog = "Enter names of tag files.\nSeparate the names with a comma."
  259.   endif
  260.   let n = inputdialog(g:menutrans_tags_dialog, substitute(&tags, '\\ ', ' ', 'g'))
  261.   if n != ""
  262.     let &tags = substitute(n, ' ', '\\ ', 'g')
  263.   endif
  264. endfun
  265.  
  266. fun! s:ToggleGuiOption(option)
  267.     " If a:option is already set in guioptions, then we want to remove it
  268.     if match(&guioptions, "\\C" . a:option) > -1
  269.     exec "set go-=" . a:option
  270.     else
  271.     exec "set go+=" . a:option
  272.     endif
  273. endfun
  274.  
  275. " Edit/File Settings
  276.  
  277. " Boolean options
  278. an 20.440.100 &Edit.F&ile\ Settings.Toggle\ Line\ &Numbering<Tab>:set\ nu!    :set nu! nu?<CR>
  279. an 20.440.110 &Edit.F&ile\ Settings.Toggle\ &List\ Mode<Tab>:set\ list!    :set list! list?<CR>
  280. an 20.440.120 &Edit.F&ile\ Settings.Toggle\ Line\ &Wrap<Tab>:set\ wrap!    :set wrap! wrap?<CR>
  281. an 20.440.130 &Edit.F&ile\ Settings.Toggle\ W&rap\ at\ word<Tab>:set\ lbr!    :set lbr! lbr?<CR>
  282. an 20.440.160 &Edit.F&ile\ Settings.Toggle\ &expand-tab<Tab>:set\ et!    :set et! et?<CR>
  283. an 20.440.170 &Edit.F&ile\ Settings.Toggle\ &auto-indent<Tab>:set\ ai!    :set ai! ai?<CR>
  284. an 20.440.180 &Edit.F&ile\ Settings.Toggle\ &C-indenting<Tab>:set\ cin!    :set cin! cin?<CR>
  285.  
  286. " other options
  287. an 20.440.600 &Edit.F&ile\ Settings.-SEP2-        <Nop>
  288. an 20.440.610.20 &Edit.F&ile\ Settings.&Shiftwidth.2    :set sw=2 sw?<CR>
  289. an 20.440.610.30 &Edit.F&ile\ Settings.&Shiftwidth.3    :set sw=3 sw?<CR>
  290. an 20.440.610.40 &Edit.F&ile\ Settings.&Shiftwidth.4    :set sw=4 sw?<CR>
  291. an 20.440.610.50 &Edit.F&ile\ Settings.&Shiftwidth.5    :set sw=5 sw?<CR>
  292. an 20.440.610.60 &Edit.F&ile\ Settings.&Shiftwidth.6    :set sw=6 sw?<CR>
  293. an 20.440.610.80 &Edit.F&ile\ Settings.&Shiftwidth.8    :set sw=8 sw?<CR>
  294.  
  295. an 20.440.620.20 &Edit.F&ile\ Settings.Soft\ &Tabstop.2    :set sts=2 sts?<CR>
  296. an 20.440.620.30 &Edit.F&ile\ Settings.Soft\ &Tabstop.3    :set sts=3 sts?<CR>
  297. an 20.440.620.40 &Edit.F&ile\ Settings.Soft\ &Tabstop.4    :set sts=4 sts?<CR>
  298. an 20.440.620.50 &Edit.F&ile\ Settings.Soft\ &Tabstop.5    :set sts=5 sts?<CR>
  299. an 20.440.620.60 &Edit.F&ile\ Settings.Soft\ &Tabstop.6    :set sts=6 sts?<CR>
  300. an 20.440.620.80 &Edit.F&ile\ Settings.Soft\ &Tabstop.8    :set sts=8 sts?<CR>
  301.  
  302. an <silent> 20.440.630 &Edit.F&ile\ Settings.Te&xt\ Width\.\.\.  :call <SID>TextWidth()<CR>
  303. an <silent> 20.440.640 &Edit.F&ile\ Settings.&File\ Format\.\.\.  :call <SID>FileFormat()<CR>
  304. fun! s:TextWidth()
  305.   if !exists("g:menutrans_textwidth_dialog")
  306.     let g:menutrans_textwidth_dialog = "Enter new text width (0 to disable formatting): "
  307.   endif
  308.   let n = inputdialog(g:menutrans_textwidth_dialog, &tw)
  309.   if n != ""
  310.     " remove leading zeros to avoid it being used as an octal number
  311.     let &tw = substitute(n, "^0*", "", "")
  312.   endif
  313. endfun
  314.  
  315. fun! s:FileFormat()
  316.   if !exists("g:menutrans_fileformat_dialog")
  317.     let g:menutrans_fileformat_dialog = "Select format for writing the file"
  318.   endif
  319.   if !exists("g:menutrans_fileformat_choices")
  320.     let g:menutrans_fileformat_choices = "&Unix\n&Dos\n&Mac\n&Cancel"
  321.   endif
  322.   if &ff == "dos"
  323.     let def = 2
  324.   elseif &ff == "mac"
  325.     let def = 3
  326.   else
  327.     let def = 1
  328.   endif
  329.   let n = confirm(g:menutrans_fileformat_dialog, g:menutrans_fileformat_choices, def, "Question")
  330.   if n == 1
  331.     set ff=unix
  332.   elseif n == 2
  333.     set ff=dos
  334.   elseif n == 3
  335.     set ff=mac
  336.   endif
  337. endfun
  338.  
  339. " Setup the Edit.Color Scheme submenu
  340. let s:n = globpath(&runtimepath, "colors/*.vim")
  341. let s:idx = 100
  342. while strlen(s:n) > 0
  343.   let s:i = stridx(s:n, "\n")
  344.   if s:i < 0
  345.     let s:name = s:n
  346.     let s:n = ""
  347.   else
  348.     let s:name = strpart(s:n, 0, s:i)
  349.     let s:n = strpart(s:n, s:i + 1, 19999)
  350.   endif
  351.   " Ignore case for VMS and windows
  352.   let s:name = substitute(s:name, '\c.*[/\\:\]]\([^/\\:]*\)\.vim', '\1', '')
  353.   exe "an 20.450." . s:idx . ' &Edit.C&olor\ Scheme.' . s:name . " :colors " . s:name . "<CR>"
  354.   unlet s:name
  355.   unlet s:i
  356.   let s:idx = s:idx + 10
  357. endwhile
  358. unlet s:n
  359. unlet s:idx
  360.  
  361. " Setup the Edit.Keymap submenu
  362. if has("keymap")
  363.   let s:n = globpath(&runtimepath, "keymap/*.vim")
  364.   if s:n != ""
  365.     let s:idx = 100
  366.     an 20.460.90 &Edit.&Keymap.None :set keymap=<CR>
  367.     while strlen(s:n) > 0
  368.       let s:i = stridx(s:n, "\n")
  369.       if s:i < 0
  370.     let s:name = s:n
  371.     let s:n = ""
  372.       else
  373.     let s:name = strpart(s:n, 0, s:i)
  374.     let s:n = strpart(s:n, s:i + 1, 19999)
  375.       endif
  376.       " Ignore case for VMS and windows
  377.       let s:name = substitute(s:name, '\c.*[/\\:\]]\([^/\\:_]*\)\(_[0-9a-zA-Z-]*\)\=\.vim', '\1', '')
  378.       exe "an 20.460." . s:idx . ' &Edit.&Keymap.' . s:name . " :set keymap=" . s:name . "<CR>"
  379.       unlet s:name
  380.       unlet s:i
  381.       let s:idx = s:idx + 10
  382.     endwhile
  383.     unlet s:idx
  384.   endif
  385.   unlet s:n
  386. endif
  387. if has("win32") || has("win16") || has("gui_motif") || has("gui_gtk") || has("gui_kde") || has("gui_photon") || has("gui_mac")
  388.   an 20.470 &Edit.Select\ Fo&nt\.\.\.    :set guifont=*<CR>
  389. endif
  390.  
  391. " Programming menu
  392. if !exists("g:ctags_command")
  393.   if has("vms")
  394.     let g:ctags_command = "mc vim:ctags *.*"
  395.   else
  396.     let g:ctags_command = "ctags -R ."
  397.   endif
  398. endif
  399.  
  400. an 40.300 &Tools.&Jump\ to\ this\ tag<Tab>g^]    g<C-]>
  401. vunmenu &Tools.&Jump\ to\ this\ tag<Tab>g^]
  402. vnoremenu &Tools.&Jump\ to\ this\ tag<Tab>g^]    g<C-]>
  403. an 40.310 &Tools.Jump\ &back<Tab>^T        <C-T>
  404. an 40.320 &Tools.Build\ &Tags\ File        :exe "!" . g:ctags_command<CR>
  405.  
  406. if has("folding") || has("spell")
  407.   an 40.330 &Tools.-SEP1-                        <Nop>
  408. endif
  409.  
  410. " Tools.Spelling Menu
  411. if has("spell")
  412.   an 40.335.110 &Tools.&Spelling.&Spell\ Check\ On        :set spell<CR>
  413.   an 40.335.120 &Tools.&Spelling.Spell\ Check\ &Off        :set nospell<CR>
  414.   an 40.335.130 &Tools.&Spelling.To\ &Next\ error<Tab>]s    ]s
  415.   an 40.335.130 &Tools.&Spelling.To\ &Previous\ error<Tab>[s    [s
  416.   an 40.335.140 &Tools.&Spelling.Suggest\ &Corrections<Tab>z=    z=
  417.   an 40.335.150 &Tools.&Spelling.&Repeat\ correction<Tab>:spellrepall    :spellrepall<CR>
  418.   an 40.335.200 &Tools.&Spelling.-SEP1-                <Nop>
  419.   an 40.335.210 &Tools.&Spelling.Set\ language\ to\ "en"    :set spl=en spell<CR>
  420.   an 40.335.220 &Tools.&Spelling.Set\ language\ to\ "en_au"    :set spl=en_au spell<CR>
  421.   an 40.335.230 &Tools.&Spelling.Set\ language\ to\ "en_ca"    :set spl=en_ca spell<CR>
  422.   an 40.335.240 &Tools.&Spelling.Set\ language\ to\ "en_gb"    :set spl=en_gb spell<CR>
  423.   an 40.335.250 &Tools.&Spelling.Set\ language\ to\ "en_nz"    :set spl=en_nz spell<CR>
  424.   an 40.335.260 &Tools.&Spelling.Set\ language\ to\ "en_us"    :set spl=en_us spell<CR>
  425.   an <silent> 40.335.270 &Tools.&Spelling.&Find\ More\ Languages    :call <SID>SpellLang()<CR>
  426.  
  427.   let s:undo_spellang = ['aun &Tools.&Spelling.&Find\ More\ Languages']
  428.   func! s:SpellLang()
  429.     for cmd in s:undo_spellang
  430.       exe "silent! " . cmd
  431.     endfor
  432.     let s:undo_spellang = []
  433.  
  434.     if &enc == "iso-8859-15"
  435.       let enc = "latin1"
  436.     else
  437.       let enc = &enc
  438.     endif
  439.  
  440.     let found = 0
  441.     let s = globpath(&rtp, "spell/*." . enc . ".spl")
  442.     if s != ""
  443.       let n = 300
  444.       for f in split(s, "\n")
  445.     let nm = substitute(f, '.*spell[/\\]\(..\)\.[^/\\]*\.spl', '\1', "")
  446.     if nm != "en" && nm !~ '/'
  447.       let found += 1
  448.       let menuname = '&Tools.&Spelling.Set\ language\ to\ "' . nm . '"'
  449.       exe 'an 40.335.' . n . ' ' . menuname . ' :set spl=' . nm . ' spell<CR>'
  450.       let s:undo_spellang += ['aun ' . menuname]
  451.     endif
  452.     let n += 10
  453.       endfor
  454.     endif
  455.     if found == 0
  456.       echomsg "Could not find other spell files"
  457.     elseif found == 1
  458.       echomsg "Found spell file " . nm
  459.     else
  460.       echomsg "Found " . found . " more spell files"
  461.     endif
  462.     " Need to redo this when 'encoding' is changed.
  463.     augroup spellmenu
  464.     au! EncodingChanged * call <SID>SpellLang()
  465.     augroup END
  466.   endfun
  467.  
  468. endif
  469.  
  470. " Tools.Fold Menu
  471. if has("folding")
  472.   " open close folds
  473.   an 40.340.110 &Tools.&Folding.&Enable/Disable\ folds<Tab>zi        zi
  474.   an 40.340.120 &Tools.&Folding.&View\ Cursor\ Line<Tab>zv        zv
  475.   an 40.340.120 &Tools.&Folding.Vie&w\ Cursor\ Line\ only<Tab>zMzx    zMzx
  476.   an 40.340.130 &Tools.&Folding.C&lose\ more\ folds<Tab>zm        zm
  477.   an 40.340.140 &Tools.&Folding.&Close\ all\ folds<Tab>zM        zM
  478.   an 40.340.150 &Tools.&Folding.O&pen\ more\ folds<Tab>zr        zr
  479.   an 40.340.160 &Tools.&Folding.&Open\ all\ folds<Tab>zR        zR
  480.   " fold method
  481.   an 40.340.200 &Tools.&Folding.-SEP1-            <Nop>
  482.   an 40.340.210 &Tools.&Folding.Fold\ Met&hod.M&anual    :set fdm=manual<CR>
  483.   an 40.340.210 &Tools.&Folding.Fold\ Met&hod.I&ndent    :set fdm=indent<CR>
  484.   an 40.340.210 &Tools.&Folding.Fold\ Met&hod.E&xpression :set fdm=expr<CR>
  485.   an 40.340.210 &Tools.&Folding.Fold\ Met&hod.S&yntax    :set fdm=syntax<CR>
  486.   an 40.340.210 &Tools.&Folding.Fold\ Met&hod.&Diff    :set fdm=diff<CR>
  487.   an 40.340.210 &Tools.&Folding.Fold\ Met&hod.Ma&rker    :set fdm=marker<CR>
  488.   " create and delete folds
  489.   vnoremenu 40.340.220 &Tools.&Folding.Create\ &Fold<Tab>zf    zf
  490.   an 40.340.230 &Tools.&Folding.&Delete\ Fold<Tab>zd        zd
  491.   an 40.340.240 &Tools.&Folding.Delete\ &All\ Folds<Tab>zD    zD
  492.   " moving around in folds
  493.   an 40.340.300 &Tools.&Folding.-SEP2-                <Nop>
  494.   an 40.340.310.10 &Tools.&Folding.Fold\ col&umn\ width.\ &0\     :set fdc=0<CR>
  495.   an 40.340.310.20 &Tools.&Folding.Fold\ col&umn\ width.\ &2\     :set fdc=2<CR>
  496.   an 40.340.310.30 &Tools.&Folding.Fold\ col&umn\ width.\ &3\     :set fdc=3<CR>
  497.   an 40.340.310.40 &Tools.&Folding.Fold\ col&umn\ width.\ &4\     :set fdc=4<CR>
  498.   an 40.340.310.50 &Tools.&Folding.Fold\ col&umn\ width.\ &5\     :set fdc=5<CR>
  499.   an 40.340.310.60 &Tools.&Folding.Fold\ col&umn\ width.\ &6\     :set fdc=6<CR>
  500.   an 40.340.310.70 &Tools.&Folding.Fold\ col&umn\ width.\ &7\     :set fdc=7<CR>
  501.   an 40.340.310.80 &Tools.&Folding.Fold\ col&umn\ width.\ &8\     :set fdc=8<CR>
  502. endif  " has folding
  503.  
  504. if has("diff")
  505.   an 40.350.100 &Tools.&Diff.&Update        :diffupdate<CR>
  506.   an 40.350.110 &Tools.&Diff.&Get\ Block    :diffget<CR>
  507.   vunmenu &Tools.&Diff.&Get\ Block
  508.   vnoremenu &Tools.&Diff.&Get\ Block        :diffget<CR>
  509.   an 40.350.120 &Tools.&Diff.&Put\ Block    :diffput<CR>
  510.   vunmenu &Tools.&Diff.&Put\ Block
  511.   vnoremenu &Tools.&Diff.&Put\ Block        :diffput<CR>
  512. endif
  513.  
  514. an 40.358 &Tools.-SEP2-                    <Nop>
  515. an 40.360 &Tools.&Make<Tab>:make            :make<CR>
  516. an 40.370 &Tools.&List\ Errors<Tab>:cl            :cl<CR>
  517. an 40.380 &Tools.L&ist\ Messages<Tab>:cl!        :cl!<CR>
  518. an 40.390 &Tools.&Next\ Error<Tab>:cn            :cn<CR>
  519. an 40.400 &Tools.&Previous\ Error<Tab>:cp        :cp<CR>
  520. an 40.410 &Tools.&Older\ List<Tab>:cold            :colder<CR>
  521. an 40.420 &Tools.N&ewer\ List<Tab>:cnew            :cnewer<CR>
  522. an 40.430.50 &Tools.Error\ &Window.&Update<Tab>:cwin    :cwin<CR>
  523. an 40.430.60 &Tools.Error\ &Window.&Open<Tab>:copen    :copen<CR>
  524. an 40.430.70 &Tools.Error\ &Window.&Close<Tab>:cclose    :cclose<CR>
  525.  
  526. an 40.520 &Tools.-SEP3-                    <Nop>
  527. an <silent> 40.530 &Tools.&Convert\ to\ HEX<Tab>:%!xxd
  528.     \ :call <SID>XxdConv()<CR>
  529. an <silent> 40.540 &Tools.Conve&rt\ back<Tab>:%!xxd\ -r
  530.     \ :call <SID>XxdBack()<CR>
  531.  
  532. " Use a function to do the conversion, so that it also works with 'insertmode'
  533. " set.
  534. func! s:XxdConv()
  535.   let mod = &mod
  536.   if has("vms")
  537.     %!mc vim:xxd
  538.   else
  539.     call s:XxdFind()
  540.     exe '%!"' . g:xxdprogram . '"'
  541.   endif
  542.   if getline(1) =~ "^0000000:"        " only if it worked
  543.     set ft=xxd
  544.   endif
  545.   let &mod = mod
  546. endfun
  547.  
  548. func! s:XxdBack()
  549.   let mod = &mod
  550.   if has("vms")
  551.     %!mc vim:xxd -r
  552.   else
  553.     call s:XxdFind()
  554.     exe '%!"' . g:xxdprogram . '" -r'
  555.   endif
  556.   set ft=
  557.   doautocmd filetypedetect BufReadPost
  558.   let &mod = mod
  559. endfun
  560.  
  561. func! s:XxdFind()
  562.   if !exists("g:xxdprogram")
  563.     " On the PC xxd may not be in the path but in the install directory
  564.     if (has("win32") || has("dos32")) && !executable("xxd")
  565.       let g:xxdprogram = $VIMRUNTIME . (&shellslash ? '/' : '\') . "xxd.exe"
  566.     else
  567.       let g:xxdprogram = "xxd"
  568.     endif
  569.   endif
  570. endfun
  571.  
  572. " Setup the Tools.Compiler submenu
  573. let s:n = globpath(&runtimepath, "compiler/*.vim")
  574. let s:idx = 100
  575. while strlen(s:n) > 0
  576.   let s:i = stridx(s:n, "\n")
  577.   if s:i < 0
  578.     let s:name = s:n
  579.     let s:n = ""
  580.   else
  581.     let s:name = strpart(s:n, 0, s:i)
  582.     let s:n = strpart(s:n, s:i + 1, 19999)
  583.   endif
  584.   " Ignore case for VMS and windows
  585.   let s:name = substitute(s:name, '\c.*[/\\:\]]\([^/\\:]*\)\.vim', '\1', '')
  586.   exe "an 30.440." . s:idx . ' &Tools.Se&T\ Compiler.' . s:name . " :compiler " . s:name . "<CR>"
  587.   unlet s:name
  588.   unlet s:i
  589.   let s:idx = s:idx + 10
  590. endwhile
  591. unlet s:n
  592. unlet s:idx
  593.  
  594. if !exists("no_buffers_menu")
  595.  
  596. " Buffer list menu -- Setup functions & actions
  597.  
  598. " wait with building the menu until after loading 'session' files. Makes
  599. " startup faster.
  600. let s:bmenu_wait = 1
  601.  
  602. if !exists("bmenu_priority")
  603.   let bmenu_priority = 60
  604. endif
  605.  
  606. func! s:BMAdd()
  607.   if s:bmenu_wait == 0
  608.     " when adding too many buffers, redraw in short format
  609.     if s:bmenu_count == &menuitems && s:bmenu_short == 0
  610.       call s:BMShow()
  611.     else
  612.       call <SID>BMFilename(expand("<afile>"), expand("<abuf>"))
  613.       let s:bmenu_count = s:bmenu_count + 1
  614.     endif
  615.   endif
  616. endfunc
  617.  
  618. func! s:BMRemove()
  619.   if s:bmenu_wait == 0
  620.     let name = expand("<afile>")
  621.     if isdirectory(name)
  622.       return
  623.     endif
  624.     let munge = <SID>BMMunge(name, expand("<abuf>"))
  625.  
  626.     if s:bmenu_short == 0
  627.       exe 'silent! aun &Buffers.' . munge
  628.     else
  629.       exe 'silent! aun &Buffers.' . <SID>BMHash2(munge) . munge
  630.     endif
  631.     let s:bmenu_count = s:bmenu_count - 1
  632.   endif
  633. endfunc
  634.  
  635. " Create the buffer menu (delete an existing one first).
  636. func! s:BMShow(...)
  637.   let s:bmenu_wait = 1
  638.   let s:bmenu_short = 1
  639.   let s:bmenu_count = 0
  640.   "
  641.   " get new priority, if exists
  642.   if a:0 == 1
  643.     let g:bmenu_priority = a:1
  644.   endif
  645.  
  646.   " remove old menu, if exists; keep one entry to avoid a torn off menu to
  647.   " disappear.
  648.   silent! unmenu &Buffers
  649.   exe 'noremenu ' . g:bmenu_priority . ".1 &Buffers.Dummy l"
  650.   silent! unmenu! &Buffers
  651.  
  652.   " create new menu; set 'cpo' to include the <CR>
  653.   let cpo_save = &cpo
  654.   set cpo&vim
  655.   exe 'an <silent> ' . g:bmenu_priority . ".2 &Buffers.&Refresh\\ menu :call <SID>BMShow()<CR>"
  656.   exe 'an ' . g:bmenu_priority . ".4 &Buffers.&Delete :confirm bd<CR>"
  657.   exe 'an ' . g:bmenu_priority . ".6 &Buffers.&Alternate :confirm b #<CR>"
  658.   exe 'an ' . g:bmenu_priority . ".7 &Buffers.&Next :confirm bnext<CR>"
  659.   exe 'an ' . g:bmenu_priority . ".8 &Buffers.&Previous :confirm bprev<CR>"
  660.   exe 'an ' . g:bmenu_priority . ".9 &Buffers.-SEP- :"
  661.   let &cpo = cpo_save
  662.   unmenu &Buffers.Dummy
  663.  
  664.   " figure out how many buffers there are
  665.   let buf = 1
  666.   while buf <= bufnr('$')
  667.     if bufexists(buf) && !isdirectory(bufname(buf)) && buflisted(buf)
  668.       let s:bmenu_count = s:bmenu_count + 1
  669.     endif
  670.     let buf = buf + 1
  671.   endwhile
  672.   if s:bmenu_count <= &menuitems
  673.     let s:bmenu_short = 0
  674.   endif
  675.  
  676.   " iterate through buffer list, adding each buffer to the menu:
  677.   let buf = 1
  678.   while buf <= bufnr('$')
  679.     if bufexists(buf) && !isdirectory(bufname(buf)) && buflisted(buf)
  680.       call <SID>BMFilename(bufname(buf), buf)
  681.     endif
  682.     let buf = buf + 1
  683.   endwhile
  684.   let s:bmenu_wait = 0
  685.   aug buffer_list
  686.   au!
  687.   au BufCreate,BufFilePost * call <SID>BMAdd()
  688.   au BufDelete,BufFilePre * call <SID>BMRemove()
  689.   aug END
  690. endfunc
  691.  
  692. func! s:BMHash(name)
  693.   " Make name all upper case, so that chars are between 32 and 96
  694.   let nm = substitute(a:name, ".*", '\U\0', "")
  695.   if has("ebcdic")
  696.     " HACK: Replace all non alphabetics with 'Z'
  697.     "       Just to make it work for now.
  698.     let nm = substitute(nm, "[^A-Z]", 'Z', "g")
  699.     let sp = char2nr('A') - 1
  700.   else
  701.     let sp = char2nr(' ')
  702.   endif
  703.   " convert first six chars into a number for sorting:
  704.   return (char2nr(nm[0]) - sp) * 0x800000 + (char2nr(nm[1]) - sp) * 0x20000 + (char2nr(nm[2]) - sp) * 0x1000 + (char2nr(nm[3]) - sp) * 0x80 + (char2nr(nm[4]) - sp) * 0x20 + (char2nr(nm[5]) - sp)
  705. endfunc
  706.  
  707. func! s:BMHash2(name)
  708.   let nm = substitute(a:name, ".", '\L\0', "")
  709.   " Not exactly right for EBCDIC...
  710.   if nm[0] < 'a' || nm[0] > 'z'
  711.     return '&others.'
  712.   elseif nm[0] <= 'd'
  713.     return '&abcd.'
  714.   elseif nm[0] <= 'h'
  715.     return '&efgh.'
  716.   elseif nm[0] <= 'l'
  717.     return '&ijkl.'
  718.   elseif nm[0] <= 'p'
  719.     return '&mnop.'
  720.   elseif nm[0] <= 't'
  721.     return '&qrst.'
  722.   else
  723.     return '&u-z.'
  724.   endif
  725. endfunc
  726.  
  727. " insert a buffer name into the buffer menu:
  728. func! s:BMFilename(name, num)
  729.   if isdirectory(a:name)
  730.     return
  731.   endif
  732.   let munge = <SID>BMMunge(a:name, a:num)
  733.   let hash = <SID>BMHash(munge)
  734.   if s:bmenu_short == 0
  735.     let name = 'an ' . g:bmenu_priority . '.' . hash . ' &Buffers.' . munge
  736.   else
  737.     let name = 'an ' . g:bmenu_priority . '.' . hash . '.' . hash . ' &Buffers.' . <SID>BMHash2(munge) . munge
  738.   endif
  739.   " set 'cpo' to include the <CR>
  740.   let cpo_save = &cpo
  741.   set cpo&vim
  742.   exe name . ' :confirm b' . a:num . '<CR>'
  743.   let &cpo = cpo_save
  744. endfunc
  745.  
  746. " Truncate a long path to fit it in a menu item.
  747. if !exists("g:bmenu_max_pathlen")
  748.   let g:bmenu_max_pathlen = 35
  749. endif
  750. func! s:BMTruncName(fname)
  751.   let name = a:fname
  752.   if g:bmenu_max_pathlen < 5
  753.     let name = ""
  754.   else
  755.     let len = strlen(name)
  756.     if len > g:bmenu_max_pathlen
  757.       let amountl = (g:bmenu_max_pathlen / 2) - 2
  758.       let amountr = g:bmenu_max_pathlen - amountl - 3
  759.       let pattern = '^\(.\{,' . amountl . '}\).\{-}\(.\{,' . amountr . '}\)$'
  760.       let left = substitute(name, pattern, '\1', '')
  761.       let right = substitute(name, pattern, '\2', '')
  762.       if strlen(left) + strlen(right) < len
  763.     let name = left . '...' . right
  764.       endif
  765.     endif
  766.   endif
  767.   return name
  768. endfunc
  769.  
  770. func! s:BMMunge(fname, bnum)
  771.   let name = a:fname
  772.   if name == ''
  773.     if !exists("g:menutrans_no_file")
  774.       let g:menutrans_no_file = "[No file]"
  775.     endif
  776.     let name = g:menutrans_no_file
  777.   else
  778.     let name = fnamemodify(name, ':p:~')
  779.   endif
  780.   " detach file name and separate it out:
  781.   let name2 = fnamemodify(name, ':t')
  782.   if a:bnum >= 0
  783.     let name2 = name2 . ' (' . a:bnum . ')'
  784.   endif
  785.   let name = name2 . "\t" . <SID>BMTruncName(fnamemodify(name,':h'))
  786.   let name = escape(name, "\\. \t|")
  787.   let name = substitute(name, "&", "&&", "g")
  788.   let name = substitute(name, "\n", "^@", "g")
  789.   return name
  790. endfunc
  791.  
  792. " When just starting Vim, load the buffer menu later
  793. if has("vim_starting")
  794.   augroup LoadBufferMenu
  795.     au! VimEnter * if !exists("no_buffers_menu") | call <SID>BMShow() | endif
  796.     au  VimEnter * au! LoadBufferMenu
  797.   augroup END
  798. else
  799.   call <SID>BMShow()
  800. endif
  801.  
  802. endif " !exists("no_buffers_menu")
  803.  
  804. " Window menu
  805. an 70.300 &Window.&New<Tab>^Wn            <C-W>n
  806. an 70.310 &Window.S&plit<Tab>^Ws        <C-W>s
  807. an 70.320 &Window.Sp&lit\ To\ #<Tab>^W^^    <C-W><C-^>
  808. an 70.330 &Window.Split\ &Vertically<Tab>^Wv    <C-W>v
  809. if has("vertsplit")
  810.   an <silent> 70.332 &Window.Split\ File\ E&xplorer    :call MenuExplOpen()<CR>
  811.   if !exists("*MenuExplOpen")
  812.     fun MenuExplOpen()
  813.       if @% == ""
  814.     20vsp .
  815.       else
  816.     exe "20vsp " . s:FnameEscape(expand("%:p:h"))
  817.       endif
  818.     endfun
  819.   endif
  820. endif
  821. an 70.335 &Window.-SEP1-                <Nop>
  822. an 70.340 &Window.&Close<Tab>^Wc            :confirm close<CR>
  823. an 70.345 &Window.Close\ &Other(s)<Tab>^Wo        :confirm only<CR>
  824. an 70.350 &Window.-SEP2-                <Nop>
  825. an 70.355 &Window.Move\ &To.&Top<Tab>^WK        <C-W>K
  826. an 70.355 &Window.Move\ &To.&Bottom<Tab>^WJ        <C-W>J
  827. an 70.355 &Window.Move\ &To.&Left\ side<Tab>^WH        <C-W>H
  828. an 70.355 &Window.Move\ &To.&Right\ side<Tab>^WL    <C-W>L
  829. an 70.360 &Window.Rotate\ &Up<Tab>^WR            <C-W>R
  830. an 70.362 &Window.Rotate\ &Down<Tab>^Wr            <C-W>r
  831. an 70.365 &Window.-SEP3-                <Nop>
  832. an 70.370 &Window.&Equal\ Size<Tab>^W=            <C-W>=
  833. an 70.380 &Window.&Max\ Height<Tab>^W_            <C-W>_
  834. an 70.390 &Window.M&in\ Height<Tab>^W1_            <C-W>1_
  835. an 70.400 &Window.Max\ &Width<Tab>^W\|            <C-W>\|
  836. an 70.410 &Window.Min\ Widt&h<Tab>^W1\|            <C-W>1\|
  837.  
  838. " The popup menu
  839. an 1.10 PopUp.&Undo            u
  840. an 1.15 PopUp.-SEP1-            <Nop>
  841. vnoremenu 1.20 PopUp.Cu&t        "+x
  842. vnoremenu 1.30 PopUp.&Copy        "+y
  843. cnoremenu 1.30 PopUp.&Copy        <C-Y>
  844. nnoremenu 1.40 PopUp.&Paste        "+gP
  845. cnoremenu 1.40 PopUp.&Paste        <C-R>+
  846. exe 'vnoremenu <script> 1.40 PopUp.&Paste    ' . paste#paste_cmd['v']
  847. exe 'inoremenu <script> 1.40 PopUp.&Paste    ' . paste#paste_cmd['i']
  848. vnoremenu 1.50 PopUp.&Delete        x
  849. an 1.55 PopUp.-SEP2-            <Nop>
  850. vnoremenu 1.60 PopUp.Select\ Blockwise    <C-V>
  851.  
  852. nnoremenu 1.70 PopUp.Select\ &Word    vaw
  853. onoremenu 1.70 PopUp.Select\ &Word    aw
  854. vnoremenu 1.70 PopUp.Select\ &Word    <C-C>vaw
  855. inoremenu 1.70 PopUp.Select\ &Word    <C-O>vaw
  856. cnoremenu 1.70 PopUp.Select\ &Word    <C-C>vaw
  857.  
  858. nnoremenu 1.73 PopUp.Select\ &Sentence    vas
  859. onoremenu 1.73 PopUp.Select\ &Sentence    as
  860. vnoremenu 1.73 PopUp.Select\ &Sentence    <C-C>vas
  861. inoremenu 1.73 PopUp.Select\ &Sentence    <C-O>vas
  862. cnoremenu 1.73 PopUp.Select\ &Sentence    <C-C>vas
  863.  
  864. nnoremenu 1.77 PopUp.Select\ Pa&ragraph    vap
  865. onoremenu 1.77 PopUp.Select\ Pa&ragraph    ap
  866. vnoremenu 1.77 PopUp.Select\ Pa&ragraph    <C-C>vap
  867. inoremenu 1.77 PopUp.Select\ Pa&ragraph    <C-O>vap
  868. cnoremenu 1.77 PopUp.Select\ Pa&ragraph    <C-C>vap
  869.  
  870. nnoremenu 1.80 PopUp.Select\ &Line    V
  871. onoremenu 1.80 PopUp.Select\ &Line    <C-C>V
  872. vnoremenu 1.80 PopUp.Select\ &Line    <C-C>V
  873. inoremenu 1.80 PopUp.Select\ &Line    <C-O>V
  874. cnoremenu 1.80 PopUp.Select\ &Line    <C-C>V
  875.  
  876. nnoremenu 1.90 PopUp.Select\ &Block    <C-V>
  877. onoremenu 1.90 PopUp.Select\ &Block    <C-C><C-V>
  878. vnoremenu 1.90 PopUp.Select\ &Block    <C-C><C-V>
  879. inoremenu 1.90 PopUp.Select\ &Block    <C-O><C-V>
  880. cnoremenu 1.90 PopUp.Select\ &Block    <C-C><C-V>
  881.  
  882. noremenu  <script> <silent> 1.100 PopUp.Select\ &All    :<C-U>call <SID>SelectAll()<CR>
  883. inoremenu <script> <silent> 1.100 PopUp.Select\ &All    <C-O>:call <SID>SelectAll()<CR>
  884. cnoremenu <script> <silent> 1.100 PopUp.Select\ &All    <C-U>call <SID>SelectAll()<CR>
  885.  
  886. if has("spell")
  887.   " Spell suggestions in the popup menu.  Note that this will slow down the
  888.   " appearance of the menu!
  889.   func! <SID>SpellPopup()
  890.     if exists("s:changeitem") && s:changeitem != ''
  891.       call <SID>SpellDel()
  892.     endif
  893.  
  894.     " Return quickly if spell checking is not enabled.
  895.     if !&spell || &spelllang == ''
  896.       return
  897.     endif
  898.  
  899.     let curcol = col('.')
  900.     let [w, a] = spellbadword()
  901.     if col('.') > curcol        " don't use word after the cursor
  902.       let w = ''
  903.       call cursor(0, curcol)    " put the cursor back where it was
  904.     endif
  905.     if w != ''
  906.       if a == 'caps'
  907.     let s:suglist = [substitute(w, '.*', '\u&', '')]
  908.       else
  909.     let s:suglist = spellsuggest(w, 10)
  910.       endif
  911.       if len(s:suglist) <= 0
  912.     call cursor(0, curcol)    " put the cursor back where it was
  913.       else
  914.     let s:changeitem = 'change\ "' . escape(w, ' .'). '"\ to'
  915.     let s:fromword = w
  916.     let pri = 1
  917.     for sug in s:suglist
  918.       exe 'anoremenu 1.5.' . pri . ' PopUp.' . s:changeitem . '.' . escape(sug, ' .')
  919.         \ . ' :call <SID>SpellReplace(' . pri . ')<CR>'
  920.       let pri += 1
  921.     endfor
  922.  
  923.     let s:additem = 'add\ "' . escape(w, ' .') . '"\ to\ word\ list'
  924.     exe 'anoremenu 1.6 PopUp.' . s:additem . ' :spellgood ' . w . '<CR>'
  925.  
  926.     let s:ignoreitem = 'ignore\ "' . escape(w, ' .') . '"'
  927.     exe 'anoremenu 1.7 PopUp.' . s:ignoreitem . ' :spellgood! ' . w . '<CR>'
  928.  
  929.     anoremenu 1.8 PopUp.-SpellSep- :
  930.       endif
  931.     endif
  932.   endfunc
  933.  
  934.   func! <SID>SpellReplace(n)
  935.     let l = getline('.')
  936.     call setline('.', strpart(l, 0, col('.') - 1) . s:suglist[a:n - 1]
  937.       \ . strpart(l, col('.') + len(s:fromword) - 1))
  938.   endfunc
  939.  
  940.   func! <SID>SpellDel()
  941.     exe "aunmenu PopUp." . s:changeitem
  942.     exe "aunmenu PopUp." . s:additem
  943.     exe "aunmenu PopUp." . s:ignoreitem
  944.     aunmenu PopUp.-SpellSep-
  945.     let s:changeitem = ''
  946.   endfun
  947.  
  948.   augroup SpellPopupMenu
  949.     au! MenuPopup * call <SID>SpellPopup()
  950.   augroup END
  951. endif
  952.  
  953. " The GUI toolbar (for MS-Windows and GTK)
  954. if has("toolbar")
  955.   an 1.10 ToolBar.Open            :browse confirm e<CR>
  956.   an <silent> 1.20 ToolBar.Save        :if expand("%") == ""<Bar>browse confirm w<Bar>else<Bar>confirm w<Bar>endif<CR>
  957.   an 1.30 ToolBar.SaveAll        :browse confirm wa<CR>
  958.  
  959.   if has("printer")
  960.     an 1.40   ToolBar.Print        :hardcopy<CR>
  961.     vunmenu   ToolBar.Print
  962.     vnoremenu ToolBar.Print        :hardcopy<CR>
  963.   elseif has("unix")
  964.     an 1.40   ToolBar.Print        :w !lpr<CR>
  965.     vunmenu   ToolBar.Print
  966.     vnoremenu ToolBar.Print        :w !lpr<CR>
  967.   endif
  968.  
  969.   an 1.45 ToolBar.-sep1-        <Nop>
  970.   an 1.50 ToolBar.Undo            u
  971.   an 1.60 ToolBar.Redo            <C-R>
  972.  
  973.   an 1.65 ToolBar.-sep2-        <Nop>
  974.   vnoremenu 1.70 ToolBar.Cut        "+x
  975.   vnoremenu 1.80 ToolBar.Copy        "+y
  976.   cnoremenu 1.80 ToolBar.Copy        <C-Y>
  977.   nnoremenu 1.90 ToolBar.Paste        "+gP
  978.   cnoremenu     ToolBar.Paste        <C-R>+
  979.   exe 'vnoremenu <script>     ToolBar.Paste    ' . paste#paste_cmd['v']
  980.   exe 'inoremenu <script>     ToolBar.Paste    ' . paste#paste_cmd['i']
  981.  
  982.   if !has("gui_athena")
  983.     an 1.95   ToolBar.-sep3-        <Nop>
  984.     an 1.100  ToolBar.Replace        :promptrepl<CR>
  985.     vunmenu   ToolBar.Replace
  986.     vnoremenu ToolBar.Replace        y:promptrepl <C-R>=<SID>FixFText()<CR><CR>
  987.     an 1.110  ToolBar.FindNext        n
  988.     an 1.120  ToolBar.FindPrev        N
  989.   endif
  990.  
  991.   an 1.215 ToolBar.-sep5-        <Nop>
  992.   an <silent> 1.220 ToolBar.LoadSesn    :call <SID>LoadVimSesn()<CR>
  993.   an <silent> 1.230 ToolBar.SaveSesn    :call <SID>SaveVimSesn()<CR>
  994.   an 1.240 ToolBar.RunScript        :browse so<CR>
  995.  
  996.   an 1.245 ToolBar.-sep6-        <Nop>
  997.   an 1.250 ToolBar.Make            :make<CR>
  998.   an 1.270 ToolBar.RunCtags        :exe "!" . g:ctags_command<CR>
  999.   an 1.280 ToolBar.TagJump        g<C-]>
  1000.  
  1001.   an 1.295 ToolBar.-sep7-        <Nop>
  1002.   an 1.300 ToolBar.Help            :help<CR>
  1003.   an <silent> 1.310 ToolBar.FindHelp    :call <SID>Helpfind()<CR>
  1004.  
  1005. " Only set the tooltips here if not done in a language menu file
  1006. if exists("*Do_toolbar_tmenu")
  1007.   call Do_toolbar_tmenu()
  1008. else
  1009.   let did_toolbar_tmenu = 1
  1010.   tmenu ToolBar.Open        Open file
  1011.   tmenu ToolBar.Save        Save current file
  1012.   tmenu ToolBar.SaveAll        Save all files
  1013.   tmenu ToolBar.Print        Print
  1014.   tmenu ToolBar.Undo        Undo
  1015.   tmenu ToolBar.Redo        Redo
  1016.   tmenu ToolBar.Cut        Cut to clipboard
  1017.   tmenu ToolBar.Copy        Copy to clipboard
  1018.   tmenu ToolBar.Paste        Paste from Clipboard
  1019.   if !has("gui_athena")
  1020.     tmenu ToolBar.Replace    Find / Replace...
  1021.     tmenu ToolBar.FindNext    Find Next
  1022.     tmenu ToolBar.FindPrev    Find Previous
  1023.   endif
  1024.   tmenu ToolBar.LoadSesn    Choose a session to load
  1025.   tmenu ToolBar.SaveSesn    Save current session
  1026.   tmenu ToolBar.RunScript    Choose a Vim Script to run
  1027.   tmenu ToolBar.Make        Make current project (:make)
  1028.   tmenu ToolBar.RunCtags    Build tags in current directory tree (!ctags -R .)
  1029.   tmenu ToolBar.TagJump        Jump to tag under cursor
  1030.   tmenu ToolBar.Help        Vim Help
  1031.   tmenu ToolBar.FindHelp    Search Vim Help
  1032. endif
  1033.  
  1034. " Select a session to load; default to current session name if present
  1035. fun! s:LoadVimSesn()
  1036.   if strlen(v:this_session) > 0
  1037.     let name = s:FnameEscape(v:this_session)
  1038.   else
  1039.     let name = "Session.vim"
  1040.   endif
  1041.   execute "browse so " . name
  1042. endfun
  1043.  
  1044. " Select a session to save; default to current session name if present
  1045. fun! s:SaveVimSesn()
  1046.   if strlen(v:this_session) == 0
  1047.     let v:this_session = "Session.vim"
  1048.   endif
  1049.   execute "browse mksession! " . s:FnameEscape(v:this_session)
  1050. endfun
  1051.  
  1052. endif
  1053.  
  1054. endif " !exists("did_install_default_menus")
  1055.  
  1056. " Define these items always, so that syntax can be switched on when it wasn't.
  1057. " But skip them when the Syntax menu was disabled by the user.
  1058. if !exists("did_install_syntax_menu")
  1059.   an 50.212 &Syntax.&Manual        :syn manual<CR>
  1060.   an 50.214 &Syntax.A&utomatic        :syn on<CR>
  1061.   an <silent> 50.216 &Syntax.on/off\ for\ &This\ file :call <SID>SynOnOff()<CR>
  1062.   if !exists("*s:SynOnOff")
  1063.     fun s:SynOnOff()
  1064.       if has("syntax_items")
  1065.     syn clear
  1066.       else
  1067.     if !exists("g:syntax_on")
  1068.       syn manual
  1069.     endif
  1070.     set syn=ON
  1071.       endif
  1072.     endfun
  1073.   endif
  1074. endif
  1075.  
  1076.  
  1077. " Install the Syntax menu only when filetype.vim has been loaded or when
  1078. " manual syntax highlighting is enabled.
  1079. " Avoid installing the Syntax menu twice.
  1080. if (exists("did_load_filetypes") || exists("syntax_on"))
  1081.     \ && !exists("did_install_syntax_menu")
  1082.   let did_install_syntax_menu = 1
  1083.  
  1084. " Skip setting up the individual syntax selection menus unless
  1085. " do_syntax_sel_menu is defined (it takes quite a bit of time).
  1086. if exists("do_syntax_sel_menu")
  1087.   runtime! synmenu.vim
  1088. else
  1089.   an 50.10 &Syntax.&Show\ filetypes\ in\ menu    :let do_syntax_sel_menu = 1<Bar>runtime! synmenu.vim<Bar>aunmenu &Syntax.&Show\ filetypes\ in\ menu<CR>
  1090.   an 50.195 &Syntax.-SEP1-        <Nop>
  1091. endif
  1092.  
  1093. an 50.210 &Syntax.&Off            :syn off<CR>
  1094. an 50.700 &Syntax.-SEP3-        <Nop>
  1095. an 50.710 &Syntax.Co&lor\ test        :sp $VIMRUNTIME/syntax/colortest.vim<Bar>so %<CR>
  1096. an 50.720 &Syntax.&Highlight\ test    :runtime syntax/hitest.vim<CR>
  1097. an 50.730 &Syntax.&Convert\ to\ HTML    :runtime syntax/2html.vim<CR>
  1098.  
  1099. endif " !exists("did_install_syntax_menu")
  1100.  
  1101. " Restore the previous value of 'cpoptions'.
  1102. let &cpo = s:cpo_save
  1103. unlet s:cpo_save
  1104.  
  1105. " vim: set sw=2 :
  1106.