summaryrefslogtreecommitdiffstats
path: root/extras
diff options
context:
space:
mode:
Diffstat (limited to 'extras')
-rw-r--r--extras/filetype.vim111
-rw-r--r--extras/menu.vim675
2 files changed, 430 insertions, 356 deletions
diff --git a/extras/filetype.vim b/extras/filetype.vim
index 4313adc2..f9f1ae75 100644
--- a/extras/filetype.vim
+++ b/extras/filetype.vim
@@ -1,7 +1,7 @@
" Vim support file to detect file types
"
" Maintainer: Bram Moolenaar <Bram@vim.org>
-" Last Change: 2021 Dec 27
+" Last Change: 2022 Jan 31
" Listen very carefully, I will say this only once
if exists("did_load_filetypes")
@@ -193,7 +193,8 @@ au BufNewFile,BufRead *.awk,*.gawk setf awk
au BufNewFile,BufRead *.mch,*.ref,*.imp setf b
" BASIC or Visual Basic
-au BufNewFile,BufRead *.bas call polyglot#ft#FTVB("basic")
+au BufNewFile,BufRead *.bas call polyglot#ft#FTbas()
+au BufNewFile,BufRead *.bi,*.bm call polyglot#ft#FTbas()
" Visual Basic Script (close to Visual Basic) or Visual Basic .NET
au BufNewFile,BufRead *.vb,*.vbs,*.dsm,*.ctl setf vb
@@ -202,7 +203,7 @@ au BufNewFile,BufRead *.vb,*.vbs,*.dsm,*.ctl setf vb
au BufNewFile,BufRead *.iba,*.ibi setf ibasic
" FreeBasic file (similar to QBasic)
-au BufNewFile,BufRead *.fb,*.bi setf freebasic
+au BufNewFile,BufRead *.fb setf freebasic
" Batch file for MSDOS.
au BufNewFile,BufRead *.bat,*.sys setf dosbatch
@@ -497,7 +498,7 @@ au BufNewFile,BufRead */debian/patches/* call polyglot#ft#Dep3patch()
" Diff files
au BufNewFile,BufRead *.diff,*.rej setf diff
au BufNewFile,BufRead *.patch
- \ if getline(1) =~ '^From [0-9a-f]\{40\} Mon Sep 17 00:00:00 2001$' |
+ \ if getline(1) =~# '^From [0-9a-f]\{40,\} Mon Sep 17 00:00:00 2001$' |
\ setf gitsendemail |
\ else |
\ setf diff |
@@ -653,6 +654,9 @@ au BufNewFile,BufRead *.fsl setf framescript
" FStab
au BufNewFile,BufRead fstab,mtab setf fstab
+" Fusion
+au BufRead,BufNewFile *.fusion setf fusion
+
" F# or Forth
au BufNewFile,BufRead *.fs call polyglot#ft#FTfs()
@@ -665,6 +669,12 @@ au BufNewFile,BufRead .gdbinit,gdbinit setf gdb
" GDMO
au BufNewFile,BufRead *.mo,*.gdmo setf gdmo
+" GDscript
+au BufNewFile,BufRead *.gd setf gdscript
+
+" Godot resource
+au BufRead,BufNewFile *.tscn,*.tres setf gdresource
+
" Gedcom
au BufNewFile,BufRead *.ged,lltxxxxx.txt setf gedcom
@@ -676,26 +686,28 @@ autocmd BufRead,BufNewFile *.gift setf gift
" Git
au BufNewFile,BufRead COMMIT_EDITMSG,MERGE_MSG,TAG_EDITMSG setf gitcommit
-au BufNewFile,BufRead *.git/config,.gitconfig,/etc/gitconfig setf gitconfig
+au BufNewFile,BufRead NOTES_EDITMSG,EDIT_DESCRIPTION setf gitcommit
+au BufNewFile,BufRead *.git/config,.gitconfig,*/etc/gitconfig setf gitconfig
au BufNewFile,BufRead */.config/git/config setf gitconfig
+au BufNewFile,BufRead *.git/config.worktree setf gitconfig
+au BufNewFile,BufRead *.git/worktrees/*/config.worktree setf gitconfig
au BufNewFile,BufRead .gitmodules,*.git/modules/*/config setf gitconfig
if !empty($XDG_CONFIG_HOME)
au BufNewFile,BufRead $XDG_CONFIG_HOME/git/config setf gitconfig
endif
au BufNewFile,BufRead git-rebase-todo setf gitrebase
au BufRead,BufNewFile .gitsendemail.msg.?????? setf gitsendemail
-au BufNewFile,BufRead .msg.[0-9]*
- \ if getline(1) =~ '^From.*# This line is ignored.$' |
- \ setf gitsendemail |
- \ endif
au BufNewFile,BufRead *.git/*
- \ if getline(1) =~ '^\x\{40\}\>\|^ref: ' |
+ \ if getline(1) =~# '^\x\{40,\}\>\|^ref: ' |
\ setf git |
\ endif
" Gkrellmrc
au BufNewFile,BufRead gkrellmrc,gkrellmrc_? setf gkrellmrc
+" GLSL
+au BufNewFile,BufRead *.glsl setf glsl
+
" GP scripts (2.0 and onward)
au BufNewFile,BufRead *.gp,.gprc setf gp
@@ -716,15 +728,19 @@ au BufNewFile,BufRead gitolite.conf setf gitolite
au BufNewFile,BufRead {,.}gitolite.rc,example.gitolite.rc setf perl
" Gnuplot scripts
-au BufNewFile,BufRead *.gpi setf gnuplot
+au BufNewFile,BufRead *.gpi,.gnuplot setf gnuplot
" Go (Google)
au BufNewFile,BufRead *.go setf go
au BufNewFile,BufRead Gopkg.lock setf toml
+au BufRead,BufNewFile go.work setf gowork
" GrADS scripts
au BufNewFile,BufRead *.gs setf grads
+" GraphQL
+au BufNewFile,BufRead *.graphql,*.graphqls,*.gql setf graphql
+
" Gretl
au BufNewFile,BufRead *.gretl setf gretl
@@ -740,12 +756,18 @@ au BufNewFile,BufRead */etc/group,*/etc/group-,*/etc/group.edit,*/etc/gshadow,*/
" GTK RC
au BufNewFile,BufRead .gtkrc,gtkrc setf gtkrc
+" Hack
+au BufRead,BufNewFile *.hack,*.hackpartial setf hack
+
" Haml
au BufNewFile,BufRead *.haml setf haml
" Hamster Classic | Playground files
au BufNewFile,BufRead *.hsm setf hamster
+" Handlebars
+au BufNewFile,BufRead *.hbs setf handlebars
+
" Haskell
au BufNewFile,BufRead *.hs,*.hsc,*.hs-boot,*.hsig setf haskell
au BufNewFile,BufRead *.lhs setf lhaskell
@@ -758,12 +780,21 @@ au BufNewFile,BufRead cabal.config setf cabalconfig
au BufNewFile,BufRead *.ht setf haste
au BufNewFile,BufRead *.htpp setf hastepreproc
+" HCL
+au BufRead,BufNewFile *.hcl setf hcl
+
" Hercules
au BufNewFile,BufRead *.vc,*.ev,*.sum,*.errsum setf hercules
+" HEEx
+au BufRead,BufNewFile *.heex setf heex
+
" HEX (Intel)
au BufNewFile,BufRead *.hex,*.h32 setf hex
+" Hjson
+au BufNewFile,BufRead *.hjson setf hjson
+
" Hollywood
au BufRead,BufNewFile *.hws setf hollywood
@@ -888,6 +919,9 @@ au BufNewFile,BufRead *.jov,*.j73,*.jovial setf jovial
" JSON
au BufNewFile,BufRead *.json,*.jsonp,*.webmanifest setf json
+" JSON5
+au BufNewFile,BufRead *.json5 setf json5
+
" JSON Patch (RFC 6902)
au BufNewFile,BufRead *.json-patch setf json
@@ -939,6 +973,9 @@ au BufNewFile,BufRead *.ldif setf ldif
" Ld loader
au BufNewFile,BufRead *.ld setf ld
+" Ledger
+au BufRead,BufNewFile *.ldg,*.ledger,*.journal setf ledger
+
" Less
au BufNewFile,BufRead *.less setf less
@@ -1176,6 +1213,9 @@ au BufNewFile,BufRead *.nginx,nginx*.conf,*nginx.conf,*/etc/nginx/*,*/usr/local/
" Ninja file
au BufNewFile,BufRead *.ninja setf ninja
+" Nix
+au BufRead,BufNewFile *.nix setf nix
+
" NPM RC file
au BufNewFile,BufRead npmrc,.npmrc setf dosini
@@ -1217,6 +1257,9 @@ au BufNewFile,BufRead *.xom,*.xin setf omnimark
" OPAM
au BufNewFile,BufRead opam,*.opam,*.opam.template setf opam
+" OpenFOAM
+au BufNewFile,BufRead [a-zA-Z0-9]*Dict\(.*\)\=,[a-zA-Z]*Properties\(.*\)\=,*Transport\(.*\),fvSchemes,fvSolution,fvConstrains,fvModels,*/constant/g,*/0\(\.orig\)\=/* call polyglot#ft#FTfoam()
+
" OpenROAD
au BufNewFile,BufRead *.or setf openroad
@@ -1358,6 +1401,9 @@ au BufNewFile,BufRead *printcap
au BufNewFile,BufRead *termcap
\ let b:ptcap_type = "term" | setf ptcap
+" Prisma
+au BufRead,BufNewFile *.prisma setf prisma
+
" PCCTS / ANTLR
"au BufNewFile,BufRead *.g setf antlr
au BufNewFile,BufRead *.g setf pccts
@@ -1365,6 +1411,9 @@ au BufNewFile,BufRead *.g setf pccts
" PPWizard
au BufNewFile,BufRead *.it,*.ih setf ppwiz
+" Pug
+au BufRead,BufNewFile *.pug setf pug
+
" Puppet
au BufNewFile,BufRead Puppetfile setf ruby
@@ -1430,6 +1479,9 @@ au BufNewFile,BufRead *.pyx,*.pxd setf pyrex
au BufNewFile,BufRead *.py,*.pyw,.pythonstartup,.pythonrc setf python
au BufNewFile,BufRead *.ptl,*.pyi,SConstruct setf python
+" QL
+au BufRead,BufNewFile *.ql,*.qll setf ql
+
" Radiance
au BufNewFile,BufRead *.rad,*.mat setf radiance
@@ -1495,6 +1547,9 @@ au BufNewFile,BufRead *.r,*.R call polyglot#ft#FTr()
" Remind
au BufNewFile,BufRead .reminders,*.remind,*.rem setf remind
+" ReScript
+au BufNewFile,BufRead *.res,*.resi setf rescript
+
" Resolv.conf
au BufNewFile,BufRead resolv.conf setf resolv
@@ -1778,8 +1833,8 @@ au BufNewFile,BufRead *.sqr,*.sqi setf sqr
au BufNewFile,BufRead *.nut setf squirrel
" OpenSSH configuration
-au BufNewFile,BufRead ssh_config,*/.ssh/config setf sshconfig
-au BufNewFile,BufRead */etc/ssh/ssh_config.d/*.conf setf sshconfig
+au BufNewFile,BufRead ssh_config,*/.ssh/config,*/.ssh/*.conf setf sshconfig
+au BufNewFile,BufRead */etc/ssh/ssh_config.d/*.conf setf sshconfig
" OpenSSH server configuration
au BufNewFile,BufRead sshd_config setf sshdconfig
@@ -1834,6 +1889,9 @@ au BufNewFile,BufRead */etc/sudoers,sudoers.tmp setf sudoers
" SVG (Scalable Vector Graphics)
au BufNewFile,BufRead *.svg setf svg
+" Surface
+au BufRead,BufNewFile *.sface setf surface
+
" Tads (or Nroff or Perl test file)
au BufNewFile,BufRead *.t
\ if !polyglot#ft#FTnroff() && !polyglot#ft#FTperl() | setf tads | endif
@@ -1851,6 +1909,9 @@ au BufRead,BufNewFile *.task setf taskedit
" Tcl (JACL too)
au BufNewFile,BufRead *.tcl,*.tm,*.tk,*.itcl,*.itk,*.jacl,.tclshrc,.wishrc setf tcl
+" Teal
+au BufRead,BufNewFile *.tl setf teal
+
" TealInfo
au BufNewFile,BufRead *.tli setf tli
@@ -1868,6 +1929,9 @@ au BufRead,BufNewFile *.ttl
" Terminfo
au BufNewFile,BufRead *.ti setf terminfo
+" Terraform
+au BufRead,BufNewFile *.tfvars setf terraform
+
" TeX
au BufNewFile,BufRead *.latex,*.sty,*.dtx,*.ltx,*.bbl setf tex
au BufNewFile,BufRead *.tex call polyglot#ft#FTtex()
@@ -1885,7 +1949,13 @@ au BufNewFile,BufRead texmf.cnf setf texmf
au BufNewFile,BufRead .tidyrc,tidyrc,tidy.conf setf tidy
" TF mud client
-au BufNewFile,BufRead *.tf,.tfrc,tfrc setf tf
+au BufNewFile,BufRead .tfrc,tfrc setf tf
+
+" TF mud client or terraform
+au BufNewFile,BufRead *.tf call polyglot#ft#FTtf()
+
+" TLA+
+au BufNewFile,BufRead *.tla setf tla
" tmux configuration
au BufNewFile,BufRead {.,}tmux*.conf setf tmux
@@ -1894,7 +1964,7 @@ au BufNewFile,BufRead {.,}tmux*.conf setf tmux
au BufNewFile,BufRead *.toml setf toml
" TPP - Text Presentation Program
-au BufNewFile,BufReadPost *.tpp setf tpp
+au BufNewFile,BufRead *.tpp setf tpp
" Treetop
au BufRead,BufNewFile *.treetop setf treetop
@@ -1951,6 +2021,9 @@ au BufNewFile,BufRead */.init/*.conf,*/.init/*.override setf upstart
au BufNewFile,BufRead */.config/upstart/*.conf setf upstart
au BufNewFile,BufRead */.config/upstart/*.override setf upstart
+" Vala
+au BufNewFile,BufRead *.vala setf vala
+
" Vera
au BufNewFile,BufRead *.vr,*.vri,*.vrh setf vera
@@ -1981,7 +2054,7 @@ au BufRead,BufNewFile *.hw,*.module,*.pkg
\ endif
" Visual Basic (also uses *.bas) or FORM
-au BufNewFile,BufRead *.frm call polyglot#ft#FTVB("form")
+au BufNewFile,BufRead *.frm call polyglot#ft#FTfrm()
" SaxBasic is close to Visual Basic
au BufNewFile,BufRead *.sba setf vb
@@ -2145,6 +2218,9 @@ au BufNewFile,BufRead *.raml setf raml
" yum conf (close enough to dosini)
au BufNewFile,BufRead */etc/yum.conf setf dosini
+" YANG
+au BufRead,BufNewFile *.yang setf yang
+
" Zimbu
au BufNewFile,BufRead *.zu setf zimbu
" Zimbu Templates
@@ -2284,6 +2360,9 @@ au BufNewFile,BufRead Kconfig.* call s:StarSetf('kconfig')
" Lilo: Linux loader
au BufNewFile,BufRead lilo.conf* call s:StarSetf('lilo')
+" Libsensors
+au BufNewFile,BufRead */etc/sensors.d/[^.]* call s:StarSetf('sensors')
+
" Logcheck
au BufNewFile,BufRead */etc/logcheck/*.d*/* call s:StarSetf('logcheck')
diff --git a/extras/menu.vim b/extras/menu.vim
index 5f4e395e..12924af6 100644
--- a/extras/menu.vim
+++ b/extras/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 the next line to compile the functions early to find any mistakes
+" defcompile
+
endif " !exists("did_install_syntax_menu")
" Restore the previous value of 'cpoptions'.