summaryrefslogtreecommitdiff
path: root/runtime
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2022-02-04 19:48:06 +0000
committerBram Moolenaar <Bram@vim.org>2022-02-04 19:48:06 +0000
commit3e79c97c18c50f97797ab13ed81c4011eba9aba0 (patch)
tree42f48424033a7a680059526fe1735c4bb7de1f9c /runtime
parenta2baa73d1d33014adea0fd9567949089ca21a782 (diff)
downloadvim-git-3e79c97c18c50f97797ab13ed81c4011eba9aba0.tar.gz
Update runtime files; use compiled functions
Diffstat (limited to 'runtime')
-rw-r--r--runtime/autoload/dist/ft.vim2
-rw-r--r--runtime/doc/uganda.txt94
-rw-r--r--runtime/ftplugin.vim42
-rw-r--r--runtime/indent.vim37
-rw-r--r--runtime/makemenu.vim80
-rw-r--r--runtime/menu.vim675
-rw-r--r--runtime/synmenu.vim59
7 files changed, 476 insertions, 513 deletions
diff --git a/runtime/autoload/dist/ft.vim b/runtime/autoload/dist/ft.vim
index 1b321159d..d4e7be44b 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 8ea897575..a71cf030f 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 a434b9372..645f8c3e6 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 12f03648c..acddb923a 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 6173d8b69..43f2eb610 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 5f4e395e1..0a2bd1fb0 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 buffers
- return bufexists(a:num)
-endfunc
+ # only existing buffers
+ return bufexists(num)
+enddef
" Create the buffer menu (delete an existing one first).
-func s:BMShow(...)
- let s:bmenu_wait = 1
- let s:bmenu_short = 1
- let s:bmenu_count = 0
- let s:bmenu_items = {}
- "
- " get new priority, if exists
- if a:0 == 1
- let g:bmenu_priority = a:1
- endif
-
- " Remove old menu, if it exists; keep one entry to avoid a torn off menu to
- " disappear. Use try/catch to avoid setting v:errmsg
- try | unmenu &Buffers | catch | endtry
- exe 'noremenu ' . g:bmenu_priority . ".1 &Buffers.Dummy l"
- try | unmenu! &Buffers | catch | endtry
-
- " create new menu; set 'cpo' to include the <CR>
- let cpo_save = &cpo
- set cpo&vim
- exe 'an <silent> ' . g:bmenu_priority . ".2 &Buffers.&Refresh\\ menu :call <SID>BMShow()<CR>"
- exe 'an ' . g:bmenu_priority . ".4 &Buffers.&Delete :confirm bd<CR>"
- exe 'an ' . g:bmenu_priority . ".6 &Buffers.&Alternate :confirm b #<CR>"
- exe 'an ' . g:bmenu_priority . ".7 &Buffers.&Next :confirm bnext<CR>"
- exe 'an ' . g:bmenu_priority . ".8 &Buffers.&Previous :confirm bprev<CR>"
- exe 'an ' . g:bmenu_priority . ".9 &Buffers.-SEP- :"
- let &cpo = cpo_save
+def s:BMShow()
+ s:bmenu_wait = 1
+ s:bmenu_short = 1
+ s:bmenu_count = 0
+ s:bmenu_items = {}
+
+ # Remove old menu, if it exists; keep one entry to avoid a torn off menu to
+ # disappear. Use try/catch to avoid setting v:errmsg
+ try
+ unmenu &Buffers
+ catch
+ endtry
+ exe 'noremenu ' .. g:bmenu_priority .. ".1 &Buffers.Dummy l"
+ try
+ unmenu! &Buffers
+ catch
+ endtry
+
+ # create new menu
+ exe 'an <silent> ' .. g:bmenu_priority .. ".2 &Buffers.&Refresh\\ menu :call <SID>BMShow()<CR>"
+ exe 'an ' .. g:bmenu_priority .. ".4 &Buffers.&Delete :confirm bd<CR>"
+ exe 'an ' .. g:bmenu_priority .. ".6 &Buffers.&Alternate :confirm b #<CR>"
+ exe 'an ' .. g:bmenu_priority .. ".7 &Buffers.&Next :confirm bnext<CR>"
+ exe 'an ' .. g:bmenu_priority .. ".8 &Buffers.&Previous :confirm bprev<CR>"
+ exe 'an ' .. g:bmenu_priority .. ".9 &Buffers.-SEP- :"
unmenu &Buffers.Dummy
- " figure out how many buffers there are
- let buf = 1
+ # figure out how many buffers there are
+ var buf = 1
while buf <= bufnr('$')
if s:BMCanAdd(bufname(buf), buf)
- let s:bmenu_count = s:bmenu_count + 1
+ s:bmenu_count = s:bmenu_count + 1
endif
- let buf = buf + 1
+ buf += 1
endwhile
if s:bmenu_count <= &menuitems
- let s:bmenu_short = 0
+ s:bmenu_short = 0
endif
- " iterate through buffer list, adding each buffer to the menu:
- let buf = 1
+ # iterate through buffer list, adding each buffer to the menu:
+ buf = 1
while buf <= bufnr('$')
- let name = bufname(buf)
+ var name = bufname(buf)
if s:BMCanAdd(name, buf)
- call <SID>BMFilename(name, buf)
+ call s:BMFilename(name, buf)
endif
- let buf = buf + 1
+ buf += 1
endwhile
- let s:bmenu_wait = 0
+ s:bmenu_wait = 0
aug buffer_list
- au!
- au BufCreate,BufFilePost * call <SID>BMAdd()
- au BufDelete,BufFilePre * call <SID>BMRemove()
+ au!
+ au BufCreate,BufFilePost * call s:BMAdd()
+ au BufDelete,BufFilePre * call s:BMRemove()
aug END
-endfunc
+enddef
-func s:BMHash(name)
- " Make name all upper case, so that chars are between 32 and 96
- let nm = substitute(a:name, ".*", '\U\0', "")
+def s:BMHash(name: string): number
+ # Make name all upper case, so that chars are between 32 and 96
+ var nm = substitute(name, ".*", '\U\0', "")
+ var sp: number
if has("ebcdic")
- " HACK: Replace all non alphabetics with 'Z'
- " Just to make it work for now.
- let nm = substitute(nm, "[^A-Z]", 'Z', "g")
- let sp = char2nr('A') - 1
+ # HACK: Replace all non alphabetics with 'Z'
+ # Just to make it work for now.
+ nm = substitute(nm, "[^A-Z]", 'Z', "g")
+ sp = char2nr('A') - 1
else
- let sp = char2nr(' ')
+ sp = char2nr(' ')
endif
- " convert first six chars into a number for sorting:
+ # convert first six chars into a number for sorting:
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)
-endfunc
+enddef
-func s:BMHash2(name)
- let nm = substitute(a:name, ".", '\L\0', "")
- " Not exactly right for EBCDIC...
+def s:BMHash2(name: string): string
+ var nm = substitute(name, ".", '\L\0', "")
if nm[0] < 'a' || nm[0] > 'z'
return '&others.'
elseif nm[0] <= 'd'
@@ -824,72 +819,70 @@ func s:BMHash2(name)
else
return '&u-z.'
endif
-endfunc
+enddef
" Insert a buffer name into the buffer menu.
-func s:BMFilename(name, num)
- let munge = <SID>BMMunge(a:name, a:num)
- let hash = <SID>BMHash(munge)
+def s:BMFilename(name: string, num: number)
+ var munge = s:BMMunge(name, num)
+ var hash = s:BMHash(munge)
+ var cmd: string
if s:bmenu_short == 0
- let s:bmenu_items[a:num] = munge
- let cmd = 'an ' . g:bmenu_priority . '.' . hash . ' &Buffers.' . munge
+ s:bmenu_items[num] = munge
+ cmd = 'an ' .. g:bmenu_priority .. '.' .. hash .. ' &Buffers.' .. munge
else
- let menu_name = <SID>BMHash2(munge) . munge
- let s:bmenu_items[a:num] = menu_name
- let cmd = 'an ' . g:bmenu_priority . '.' . hash . '.' . hash . ' &Buffers.' . menu_name
+ var menu_name = s:BMHash2(munge) .. munge
+ s:bmenu_items[num] = menu_name
+ cmd = 'an ' .. g:bmenu_priority .. '.' .. hash .. '.' .. hash .. ' &Buffers.' .. menu_name
endif
- " set 'cpo' to include the <CR>
- let cpo_save = &cpo
- set cpo&vim
- exe cmd . ' :confirm b' . a:num . '<CR>'
- let &cpo = cpo_save
-endfunc
+ exe cmd .. ' :confirm b' .. num .. '<CR>'
+enddef
" Truncate a long path to fit it in a menu item.
if !exists("g:bmenu_max_pathlen")
let g:bmenu_max_pathlen = 35
endif
-func s:BMTruncName(fname)
- let name = a:fname
+
+def s:BMTruncName(fname: string): string
+ var name = fname
if g:bmenu_max_pathlen < 5
- let name = ""
+ name = ""
else
- let len = strlen(name)
+ var len = strlen(name)
if len > g:bmenu_max_pathlen
- let amountl = (g:bmenu_max_pathlen / 2) - 2
- let amountr = g:bmenu_max_pathlen - amountl - 3
- let pattern = '^\(.\{,' . amountl . '}\).\{-}\(.\{,' . amountr . '}\)$'
- let left = substitute(name, pattern, '\1', '')
- let right = substitute(name, pattern, '\2', '')
+ var amountl = (g:bmenu_max_pathlen / 2) - 2
+ var amountr = g:bmenu_max_pathlen - amountl - 3
+ var pattern = '^\(.\{,' .. amountl .. '}\).\{-}\(.\{,' .. amountr .. '}\)$'
+ var left = substitute(name, pattern, '\1', '')
+ var right = substitute(name, pattern, '\2', '')
if strlen(left) + strlen(right) < len
- let name = left . '...' . right
+ name = left .. '...' .. right
endif
endif
endif
return name
-endfunc
+enddef
-func s:BMMunge(fname, bnum)
- let name = a:fname
+def s:BMMunge(fname: string, bnum: number): string
+ var name = fname
if name == ''
if !exists("g:menutrans_no_file")
- let g:menutrans_no_file = "[No Name]"
+ g:menutrans_no_file = "[No Name]"
endif
- let name = g:menutrans_no_file
+ name = g:menutrans_no_file
else
- let name = fnamemodify(name, ':p:~')
+ name = fnamemodify(name, ':p:~')
endif
- " detach file name and separate it out:
- let name2 = fnamemodify(name, ':t')
- if a:bnum >= 0
- let name2 = name2 . ' (' . a:bnum . ')'
+ # detach file name and separate it out:
+ var name2 = fnamemodify(name, ':t')
+ if bnum >= 0
+ name2 = name2 .. ' (' .. bnum .. ')'
endif
- let name = name2 . "\t" . <SID>BMTruncName(fnamemodify(name,':h'))
- let name = escape(name, "\\. \t|")
- let name = substitute(name, "&", "&&", "g")
- let name = substitute(name, "\n", "^@", "g")
+ name = name2 .. "\t" .. s:BMTruncName(fnamemodify(name, ':h'))
+ name = escape(name, "\\. \t|")
+ name = substitute(name, "&", "&&", "g")
+ name = substitute(name, "\n", "^@", "g")
return name
-endfunc
+enddef
" When just starting Vim, load the buffer menu later
if has("vim_starting")
@@ -910,13 +903,13 @@ an 70.320 &Window.Sp&lit\ To\ #<Tab>^W^^ <C-W><C-^>
an 70.330 &Window.Split\ &Vertically<Tab>^Wv <C-W>v
an <silent> 70.332 &Window.Split\ File\ E&xplorer :call MenuExplOpen()<CR>
if !exists("*MenuExplOpen")
- fun MenuExplOpen()
+ def MenuExplOpen()
if @% == ""
- 20vsp .
+ :20vsp .
else
- exe "20vsp " . s:FnameEscape(expand("%:p:h"))
+ exe ":20vsp " .. fnameescape(expand("%:p:h"))
endif
- endfun
+ enddef
endif
an 70.335 &Window.-SEP1- <Nop>
an 70.340 &Window.&Close<Tab>^Wc :confirm close<CR>
@@ -943,8 +936,8 @@ vnoremenu 1.30 PopUp.&Copy "+y
cnoremenu 1.30 PopUp.&Copy <C-Y>
nnoremenu 1.40 PopUp.&Paste "+gP
cnoremenu 1.40 PopUp.&Paste <C-R>+
-exe 'vnoremenu <script> 1.40 PopUp.&Paste ' . paste#paste_cmd['v']
-exe 'inoremenu <script> 1.40 PopUp.&Paste ' . paste#paste_cmd['i']
+exe 'vnoremenu <script> 1.40 PopUp.&Paste ' .. paste#paste_cmd['v']
+exe 'inoremenu <script> 1.40 PopUp.&Paste ' .. paste#paste_cmd['i']
vnoremenu 1.50 PopUp.&Delete x
an 1.55 PopUp.-SEP2- <Nop>
vnoremenu 1.60 PopUp.Select\ Blockwise <C-V>
@@ -986,77 +979,75 @@ cnoremenu <script> <silent> 1.100 PopUp.Select\ &All <C-U>call <SID>SelectAll()<
if has("spell")
" Spell suggestions in the popup menu. Note that this will slow down the
" appearance of the menu!
- func s:SpellPopup()
+ def s:SpellPopup()
if exists("s:changeitem") && s:changeitem != ''
- call <SID>SpellDel()
+ call s:SpellDel()
endif
- " Return quickly if spell checking is not enabled.
+ # Return quickly if spell checking is not enabled.
if !&spell || &spelllang == ''
return
endif
- let curcol = col('.')
- let [w, a] = spellbadword()
- if col('.') > curcol " don't use word after the cursor
- let w = ''
+ var curcol = col('.')
+ var w: string
+ var a: string
+ [w, a] = spellbadword()
+ if col('.') > curcol # don't use word after the cursor
+ w = ''
endif
if w != ''
if a == 'caps'
- let s:suglist = [substitute(w, '.*', '\u&', '')]
+ s:suglist = [substitute(w, '.*', '\u&', '')]
else
- let s:suglist = spellsuggest(w, 10)
+ s:suglist = spellsuggest(w, 10)
endif
if len(s:suglist) > 0
if !exists("g:menutrans_spell_change_ARG_to")
- let g:menutrans_spell_change_ARG_to = 'Change\ "%s"\ to'
+ g:menutrans_spell_change_ARG_to = 'Change\ "%s"\ to'
endif
- let s:changeitem = printf(g:menutrans_spell_change_ARG_to, escape(w, ' .'))
- let s:fromword = w
- let pri = 1
- " set 'cpo' to include the <CR>
- let cpo_save = &cpo
- set cpo&vim
+ s:changeitem = printf(g:menutrans_spell_change_ARG_to, escape(w, ' .'))
+ s:fromword = w
+ var pri = 1
for sug in s:suglist
- exe 'anoremenu 1.5.' . pri . ' PopUp.' . s:changeitem . '.' . escape(sug, ' .')
- \ . ' :call <SID>SpellReplace(' . pri . ')<CR>'
- let pri += 1
+ exe 'anoremenu 1.5.' .. pri .. ' PopUp.' .. s:changeitem .. '.' .. escape(sug, ' .')
+ \ .. ' :call <SID>SpellReplace(' .. pri .. ')<CR>'
+ pri += 1
endfor
if !exists("g:menutrans_spell_add_ARG_to_word_list")
- let g:menutrans_spell_add_ARG_to_word_list = 'Add\ "%s"\ to\ Word\ List'
+ g:menutrans_spell_add_ARG_to_word_list = 'Add\ "%s"\ to\ Word\ List'
endif
- let s:additem = printf(g:menutrans_spell_add_ARG_to_word_list, escape(w, ' .'))
- exe 'anoremenu 1.6 PopUp.' . s:additem . ' :spellgood ' . w . '<CR>'
+ s:additem = printf(g:menutrans_spell_add_ARG_to_word_list, escape(w, ' .'))
+ exe 'anoremenu 1.6 PopUp.' .. s:additem .. ' :spellgood ' .. w .. '<CR>'
if !exists("g:menutrans_spell_ignore_ARG")
- let g:menutrans_spell_ignore_ARG = 'Ignore\ "%s"'
+ g:menutrans_spell_ignore_ARG = 'Ignore\ "%s"'
endif
- let s:ignoreitem = printf(g:menutrans_spell_ignore_ARG, escape(w, ' .'))
- exe 'anoremenu 1.7 PopUp.' . s:ignoreitem . ' :spellgood! ' . w . '<CR>'
+ s:ignoreitem = printf(g:menutrans_spell_ignore_ARG, escape(w, ' .'))
+ exe 'anoremenu 1.7 PopUp.' .. s:ignoreitem .. ' :spellgood! ' .. w .. '<CR>'
anoremenu 1.8 PopUp.-SpellSep- :
- let &cpo = cpo_save
endif
endif
- call cursor(0, curcol) " put the cursor back where it was
- endfunc
+ call cursor(0, curcol) # put the cursor back where it was
+ enddef
- func s:SpellReplace(n)
- let l = getline('.')
- " Move the cursor to the start of the word.
+ def s:SpellReplace(n: number)
+ var l = getline('.')
+ # Move the cursor to the start of the word.
call spellbadword()
- call setline('.', strpart(l, 0, col('.') - 1) . s:suglist[a:n - 1]
- \ . strpart(l, col('.') + len(s:fromword) - 1))
- endfunc
-
- func s:SpellDel()
- exe "aunmenu PopUp." . s:changeitem
- exe "aunmenu PopUp." . s:additem
- exe "aunmenu PopUp." . s:ignoreitem
+ call setline('.', strpart(l, 0, col('.') - 1) .. s:suglist[n - 1]
+ \ .. strpart(l, col('.') + len(s:fromword) - 1))
+ enddef
+
+ def s:SpellDel()
+ exe "aunmenu PopUp." .. s:changeitem
+ exe "aunmenu PopUp." .. s:additem
+ exe "aunmenu PopUp." .. s:ignoreitem
aunmenu PopUp.-SpellSep-
- let s:changeitem = ''
- endfun
+ s:changeitem = ''
+ enddef
augroup SpellPopupMenu
au! MenuPopup * call <SID>SpellPopup()
@@ -1089,8 +1080,8 @@ if has("toolbar")
cnoremenu 1.80 ToolBar.Copy <C-Y>
nnoremenu 1.90 ToolBar.Paste "+gP
cnoremenu ToolBar.Paste <C-R>+
- exe 'vnoremenu <script> ToolBar.Paste ' . paste#paste_cmd['v']
- exe 'inoremenu <script> ToolBar.Paste ' . paste#paste_cmd['i']
+ exe 'vnoremenu <script> ToolBar.Paste ' .. paste#paste_cmd['v']
+ exe 'inoremenu <script> ToolBar.Paste ' .. paste#paste_cmd['i']
if !has("gui_athena")
an 1.95 ToolBar.-sep3- <Nop>
@@ -1108,7 +1099,7 @@ if has("toolbar")
an 1.245 ToolBar.-sep6- <Nop>
an 1.250 ToolBar.Make :make<CR>
- an 1.270 ToolBar.RunCtags :exe "!" . g:ctags_command<CR>
+ an 1.270 ToolBar.RunCtags :exe "!" .. g:ctags_command<CR>
an 1.280 ToolBar.TagJump g<C-]>
an 1.295 ToolBar.-sep7- <Nop>
@@ -1145,22 +1136,23 @@ else
endif
" Select a session to load; default to current session name if present
-fun! s:LoadVimSesn()
+def s:LoadVimSesn()
+ var name: string
if strlen(v:this_session) > 0
- let name = s:FnameEscape(v:this_session)
+ name = fnameescape(v:this_session)
else
- let name = "Session.vim"
+ name = "Session.vim"
endif
- execute "browse so " . name
-endfun
+ execute "browse so " .. name
+enddef
" Select a session to save; default to current session name if present
-fun! s:SaveVimSesn()
+def s:SaveVimSesn()
if strlen(v:this_session) == 0
- let v:this_session = "Session.vim"
+ v:this_session = "Session.vim"
endif
- execute "browse mksession! " . s:FnameEscape(v:this_session)
-endfun
+ execute "browse mksession! " .. fnameescape(v:this_session)
+enddef
endif
@@ -1173,7 +1165,7 @@ if !exists("did_install_syntax_menu")
an 50.214 &Syntax.A&utomatic :syn on<CR>
an <silent> 50.216 &Syntax.On/Off\ for\ &This\ File :call <SID>SynOnOff()<CR>
if !exists("*s:SynOnOff")
- fun s:SynOnOff()
+ def s:SynOnOff()
if has("syntax_items")
syn clear
else
@@ -1182,7 +1174,7 @@ if !exists("did_install_syntax_menu")
endif
set syn=ON
endif
- endfun
+ enddef
endif
endif
@@ -1209,6 +1201,9 @@ an 50.710 &Syntax.Co&lor\ Test :sp $VIMRUNTIME/syntax/colortest.vim<Bar>so %<CR
an 50.720 &Syntax.&Highlight\ Test :runtime syntax/hitest.vim<CR>
an 50.730 &Syntax.&Convert\ to\ HTML :runtime syntax/2html.vim<CR>
+" Uncomment this to compile the functions early to find any mistakes
+defcompile
+
endif " !exists("did_install_syntax_menu")
" Restore the previous value of 'cpoptions'.
diff --git a/runtime/synmenu.vim b/runtime/synmenu.vim
index d1e4becb2..06e37258e 100644
--- a/runtime/synmenu.vim
+++ b/runtime/synmenu.vim
@@ -2,31 +2,26 @@
" This file is normally sourced from menu.vim.
"
" Maintainer: Bram Moolenaar <Bram@vim.org>
-" Last Change: 2017 Oct 28
+" Last Change: 2022 Feb 04
" Define the SetSyn function, used for the Syntax menu entries.
" Set 'filetype' and also 'syntax' if it is manually selected.
-fun! SetSyn(name)
- if a:name == "fvwm1"
- let use_fvwm_1 = 1
- let use_fvwm_2 = 0
- let name = "fvwm"
- elseif a:name == "fvwm2"
- let use_fvwm_2 = 1
- let use_fvwm_1 = 0
- let name = "fvwm"
- else
- let name = a:name
+def SetSyn(name: string)
+ var filetype = name
+ if name == "fvwm1" || name == "fvwm2"
+ g:use_fvwm_1 = name == "fvwm1"
+ g:use_fvwm_2 = name == "fvwm2"
+ filetype = "fvwm"
endif
if !exists("s:syntax_menu_synonly")
- exe "set ft=" . name
+ exe "set ft=" .. filetype
if exists("g:syntax_manual")
- exe "set syn=" . name
+ exe "set syn=" .. filetype
endif
else
- exe "set syn=" . name
+ exe "set syn=" .. filetype
endif
-endfun
+enddef
" <> notation is used here, remove '<' from 'cpoptions'
let s:cpo_save = &cpo
@@ -404,7 +399,6 @@ an 50.90.120 &Syntax.PQ.Pam\ config :cal SetSyn("pamconf")<CR>
an 50.90.130 &Syntax.PQ.PApp :cal SetSyn("papp")<CR>
an 50.90.140 &Syntax.PQ.Pascal :cal SetSyn("pascal")<CR>
an 50.90.150 &Syntax.PQ.Password\ file :cal SetSyn("passwd")<CR>
-an 50.90.490 &Syntax.PQ.Pbtxt :cal SetSyn("pbtxt")<CR>
an 50.90.160 &Syntax.PQ.PCCTS :cal SetSyn("pccts")<CR>
an 50.90.170 &Syntax.PQ.PDF :cal SetSyn("pdf")<CR>
an 50.90.180 &Syntax.PQ.Perl.Perl :cal SetSyn("perl")<CR>
@@ -457,19 +451,20 @@ an 50.100.180 &Syntax.R.RCS.RCS\ file :cal SetSyn("rcs")<CR>
an 50.100.190 &Syntax.R.Readline\ config :cal SetSyn("readline")<CR>
an 50.100.200 &Syntax.R.Rebol :cal SetSyn("rebol")<CR>
an 50.100.210 &Syntax.R.ReDIF :cal SetSyn("redif")<CR>
-an 50.100.220 &Syntax.R.Relax\ NG :cal SetSyn("rng")<CR>
-an 50.100.230 &Syntax.R.Remind :cal SetSyn("remind")<CR>
-an 50.100.240 &Syntax.R.Relax\ NG\ compact :cal SetSyn("rnc")<CR>
-an 50.100.250 &Syntax.R.Renderman.Renderman\ Shader\ Lang :cal SetSyn("sl")<CR>
-an 50.100.260 &Syntax.R.Renderman.Renderman\ Interface\ Bytestream :cal SetSyn("rib")<CR>
-an 50.100.270 &Syntax.R.Resolv\.conf :cal SetSyn("resolv")<CR>
-an 50.100.280 &Syntax.R.Reva\ Forth :cal SetSyn("reva")<CR>
-an 50.100.290 &Syntax.R.Rexx :cal SetSyn("rexx")<CR>
-an 50.100.300 &Syntax.R.Robots\.txt :cal SetSyn("robots")<CR>
-an 50.100.310 &Syntax.R.RockLinux\ package\ desc\. :cal SetSyn("desc")<CR>
-an 50.100.320 &Syntax.R.Rpcgen :cal SetSyn("rpcgen")<CR>
-an 50.100.330 &Syntax.R.RPL/2 :cal SetSyn("rpl")<CR>
-an 50.100.340 &Syntax.R.ReStructuredText :cal SetSyn("rst")<CR>
+an 50.100.220 &Syntax.R.Rego :cal SetSyn("rego")<CR>
+an 50.100.230 &Syntax.R.Relax\ NG :cal SetSyn("rng")<CR>
+an 50.100.240 &Syntax.R.Remind :cal SetSyn("remind")<CR>
+an 50.100.250 &Syntax.R.Relax\ NG\ compact :cal SetSyn("rnc")<CR>
+an 50.100.260 &Syntax.R.Renderman.Renderman\ Shader\ Lang :cal SetSyn("sl")<CR>
+an 50.100.270 &Syntax.R.Renderman.Renderman\ Interface\ Bytestream :cal SetSyn("rib")<CR>
+an 50.100.280 &Syntax.R.Resolv\.conf :cal SetSyn("resolv")<CR>
+an 50.100.290 &Syntax.R.Reva\ Forth :cal SetSyn("reva")<CR>
+an 50.100.300 &Syntax.R.Rexx :cal SetSyn("rexx")<CR>
+an 50.100.310 &Syntax.R.Robots\.txt :cal SetSyn("robots")<CR>
+an 50.100.320 &Syntax.R.RockLinux\ package\ desc\. :cal SetSyn("desc")<CR>
+an 50.100.330 &Syntax.R.Rpcgen :cal SetSyn("rpcgen")<CR>
+an 50.100.340 &Syntax.R.RPL/2 :cal SetSyn("rpl")<CR>
+an 50.100.350 &Syntax.R.ReStructuredText :cal SetSyn("rst")<CR>
an 50.110.100 &Syntax.M.ReStructuredText\ with\ R\ statements :cal SetSyn("rrst")<CR>
an 50.120.100 &Syntax.R.RTF :cal SetSyn("rtf")<CR>
an 50.120.110 &Syntax.R.Ruby :cal SetSyn("ruby")<CR>
@@ -652,11 +647,11 @@ an 50.170.440 &Syntax.WXYZ.Zimbu :cal SetSyn("zimbu")<CR>
an 50.195 &Syntax.-SEP1- <Nop>
an <silent> 50.200 &Syntax.Set\ '&syntax'\ Only :call <SID>Setsynonly()<CR>
-fun! s:Setsynonly()
+fun s:Setsynonly()
let s:syntax_menu_synonly = 1
endfun
an <silent> 50.202 &Syntax.Set\ '&filetype'\ Too :call <SID>Nosynonly()<CR>
-fun! s:Nosynonly()
+fun s:Nosynonly()
if exists("s:syntax_menu_synonly")
unlet s:syntax_menu_synonly
endif