diff options
-rw-r--r-- | runtime/autoload/dist/ft.vim | 2 | ||||
-rw-r--r-- | runtime/doc/uganda.txt | 94 | ||||
-rw-r--r-- | runtime/ftplugin.vim | 42 | ||||
-rw-r--r-- | runtime/indent.vim | 37 | ||||
-rw-r--r-- | runtime/makemenu.vim | 80 | ||||
-rw-r--r-- | runtime/menu.vim | 675 | ||||
-rw-r--r-- | runtime/synmenu.vim | 59 |
7 files changed, 476 insertions, 513 deletions
diff --git a/runtime/autoload/dist/ft.vim b/runtime/autoload/dist/ft.vim index 1b321159d0..d4e7be44b0 100644 --- a/runtime/autoload/dist/ft.vim +++ b/runtime/autoload/dist/ft.vim @@ -893,4 +893,4 @@ enddef # Uncomment this line to check for compilation errors early -defcompile +# defcompile diff --git a/runtime/doc/uganda.txt b/runtime/doc/uganda.txt index 8ea897575a..a71cf030ff 100644 --- a/runtime/doc/uganda.txt +++ b/runtime/doc/uganda.txt @@ -1,4 +1,4 @@ -*uganda.txt* For Vim version 8.2. Last change: 2020 Jan 08 +*uganda.txt* For Vim version 8.2. Last change: 2022 Feb 04 VIM REFERENCE MANUAL by Bram Moolenaar @@ -11,9 +11,9 @@ Vim is Charityware. You can use and copy it as much as you like, but you are encouraged to make a donation for needy children in Uganda. Please see |kcc| below or visit the ICCF web site, available at these URLs: - http://iccf-holland.org/ - http://www.vim.org/iccf/ - http://www.iccf.nl/ + https://iccf-holland.org/ + https://www.vim.org/iccf/ + https://www.iccf.nl/ You can also sponsor the development of Vim. Vim sponsors can vote for features. See |sponsor|. The money goes to Uganda anyway. @@ -169,10 +169,11 @@ households are stimulated to build a proper latrine. I helped setting up a production site for cement slabs. These are used to build a good latrine. They are sold below cost price. -There is a small clinic at the project, which provides children and their -family with medical help. When needed, transport to a hospital is offered. -Immunization programs are carried out and help is provided when an epidemic is -breaking out (measles and cholera have been a problem). +There is a clinic at the project, which provides children and their family +medical help. Since 2020 a maternity ward was added and 24/7 service is +available. When needed, transport to a hospital is offered. Immunization +programs are carried out and help is provided when an epidemic is breaking out +(measles and cholera have been a problem). *donate* Summer 1994 to summer 1995 I spent a whole year at the centre, working as a volunteer. I have helped to expand the centre and worked in the area of water @@ -214,44 +215,29 @@ Check the ICCF web site for the latest information! See |iccf| for the URL. USA: The methods mentioned below can be used. - Sending a check to the Nehemiah Group Outreach Society (NGOS) - is no longer possible, unfortunately. We are looking for - another way to get you an IRS tax receipt. - For sponsoring a child contact KCF in Canada (see below). US - checks can be sent to them to lower banking costs. - -Canada: Contact Kibaale Children's Fund (KCF) in Surrey, Canada. They - take care of the Canadian sponsors for the children in - Kibaale. KCF forwards 100% of the money to the project in - Uganda. You can send them a one time donation directly. + If you must send a check send it to our Canadian partner: + https://www.kuwasha.net/ + +Canada: Contact Kuwasha in Surrey, Canada. They take care of the + Canadian sponsors for the children in Kibaale. Kuwasha + forwards 100% of the money to the project in Uganda. You can + send them a one time donation directly. Please send me a note so that I know what has been donated - because of Vim. Ask KCF for information about sponsorship. - Kibaale Children's Fund c/o Pacific Academy - 10238-168 Street - Surrey, B.C. V4N 1Z4 - Canada - Phone: 604-581-5353 - If you make a donation to Kibaale Children's Fund (KCF) you - will receive a tax receipt which can be submitted with your - tax return. - -Holland: Transfer to the account of "Stichting ICCF Holland" in Lisse. - This will allow for tax deduction if you live in Holland. - Postbank, nr. 4548774 - IBAN: NL95 INGB 0004 5487 74 + because of Vim. Look on their for information about + sponsorship: https://www.kuwasha.net/ + If you make a donation to Kuwasha you will receive a tax + receipt which can be submitted with your tax return. + +Holland: Transfer to the account of "Stichting ICCF Holland" in + Amersfoort. This will allow for tax deduction if you live in + Holland. ING bank, IBAN: NL95 INGB 0004 5487 74 Germany: It is possible to make donations that allow for a tax return. Check the ICCF web site for the latest information: - http://iccf-holland.org/germany.html + https://iccf-holland.org/germany.html -World: Use a postal money order. That should be possible from any - country, mostly from the post office. Use this name (which is - in my passport): "Abraham Moolenaar". Use Euro for the - currency if possible. - -Europe: Use a bank transfer if possible. Your bank should have a form - that you can use for this. See "Others" below for the swift - code and IBAN number. +Europe: Use a bank transfer if possible. See "Others" below for the + swift code and IBAN number. Any other method should work. Ask for information about sponsorship. @@ -261,28 +247,12 @@ Credit Card: You can use PayPal to send money with a Credit card. This is https://www.paypal.com/en_US/mrb/pal=XAC62PML3GF8Q The e-mail address for sending the money to is: Bram@iccf-holland.org - For amounts above 400 Euro ($500) sending a check is - preferred. Others: Transfer to one of these accounts if possible: - Postbank, account 4548774 - Swift code: INGB NL 2A - IBAN: NL95 INGB 0004 5487 74 - under the name "stichting ICCF Holland", Lisse - If that doesn't work: - Rabobank Lisse, account 3765.05.117 - Swift code: RABO NL 2U - under the name "Bram Moolenaar", Lisse - Otherwise, send a check in euro or US dollars to the address - below. Minimal amount: $70 (my bank does not accept smaller - amounts for foreign check, sorry) - -Address to send checks to: - Bram Moolenaar - Finsterruetihof 1 - 8134 Adliswil - Switzerland - -This address is expected to be valid for a long time. + ING bank: IBAN: NL95 INGB 0004 5487 74 + Swift code: INGBNL2A + under the name "stichting ICCF Holland", Amersfoort + Checks are not accepted. + vim:tw=78:ts=8:noet:ft=help:norl: diff --git a/runtime/ftplugin.vim b/runtime/ftplugin.vim index a434b9372b..645f8c3e67 100644 --- a/runtime/ftplugin.vim +++ b/runtime/ftplugin.vim @@ -1,7 +1,7 @@ " Vim support file to switch on loading plugins for file types " " Maintainer: Bram Moolenaar <Bram@vim.org> -" Last change: 2006 Apr 30 +" Last change: 2022 Feb 04 if exists("did_load_ftplugin") finish @@ -10,26 +10,26 @@ let did_load_ftplugin = 1 augroup filetypeplugin au FileType * call s:LoadFTPlugin() +augroup END - func! s:LoadFTPlugin() - if exists("b:undo_ftplugin") - exe b:undo_ftplugin - unlet! b:undo_ftplugin b:did_ftplugin - endif - - let s = expand("<amatch>") - if s != "" - if &cpo =~# "S" && exists("b:did_ftplugin") - " In compatible mode options are reset to the global values, need to - " set the local values also when a plugin was already used. - unlet b:did_ftplugin - endif +def s:LoadFTPlugin() + if exists("b:undo_ftplugin") + exe b:undo_ftplugin + unlet! b:undo_ftplugin b:did_ftplugin + endif - " When there is a dot it is used to separate filetype names. Thus for - " "aaa.bbb" load "aaa" and then "bbb". - for name in split(s, '\.') - exe 'runtime! ftplugin/' . name . '.vim ftplugin/' . name . '_*.vim ftplugin/' . name . '/*.vim' - endfor + var s = expand("<amatch>") + if s != "" + if &cpo =~# "S" && exists("b:did_ftplugin") + # In compatible mode options are reset to the global values, need to + # set the local values also when a plugin was already used. + unlet b:did_ftplugin endif - endfunc -augroup END + + # When there is a dot it is used to separate filetype names. Thus for + # "aaa.bbb" load "aaa" and then "bbb". + for name in split(s, '\.') + exe 'runtime! ftplugin/' .. name .. '.vim ftplugin/' .. name .. '_*.vim ftplugin/' .. name .. '/*.vim' + endfor + endif +enddef diff --git a/runtime/indent.vim b/runtime/indent.vim index 12f03648ca..acddb923a3 100644 --- a/runtime/indent.vim +++ b/runtime/indent.vim @@ -1,7 +1,7 @@ " Vim support file to switch on loading indent files for file types " " Maintainer: Bram Moolenaar <Bram@vim.org> -" Last Change: 2008 Feb 22 +" Last Change: 2022 Feb 04 if exists("did_indent_on") finish @@ -10,22 +10,23 @@ let did_indent_on = 1 augroup filetypeindent au FileType * call s:LoadIndent() - func! s:LoadIndent() - if exists("b:undo_indent") - exe b:undo_indent - unlet! b:undo_indent b:did_indent - endif - let s = expand("<amatch>") - if s != "" - if exists("b:did_indent") - unlet b:did_indent - endif +augroup END - " When there is a dot it is used to separate filetype names. Thus for - " "aaa.bbb" load "indent/aaa.vim" and then "indent/bbb.vim". - for name in split(s, '\.') - exe 'runtime! indent/' . name . '.vim' - endfor +def s:LoadIndent() + if exists("b:undo_indent") + exe b:undo_indent + unlet! b:undo_indent b:did_indent + endif + var s = expand("<amatch>") + if s != "" + if exists("b:did_indent") + unlet b:did_indent endif - endfunc -augroup END + + # When there is a dot it is used to separate filetype names. Thus for + # "aaa.bbb" load "indent/aaa.vim" and then "indent/bbb.vim". + for name in split(s, '\.') + exe 'runtime! indent/' .. name .. '.vim' + endfor + endif +enddef diff --git a/runtime/makemenu.vim b/runtime/makemenu.vim index 6173d8b691..43f2eb6107 100644 --- a/runtime/makemenu.vim +++ b/runtime/makemenu.vim @@ -1,52 +1,54 @@ -" Script to define the syntax menu in synmenu.vim -" Maintainer: Bram Moolenaar <Bram@vim.org> -" Last Change: 2019 Dec 07 +vim9script -" This is used by "make menu" in the src directory. +# Script to define the syntax menu in synmenu.vim +# Maintainer: Bram Moolenaar <Bram@vim.org> +# Last Change: 2022 Feb 04 + +# This is used by "make menu" in the src directory. edit <sfile>:p:h/synmenu.vim -/The Start Of The Syntax Menu/+1,/The End Of The Syntax Menu/-1d -let s:lnum = line(".") - 1 -call append(s:lnum, "") -let s:lnum = s:lnum + 1 +:/The Start Of The Syntax Menu/+1,/The End Of The Syntax Menu/-1d +var lnum = line(".") - 1 +call append(lnum, "") +lnum += 1 -" Use the SynMenu command and function to define all menu entries -command! -nargs=* SynMenu call <SID>Syn(<q-args>) +# Use the SynMenu command and function to define all menu entries +command! -nargs=* SynMenu call Syn(<q-args>) -let s:cur_menu_name = "" -let s:cur_menu_nr = 0 -let s:cur_menu_item = 0 -let s:cur_menu_char = "" +var cur_menu_name = "" +var cur_menu_nr = 0 +var cur_menu_item = 0 +var cur_menu_char = "" -fun! <SID>Syn(arg) - " isolate menu name: until the first dot - let i = match(a:arg, '\.') - let menu_name = strpart(a:arg, 0, i) - let r = strpart(a:arg, i + 1, 999) - " isolate submenu name: until the colon - let i = match(r, ":") - let submenu_name = strpart(r, 0, i) - " after the colon is the syntax name - let syntax_name = strpart(r, i + 1, 999) +def Syn(arg: string) + # isolate menu name: until the first dot + var i = match(arg, '\.') + var menu_name = strpart(arg, 0, i) + var r = strpart(arg, i + 1, 999) + # isolate submenu name: until the colon + i = match(r, ":") + var submenu_name = strpart(r, 0, i) + # after the colon is the syntax name + var syntax_name = strpart(r, i + 1, 999) - if s:cur_menu_name != menu_name - let s:cur_menu_name = menu_name - let s:cur_menu_nr = s:cur_menu_nr + 10 - let s:cur_menu_item = 100 - let s:cur_menu_char = submenu_name[0] + if cur_menu_name != menu_name + cur_menu_name = menu_name + cur_menu_nr += 10 + cur_menu_item = 100 + cur_menu_char = submenu_name[0] else - " When starting a new letter, insert a menu separator. - let c = submenu_name[0] + # When starting a new letter, insert a menu separator. + var c = submenu_name[0] if c != s:cur_menu_char - exe 'an 50.' . s:cur_menu_nr . '.' . s:cur_menu_item . ' &Syntax.' . menu_name . ".-" . c . '- <nul>' - let s:cur_menu_item = s:cur_menu_item + 10 - let s:cur_menu_char = c + exe 'an 50.' .. s:cur_menu_nr .. '.' .. s:cur_menu_item .. ' &Syntax.' .. menu_name .. ".-" .. c .. '- <nul>' + cur_menu_item += 10 + cur_menu_char = c endif endif - call append(s:lnum, 'an 50.' . s:cur_menu_nr . '.' . s:cur_menu_item . ' &Syntax.' . menu_name . "." . submenu_name . ' :cal SetSyn("' . syntax_name . '")<CR>') - let s:cur_menu_item = s:cur_menu_item + 10 - let s:lnum = s:lnum + 1 -endfun + append(lnum, 'an 50.' .. s:cur_menu_nr .. '.' .. s:cur_menu_item .. ' &Syntax.' .. menu_name .. "." .. submenu_name .. ' :cal SetSyn("' .. syntax_name .. '")<CR>') + cur_menu_item += 10 + lnum += 1 +enddef SynMenu AB.A2ps\ config:a2ps SynMenu AB.Aap:aap @@ -676,6 +678,6 @@ SynMenu WXYZ.YAML:yaml SynMenu WXYZ.Yacc:yacc SynMenu WXYZ.Zimbu:zimbu -call append(s:lnum, "") +append(lnum, "") wq diff --git a/runtime/menu.vim b/runtime/menu.vim index 5f4e395e12..0a2bd1fb0b 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: 2021 Dec 22 +" Last Change: 2022 Feb 04 " 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. @@ -33,7 +33,7 @@ if exists("v:lang") || &langmenu != "" if strlen(s:lang) > 1 && s:lang !~? '^en_us' " When the language does not include the charset add 'encoding' if s:lang =~ '^\a\a$\|^\a\a_\a\a$' - let s:lang = s:lang . '.' . &enc + let s:lang = s:lang .. '.' .. &enc endif " We always use a lowercase name. @@ -49,26 +49,26 @@ if exists("v:lang") || &langmenu != "" " same menu file for them. let s:lang = substitute(s:lang, 'iso_8859-15\=$', "latin1", "") menutrans clear - exe "runtime! lang/menu_" . s:lang . ".vim" + exe "runtime! lang/menu_" .. s:lang .. ".vim" if !exists("did_menu_trans") " There is no exact match, try matching with a wildcard added " (e.g. find menu_de_de.iso_8859-1.vim if s:lang == de_DE). let s:lang = substitute(s:lang, '\.[^.]*', "", "") - exe "runtime! lang/menu_" . s:lang . "[^a-z]*vim" + exe "runtime! lang/menu_" .. s:lang .. "[^a-z]*vim" if !exists("did_menu_trans") && s:lang =~ '_' " If the language includes a region try matching without that region. " (e.g. find menu_de.vim if s:lang == de_DE). let langonly = substitute(s:lang, '_.*', "", "") - exe "runtime! lang/menu_" . langonly . "[^a-z]*vim" + exe "runtime! lang/menu_" .. langonly .. "[^a-z]*vim" endif if !exists("did_menu_trans") && strlen($LANG) > 1 && s:lang !~ '^en_us' " On windows locale names are complicated, try using $LANG, it might " have been set by set_init_1(). But don't do this for "en" or "en_us". " But don't match "slovak" when $LANG is "sl". - exe "runtime! lang/menu_" . tolower($LANG) . "[^a-z]*vim" + exe "runtime! lang/menu_" .. tolower($LANG) .. "[^a-z]*vim" endif endif endif @@ -104,19 +104,19 @@ if exists(':tlmenu') tlnoremenu 9999.90 &Help.&About <C-W>:intro<CR> endif -fun! s:Helpfind() +def s:Helpfind() if !exists("g:menutrans_help_dialog") - 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')" + 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')" endif - let h = inputdialog(g:menutrans_help_dialog) + var h = inputdialog(g:menutrans_help_dialog) if h != "" - let v:errmsg = "" - silent! exe "help " . h + v:errmsg = "" + silent! exe "help " .. h if v:errmsg != "" echo v:errmsg endif endif -endfun +enddef " File menu an 10.310 &File.&Open\.\.\.<Tab>:e :browse confirm e<CR> @@ -154,16 +154,9 @@ an 10.600 &File.-SEP4- <Nop> an 10.610 &File.Sa&ve-Exit<Tab>:wqa :confirm wqa<CR> an 10.620 &File.E&xit<Tab>:qa :confirm qa<CR> -func s:SelectAll() - exe "norm! gg" . (&slm == "" ? "VG" : "gH\<C-O>G") -endfunc - -func s:FnameEscape(fname) - if exists('*fnameescape') - return fnameescape(a:fname) - endif - return escape(a:fname, " \t\n*?[{`$\\%#'\"|!<") -endfunc +def s:SelectAll() + exe "norm! gg" .. (&slm == "" ? "VG" : "gH\<C-O>G") +enddef " Edit menu an 20.310 &Edit.&Undo<Tab>u u @@ -182,8 +175,8 @@ cnoremenu &Edit.&Paste<Tab>"+gP <C-R>+ if exists(':tlmenu') tlnoremenu &Edit.&Paste<Tab>"+gP <C-W>"+ endif -exe 'vnoremenu <script> &Edit.&Paste<Tab>"+gP ' . paste#paste_cmd['v'] -exe 'inoremenu <script> &Edit.&Paste<Tab>"+gP ' . paste#paste_cmd['i'] +exe 'vnoremenu <script> &Edit.&Paste<Tab>"+gP ' .. paste#paste_cmd['v'] +exe 'inoremenu <script> &Edit.&Paste<Tab>"+gP ' .. paste#paste_cmd['i'] 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 @@ -214,32 +207,33 @@ an 20.425 &Edit.-SEP3- <Nop> an 20.430 &Edit.Settings\ &Window :options<CR> an 20.435 &Edit.Startup\ &Settings :call <SID>EditVimrc()<CR> -fun! s:EditVimrc() +def s:EditVimrc() + var fname: string if $MYVIMRC != '' - let fname = $MYVIMRC + fname = $MYVIMRC elseif has("win32") if $HOME != '' - let fname = $HOME . "/_vimrc" + fname = $HOME .. "/_vimrc" else - let fname = $VIM . "/_vimrc" + fname = $VIM .. "/_vimrc" endif elseif has("amiga") - let fname = "s:.vimrc" + fname = "s:.vimrc" else - let fname = $HOME . "/.vimrc" + fname = $HOME .. "/.vimrc" endif - let fname = s:FnameEscape(fname) + fname = fnameescape(fname) if &mod - exe "split " . fname + exe "split " .. fname else - exe "edit " . fname + exe "edit " .. fname endif -endfun +enddef -fun! s:FixFText() - " Fix text in nameless register to be used with :promptfind. +def s:FixFText(): string + # Fix text in nameless register to be used with :promptfind. return substitute(@", "[\r\n]", '\\n', 'g') -endfun +enddef " Edit/Global Settings an 20.440.100 &Edit.&Global\ Settings.Toggle\ Pattern\ &Highlight<Tab>:set\ hls! :set hls! hls?<CR> @@ -272,34 +266,34 @@ an <silent> 20.440.320 &Edit.&Global\ Settings.Toggle\ &Bottom\ Scrollbar :call an <silent> 20.440.330 &Edit.&Global\ Settings.Toggle\ &Left\ Scrollbar :call <SID>ToggleGuiOption("l")<CR> an <silent> 20.440.340 &Edit.&Global\ Settings.Toggle\ &Right\ Scrollbar :call <SID>ToggleGuiOption("r")<CR> -fun! s:SearchP() +def s:SearchP() if !exists("g:menutrans_path_dialog") - let g:menutrans_path_dialog = "Enter search path for files.\nSeparate directory names with a comma." + g:menutrans_path_dialog = "Enter search path for files.\nSeparate directory names with a comma." endif - let n = inputdialog(g:menutrans_path_dialog, substitute(&path, '\\ ', ' ', 'g')) + var n = inputdialog(g:menutrans_path_dialog, substitute(&path, '\\ ', ' ', 'g')) if n != "" - let &path = substitute(n, ' ', '\\ ', 'g') + &path = substitute(n, ' ', '\\ ', 'g') endif -endfun +enddef -fun! s:TagFiles() +def s:TagFiles() if !exists("g:menutrans_tags_dialog") - let g:menutrans_tags_dialog = "Enter names of tag files.\nSeparate the names with a comma." + g:menutrans_tags_dialog = "Enter names of tag files.\nSeparate the names with a comma." endif - let n = inputdialog(g:menutrans_tags_dialog, substitute(&tags, '\\ ', ' ', 'g')) + var n = inputdialog(g:menutrans_tags_dialog, substitute(&tags, '\\ ', ' ', 'g')) if n != "" - let &tags = substitute(n, ' ', '\\ ', 'g') + &tags = substitute(n, ' ', '\\ ', 'g') endif -endfun +enddef -fun! s:ToggleGuiOption(option) - " If a:option is already set in guioptions, then we want to remove it - if match(&guioptions, "\\C" . a:option) > -1 - exec "set go-=" . a:option - else - exec "set go+=" . a:option - endif -endfun +def s:ToggleGuiOption(option: string) + # If a:option is already set in guioptions, then we want to remove it + if match(&guioptions, "\\C" .. option) > -1 + exec "set go-=" .. option + else + exec "set go+=" .. option + endif +enddef " Edit/File Settings @@ -331,34 +325,36 @@ an 20.440.620.80 &Edit.F&ile\ Settings.Soft\ &Tabstop.8 :set sts=8 sts?<CR> an <silent> 20.440.630 &Edit.F&ile\ Settings.Te&xt\ Width\.\.\. :call <SID>TextWidth()<CR> an <silent> 20.440.640 &Edit.F&ile\ Settings.&File\ Format\.\.\. :call <SID>FileFormat()<CR> -fun! s:TextWidth() + +def s:TextWidth() if !exists("g:menutrans_textwidth_dialog") - let g:menutrans_textwidth_dialog = "Enter new text width (0 to disable formatting): " + g:menutrans_textwidth_dialog = "Enter new text width (0 to disable formatting): " endif - let n = inputdialog(g:menutrans_textwidth_dialog, &tw) + var n = inputdialog(g:menutrans_textwidth_dialog, &tw .. '') if n != "" - " Remove leading zeros to avoid it being used as an octal number. - " But keep a zero by itself. - let tw = substitute(n, "^0*", "", "") - let &tw = tw == '' ? 0 : tw + # Remove leading zeros to avoid it being used as an octal number. + # But keep a zero by itself. + var tw = substitute(n, "^0*", "", "") + &tw = tw == '' ? 0 : tw endif -endfun +enddef -fun! s:FileFormat() +def s:FileFormat() if !exists("g:menutrans_fileformat_dialog") - let g:menutrans_fileformat_dialog = "Select format for writing the file" + g:menutrans_fileformat_dialog = "Select format for writing the file" endif if !exists("g:menutrans_fileformat_choices") - let g:menutrans_fileformat_choices = "&Unix\n&Dos\n&Mac\n&Cancel" + g:menutrans_fileformat_choices = "&Unix\n&Dos\n&Mac\n&Cancel" endif + var def_choice: number if &ff == "dos" - let def = 2 + def_choice = 2 elseif &ff == "mac" - let def = 3 + def_choice = 3 else - let def = 1 + def_choice = 1 endif - let n = confirm(g:menutrans_fileformat_dialog, g:menutrans_fileformat_choices, def, "Question") + var n = confirm(g:menutrans_fileformat_dialog, g:menutrans_fileformat_choices, def_choice, "Question") if n == 1 set ff=unix elseif n == 2 @@ -366,32 +362,33 @@ fun! s:FileFormat() elseif n == 3 set ff=mac endif -endfun +enddef let s:did_setup_color_schemes = 0 " Setup the Edit.Color Scheme submenu -func s:SetupColorSchemes() abort +def s:SetupColorSchemes() if s:did_setup_color_schemes return endif - let s:did_setup_color_schemes = 1 + s:did_setup_color_schemes = 1 - let n = globpath(&runtimepath, "colors/*.vim", 1, 1) - let n += globpath(&packpath, "pack/*/start/*/colors/*.vim", 1, 1) - let n += globpath(&packpath, "pack/*/opt/*/colors/*.vim", 1, 1) + var n = globpath(&runtimepath, "colors/*.vim", 1, 1) + n += globpath(&packpath, "pack/*/start/*/colors/*.vim", 1, 1) + n += globpath(&packpath, "pack/*/opt/*/colors/*.vim", 1, 1) - " Ignore case for VMS and windows, sort on name - let names = sort(map(n, 'substitute(v:val, "\\c.*[/\\\\:\\]]\\([^/\\\\:]*\\)\\.vim", "\\1", "")'), 1) + # Ignore case for VMS and windows, sort on name + var names = sort(map(n, 'substitute(v:val, "\\c.*[/\\\\:\\]]\\([^/\\\\:]*\\)\\.vim", "\\1", "")'), 1) - " define all the submenu entries - let idx = 100 + # define all the submenu entries + var idx = 100 for name in names - exe "an 20.450." . idx . ' &Edit.C&olor\ Scheme.' . name . " :colors " . name . "<CR>" - let idx = idx + 10 + exe "an 20.450." .. idx .. ' &Edit.C&olor\ Scheme.' .. name .. " :colors " .. name .. "<CR>" + idx += 10 endfor silent! aunmenu &Edit.Show\ C&olor\ Schemes\ in\ Menu -endfun +enddef + if exists("do_no_lazyload_menus") call s:SetupColorSchemes() else @@ -403,31 +400,33 @@ endif if has("keymap") let s:did_setup_keymaps = 0 - func s:SetupKeymaps() abort + def s:SetupKeymaps() if s:did_setup_keymaps return endif - let s:did_setup_keymaps = 1 + s:did_setup_keymaps = 1 - let n = globpath(&runtimepath, "keymap/*.vim", 1, 1) - if !empty(n) - let idx = 100 + var names = globpath(&runtimepath, "keymap/*.vim", 1, 1) + if !empty(names) + var idx = 100 an 20.460.90 &Edit.&Keymap.None :set keymap=<CR> - for name in n - " Ignore case for VMS and windows - let name = substitute(name, '\c.*[/\\:\]]\([^/\\:_]*\)\(_[0-9a-zA-Z-]*\)\=\.vim', '\1', '') - exe "an 20.460." . idx . ' &Edit.&Keymap.' . name . " :set keymap=" . name . "<CR>" - let idx = idx + 10 + for name in names + # Ignore case for VMS and windows + var mapname = substitute(name, '\c.*[/\\:\]]\([^/\\:_]*\)\(_[0-9a-zA-Z-]*\)\=\.vim', '\1', '') + exe "an 20.460." .. idx .. ' &Edit.&Keymap.' .. mapname .. " :set keymap=" .. mapname .. "<CR>" + idx += 10 endfor endif silent! aunmenu &Edit.Show\ &Keymaps\ in\ Menu - endfun + enddef + if exists("do_no_lazyload_menus") call s:SetupKeymaps() else an <silent> 20.460 &Edit.Show\ &Keymaps\ in\ Menu :call <SID>SetupKeymaps()<CR> endif endif + if has("win32") || has("gui_motif") || has("gui_gtk") || has("gui_kde") || has("gui_photon") || has("gui_mac") an 20.470 &Edit.Select\ Fo&nt\.\.\. :set guifont=*<CR> endif @@ -445,7 +444,7 @@ an 40.300 &Tools.&Jump\ to\ This\ Tag<Tab>g^] g<C-]> vunmenu &Tools.&Jump\ to\ This\ Tag<Tab>g^] vnoremenu &Tools.&Jump\ to\ This\ Tag<Tab>g^] g<C-]> an 40.310 &Tools.Jump\ &Back<Tab>^T <C-T> -an 40.320 &Tools.Build\ &Tags\ File :exe "!" . g:ctags_command<CR> +an 40.320 &Tools.Build\ &Tags\ File :exe "!" .. g:ctags_command<CR> if has("folding") || has("spell") an 40.330 &Tools.-SEP1- <Nop> @@ -469,50 +468,47 @@ if has("spell") an <silent> 40.335.270 &Tools.&Spelling.&Find\ More\ Languages :call <SID>SpellLang()<CR> let s:undo_spelllang = ['aun &Tools.&Spelling.&Find\ More\ Languages'] - func s:SpellLang() + def s:SpellLang() for cmd in s:undo_spelllang - exe "silent! " . cmd + exe "silent! " .. cmd endfor - let s:undo_spelllang = [] + s:undo_spelllang = [] - if &enc == "iso-8859-15" - let enc = "latin1" - else - let enc = &enc - endif + var enc = &enc == "iso-8859-15" ? "latin1" : &enc if !exists("g:menutrans_set_lang_to") - let g:menutrans_set_lang_to = 'Set Language to' + g:menutrans_set_lang_to = 'Set Language to' endif - let found = 0 - let s = globpath(&runtimepath, "spell/*." . enc . ".spl", 1, 1) - if !empty(s) - let n = 300 - for f in s - let nm = substitute(f, '.*spell[/\\]\(..\)\.[^/\\]*\.spl', '\1', "") + var found = 0 + var _nm = '' + var names = globpath(&runtimepath, "spell/*." .. enc .. ".spl", 1, 1) + if !empty(names) + var n = 300 + for f in names + var nm = substitute(f, '.*spell[/\\]\(..\)\.[^/\\]*\.spl', '\1', "") if nm != "en" && nm !~ '/' - let _nm = nm - let found += 1 - let menuname = '&Tools.&Spelling.' . escape(g:menutrans_set_lang_to, "\\. \t|") . '\ "' . nm . '"' - exe 'an 40.335.' . n . ' ' . menuname . ' :set spl=' . nm . ' spell<CR>' - let s:undo_spelllang += ['aun ' . menuname] + _nm = nm + found += 1 + var menuname = '&Tools.&Spelling.' .. escape(g:menutrans_set_lang_to, "\\. \t|") .. '\ "' .. nm .. '"' + exe 'an 40.335.' .. n .. ' ' .. menuname .. ' :set spl=' .. nm .. ' spell<CR>' + s:undo_spelllang += ['aun ' .. menuname] endif - let n += 10 + n += 10 endfor endif if found == 0 echomsg "Could not find other spell files" elseif found == 1 - echomsg "Found spell file " . _nm + echomsg "Found spell file " .. _nm else - echomsg "Found " . found . " more spell files" + echomsg "Found " .. found .. " more spell files" endif - " Need to redo this when 'encoding' is changed. + # Need to redo this when 'encoding' is changed. augroup spellmenu au! EncodingChanged * call <SID>SpellLang() augroup END - endfun + enddef endif @@ -581,66 +577,67 @@ an <silent> 40.540 &Tools.Conve&rt\ Back<Tab>:%!xxd\ -r " Use a function to do the conversion, so that it also works with 'insertmode' " set. -func s:XxdConv() - let mod = &mod +def s:XxdConv() + var mod = &mod if has("vms") - %!mc vim:xxd + :%!mc vim:xxd else - call s:XxdFind() - exe '%!' . g:xxdprogram + s:XxdFind() + exe '%!' .. g:xxdprogram endif - if getline(1) =~ "^0000000:" " only if it worked + if getline(1) =~ "^0000000:" # only if it worked set ft=xxd endif - let &mod = mod -endfun + &mod = mod +enddef -func s:XxdBack() - let mod = &mod +def s:XxdBack() + var mod = &mod if has("vms") - %!mc vim:xxd -r + :%!mc vim:xxd -r else - call s:XxdFind() - exe '%!' . g:xxdprogram . ' -r' + s:XxdFind() + exe '%!' .. g:xxdprogram .. ' -r' endif set ft= doautocmd filetypedetect BufReadPost - let &mod = mod -endfun + &mod = mod +enddef -func s:XxdFind() +def s:XxdFind() if !exists("g:xxdprogram") - " On the PC xxd may not be in the path but in the install directory + # On the PC xxd may not be in the path but in the install directory if has("win32") && !executable("xxd") - let g:xxdprogram = $VIMRUNTIME . (&shellslash ? '/' : '\') . "xxd.exe" + g:xxdprogram = $VIMRUNTIME .. (&shellslash ? '/' : '\') .. "xxd.exe" if g:xxdprogram =~ ' ' - let g:xxdprogram = '"' .. g:xxdprogram .. '"' + g:xxdprogram = '"' .. g:xxdprogram .. '"' endif else - let g:xxdprogram = "xxd" + g:xxdprogram = "xxd" endif endif -endfun +enddef let s:did_setup_compilers = 0 " Setup the Tools.Compiler submenu -func s:SetupCompilers() abort +def s:SetupCompilers() if s:did_setup_compilers return endif - let s:did_setup_compilers = 1 - - let n = globpath(&runtimepath, "compiler/*.vim", 1, 1) - let idx = 100 - for name in n - " Ignore case for VMS and windows - let name = substitute(name, '\c.*[/\\:\]]\([^/\\:]*\)\.vim', '\1', '') - exe "an 30.440." . idx . ' &Tools.Se&t\ Compiler.' . name . " :compiler " . name . "<CR>" - let idx = idx + 10 + s:did_setup_compilers = 1 + + var names = globpath(&runtimepath, "compiler/*.vim", 1, 1) + var idx = 100 + for name in names + # Ignore case for VMS and windows + var cname = substitute(name, '\c.*[/\\:\]]\([^/\\:]*\)\.vim', '\1', '') + exe "an 30.440." .. idx .. ' &Tools.Se&t\ Compiler.' .. cname .. " :compiler " .. cname .. "<CR>" + idx += 10 endfor silent! aunmenu &Tools.Show\ Compiler\ Se&ttings\ in\ Menu -endfun +enddef + if exists("do_no_lazyload_menus") call s:SetupCompilers() else @@ -649,13 +646,13 @@ endif " Load ColorScheme, Compiler Setting and Keymap menus when idle. if !exists("do_no_lazyload_menus") - func s:SetupLazyloadMenus() - call s:SetupColorSchemes() - call s:SetupCompilers() + def s:SetupLazyloadMenus() + s:SetupColorSchemes() + s:SetupCompilers() if has("keymap") - call s:SetupKeymaps() + s:SetupKeymaps() endif - endfunc + enddef augroup SetupLazyloadMenus au! au CursorHold,CursorHoldI * call <SID>SetupLazyloadMenus() | au! SetupLazyloadMenus @@ -680,135 +677,133 @@ if !exists("bmenu_priority") endif " invoked from a BufCreate or BufFilePost autocommand -func s:BMAdd() +def s:BMAdd() if s:bmenu_wait == 0 - " when adding too many buffers, redraw in short format + # when adding too many buffers, redraw in short format if s:bmenu_count == &menuitems && s:bmenu_short == 0 - call s:BMShow() + s:BMShow() else - let name = expand("<afile>") - let num = expand("<abuf>") + 0 " add zero to convert to a number type + var name = expand("<afile>") + var num = str2nr(expand("<abuf>")) if s:BMCanAdd(name, num) - call <SID>BMFilename(name, num) - let s:bmenu_count += 1 + s:BMFilename(name, num) + s:bmenu_count += 1 endif endif endif -endfunc +enddef " invoked from a BufDelete or BufFilePre autocommand -func s:BMRemove() +def s:BMRemove() if s:bmenu_wait == 0 - let bufnum = expand("<abuf>") + var bufnum = expand("<abuf>") if s:bmenu_items->has_key(bufnum) - let menu_name = s:bmenu_items[bufnum] - exe 'silent! aun &Buffers.' . menu_name - let s:bmenu_count = s:bmenu_count - 1 + var menu_name = s:bmenu_items[bufnum] + exe 'silent! aun &Buffers.' .. menu_name + s:bmenu_count = s:bmenu_count - 1 unlet s:bmenu_items[bufnum] endif endif -endfunc +enddef " Return non-zero if buffer with number "name" / "num" is useful to add in the " buffer menu. -func s:BMCanAdd(name, num) - " no directory or unlisted buffer - if isdirectory(a:name) || !buflisted(a:num) - return 0 +def s:BMCanAdd(name: string, num: number): bool + # no directory or unlisted buffer + if isdirectory(name) || !buflisted(num) + return false endif - " no name with control characters - if a:name =~ '[\x01-\x1f]' - return 0 + # no name with control characters + if name =~ '[\x01-\x1f]' + return false endif - " no special buffer, such as terminal or popup - let buftype = getbufvar(a:num, '&buftype') + # no special buffer, such as terminal or popup + var buftype = getbufvar(num, '&buftype') if buftype != '' && buftype != 'nofile' && buftype != 'nowrite' - return 0 + return false endif - " only existing |