diff --git a/.github/CODEOWNERS_vim b/.github/CODEOWNERS_vim index af32d6a3ab..45c8d33790 100644 --- a/.github/CODEOWNERS_vim +++ b/.github/CODEOWNERS_vim @@ -13,6 +13,7 @@ runtime/autoload/freebasic.vim @dkearns runtime/autoload/getscript.vim @cecamp runtime/autoload/haskell.vim @alx741 runtime/autoload/javascript.vim @jsit +runtime/autoload/modula2.vim @dkearns runtime/autoload/netrw.vim @cecamp runtime/autoload/netrwFileHandlers.vim @cecamp runtime/autoload/netrwSettings.vim @cecamp @@ -65,6 +66,7 @@ runtime/compiler/eruby.vim @dkearns runtime/compiler/fbc.vim @dkearns runtime/compiler/gawk.vim @dkearns runtime/compiler/gjs.vim @dkearns +runtime/compiler/gm2.vim @dkearns runtime/compiler/go.vim @dbarnett runtime/compiler/haml.vim @tpope runtime/compiler/hare.vim @rsaihe @@ -182,6 +184,7 @@ runtime/ftplugin/m3quake.vim @dkearns runtime/ftplugin/markdown.vim @tpope runtime/ftplugin/matlab.vim @cecamp runtime/ftplugin/meson.vim @Liambeguin +runtime/ftplugin/modula2.vim @dkearns runtime/ftplugin/modula3.vim @dkearns runtime/ftplugin/nginx.vim @chr4 runtime/ftplugin/nroff.vim @a-vrma @@ -339,6 +342,7 @@ runtime/syntax/shared/hgcommitDiff.vim @vegerot runtime/syntax/abaqus.vim @costerwi runtime/syntax/aidl.vim @dpelle runtime/syntax/amiga.vim @cecamp +runtime/syntax/ant.vim @dkearns runtime/syntax/arduino.vim @johshoff runtime/syntax/asciidoc.vim @aerostitch runtime/syntax/asm.vim @dkearns @@ -355,6 +359,7 @@ runtime/syntax/cabalconfig.vim @coot runtime/syntax/cabalproject.vim @coot runtime/syntax/cf.vim @ernstvanderlinden runtime/syntax/chatito.vim @ObserverOfTime +runtime/syntax/chuck.vim @gacallea runtime/syntax/clojure.vim @axvr runtime/syntax/cs.vim @nickspoons runtime/syntax/csh.vim @cecamp @@ -442,6 +447,10 @@ runtime/syntax/maple.vim @cecamp runtime/syntax/markdown.vim @tpope runtime/syntax/mason.vim @petdance runtime/syntax/meson.vim @Liambeguin +runtime/syntax/modula2.vim @dkearns +runtime/syntax/modula2/opt/iso.vim @trijezdci +runtime/syntax/modula2/opt/pim.vim @trijezdci +runtime/syntax/modula2/opt/r10.vim @trijezdci runtime/syntax/modula3.vim @dkearns runtime/syntax/n1ql.vim @pr3d4t0r runtime/syntax/netrw.vim @cecamp diff --git a/Filelist b/Filelist index df188e8a5e..237923e879 100644 --- a/Filelist +++ b/Filelist @@ -20,6 +20,7 @@ SRC_ALL = \ ci/config.mk*.sed \ ci/if_ver*.vim \ ci/setup-xvfb.sh \ + ci/remove_snap.sh \ src/Make_all.mak \ src/README.md \ src/alloc.c \ @@ -818,6 +819,7 @@ RT_SCRIPTS = \ runtime/plugin/README.txt \ runtime/syntax/*.vim \ runtime/syntax/README.txt \ + runtime/syntax/modula2/opt/*.vim \ runtime/syntax/shared/*.vim \ runtime/syntax/shared/README.txt \ runtime/syntax/Makefile \ @@ -871,6 +873,7 @@ RT_DOS_BIN = \ runtime/vimlogo.eps \ runtime/vimlogo.gif \ runtime/vimlogo.pdf \ + runtime/vimlogo.svg \ # Amiga runtime (also in the extra archive) RT_AMI = \ @@ -977,6 +980,7 @@ IN_README_DIR = \ README_src.txt \ README_srcdos.txt \ README_unix.txt \ + README_vimlogo.txt \ README_vms.txt \ README_w32s.txt \ Contents \ diff --git a/READMEdir/README_vimlogo.txt b/READMEdir/README_vimlogo.txt new file mode 100644 index 0000000000..9798b108d1 --- /dev/null +++ b/READMEdir/README_vimlogo.txt @@ -0,0 +1,11 @@ +The Python project that creates `vimlogo.svg` can be found at +`https://github.com/ShayHill/vimlogo`. The Vim license applies. + +`vimlogo.svg` is an effort to remove errors and inadvertant inconsistencies +from the original vim logo while maintaing the original design. `vimlogo.svg` +is based on the `vimlogo.svg` file (previously?) found at +`https://www.vim.org/logos.php` + +As of 2024 Jan 30, `vimlogo.svg` is a separate project from `vimlogo.cdr`, +`vimlogo.eps`, `vimlogo.gif`, `vimlogo.pdf`, and `vimlogo.xpm`, all of which +are slightly different from each other. diff --git a/READMEdir/README_vms.txt b/READMEdir/README_vms.txt index 6e8660d3e6..4c47921c67 100644 --- a/READMEdir/README_vms.txt +++ b/READMEdir/README_vms.txt @@ -19,14 +19,16 @@ src/INSTALLvms.txt. To use the binary version, you need one of these archives: - vim-XX-exe-ia64-gui.zip IA64 GUI/Motif executables - vim-XX-exe-ia64-gtk.zip IA64 GUI/GTK executables - vim-XX-exe-ia64-term.zip IA64 console executables + vim-XX-exe-x86-gui.zip X86_64 GUI/Motif executables + vim-XX-exe-x86-term.zip X86_64 console executables + vim-XX-exe-ia64-gui.zip IA64 GUI/Motif executables + vim-XX-exe-ia64-gtk.zip IA64 GUI/GTK executables + vim-XX-exe-ia64-term.zip IA64 console executables vim-XX-exe-axp-gui.zip Alpha GUI/Motif executables vim-XX-exe-axp-gtk.zip Alpha GUI/GTK executables - vim-XX-exe-axp-term.zip Alpha console executables + vim-XX-exe-axp-term.zip Alpha console executables vim-XX-exe-vax-gui.zip VAX GUI executables - vim-XX-exe-vax-term.zip VAX console executables + vim-XX-exe-vax-term.zip VAX console executables and of course vim-XX-runtime.zip runtime files @@ -34,6 +36,8 @@ and of course The binary archives contain: vim.exe, ctags.exe, xxd.exe files, but there are also prepared "deploy ready" archives: +vim-XX-x86.zip GUI and console executables with runtime and + help files for X86_64 systems vim-XX-ia64.zip GUI and console executables with runtime and help files for IA64 systems vim-XX-axp.zip GUI and console executables with runtime and diff --git a/ci/remove_snap.sh b/ci/remove_snap.sh new file mode 100644 index 0000000000..a812307d3b --- /dev/null +++ b/ci/remove_snap.sh @@ -0,0 +1,13 @@ +#!/usr/bin/env sh +pushd /etc/apt/preferences.d/ +cat > nosnap.pref < -# Last Change: 2023 Aug 10 +# Maintainer: The Vim Project +# Last Change: 2024 Jan 05 # Former Maintainer: Bram Moolenaar # These functions are moved here from runtime/filetype.vim to make startup @@ -279,6 +279,19 @@ export def DtraceCheck() endif enddef +export def FTdef() + if get(g:, "filetype_def", "") == "modula2" || IsModula2() + SetFiletypeModula2() + return + endif + + if exists("g:filetype_def") + exe "setf " .. g:filetype_def + else + setf def + endif +enddef + export def FTe() if exists('g:filetype_euphoria') exe 'setf ' .. g:filetype_euphoria @@ -517,16 +530,53 @@ def IsLProlog(): bool return getline(lnum) =~ '\= 0 + dialect = matches[1] + endif + if index(KNOWN_EXTENSIONS, matches[2]) >= 0 + extension = matches[2] + endif + break + endif + endfor + + modula2#SetDialect(dialect, extension) + + setf modula2 +enddef + # Determine if *.mod is ABB RAPID, LambdaProlog, Modula-2, Modsim III or go.mod export def FTmod() + if get(g:, "filetype_mod", "") == "modula2" || IsModula2() + SetFiletypeModula2() + return + endif + if exists("g:filetype_mod") exe "setf " .. g:filetype_mod elseif expand("") =~ '\ " Maintainer: SungHyun Nam " Autoload Split: Bram Moolenaar -" Last Change: 2023 Jun 28 +" Last Change: 2024 Jan 17 (make it work on AIX, see #13847) let s:cpo_save = &cpo set cpo-=C @@ -13,14 +13,26 @@ let s:man_tag_depth = 0 let s:man_sect_arg = "" let s:man_find_arg = "-w" try - if !has("win32") && $OSTYPE !~ 'cygwin\|linux' && system('uname -s') =~ "SunOS" && system('uname -r') =~ "^5" - let s:man_sect_arg = "-s" - let s:man_find_arg = "-l" + if !has("win32") && $OSTYPE !~ 'cygwin\|linux' + " cache the value + let uname_s = system('uname -s') + + if uname_s =~ "SunOS" && system('uname -r') =~ "^5" + " Special Case for Man on SunOS + let s:man_sect_arg = "-s" + let s:man_find_arg = "-l" + elseif uname_s =~? 'AIX' + " Special Case for Man on AIX + let s:man_sect_arg = "" + let s:man_find_arg = "" + endif endif catch /E145:/ " Ignore the error in restricted mode endtry +unlet! uname_s + func s:ParseIntoPageAndSection() " Accommodate a reference that terminates in a hyphen. " diff --git a/runtime/autoload/modula2.vim b/runtime/autoload/modula2.vim new file mode 100644 index 0000000000..284dc2768f --- /dev/null +++ b/runtime/autoload/modula2.vim @@ -0,0 +1,31 @@ +" Vim filetype plugin file +" Language: Modula-2 +" Maintainer: Doug Kearns +" Last Change: 2024 Jan 04 + +" Dialect can be one of pim, iso, r10 +function modula2#GetDialect() abort + + if exists("b:modula2.dialect") + return b:modula2.dialect + endif + + if exists("g:modula2_default_dialect") + let dialect = g:modula2_default_dialect + else + let dialect = "pim" + endif + + return dialect +endfunction + +function modula2#SetDialect(dialect, extension = "") abort + if exists("b:modula2") + unlockvar! b:modula2 + endif + + let b:modula2 = #{ dialect: a:dialect, extension: a:extension } + lockvar! b:modula2 +endfunction + +" vim: nowrap sw=2 sts=2 ts=8 noet fdm=marker: diff --git a/runtime/autoload/netrw.vim b/runtime/autoload/netrw.vim index 748ac22768..d9baabb011 100644 --- a/runtime/autoload/netrw.vim +++ b/runtime/autoload/netrw.vim @@ -2020,7 +2020,7 @@ fun! NetrwStatusLine() if !exists("w:netrw_explore_bufnr") || w:netrw_explore_bufnr != bufnr("%") || !exists("w:netrw_explore_line") || w:netrw_explore_line != line(".") || !exists("w:netrw_explore_list") " restore user's status line - let &stl = s:netrw_users_stl + let &l:stl = s:netrw_users_stl let &laststatus = s:netrw_users_ls if exists("w:netrw_explore_bufnr")|unlet w:netrw_explore_bufnr|endif if exists("w:netrw_explore_line") |unlet w:netrw_explore_line |endif @@ -2121,9 +2121,9 @@ fun! netrw#NetRead(mode,...) let wholechoice = wholechoice . " " . choice let ichoice = ichoice + 1 if ichoice > a:0 - if !exists("g:netrw_quiet") - call netrw#ErrorMsg(s:ERROR,"Unbalanced string in filename '". wholechoice ."'",3) - endif + if !exists("g:netrw_quiet") + call netrw#ErrorMsg(s:ERROR,"Unbalanced string in filename '". wholechoice ."'",3) + endif " call Dret("netrw#NetRead :2 getcwd<".getcwd().">") return endif @@ -2544,9 +2544,9 @@ fun! netrw#NetWrite(...) range let wholechoice= wholechoice . " " . choice let ichoice = ichoice + 1 if choice > a:0 - if !exists("g:netrw_quiet") - call netrw#ErrorMsg(s:ERROR,"Unbalanced string in filename '". wholechoice ."'",13) - endif + if !exists("g:netrw_quiet") + call netrw#ErrorMsg(s:ERROR,"Unbalanced string in filename '". wholechoice ."'",13) + endif " call Dret("netrw#NetWrite") return endif @@ -2817,7 +2817,7 @@ fun! netrw#NetWrite(...) range if a:firstline == 1 && a:lastline == line("$") " restore modifiability; usually equivalent to set nomod - let &mod= mod + let &l:mod= mod " call Decho(" ro=".&l:ro." ma=".&l:ma." mod=".&l:mod." wrap=".&l:wrap." (filename<".expand("%")."> win#".winnr()." ft<".&ft.">)",'~'.expand("")) elseif !exists("leavemod") " indicate that the buffer has not been modified since last written @@ -3006,7 +3006,7 @@ fun! s:NetrwGetFile(readcmd, tfile, method) setl isk-=/ filetype detect " call Decho("..local filetype<".&ft."> for buf#".bufnr()."<".bufname().">") - let &isk= iskkeep + let &l:isk= iskkeep " call Dredir("ls!","NetrwGetFile (renamed buffer back to remote filename<".rfile."> : expand(%)<".expand("%").">)") let line1 = 1 let line2 = line("$") @@ -5003,12 +5003,12 @@ fun! s:NetrwBrowseChgDir(islocal,newdir,...) if g:netrw_chgwin >= 1 " call Decho("edit-a-file: changing window to #".g:netrw_chgwin.": (due to g:netrw_chgwin)",'~'.expand("")) if winnr("$")+1 == g:netrw_chgwin - " if g:netrw_chgwin is set to one more than the last window, then - " vertically split the last window to make that window available. - let curwin= winnr() - exe "NetrwKeepj keepalt ".winnr("$")."wincmd w" - vs - exe "NetrwKeepj keepalt ".g:netrw_chgwin."wincmd ".curwin + " if g:netrw_chgwin is set to one more than the last window, then + " vertically split the last window to make that window available. + let curwin= winnr() + exe "NetrwKeepj keepalt ".winnr("$")."wincmd w" + vs + exe "NetrwKeepj keepalt ".g:netrw_chgwin."wincmd ".curwin endif exe "NetrwKeepj keepalt ".g:netrw_chgwin."wincmd w" endif @@ -6127,7 +6127,7 @@ fun! s:NetrwServerEdit(islocal,fname) " used something like . " call Decho("user must have closed server AND did not use ctrl-r",'~'.expand("")) if exists("g:netrw_browse_split") - unlet g:netrw_browse_split + unlet g:netrw_browse_split endif let g:netrw_browse_split= 0 if exists("s:netrw_browse_split_".winnr()) @@ -6161,7 +6161,7 @@ fun! s:NetrwServerEdit(islocal,fname) if !ctrlr " call Decho("server<".g:netrw_servername."> not available and ctrl-r not used",'~'.expand("")) if exists("g:netrw_browse_split") - unlet g:netrw_browse_split + unlet g:netrw_browse_split endif let g:netrw_browse_split= 0 call s:NetrwBrowse(islocal,s:NetrwBrowseChgDir(islocal,a:fname)) @@ -6679,14 +6679,14 @@ fun! s:NetrwMaps(islocal) nmap <2-leftmouse> Netrw2Leftmouse imap ILeftmouse imap IMiddlemouse - nno NetrwLeftmouse :call NetrwLeftmouse(1) - nno NetrwCLeftmouse :call NetrwCLeftmouse(1) - nno NetrwMiddlemouse :call NetrwPrevWinOpen(1) - nno NetrwSLeftmouse :call NetrwSLeftmouse(1) - nno NetrwSLeftdrag :call NetrwSLeftdrag(1) + nno NetrwLeftmouse :exec "norm! \leftmouse>"call NetrwLeftmouse(1) + nno NetrwCLeftmouse :exec "norm! \leftmouse>"call NetrwCLeftmouse(1) + nno NetrwMiddlemouse :exec "norm! \leftmouse>"call NetrwPrevWinOpen(1) + nno NetrwSLeftmouse :exec "norm! \leftmouse>"call NetrwSLeftmouse(1) + nno NetrwSLeftdrag :exec "norm! \leftmouse>"call NetrwSLeftdrag(1) nmap Netrw2Leftmouse - - exe 'nnoremap :call NetrwLocalRm("'.mapsafecurdir.'")' - exe 'vnoremap :call NetrwLocalRm("'.mapsafecurdir.'")' + exe 'nnoremap :exec "norm! \leftmouse>"call NetrwLocalRm("'.mapsafecurdir.'")' + exe 'vnoremap :exec "norm! \leftmouse>"call NetrwLocalRm("'.mapsafecurdir.'")' endif exe 'nnoremap :call NetrwLocalRm("'.mapsafecurdir.'")' exe 'nnoremap D :call NetrwLocalRm("'.mapsafecurdir.'")' @@ -6780,22 +6780,22 @@ fun! s:NetrwMaps(islocal) nnoremap NetrwRefresh :call NetrwRefresh(0,NetrwBrowseChgDir(0,'./')) if g:netrw_mousemaps == 1 nmap NetrwLeftmouse - nno NetrwLeftmouse :call NetrwLeftmouse(0) + nno NetrwLeftmouse :exec "norm! \leftmouse>"call NetrwLeftmouse(0) nmap NetrwCLeftmouse - nno NetrwCLeftmouse :call NetrwCLeftmouse(0) + nno NetrwCLeftmouse :exec "norm! \leftmouse>"call NetrwCLeftmouse(0) nmap NetrwSLeftmouse - nno NetrwSLeftmouse :call NetrwSLeftmouse(0) + nno NetrwSLeftmouse :exec "norm! \leftmouse>"call NetrwSLeftmouse(0) nmap NetrwSLeftdrag - nno NetrwSLeftdrag :call NetrwSLeftdrag(0) + nno NetrwSLeftdrag :exec "norm! \leftmouse>"call NetrwSLeftdrag(0) nmap NetrwMiddlemouse - nno NetrwMiddlemouse :call NetrwPrevWinOpen(0) + nno NetrwMiddlemouse :exec "norm! \leftmouse>"call NetrwPrevWinOpen(0) nmap <2-leftmouse> Netrw2Leftmouse nmap Netrw2Leftmouse - imap ILeftmouse imap IMiddlemouse imap ISLeftmouse - exe 'nnoremap :call NetrwRemoteRm("'.mapsafeusermach.'","'.mapsafepath.'")' - exe 'vnoremap :call NetrwRemoteRm("'.mapsafeusermach.'","'.mapsafepath.'")' + exe 'nnoremap :exec "norm! \leftmouse>"call NetrwRemoteRm("'.mapsafeusermach.'","'.mapsafepath.'")' + exe 'vnoremap :exec "norm! \leftmouse>"call NetrwRemoteRm("'.mapsafeusermach.'","'.mapsafepath.'")' endif exe 'nnoremap :call NetrwRemoteRm("'.mapsafeusermach.'","'.mapsafepath.'")' exe 'nnoremap d :call NetrwMakeDir("'.mapsafeusermach.'")' @@ -7506,7 +7506,7 @@ fun! s:NetrwMarkFileExe(islocal,enbloc) for fname in s:netrwmarkfilelist_{curbufnr} if a:islocal if g:netrw_keepdir - let fname= s:ShellEscape(netrw#WinPath(s:ComposePath(curdir,fname))) + let fname= s:ShellEscape(netrw#WinPath(s:ComposePath(curdir,fname))) endif else let fname= s:ShellEscape(netrw#WinPath(b:netrw_curdir.fname)) @@ -7862,7 +7862,7 @@ fun! s:NetrwMarkFileMove(islocal) let movecmd = netrw#WinPath(movecmd).movecmdargs " call Decho("windows exception: movecmd<".movecmd."> (#1: had a space)",'~'.expand("")) else - let movecmd = netrw#WinPath(movecmd) + let movecmd = netrw#WinPath(g:netrw_localmovecmd) " call Decho("windows exception: movecmd<".movecmd."> (#2: no space)",'~'.expand("")) endif else @@ -7876,10 +7876,6 @@ fun! s:NetrwMarkFileMove(islocal) endif if !g:netrw_cygwin && (has("win32") || has("win95") || has("win64") || has("win16")) let fname= substitute(fname,'/','\\','g') - if g:netrw_keepdir - " Jul 19, 2022: fixing file move when g:netrw_keepdir is 1 - let fname= b:netrw_curdir."\\".fname - endif endif " call Decho("system(".movecmd." ".s:ShellEscape(fname)." ".tgt.")",'~'.expand("")) let ret= system(movecmd.g:netrw_localmovecmdopt." ".s:ShellEscape(fname)." ".tgt) @@ -10215,7 +10211,7 @@ fun! s:SetupNetrwStatusLine(statline) " set up status line (may use User9 highlighting) " insure that windows have a statusline " make sure statusline is displayed - let &stl=a:statline + let &l:stl=a:statline setl laststatus=2 " call Decho("stl=".&stl,'~'.expand("")) redraw @@ -10331,7 +10327,7 @@ fun! s:NetrwRemoteFtpCmd(path,listcmd) setl ff=unix " restore settings - let &ff= ffkeep + let &l:ff= ffkeep " call Dret("NetrwRemoteFtpCmd") return @@ -10368,7 +10364,7 @@ fun! s:NetrwRemoteFtpCmd(path,listcmd) endif " restore settings " {{{3 - let &ff= ffkeep + let &l:ff= ffkeep " call Dret("NetrwRemoteFtpCmd") endfun @@ -10672,7 +10668,7 @@ fun! s:NetrwRemoteRmFile(path,rmfile,all) NetrwKeepj call netrw#ErrorMsg(s:ERROR,"for some reason b:netrw_curdir doesn't exist!",53) let ok="q" else - let remotedir= substitute(b:netrw_curdir,'^.*//[^/]\+/\(.*\)$','\1','') + let remotedir= substitute(b:netrw_curdir,'^.\{-}//[^/]\+/\(.*\)$','\1','') " call Decho("netrw_rm_cmd<".netrw_rm_cmd.">",'~'.expand("")) " call Decho("remotedir<".remotedir.">",'~'.expand("")) " call Decho("rmfile<".a:rmfile.">",'~'.expand("")) @@ -10685,7 +10681,7 @@ fun! s:NetrwRemoteRmFile(path,rmfile,all) let ret= system(netrw_rm_cmd) if v:shell_error != 0 if exists("b:netrw_curdir") && b:netrw_curdir != getcwd() && !g:netrw_keepdir - call netrw#ErrorMsg(s:ERROR,"remove failed; perhaps due to vim's current directory<".getcwd()."> not matching netrw's (".b:netrw_curdir.") (see :help netrw-cd)",102) + call netrw#ErrorMsg(s:ERROR,"remove failed; perhaps due to vim's current directory<".getcwd()."> not matching netrw's (".b:netrw_curdir.") (see :help netrw-cd)",102) else call netrw#ErrorMsg(s:WARNING,"cmd<".netrw_rm_cmd."> failed",60) endif @@ -11193,16 +11189,16 @@ fun! s:LocalListing() " call Decho("pfile <".pfile.">",'~'.expand("")) if w:netrw_liststyle == s:LONGLIST - let longfile= printf("%-".g:netrw_maxfilenamelen."S",pfile) - let sz = getfsize(filename) - let szlen = 15 - (strdisplaywidth(longfile) - g:netrw_maxfilenamelen) - let szlen = (szlen > 0) ? szlen : 0 + let longfile = printf("%-".g:netrw_maxfilenamelen."S",pfile) + let sz = getfsize(filename) + let szlen = 15 - (strdisplaywidth(longfile) - g:netrw_maxfilenamelen) + let szlen = (szlen > 0) ? szlen : 0 if g:netrw_sizestyle =~# "[hH]" let sz= s:NetrwHumanReadable(sz) endif let fsz = printf("%".szlen."S",sz) - let pfile = longfile." ".fsz." ".strftime(g:netrw_timefmt,getftime(filename)) + let pfile= longfile." ".fsz." ".strftime(g:netrw_timefmt,getftime(filename)) " call Decho("longlist support: sz=".sz." fsz=".fsz,'~'.expand("")) endif @@ -11587,7 +11583,7 @@ endfun " netrw#RFC2396: converts %xx into characters {{{2 fun! netrw#RFC2396(fname) " call Dfunc("netrw#RFC2396(fname<".a:fname.">)") - let fname = escape(substitute(a:fname,'%\(\x\x\)','\=nr2char("0x".submatch(1))','ge')," \t") + let fname = escape(substitute(a:fname,'%\(\x\x\)','\=printf("%c","0x".submatch(1))','ge')," \t") " call Dret("netrw#RFC2396 ".fname) return fname endfun @@ -12222,7 +12218,7 @@ fun! s:NetrwLcd(newdir) if (has("win32") || has("win95") || has("win64") || has("win16")) && !g:netrw_cygwin if a:newdir =~ '^\\\\\w\+' || a:newdir =~ '^//\w\+' let dirname = '\' - exe 'NetrwKeepj sil lcd '.fnameescape(dirname) + exe 'NetrwKeepj sil lcd '.fnameescape(dirname) endif endif catch /^Vim\%((\a\+)\)\=:E472/ diff --git a/runtime/autoload/tar.vim b/runtime/autoload/tar.vim index adfc10c92b..3c4c9ccfb2 100644 --- a/runtime/autoload/tar.vim +++ b/runtime/autoload/tar.vim @@ -163,9 +163,9 @@ fun! tar#Browse(tarfile) " call Decho("1: exe silent r! gzip -d -c -- ".shellescape(tarfile,1)." | ".g:tar_cmd." -".g:tar_browseoptions." - ") exe "sil! r! gzip -d -c -- ".shellescape(tarfile,1)." | ".g:tar_cmd." -".g:tar_browseoptions." - " - elseif tarfile =~# '\.\(tgz\)$' || tarfile =~# '\.\(tbz\)$' || tarfile =~# '\.\(txz\)$' || tarfile =~# '\.\(tzs\)$' + elseif tarfile =~# '\.\(tgz\)$' || tarfile =~# '\.\(tbz\)$' || tarfile =~# '\.\(txz\)$' || tarfile =~# '\.\(tzst\)$' if has("unix") && executable("file") - let filekind= system("file ".shellescape(tarfile,1)) =~ "bzip2" + let filekind= system("file ".shellescape(tarfile,1)) else let filekind= "" endif @@ -192,7 +192,7 @@ fun! tar#Browse(tarfile) elseif tarfile =~# '\.\(xz\|txz\)$' " call Decho("3: exe silent r! xz --decompress --stdout -- ".shellescape(tarfile,1)." | ".g:tar_cmd." -".g:tar_browseoptions." - ") exe "sil! r! xz --decompress --stdout -- ".shellescape(tarfile,1)." | ".g:tar_cmd." -".g:tar_browseoptions." - " - elseif tarfile =~# '\.\(zst\|tzs\)$' + elseif tarfile =~# '\.\(zst\|tzst\)$' exe "sil! r! zstd --decompress --stdout -- ".shellescape(tarfile,1)." | ".g:tar_cmd." -".g:tar_browseoptions." - " else if tarfile =~ '^\s*-' @@ -230,7 +230,7 @@ fun! tar#Browse(tarfile) " set up maps supported for tar setlocal noma nomod ro noremap :call TarBrowseSelect() - noremap x :call tar#Extract() + noremap x :call tar#Extract() if &mouse != "" noremap :call TarBrowseSelect() endif @@ -468,9 +468,9 @@ fun! tar#Write(fname) let compress= "xz -- ".shellescape(tarfile,0) " call Decho("compress<".compress.">") elseif tarfile =~# '\.zst' - call system("zstd --decompress -- ".shellescape(tarfile,0)) + call system("zstd --decompress --rm -- ".shellescape(tarfile,0)) let tarfile = substitute(tarfile,'\.zst','','e') - let compress= "zstd -- ".shellescape(tarfile,0) + let compress= "zstd --rm -- ".shellescape(tarfile,0) elseif tarfile =~# '\.lzma' call system("lzma -d -- ".shellescape(tarfile,0)) let tarfile = substitute(tarfile,'\.lzma','','e') @@ -486,7 +486,7 @@ fun! tar#Write(fname) else " call Decho("tarfile<".tarfile."> fname<".fname.">") - + if fname =~ '/' let dirpath = substitute(fname,'/[^/]\+$','','e') if has("win32unix") && executable("cygpath") @@ -502,7 +502,7 @@ fun! tar#Write(fname) let tarfile = substitute(tarfile, '-', './-', '') endif " call Decho("tarfile<".tarfile."> fname<".fname.">") - + if exists("g:tar_secure") let tar_secure= " -- " else @@ -512,7 +512,7 @@ fun! tar#Write(fname) if has("win32unix") && executable("cygpath") let tarfile = substitute(system("cygpath ".shellescape(tarfile,0)),'\n','','e') endif - + " delete old file from tarfile " call Decho("system(".g:tar_cmd." ".g:tar_delfile." ".shellescape(tarfile,0)." -- ".shellescape(fname,0).")") call system(g:tar_cmd." ".g:tar_delfile." ".shellescape(tarfile,0).tar_secure.shellescape(fname,0)) @@ -521,8 +521,8 @@ fun! tar#Write(fname) " call Decho("***error*** (tar#Write) sorry, unable to update ".fnameescape(tarfile)." with ".fnameescape(fname)) echohl Error | echo "***error*** (tar#Write) sorry, unable to update ".fnameescape(tarfile)." with ".fnameescape(fname) | echohl None else - - " update tarfile with new file + + " update tarfile with new file " call Decho(g:tar_cmd." -".g:tar_writeoptions." ".shellescape(tarfile,0).tar_secure.shellescape(fname,0)) call system(g:tar_cmd." -".g:tar_writeoptions." ".shellescape(tarfile,0).tar_secure.shellescape(fname,0)) if v:shell_error != 0 @@ -555,7 +555,7 @@ fun! tar#Write(fname) unlet s:tblfile_{winnr()} endif endif - + " cleanup and restore current directory cd .. call s:Rmdir("_ZIPVIM_") @@ -696,13 +696,13 @@ fun! tar#Extract() echo "***note*** successfully extracted ".fname endif - elseif filereadable(tarbase.".tzs") + elseif filereadable(tarbase.".tzst") let extractcmd= substitute(extractcmd,"-","--zstd","") -" call Decho("system(".extractcmd." ".shellescape(tarbase).".tzs ".shellescape(fname).")") - call system(extractcmd." ".shellescape(tarbase).".txz ".shellescape(fname)) +" call Decho("system(".extractcmd." ".shellescape(tarbase).".tzst ".shellescape(fname).")") + call system(extractcmd." ".shellescape(tarbase).".tzst ".shellescape(fname)) if v:shell_error != 0 - echohl Error | echo "***error*** ".extractcmd." ".tarbase.".tzs ".fname.": failed!" | echohl NONE -" call Decho("***error*** ".extractcmd." ".tarbase.".tzs ".fname.": failed!") + echohl Error | echo "***error*** ".extractcmd." ".tarbase.".tzst ".fname.": failed!" | echohl NONE +" call Decho("***error*** ".extractcmd." ".tarbase.".tzst ".fname.": failed!") else echo "***note*** successfully extracted ".fname endif @@ -710,7 +710,7 @@ fun! tar#Extract() elseif filereadable(tarbase.".tar.zst") let extractcmd= substitute(extractcmd,"-","--zstd","") " call Decho("system(".extractcmd." ".shellescape(tarbase).".tar.zst ".shellescape(fname).")") - call system(extractcmd." ".shellescape(tarbase).".tar.xz ".shellescape(fname)) + call system(extractcmd." ".shellescape(tarbase).".tar.zst ".shellescape(fname)) if v:shell_error != 0 echohl Error | echo "***error*** ".extractcmd." ".tarbase.".tar.zst ".fname.": failed!" | echohl NONE " call Decho("***error*** ".extractcmd." ".tarbase.".tar.zst ".fname.": failed!") diff --git a/runtime/colors/blue.vim b/runtime/colors/blue.vim index c53f44f9d3..f95cf272aa 100644 --- a/runtime/colors/blue.vim +++ b/runtime/colors/blue.vim @@ -4,7 +4,7 @@ " Maintainer: Original maintainer Steven Vertigan " Website: https://github.com/vim/colorschemes " License: Same as Vim -" Last Updated: Fri 15 Dec 2023 20:05:33 +" Last Updated: Mon 08 Jan 2024 09:42:49 AM AEDT " Generated by Colortemplate v2.2.3 @@ -76,8 +76,8 @@ hi Underlined guifg=NONE guibg=NONE gui=underline ctermfg=NONE ctermbg=NONE cter hi Label guifg=#ffd700 guibg=NONE gui=NONE cterm=NONE hi! link Terminal Normal hi! link Debug Special -hi! link diffAdded String -hi! link diffRemoved WarningMsg +hi! link Added String +hi! link Removed WarningMsg hi! link diffOnly WarningMsg hi! link diffNoEOL WarningMsg hi! link diffIsA WarningMsg @@ -186,8 +186,8 @@ if s:t_Co >= 256 hi Label ctermfg=220 ctermbg=NONE cterm=NONE hi! link Terminal Normal hi! link Debug Special - hi! link diffAdded String - hi! link diffRemoved WarningMsg + hi! link Added String + hi! link Removed WarningMsg hi! link diffOnly WarningMsg hi! link diffNoEOL WarningMsg hi! link diffIsA WarningMsg @@ -299,8 +299,8 @@ if s:t_Co >= 16 hi Label ctermfg=yellow ctermbg=NONE cterm=NONE hi! link Terminal Normal hi! link Debug Special - hi! link diffAdded String - hi! link diffRemoved WarningMsg + hi! link Added String + hi! link Removed WarningMsg hi! link diffOnly WarningMsg hi! link diffNoEOL WarningMsg hi! link diffIsA WarningMsg @@ -411,8 +411,8 @@ if s:t_Co >= 8 hi Label ctermfg=yellow ctermbg=NONE cterm=NONE hi! link Terminal Normal hi! link Debug Special - hi! link diffAdded String - hi! link diffRemoved WarningMsg + hi! link Added String + hi! link Removed WarningMsg hi! link diffOnly WarningMsg hi! link diffNoEOL WarningMsg hi! link diffIsA WarningMsg diff --git a/runtime/colors/darkblue.vim b/runtime/colors/darkblue.vim index 207d1ea58f..b792b90fb2 100644 --- a/runtime/colors/darkblue.vim +++ b/runtime/colors/darkblue.vim @@ -4,7 +4,7 @@ " Maintainer: Original author Bohdan Vlasyuk " Website: https://github.com/vim/colorschemes " License: Same as Vim -" Last Updated: Fri 15 Dec 2023 20:05:33 +" Last Updated: Mon 08 Jan 2024 09:43:03 AM AEDT " Generated by Colortemplate v2.2.3 @@ -54,8 +54,8 @@ hi! link Structure Type hi! link Tag Special hi! link Typedef Type hi! link Debug Special -hi! link diffAdded String -hi! link diffRemoved WarningMsg +hi! link Added String +hi! link Removed WarningMsg hi! link diffOnly WarningMsg hi! link diffNoEOL WarningMsg hi! link diffIsA WarningMsg @@ -162,8 +162,8 @@ if s:t_Co >= 256 hi! link Tag Special hi! link Typedef Type hi! link Debug Special - hi! link diffAdded String - hi! link diffRemoved WarningMsg + hi! link Added String + hi! link Removed WarningMsg hi! link diffOnly WarningMsg hi! link diffNoEOL WarningMsg hi! link diffIsA WarningMsg diff --git a/runtime/colors/evening.vim b/runtime/colors/evening.vim index 3ac3242dd1..2753daa440 100644 --- a/runtime/colors/evening.vim +++ b/runtime/colors/evening.vim @@ -4,7 +4,7 @@ " Maintainer: Original maintainer Steven Vertigan " Website: https://github.com/vim/colorschemes " License: Same as Vim -" Last Updated: Fri 15 Dec 2023 20:05:35 +" Last Updated: Mon 08 Jan 2024 09:43:27 AM AEDT " Generated by Colortemplate v2.2.3 @@ -28,8 +28,8 @@ hi! link CursorIM Cursor hi! link LineNrAbove LineNr hi! link LineNrBelow LineNr hi! link Debug Special -hi! link diffAdded String -hi! link diffRemoved WarningMsg +hi! link Added String +hi! link Removed WarningMsg hi! link diffOnly WarningMsg hi! link diffNoEOL WarningMsg hi! link diffIsA WarningMsg @@ -136,8 +136,8 @@ if s:t_Co >= 256 hi! link LineNrAbove LineNr hi! link LineNrBelow LineNr hi! link Debug Special - hi! link diffAdded String - hi! link diffRemoved WarningMsg + hi! link Added String + hi! link Removed WarningMsg hi! link diffOnly WarningMsg hi! link diffNoEOL WarningMsg hi! link diffIsA WarningMsg @@ -247,8 +247,8 @@ if s:t_Co >= 16 hi! link LineNrAbove LineNr hi! link LineNrBelow LineNr hi! link Debug Special - hi! link diffAdded String - hi! link diffRemoved WarningMsg + hi! link Added String + hi! link Removed WarningMsg hi! link diffOnly WarningMsg hi! link diffNoEOL WarningMsg hi! link diffIsA WarningMsg diff --git a/runtime/colors/habamax.vim b/runtime/colors/habamax.vim index 4880482417..f32a5494ac 100644 --- a/runtime/colors/habamax.vim +++ b/runtime/colors/habamax.vim @@ -4,7 +4,7 @@ " Maintainer: Maxim Kim " Website: https://github.com/vim/colorschemes " License: Same as Vim -" Last Updated: Fri 15 Dec 2023 20:05:35 +" Last Updated: Mon 08 Jan 2024 09:39:53 AM AEDT " Generated by Colortemplate v2.2.3 @@ -106,8 +106,9 @@ hi Ignore guifg=NONE guibg=NONE gui=NONE ctermfg=NONE ctermbg=NONE cterm=NONE hi Debug guifg=#5f8787 guibg=NONE gui=NONE cterm=NONE hi DiffAdd guifg=#dadada guibg=#5f875f gui=NONE cterm=NONE hi DiffDelete guifg=#af875f guibg=NONE gui=NONE cterm=NONE -hi diffAdded guifg=#87af87 guibg=NONE gui=NONE cterm=NONE -hi diffRemoved guifg=#d75f5f guibg=NONE gui=NONE cterm=NONE +hi Added guifg=#87af87 guibg=NONE gui=NONE cterm=NONE +hi Changed guifg=#5f8787 guibg=NONE gui=NONE cterm=NONE +hi Removed guifg=#d75f5f guibg=NONE gui=NONE cterm=NONE hi diffSubname guifg=#af87af guibg=NONE gui=NONE cterm=NONE hi DiffText guifg=#dadada guibg=#878787 gui=NONE cterm=NONE hi DiffChange guifg=#bcbcbc guibg=#5f5f5f gui=NONE cterm=NONE @@ -199,8 +200,9 @@ if s:t_Co >= 256 hi Debug ctermfg=66 ctermbg=NONE cterm=NONE hi DiffAdd ctermfg=253 ctermbg=65 cterm=NONE hi DiffDelete ctermfg=137 ctermbg=NONE cterm=NONE - hi diffAdded ctermfg=108 ctermbg=NONE cterm=NONE - hi diffRemoved ctermfg=167 ctermbg=NONE cterm=NONE + hi Added ctermfg=108 ctermbg=NONE cterm=NONE + hi Changed ctermfg=66 ctermbg=NONE cterm=NONE + hi Removed ctermfg=167 ctermbg=NONE cterm=NONE hi diffSubname ctermfg=139 ctermbg=NONE cterm=NONE hi DiffText ctermfg=253 ctermbg=102 cterm=NONE hi DiffChange ctermfg=250 ctermbg=59 cterm=NONE @@ -277,8 +279,9 @@ if s:t_Co >= 16 hi Debug ctermfg=darkcyan ctermbg=NONE cterm=NONE hi DiffAdd ctermfg=white ctermbg=darkgreen cterm=NONE hi DiffDelete ctermfg=darkyellow ctermbg=NONE cterm=NONE - hi diffAdded ctermfg=darkgreen ctermbg=NONE cterm=NONE - hi diffRemoved ctermfg=darkred ctermbg=NONE cterm=NONE + hi Added ctermfg=darkgreen ctermbg=NONE cterm=NONE + hi Changed ctermfg=darkcyan ctermbg=NONE cterm=NONE + hi Removed ctermfg=darkred ctermbg=NONE cterm=NONE hi diffSubname ctermfg=darkmagenta ctermbg=NONE cterm=NONE hi DiffText ctermfg=white ctermbg=lightgrey cterm=NONE hi DiffChange ctermfg=white ctermbg=darkgray cterm=NONE @@ -355,8 +358,9 @@ if s:t_Co >= 8 hi Debug ctermfg=darkcyan ctermbg=NONE cterm=NONE hi DiffAdd ctermfg=white ctermbg=darkgreen cterm=NONE hi DiffDelete ctermfg=darkyellow ctermbg=NONE cterm=NONE - hi diffAdded ctermfg=darkgreen ctermbg=NONE cterm=NONE - hi diffRemoved ctermfg=darkred ctermbg=NONE cterm=NONE + hi Added ctermfg=darkgreen ctermbg=NONE cterm=NONE + hi Changed ctermfg=darkcyan ctermbg=NONE cterm=NONE + hi Removed ctermfg=darkred ctermbg=NONE cterm=NONE hi diffSubname ctermfg=darkmagenta ctermbg=NONE cterm=NONE hi DiffText ctermfg=white ctermbg=black cterm=bold,reverse hi DiffChange ctermfg=black ctermbg=white cterm=NONE diff --git a/runtime/colors/lists/csscolors.vim b/runtime/colors/lists/csscolors.vim index 74955226c2..986333d779 100644 --- a/runtime/colors/lists/csscolors.vim +++ b/runtime/colors/lists/csscolors.vim @@ -4,6 +4,9 @@ " Similar in spirit to rgb.txt, this plugin establishes a human-friendly name " for every color listed in the CSS standard: " +" Note: the color names should be in lower case, because Vim will lookup the +" a color by its lower case name. +" " https://www.w3.org/TR/css-color-3/ let s:keepcpo= &cpo @@ -26,7 +29,6 @@ call extend(v:colornames, { \ 'css_blue': '#0000FF', \ 'css_teal': '#008080', \ 'css_aqua': '#00FFFF', - \ \ 'css_aliceblue': '#f0f8ff', \ 'css_antiquewhite': '#faebd7', \ 'css_aquamarine': '#7fffd4', @@ -160,6 +162,14 @@ call extend(v:colornames, { \ 'css_yellowgreen': '#9acd32', \ }, 'keep') +" all keys should be in lower case, convert keys that are not yet +for [key, val] in items(filter(copy(v:colornames), { key -> key =~ '\u'})) + call remove(v:colornames, key) + if !has_key(v:colornames, tolower(key)) + call extend(v:colornames, {tolower(key): val}, 'keep') + endif +endfor + let &cpo= s:keepcpo unlet s:keepcpo diff --git a/runtime/colors/lists/default.vim b/runtime/colors/lists/default.vim index 7d81c6f75e..073a0da11b 100644 --- a/runtime/colors/lists/default.vim +++ b/runtime/colors/lists/default.vim @@ -6,6 +6,8 @@ " time the highlight command fails to recognize a gui color. You can override " these colors by introducing a new colors/lists/default.vim file earlier in " the runtimepath. +" Note: the color names should be in lower case, because Vim will lookup the +" a color by its lower case name. " make sure line continuation works let s:keepcpo = &cpo @@ -802,6 +804,14 @@ call extend(v:colornames, { \ 'teal': '#008080' \ }, 'keep') +" all keys should be in lower case, convert keys that are not yet +for [key, val] in items(filter(copy(v:colornames), { key -> key =~ '\u'})) + call remove(v:colornames, key) + if !has_key(v:colornames, tolower(key)) + call extend(v:colornames, {tolower(key): val}, 'keep') + endif +endfor + let &cpo = s:keepcpo unlet s:keepcpo diff --git a/runtime/colors/lunaperche.vim b/runtime/colors/lunaperche.vim index 4e4678e81a..3546710a3d 100644 --- a/runtime/colors/lunaperche.vim +++ b/runtime/colors/lunaperche.vim @@ -4,7 +4,7 @@ " Maintainer: Maxim Kim " Website: https://www.github.com/vim/colorschemes " License: Vim License (see `:help license`) -" Last Updated: Fri 15 Dec 2023 20:05:37 +" Last Updated: Mon 08 Jan 2024 09:41:03 AM AEDT " Generated by Colortemplate v2.2.3 @@ -164,8 +164,9 @@ if &background ==# 'dark' hi DiffChange guifg=#c6c6c6 guibg=#5f5f5f gui=NONE cterm=NONE hi DiffText guifg=#afffff guibg=#5f8787 gui=NONE cterm=NONE hi DiffDelete guifg=#d78787 guibg=NONE gui=NONE cterm=NONE - hi diffAdded guifg=#5fd75f guibg=NONE gui=NONE cterm=NONE - hi diffRemoved guifg=#d78787 guibg=NONE gui=NONE cterm=NONE + hi Added guifg=#5fd75f guibg=NONE gui=NONE cterm=NONE + hi Changed guifg=#5fafff guibg=NONE gui=NONE cterm=NONE + hi Removed guifg=#d78787 guibg=NONE gui=NONE cterm=NONE hi diffSubname guifg=#ff87ff guibg=NONE gui=NONE cterm=NONE hi dirType guifg=#d787d7 guibg=NONE gui=NONE cterm=NONE hi dirPermissionUser guifg=#5faf5f guibg=NONE gui=NONE cterm=NONE @@ -254,8 +255,9 @@ else hi DiffChange guifg=#000000 guibg=#d0d0d0 gui=NONE cterm=NONE hi DiffText guifg=#000000 guibg=#5fd7d7 gui=NONE cterm=NONE hi DiffDelete guifg=#870000 guibg=NONE gui=NONE cterm=NONE - hi diffAdded guifg=#008700 guibg=NONE gui=NONE cterm=NONE - hi diffRemoved guifg=#d70000 guibg=NONE gui=NONE cterm=NONE + hi Added guifg=#008700 guibg=NONE gui=NONE cterm=NONE + hi Changed guifg=#005fd7 guibg=NONE gui=NONE cterm=NONE + hi Removed guifg=#d70000 guibg=NONE gui=NONE cterm=NONE hi diffSubname guifg=#af00af guibg=NONE gui=NONE cterm=NONE hi dirType guifg=#005f5f guibg=NONE gui=NONE cterm=NONE hi dirPermissionUser guifg=#af5f00 guibg=NONE gui=NONE cterm=NONE @@ -421,8 +423,9 @@ if s:t_Co >= 256 hi DiffChange ctermfg=251 ctermbg=59 cterm=NONE hi DiffText ctermfg=159 ctermbg=66 cterm=NONE hi DiffDelete ctermfg=174 ctermbg=NONE cterm=NONE - hi diffAdded ctermfg=77 ctermbg=NONE cterm=NONE - hi diffRemoved ctermfg=174 ctermbg=NONE cterm=NONE + hi Added ctermfg=77 ctermbg=NONE cterm=NONE + hi Changed ctermfg=75 ctermbg=NONE cterm=NONE + hi Removed ctermfg=174 ctermbg=NONE cterm=NONE hi diffSubname ctermfg=213 ctermbg=NONE cterm=NONE hi dirType ctermfg=176 ctermbg=NONE cterm=NONE hi dirPermissionUser ctermfg=71 ctermbg=NONE cterm=NONE @@ -506,8 +509,9 @@ if s:t_Co >= 256 hi DiffChange ctermfg=16 ctermbg=252 cterm=NONE hi DiffText ctermfg=16 ctermbg=80 cterm=NONE hi DiffDelete ctermfg=88 ctermbg=NONE cterm=NONE - hi diffAdded ctermfg=28 ctermbg=NONE cterm=NONE - hi diffRemoved ctermfg=160 ctermbg=NONE cterm=NONE + hi Added ctermfg=28 ctermbg=NONE cterm=NONE + hi Changed ctermfg=26 ctermbg=NONE cterm=NONE + hi Removed ctermfg=160 ctermbg=NONE cterm=NONE hi diffSubname ctermfg=127 ctermbg=NONE cterm=NONE hi dirType ctermfg=23 ctermbg=NONE cterm=NONE hi dirPermissionUser ctermfg=130 ctermbg=NONE cterm=NONE @@ -596,8 +600,9 @@ if s:t_Co >= 16 hi DiffChange ctermfg=white ctermbg=darkgreen cterm=NONE hi DiffText ctermfg=black ctermbg=cyan cterm=NONE hi DiffDelete ctermfg=darkred ctermbg=NONE cterm=NONE - hi diffAdded ctermfg=green ctermbg=NONE cterm=NONE - hi diffRemoved ctermfg=darkred ctermbg=NONE cterm=NONE + hi Added ctermfg=green ctermbg=NONE cterm=NONE + hi Changed ctermfg=blue ctermbg=NONE cterm=NONE + hi Removed ctermfg=darkred ctermbg=NONE cterm=NONE hi diffSubname ctermfg=magenta ctermbg=NONE cterm=NONE hi dirType ctermfg=darkmagenta ctermbg=NONE cterm=NONE hi dirPermissionUser ctermfg=darkgreen ctermbg=NONE cterm=NONE @@ -681,8 +686,9 @@ if s:t_Co >= 16 hi DiffChange ctermfg=black ctermbg=lightgray cterm=NONE hi DiffText ctermfg=black ctermbg=cyan cterm=NONE hi DiffDelete ctermfg=darkred ctermbg=NONE cterm=NONE - hi diffAdded ctermfg=darkgreen ctermbg=NONE cterm=NONE - hi diffRemoved ctermfg=red ctermbg=NONE cterm=NONE + hi Added ctermfg=darkgreen ctermbg=NONE cterm=NONE + hi Changed ctermfg=darkblue ctermbg=NONE cterm=NONE + hi Removed ctermfg=red ctermbg=NONE cterm=NONE hi diffSubname ctermfg=darkmagenta ctermbg=NONE cterm=NONE hi dirType ctermfg=darkcyan ctermbg=NONE cterm=NONE hi dirPermissionUser ctermfg=darkyellow ctermbg=NONE cterm=NONE diff --git a/runtime/colors/murphy.vim b/runtime/colors/murphy.vim index b829d4975e..a6a08ed41a 100644 --- a/runtime/colors/murphy.vim +++ b/runtime/colors/murphy.vim @@ -4,7 +4,7 @@ " Maintainer: Original maintainer Ron Aaron . " Website: https://github.com/vim/colorschemes " License: Same as Vim -" Last Updated: Fri 15 Dec 2023 20:05:38 +" Last Updated: Mon 08 Jan 2024 09:50:15 AM AEDT " Generated by Colortemplate v2.2.3 @@ -28,6 +28,7 @@ hi! link StatusLineTerm StatusLine hi! link StatusLineTermNC StatusLineNC hi! link MessageWindow Pmenu hi! link PopupNotification Todo +hi! link Added Constant hi Normal guifg=#87ff87 guibg=#000000 gui=NONE cterm=NONE hi EndOfBuffer guifg=#0000ff guibg=#000000 gui=NONE cterm=NONE hi StatusLine guifg=#ffffff guibg=#00008b gui=NONE cterm=NONE @@ -100,6 +101,7 @@ if s:t_Co >= 256 hi! link StatusLineTermNC StatusLineNC hi! link MessageWindow Pmenu hi! link PopupNotification Todo + hi! link Added Constant hi Normal ctermfg=120 ctermbg=16 cterm=NONE hi EndOfBuffer ctermfg=21 ctermbg=16 cterm=NONE hi StatusLine ctermfg=231 ctermbg=18 cterm=NONE diff --git a/runtime/colors/wildcharm.vim b/runtime/colors/wildcharm.vim index 31facfa918..ee1f37625c 100644 --- a/runtime/colors/wildcharm.vim +++ b/runtime/colors/wildcharm.vim @@ -4,7 +4,7 @@ " Maintainer: Maxim Kim " Website: https://github.com/vim/colorschemes " License: Same as Vim -" Last Updated: Fri 15 Dec 2023 20:05:43 +" Last Updated: Mon 08 Jan 2024 09:40:36 AM AEDT " Generated by Colortemplate v2.2.3 @@ -93,8 +93,9 @@ if &background ==# 'dark' hi DiffChange guifg=#d0d0d0 guibg=#5f5f5f gui=NONE cterm=NONE hi DiffText guifg=#afffff guibg=#5f8787 gui=NONE cterm=NONE hi DiffDelete guifg=#ffafaf guibg=#875f5f gui=NONE cterm=NONE - hi diffAdded guifg=#00af5f guibg=NONE gui=NONE cterm=NONE - hi diffRemoved guifg=#d7005f guibg=NONE gui=NONE cterm=NONE + hi Added guifg=#00af5f guibg=NONE gui=NONE cterm=NONE + hi Changed guifg=#0087d7 guibg=NONE gui=NONE cterm=NONE + hi Removed guifg=#d7005f guibg=NONE gui=NONE cterm=NONE else " Light background if (has('termguicolors') && &termguicolors) || has('gui_running') @@ -167,8 +168,9 @@ else hi DiffChange guifg=#262626 guibg=#dadada gui=NONE cterm=NONE hi DiffText guifg=#005f5f guibg=#afd7d7 gui=NONE cterm=NONE hi DiffDelete guifg=#875f5f guibg=#ffd7d7 gui=NONE cterm=NONE - hi diffAdded guifg=#008700 guibg=NONE gui=NONE cterm=NONE - hi diffRemoved guifg=#d70000 guibg=NONE gui=NONE cterm=NONE + hi Added guifg=#5faf5f guibg=NONE gui=NONE cterm=NONE + hi Changed guifg=#0087d7 guibg=NONE gui=NONE cterm=NONE + hi Removed guifg=#d70000 guibg=NONE gui=NONE cterm=NONE endif if s:t_Co >= 256 @@ -247,8 +249,9 @@ if s:t_Co >= 256 hi DiffChange ctermfg=252 ctermbg=59 cterm=NONE hi DiffText ctermfg=159 ctermbg=66 cterm=NONE hi DiffDelete ctermfg=217 ctermbg=95 cterm=NONE - hi diffAdded ctermfg=35 ctermbg=NONE cterm=NONE - hi diffRemoved ctermfg=161 ctermbg=NONE cterm=NONE + hi Added ctermfg=35 ctermbg=NONE cterm=NONE + hi Changed ctermfg=32 ctermbg=NONE cterm=NONE + hi Removed ctermfg=161 ctermbg=NONE cterm=NONE else " Light background hi Normal ctermfg=16 ctermbg=231 cterm=NONE @@ -316,8 +319,9 @@ if s:t_Co >= 256 hi DiffChange ctermfg=235 ctermbg=253 cterm=NONE hi DiffText ctermfg=23 ctermbg=152 cterm=NONE hi DiffDelete ctermfg=95 ctermbg=224 cterm=NONE - hi diffAdded ctermfg=28 ctermbg=NONE cterm=NONE - hi diffRemoved ctermfg=160 ctermbg=NONE cterm=NONE + hi Added ctermfg=71 ctermbg=NONE cterm=NONE + hi Changed ctermfg=32 ctermbg=NONE cterm=NONE + hi Removed ctermfg=160 ctermbg=NONE cterm=NONE endif unlet s:t_Co finish @@ -386,12 +390,13 @@ if s:t_Co >= 16 hi Directory ctermfg=blue ctermbg=NONE cterm=bold hi Conceal ctermfg=NONE ctermbg=NONE cterm=NONE hi Ignore ctermfg=NONE ctermbg=NONE cterm=NONE - hi DiffAdd ctermfg=black ctermbg=darkmagenta cterm=NONE + hi DiffAdd ctermfg=black ctermbg=darkgreen cterm=NONE hi DiffChange ctermfg=black ctermbg=lightgray cterm=NONE hi DiffText ctermfg=black ctermbg=cyan cterm=NONE hi DiffDelete ctermfg=black ctermbg=darkred cterm=NONE - hi diffAdded ctermfg=darkgreen ctermbg=NONE cterm=NONE - hi diffRemoved ctermfg=darkred ctermbg=NONE cterm=NONE + hi Added ctermfg=darkgreen ctermbg=NONE cterm=NONE + hi Changed ctermfg=darkblue ctermbg=NONE cterm=NONE + hi Removed ctermfg=darkred ctermbg=NONE cterm=NONE else " Light background hi Normal ctermfg=black ctermbg=white cterm=NONE @@ -455,12 +460,13 @@ if s:t_Co >= 16 hi Directory ctermfg=darkblue ctermbg=NONE cterm=bold hi Conceal ctermfg=NONE ctermbg=NONE cterm=NONE hi Ignore ctermfg=NONE ctermbg=NONE cterm=NONE - hi DiffAdd ctermfg=black ctermbg=darkmagenta cterm=NONE + hi DiffAdd ctermfg=black ctermbg=darkgreen cterm=NONE hi DiffChange ctermfg=black ctermbg=lightgray cterm=NONE hi DiffText ctermfg=black ctermbg=cyan cterm=NONE hi DiffDelete ctermfg=black ctermbg=darkred cterm=NONE - hi diffAdded ctermfg=darkgreen ctermbg=NONE cterm=NONE - hi diffRemoved ctermfg=red ctermbg=NONE cterm=NONE + hi Added ctermfg=green ctermbg=NONE cterm=NONE + hi Changed ctermfg=blue ctermbg=NONE cterm=NONE + hi Removed ctermfg=red ctermbg=NONE cterm=NONE endif unlet s:t_Co finish @@ -510,7 +516,7 @@ if s:t_Co >= 8 hi VisualNOS ctermfg=black ctermbg=darkblue cterm=NONE hi CursorLine ctermfg=NONE ctermbg=NONE cterm=underline hi CursorColumn ctermfg=black ctermbg=darkyellow cterm=NONE - hi Folded ctermfg=black ctermbg=NONE cterm=bold + hi Folded ctermfg=grey ctermbg=NONE cterm=bold hi ColorColumn ctermfg=black ctermbg=darkyellow cterm=NONE hi SpellBad ctermfg=darkred ctermbg=NONE cterm=reverse hi SpellCap ctermfg=darkcyan ctermbg=NONE cterm=reverse @@ -519,20 +525,20 @@ if s:t_Co >= 8 hi Comment ctermfg=NONE ctermbg=NONE cterm=bold hi Constant ctermfg=darkred ctermbg=NONE cterm=NONE hi String ctermfg=darkgreen ctermbg=NONE cterm=NONE - hi Identifier ctermfg=NONE ctermbg=NONE cterm=NONE - hi Statement ctermfg=darkblue ctermbg=NONE cterm=bold + hi Identifier ctermfg=darkmagenta ctermbg=NONE cterm=NONE + hi Statement ctermfg=darkblue ctermbg=NONE cterm=NONE hi Type ctermfg=darkyellow ctermbg=NONE cterm=NONE hi PreProc ctermfg=darkcyan ctermbg=NONE cterm=NONE - hi Special ctermfg=darkcyan ctermbg=NONE cterm=NONE + hi Special ctermfg=darkmagenta ctermbg=NONE cterm=NONE hi Underlined ctermfg=NONE ctermbg=NONE cterm=underline hi Title ctermfg=NONE ctermbg=NONE cterm=bold hi Directory ctermfg=darkblue ctermbg=NONE cterm=bold hi Conceal ctermfg=NONE ctermbg=NONE cterm=NONE hi Ignore ctermfg=NONE ctermbg=NONE cterm=NONE - hi DiffAdd ctermfg=black ctermbg=darkmagenta cterm=NONE - hi DiffChange ctermfg=black ctermbg=darkcyan cterm=NONE - hi DiffText ctermfg=black ctermbg=grey cterm=NONE - hi DiffDelete ctermfg=darkred ctermbg=NONE cterm=NONE + hi DiffAdd ctermfg=black ctermbg=darkgreen cterm=NONE + hi DiffChange ctermfg=black ctermbg=darkblue cterm=NONE + hi DiffText ctermfg=black ctermbg=darkmagenta cterm=NONE + hi DiffDelete ctermfg=black ctermbg=darkred cterm=NONE else " Light background hi Normal ctermfg=black ctermbg=grey cterm=NONE @@ -586,20 +592,20 @@ if s:t_Co >= 8 hi Comment ctermfg=NONE ctermbg=NONE cterm=bold hi Constant ctermfg=darkred ctermbg=NONE cterm=NONE hi String ctermfg=darkgreen ctermbg=NONE cterm=NONE - hi Identifier ctermfg=NONE ctermbg=NONE cterm=NONE - hi Statement ctermfg=darkblue ctermbg=NONE cterm=bold + hi Identifier ctermfg=darkmagenta ctermbg=NONE cterm=NONE + hi Statement ctermfg=darkblue ctermbg=NONE cterm=NONE hi Type ctermfg=darkyellow ctermbg=NONE cterm=NONE hi PreProc ctermfg=darkcyan ctermbg=NONE cterm=NONE - hi Special ctermfg=darkcyan ctermbg=NONE cterm=NONE + hi Special ctermfg=darkmagenta ctermbg=NONE cterm=NONE hi Underlined ctermfg=NONE ctermbg=NONE cterm=underline hi Title ctermfg=NONE ctermbg=NONE cterm=bold hi Directory ctermfg=darkblue ctermbg=NONE cterm=bold hi Conceal ctermfg=NONE ctermbg=NONE cterm=NONE hi Ignore ctermfg=NONE ctermbg=NONE cterm=NONE - hi DiffAdd ctermfg=black ctermbg=darkmagenta cterm=NONE - hi DiffChange ctermfg=black ctermbg=darkcyan cterm=NONE - hi DiffText ctermfg=grey ctermbg=black cterm=NONE - hi DiffDelete ctermfg=darkred ctermbg=NONE cterm=NONE + hi DiffAdd ctermfg=black ctermbg=darkgreen cterm=NONE + hi DiffChange ctermfg=black ctermbg=darkblue cterm=NONE + hi DiffText ctermfg=black ctermbg=darkmagenta cterm=NONE + hi DiffDelete ctermfg=black ctermbg=darkred cterm=NONE endif unlet s:t_Co finish @@ -700,7 +706,7 @@ endif " Color: colorlC #ff5fff 207 magenta " Color: colorDim #878787 102 grey " Color: colorMP #ff00af 199 magenta -" Color: diffAdd #5f875f 65 darkmagenta +" Color: diffAdd #5f875f 65 darkgreen " Color: diffAddFg #afffaf 157 black " Color: diffDelete #875f5f 95 darkred " Color: diffDeleteFg #ffafaf 217 black @@ -739,7 +745,7 @@ endif " Color: colorDim #626262 241 darkgrey " Color: colorSt #5f5f5f 59 darkgrey " Color: colorMP #ff00af 199 magenta -" Color: diffAdd #afd7af 151 darkmagenta +" Color: diffAdd #afd7af 151 darkgreen " Color: diffAddFg #005f00 22 black " Color: diffDelete #ffd7d7 224 darkred " Color: diffDeleteFg #875f5f 95 black diff --git a/runtime/compiler/gm2.vim b/runtime/compiler/gm2.vim new file mode 100644 index 0000000000..5053912200 --- /dev/null +++ b/runtime/compiler/gm2.vim @@ -0,0 +1,26 @@ +" Vim compiler file +" Compiler: GNU Modula-2 Compiler +" Maintainer: Doug Kearns +" Last Change: 2024 Jan 04 + +if exists("current_compiler") + finish +endif +let current_compiler = "gm2" + +if exists(":CompilerSet") != 2 " older Vim always used :setlocal + command -nargs=* CompilerSet setlocal +endif + +let s:cpo_save = &cpo +set cpo&vim + +CompilerSet makeprg=gm2 +CompilerSet errorformat=%-G%f:%l:%c:\ error:\ compilation\ failed, + \%f:%l:%c:\ %trror:\ %m, + \%f:%l:%c:\ %tarning:\ %m, + \%f:%l:%c:\ %tote:\ %m, + \%-G%.%# + +let &cpo = s:cpo_save +unlet s:cpo_save diff --git a/runtime/doc/Make_mvc.mak b/runtime/doc/Make_mvc.mak index 656cf75926..850d86bb74 100644 --- a/runtime/doc/Make_mvc.mak +++ b/runtime/doc/Make_mvc.mak @@ -39,6 +39,9 @@ ICONV = "$(ICONV_PATH)\iconv.exe" !ENDIF RM = del /q +PS = PowerShell.exe + +PSFLAGS = -NoLogo -NoProfile -Command .SUFFIXES : .SUFFIXES : .c .o .txt .html @@ -49,9 +52,9 @@ all : tags perlhtml $(CONVERTED) # Use "doctags" to generate the tags file. Only works for English! tags : doctags $(DOCS) doctags.exe $(DOCS) | sort /L C /O tags - powershell -nologo -noprofile -Command \ - "(Get-Content -Raw tags | Get-Unique | % {$$_ -replace \"`r\", \"\"}) \ - | New-Item -Force -Path . -ItemType file -Name tags" + $(PS) $(PSFLAGS) \ + (Get-Content -Raw tags ^| Get-Unique ^| %%{$$_ -replace \"`r\", \"\"})\ + ^| New-Item -Force -Path . -ItemType file -Name tags doctags : doctags.c $(CC) doctags.c @@ -64,12 +67,10 @@ vimtags : $(DOCS) uganda.nsis.txt : uganda.??? - !@powershell -nologo -noprofile -Command \ - $$ext=(Get-Item $?).Extension; (Get-Content $? ^| \ - % {$$_ -replace '\s*\*[-a-zA-Z0-9.]*\*', '' -replace 'vim:tw=78:.*', ''}) \ + !@$(PS) $(PSFLAGS) $$ext=(Get-Item $?).Extension; (Get-Content $? ^| \ + %%{$$_ -replace '\s*\*[-a-zA-Z0-9.]*\*', '' -replace 'vim:tw=78:.*', ''})\ ^| Set-Content $*$$ext - !@powershell -nologo -noprofile -Command \ - $$ext=(Get-Item $?).Extension; \ + !@$(PS) $(PSFLAGS) $$ext=(Get-Item $?).Extension; \ (Get-Content -Raw $(@B)$$ext).Trim() -replace '(\r\n){3,}', '$$1$$1' \ ^| Set-Content $(@B)$$ext @@ -105,7 +106,7 @@ perlhtml : tags $(DOCS) # Check URLs in the help with "curl" or "powershell". test_urls : - "$(VIMEXE)" -S test_urls.vim + "$(VIMEXE)" --clean -S test_urls.vim clean : $(RM) doctags.exe doctags.obj @@ -203,7 +204,7 @@ os_win32.txt : << convert-all : $(CONVERTED) -!IF [powershell -nologo -noprofile "exit $$psversiontable.psversion.major"] == 2 +!IF [$(PS) $(PSFLAGS) "exit $$psversiontable.psversion.major"] == 2 !ERROR The program "PowerShell" version 3.0 or higher is required to work !ENDIF @@ -212,7 +213,7 @@ vim-da.UTF-8.1 : vim-da.1 $(ICONV) -f ISO-8859-1 -t UTF-8 $? >$@ !ELSE # Conversion to UTF-8 encoding without BOM and with UNIX-like line ending - powershell -nologo -noprofile -Command \ + $(PS) $(PSFLAGS) \ [IO.File]::ReadAllText(\"$?\", [Text.Encoding]::GetEncoding(28591)) ^| \ 1>nul New-Item -Force -Path . -ItemType file -Name $@ !ENDIF @@ -222,7 +223,7 @@ vimdiff-da.UTF-8.1 : vimdiff-da.1 $(ICONV) -f ISO-8859-1 -t UTF-8 $? >$@ !ELSE # Conversion to UTF-8 encoding without BOM and with UNIX-like line ending - powershell -nologo -noprofile -Command \ + $(PS) $(PSFLAGS) \ [IO.File]::ReadAllText(\"$?\", [Text.Encoding]::GetEncoding(28591)) ^| \ 1>nul New-Item -Force -Path . -ItemType file -Name $@ !ENDIF @@ -232,7 +233,7 @@ vimtutor-da.UTF-8.1 : vimtutor-da.1 $(ICONV) -f ISO-8859-1 -t UTF-8 $? >$@ !ELSE # Conversion to UTF-8 encoding without BOM and with UNIX-like line ending - powershell -nologo -noprofile -Command \ + $(PS) $(PSFLAGS) \ [IO.File]::ReadAllText(\"$?\", [Text.Encoding]::GetEncoding(28591)) ^| \ 1>nul New-Item -Force -Path . -ItemType file -Name $@ !ENDIF @@ -242,7 +243,7 @@ vim-de.UTF-8.1 : vim-de.1 $(ICONV) -f ISO-8859-1 -t UTF-8 $? >$@ !ELSE # Conversion to UTF-8 encoding without BOM and with UNIX-like line ending - powershell -nologo -noprofile -Command \ + $(PS) $(PSFLAGS) \ [IO.File]::ReadAllText(\"$?\", [Text.Encoding]::GetEncoding(28591)) ^| \ 1>nul New-Item -Force -Path . -ItemType file -Name $@ !ENDIF @@ -252,7 +253,7 @@ evim-fr.UTF-8.1 : evim-fr.1 $(ICONV) -f ISO-8859-1 -t UTF-8 $? >$@ !ELSE # Conversion to UTF-8 encoding without BOM and with UNIX-like line ending - powershell -nologo -noprofile -Command \ + $(PS) $(PSFLAGS) \ [IO.File]::ReadAllText(\"$?\", [Text.Encoding]::GetEncoding(28591)) ^| \ 1>nul New-Item -Force -Path . -ItemType file -Name $@ !ENDIF @@ -262,7 +263,7 @@ vim-fr.UTF-8.1 : vim-fr.1 $(ICONV) -f ISO-8859-1 -t UTF-8 $? >$@ !ELSE # Conversion to UTF-8 encoding without BOM and with UNIX-like line ending - powershell -nologo -noprofile -Command \ + $(PS) $(PSFLAGS) \ [IO.File]::ReadAllText(\"$?\", [Text.Encoding]::GetEncoding(28591)) ^| \ 1>nul New-Item -Force -Path . -ItemType file -Name $@ !ENDIF @@ -272,7 +273,7 @@ vimdiff-fr.UTF-8.1 : vimdiff-fr.1 $(ICONV) -f ISO-8859-1 -t UTF-8 $? >$@ !ELSE # Conversion to UTF-8 encoding without BOM and with UNIX-like line ending - powershell -nologo -noprofile -Command \ + $(PS) $(PSFLAGS) \ [IO.File]::ReadAllText(\"$?\", [Text.Encoding]::GetEncoding(28591)) ^| \ 1>nul New-Item -Force -Path . -ItemType file -Name $@ !ENDIF @@ -282,7 +283,7 @@ vimtutor-fr.UTF-8.1 : vimtutor-fr.1 $(ICONV) -f ISO-8859-1 -t utf-8 $? >$@ !ELSE # Conversion to UTF-8 encoding without BOM and with UNIX-like line ending - powershell -nologo -noprofile -Command \ + $(PS) $(PSFLAGS) \ [IO.File]::ReadAllText(\"$?\", [Text.Encoding]::GetEncoding(28591)) ^| \ 1>nul New-Item -Force -Path . -ItemType file -Name $@ !ENDIF @@ -292,7 +293,7 @@ xxd-fr.UTF-8.1 : xxd-fr.1 $(ICONV) -f ISO-8859-1 -t UTF-8 $? >$@ !ELSE # Conversion to UTF-8 encoding without BOM and with UNIX-like line ending - powershell -nologo -noprofile -Command \ + $(PS) $(PSFLAGS) \ [IO.File]::ReadAllText(\"$?\", [Text.Encoding]::GetEncoding(28591)) ^| \ 1>nul New-Item -Force -Path . -ItemType file -Name $@ !ENDIF @@ -302,7 +303,7 @@ evim-it.UTF-8.1 : evim-it.1 $(ICONV) -f ISO-8859-1 -t UTF-8 $? >$@ !ELSE # Conversion to UTF-8 encoding without BOM and with UNIX-like line ending - powershell -nologo -noprofile -Command \ + $(PS) $(PSFLAGS) \ [IO.File]::ReadAllText(\"$?\", [Text.Encoding]::GetEncoding(28591)) ^| \ 1>nul New-Item -Force -Path . -ItemType file -Name $@ !ENDIF @@ -312,7 +313,7 @@ vim-it.UTF-8.1 : vim-it.1 $(ICONV) -f ISO-8859-1 -t UTF-8 $? >$@ !ELSE # Conversion to UTF-8 encoding without BOM and with UNIX-like line ending - powershell -nologo -noprofile -Command \ + $(PS) $(PSFLAGS) \ [IO.File]::ReadAllText(\"$?\", [Text.Encoding]::GetEncoding(28591)) ^| \ 1>nul New-Item -Force -Path . -ItemType file -Name $@ !ENDIF @@ -322,7 +323,7 @@ vimdiff-it.UTF-8.1 : vimdiff-it.1 $(ICONV) -f ISO-8859-1 -t UTF-8 $? >$@ !ELSE # Conversion to UTF-8 encoding without BOM and with UNIX-like line ending - powershell -nologo -noprofile -Command \ + $(PS) $(PSFLAGS) \ [IO.File]::ReadAllText(\"$?\", [Text.Encoding]::GetEncoding(28591)) ^| \ 1>nul New-Item -Force -Path . -ItemType file -Name $@ !ENDIF @@ -332,7 +333,7 @@ vimtutor-it.UTF-8.1 : vimtutor-it.1 $(ICONV) -f ISO-8859-1 -t UTF-8 $? >$@ !ELSE # Conversion to UTF-8 encoding without BOM and with UNIX-like line ending - powershell -nologo -noprofile -Command \ + $(PS) $(PSFLAGS) \ [IO.File]::ReadAllText(\"$?\", [Text.Encoding]::GetEncoding(28591)) ^| \ 1>nul New-Item -Force -Path . -ItemType file -Name $@ !ENDIF @@ -342,7 +343,7 @@ xxd-it.UTF-8.1 : xxd-it.1 $(ICONV) -f ISO-8859-1 -t UTF-8 $? >$@ !ELSE # Conversion to UTF-8 encoding without BOM and with UNIX-like line ending - powershell -nologo -noprofile -Command \ + $(PS) $(PSFLAGS) \ [IO.File]::ReadAllText(\"$?\", [Text.Encoding]::GetEncoding(28591)) ^| \ 1>nul New-Item -Force -Path . -ItemType file -Name $@ !ENDIF @@ -352,7 +353,7 @@ evim-pl.UTF-8.1 : evim-pl.1 $(ICONV) -f ISO-8859-2 -t UTF-8 $? >$@ !ELSE # Conversion to UTF-8 encoding without BOM and with UNIX-like line ending - powershell -nologo -noprofile -Command \ + $(PS) $(PSFLAGS) \ [IO.File]::ReadAllText(\"$?\", [Text.Encoding]::GetEncoding(28592)) ^| \ 1>nul New-Item -Force -Path . -ItemType file -Name $@ !ENDIF @@ -362,7 +363,7 @@ vim-pl.UTF-8.1 : vim-pl.1 $(ICONV) -f ISO-8859-2 -t UTF-8 $? >$@ !ELSE # Conversion to UTF-8 encoding without BOM and with UNIX-like line ending - powershell -nologo -noprofile -Command \ + $(PS) $(PSFLAGS) \ [IO.File]::ReadAllText(\"$?\", [Text.Encoding]::GetEncoding(28592)) ^| \ 1>nul New-Item -Force -Path . -ItemType file -Name $@ !ENDIF @@ -372,7 +373,7 @@ vimdiff-pl.UTF-8.1 : vimdiff-pl.1 $(ICONV) -f ISO-8859-2 -t UTF-8 $? >$@ !ELSE # Conversion to UTF-8 encoding without BOM and with UNIX-like line ending - powershell -nologo -noprofile -Command \ + $(PS) $(PSFLAGS) \ [IO.File]::ReadAllText(\"$?\", [Text.Encoding]::GetEncoding(28592)) ^| \ 1>nul New-Item -Force -Path . -ItemType file -Name $@ !ENDIF @@ -382,7 +383,7 @@ vimtutor-pl.UTF-8.1 : vimtutor-pl.1 $(ICONV) -f ISO-8859-2 -t UTF-8 $? >$@ !ELSE # Conversion to UTF-8 encoding without BOM and with UNIX-like line ending - powershell -nologo -noprofile -Command \ + $(PS) $(PSFLAGS) \ [IO.File]::ReadAllText(\"$?\", [Text.Encoding]::GetEncoding(28592)) ^| \ 1>nul New-Item -Force -Path . -ItemType file -Name $@ !ENDIF @@ -392,7 +393,7 @@ xxd-pl.UTF-8.1 : xxd-pl.1 $(ICONV) -f ISO-8859-2 -t UTF-8 $? >$@ !ELSE # Conversion to UTF-8 encoding without BOM and with UNIX-like line ending - powershell -nologo -noprofile -Command \ + $(PS) $(PSFLAGS) \ [IO.File]::ReadAllText(\"$?\", [Text.Encoding]::GetEncoding(28592)) ^| \ 1>nul New-Item -Force -Path . -ItemType file -Name $@ !ENDIF @@ -402,7 +403,7 @@ evim-ru.UTF-8.1 : evim-ru.1 $(ICONV) -f KOI8-R -t UTF-8 $? >$@ !ELSE # Conversion to UTF-8 encoding without BOM and with UNIX-like line ending - powershell -nologo -noprofile -Command \ + $(PS) $(PSFLAGS) \ [IO.File]::ReadAllText(\"$?\", [Text.Encoding]::GetEncoding(20866)) ^| \ 1>nul New-Item -Force -Path . -ItemType file -Name $@ !ENDIF @@ -412,7 +413,7 @@ vim-ru.UTF-8.1 : vim-ru.1 $(ICONV) -f KOI8-R -t UTF-8 $? >$@ !ELSE # Conversion to UTF-8 encoding without BOM and with UNIX-like line ending - powershell -nologo -noprofile -Command \ + $(PS) $(PSFLAGS) \ [IO.File]::ReadAllText(\"$?\", [Text.Encoding]::GetEncoding(20866)) ^| \ 1>nul New-Item -Force -Path . -ItemType file -Name $@ !ENDIF @@ -422,7 +423,7 @@ vimdiff-ru.UTF-8.1 : vimdiff-ru.1 $(ICONV) -f KOI8-R -t UTF-8 $? >$@ !ELSE # Conversion to UTF-8 encoding without BOM and with UNIX-like line ending - powershell -nologo -noprofile -Command \ + $(PS) $(PSFLAGS) \ [IO.File]::ReadAllText(\"$?\", [Text.Encoding]::GetEncoding(20866)) ^| \ 1>nul New-Item -Force -Path . -ItemType file -Name $@ !ENDIF @@ -432,7 +433,7 @@ vimtutor-ru.UTF-8.1 : vimtutor-ru.1 $(ICONV) -f KOI8-R -t UTF-8 $? >$@ !ELSE # Conversion to UTF-8 encoding without BOM and with UNIX-like line ending - powershell -nologo -noprofile -Command \ + $(PS) $(PSFLAGS) \ [IO.File]::ReadAllText(\"$?\", [Text.Encoding]::GetEncoding(20866)) ^| \ 1>nul New-Item -Force -Path . -ItemType file -Name $@ !ENDIF @@ -442,7 +443,7 @@ xxd-ru.UTF-8.1 : xxd-ru.1 $(ICONV) -f KOI8-R -t UTF-8 $? >$@ !ELSE # Conversion to UTF-8 encoding without BOM and with UNIX-like line ending - powershell -nologo -noprofile -Command \ + $(PS) $(PSFLAGS) \ [IO.File]::ReadAllText(\"$?\", [Text.Encoding]::GetEncoding(20866)) ^| \ 1>nul New-Item -Force -Path . -ItemType file -Name $@ !ENDIF @@ -452,7 +453,7 @@ evim-tr.UTF-8.1 : evim-tr.1 $(ICONV) -f ISO-8859-9 -t UTF-8 $? >$@ !ELSE # Conversion to UTF-8 encoding without BOM and with UNIX-like line ending - powershell -nologo -noprofile -Command \ + $(PS) $(PSFLAGS) \ [IO.File]::ReadAllText(\"$?\", [Text.Encoding]::GetEncoding(28599)) ^| \ 1>nul New-Item -Force -Path . -ItemType file -Name $@ !ENDIF @@ -462,7 +463,7 @@ vim-tr.UTF-8.1 : vim-tr.1 $(ICONV) -f ISO-8859-9 -t UTF-8 $? >$@ !ELSE # Conversion to UTF-8 encoding without BOM and with UNIX-like line ending - powershell -nologo -noprofile -Command \ + $(PS) $(PSFLAGS) \ [IO.File]::ReadAllText(\"$?\", [Text.Encoding]::GetEncoding(28599)) ^| \ 1>nul New-Item -Force -Path . -ItemType file -Name $@ !ENDIF @@ -472,7 +473,7 @@ vimdiff-tr.UTF-8.1 : vimdiff-tr.1 $(ICONV) -f ISO-8859-9 -t UTF-8 $? >$@ !ELSE # Conversion to UTF-8 encoding without BOM and with UNIX-like line ending - powershell -nologo -noprofile -Command \ + $(PS) $(PSFLAGS) \ [IO.File]::ReadAllText(\"$?\", [Text.Encoding]::GetEncoding(28599)) ^| \ 1>nul New-Item -Force -Path . -ItemType file -Name $@ !ENDIF @@ -482,7 +483,7 @@ vimtutor-tr.UTF-8.1 : vimtutor-tr.1 $(ICONV) -f ISO-8859-9 -t UTF-8 $? >$@ !ELSE # Conversion to UTF-8 encoding without BOM and with UNIX-like line ending - powershell -nologo -noprofile -Command \ + $(PS) $(PSFLAGS) \ [IO.File]::ReadAllText(\"$?\", [Text.Encoding]::GetEncoding(28599)) ^| \ 1>nul New-Item -Force -Path . -ItemType file -Name $@ !ENDIF diff --git a/runtime/doc/Makefile b/runtime/doc/Makefile index fc042872cf..eecce55a78 100644 --- a/runtime/doc/Makefile +++ b/runtime/doc/Makefile @@ -18,6 +18,7 @@ include Make_all.mak .SUFFIXES: .SUFFIXES: .c .o .txt .html +.PHONY: all vimtags noerrors perlhtml clean test_urls all: tags vim.man evim.man vimdiff.man vimtutor.man xxd.man $(CONVERTED) @@ -28,26 +29,26 @@ vimtags: $(DOCS) # Use "doctags" to generate the tags file. Only works for English! tags: doctags $(DOCS) - ./doctags $(DOCS) | LANG=C LC_ALL=C sort >tags + ./doctags $(DOCS) | LANG=C LC_ALL=C sort >$@ uniq -d -2 tags doctags: doctags.c $(CC) doctags.c -o doctags vim.man: vim.1 - nroff -man vim.1 | sed -e s/.//g > vim.man + nroff -man $< | sed -e s/.//g > $@ evim.man: evim.1 - nroff -man evim.1 | sed -e s/.//g > evim.man + nroff -man $< | sed -e s/.//g > $@ vimdiff.man: vimdiff.1 - nroff -man vimdiff.1 | sed -e s/.//g > vimdiff.man + nroff -man $< | sed -e s/.//g > $@ vimtutor.man: vimtutor.1 - nroff -man vimtutor.1 | sed -e s/.//g > vimtutor.man + nroff -man $< | sed -e s/.//g > $@ xxd.man: xxd.1 - nroff -man xxd.1 | sed -e s/.//g > xxd.man + nroff -man $< | sed -e s/.//g > $@ uganda.nsis.txt: uganda.txt sed -e 's/[ ]*\*[-a-zA-Z0-9.]*\*//g' -e 's/vim:tw=78:.*//' \ @@ -68,10 +69,10 @@ $(HTMLS): tags.ref # index.html is the starting point for HTML, but for the help files it is # help.txt. Therefore use vimindex.html for index.txt. index.html: help.txt - $(AWK) -f makehtml.awk help.txt >index.html + $(AWK) -f makehtml.awk $< >$@ vimindex.html: index.txt - $(AWK) -f makehtml.awk index.txt >vimindex.html + $(AWK) -f makehtml.awk $< >$@ tags.ref tags.html: tags $(AWK) -f maketags.awk tags >tags.html @@ -84,7 +85,7 @@ perlhtml: tags $(DOCS) # Check URLs in the help with "curl". test_urls: - vim -S test_urls.vim + $(VIMEXE) --clean -S test_urls.vim clean: -rm -f doctags *.html tags.ref @@ -92,58 +93,58 @@ clean: # These files are in the extra archive, skip if not present arabic.txt: - touch arabic.txt + touch $@ farsi.txt: - touch farsi.txt + touch $@ hebrew.txt: - touch hebrew.txt + touch $@ russian.txt: - touch russian.txt + touch $@ gui_w32.txt: - touch gui_w32.txt + touch $@ if_ole.txt: - touch if_ole.txt + touch $@ os_390.txt: - touch os_390.txt + touch $@ os_amiga.txt: - touch os_amiga.txt + touch $@ os_beos.txt: - touch os_beos.txt + touch $@ os_dos.txt: - touch os_dos.txt + touch $@ os_haiku.txt: - touch os_haiku.txt + touch $@ os_mac.txt: - touch os_mac.txt + touch $@ os_mint.txt: - touch os_mint.txt + touch $@ os_msdos.txt: - touch os_msdos.txt + touch $@ os_os2.txt: - touch os_os2.txt + touch $@ os_qnx.txt: - touch os_qnx.txt + touch $@ os_risc.txt: - touch os_risc.txt + touch $@ os_win32.txt: - touch os_win32.txt + touch $@ # Note that $< works with GNU make while $> works for BSD make. # Is there a solution that works for both?? diff --git a/runtime/doc/autocmd.txt b/runtime/doc/autocmd.txt index 44a06672d8..5e2ab65f57 100644 --- a/runtime/doc/autocmd.txt +++ b/runtime/doc/autocmd.txt @@ -1,4 +1,4 @@ -*autocmd.txt* For Vim version 9.1. Last change: 2023 May 20 +*autocmd.txt* For Vim version 9.1. Last change: 2024 Jan 25 VIM REFERENCE MANUAL by Bram Moolenaar @@ -342,6 +342,7 @@ Name triggered by ~ |GUIEnter| after starting the GUI successfully |GUIFailed| after starting the GUI failed |TermResponse| after the terminal response to |t_RV| is received +|TermResponseAll| after the terminal response to |t_RV| and others is received |QuitPre| when using `:quit`, before deciding whether to exit |ExitPre| when using a command that may make Vim exit @@ -382,6 +383,7 @@ Name triggered by ~ |CursorMoved| the cursor was moved in Normal mode |CursorMovedI| the cursor was moved in Insert mode +|WinNewPre| before creating a new window |WinNew| after creating a new window |TabNew| after creating a new tab page |WinClosed| after closing a window @@ -1105,7 +1107,7 @@ SafeState When nothing is pending, going to wait for the - Command line completion is active You can use `mode()` to find out what state Vim is in. That may be: - - VIsual mode + - Visual mode - Normal mode - Insert mode - Command-line mode @@ -1228,6 +1230,24 @@ TermResponse After the response to |t_RV| is received from triggered halfway executing another event, especially if file I/O, a shell command or anything else that takes time is involved. + *TermResponseAll* +TermResponseAll After the response to |t_RV|, |t_RC|, |t_RS|, + |t_RB|, |t_RF|, or |t_u7| are received from + the terminal. The value of |v:termresponse|, + |v:termblinkresp|, |v:termstyleresp|, + |v:termrbgresp|, |v:termrfgresp|, and + |v:termu7resp|, correspondingly, can be used. + will be set to any of: + "version", + "cursorblink", + "cursorshape", + "background", + "foreground", + "ambiguouswidth" + Note that this event may be triggered halfway + executing another event, especially if file I/O, + a shell command or anything else that takes time + is involved. *TextChanged* TextChanged After a change was made to the text in the current buffer in Normal mode. That is after @@ -1379,6 +1399,18 @@ WinLeave Before leaving a window. If the window to be WinLeave autocommands (but not for ":new"). Not used for ":qa" or ":q" when exiting Vim. + *WinNewPre* +WinNewPre Before creating a new window. Triggered + before commands that modify window layout by + creating a split or new tab page. Not done for + the first window, when Vim has just started. + It is not allowed to modify window layout + while executing commands for the WinNewPre + event. + Most useful to store current window layout + and compare it with the new layout after the + Window has been created. + *WinNew* WinNew When a new window was created. Not done for the first window, when Vim has just started. diff --git a/runtime/doc/builtin.txt b/runtime/doc/builtin.txt index 78357bf9ad..0cd023c1a8 100644 --- a/runtime/doc/builtin.txt +++ b/runtime/doc/builtin.txt @@ -1,4 +1,4 @@ -*builtin.txt* For Vim version 9.1. Last change: 2023 Dec 24 +*builtin.txt* For Vim version 9.1. Last change: 2024 Feb 01 VIM REFERENCE MANUAL by Bram Moolenaar @@ -147,6 +147,8 @@ delete({fname} [, {flags}]) Number delete the file or directory {fname} deletebufline({buf}, {first} [, {last}]) Number delete lines from buffer {buf} did_filetype() Number |TRUE| if FileType autocmd event used +diff({fromlist}, {tolist} [, {options}]) + List diff two Lists of strings diff_filler({lnum}) Number diff filler lines about {lnum} diff_hlID({lnum}, {col}) Number diff highlighting at {lnum}/{col} digraph_get({chars}) String get the |digraph| of {chars} @@ -198,6 +200,8 @@ foldclosedend({lnum}) Number last line of fold at {lnum} if closed foldlevel({lnum}) Number fold level at {lnum} foldtext() String line displayed for closed fold foldtextresult({lnum}) String text for closed fold at {lnum} +foreach({expr1}, {expr2}) List/Dict/Blob/String + for each item in {expr1} call {expr2} foreground() Number bring the Vim window to the foreground fullcommand({name} [, {vim9}]) String get full command from {name} funcref({name} [, {arglist}] [, {dict}]) @@ -370,6 +374,8 @@ matchadd({group}, {pattern} [, {priority} [, {id} [, {dict}]]]) matchaddpos({group}, {pos} [, {priority} [, {id} [, {dict}]]]) Number highlight positions with {group} matcharg({nr}) List arguments of |:match| +matchbufline({buf}, {pat}, {lnum}, {end}, [, {dict}) + List all the {pat} matches in buffer {buf} matchdelete({id} [, {win}]) Number delete match identified by {id} matchend({expr}, {pat} [, {start} [, {count}]]) Number position where {pat} ends in {expr} @@ -381,6 +387,8 @@ matchlist({expr}, {pat} [, {start} [, {count}]]) List match and submatches of {pat} in {expr} matchstr({expr}, {pat} [, {start} [, {count}]]) String {count}'th match of {pat} in {expr} +matchstrlist({list}, {pat} [, {dict}) + List all the {pat} matches in {list} matchstrpos({expr}, {pat} [, {start} [, {count}]]) List {count}'th match of {pat} in {expr} max({expr}) Number maximum value of items in {expr} @@ -2042,6 +2050,67 @@ did_filetype() Returns |TRUE| when autocommands are being executed and the editing another buffer to set 'filetype' and load a syntax file. +diff({fromlist}, {tolist} [, {options}]) *diff()* + Returns a String or a List containing the diff between the + strings in {fromlist} and {tolist}. Uses the Vim internal + diff library to compute the diff. + + *E106* + The optional "output" item in {options} specifies the returned + diff format. The following values are supported: + indices Return a List of the starting and ending + indices and a count of the strings in each + diff hunk. + unified Return the unified diff output as a String. + This is the default. + + If the "output" item in {options} is "indices", then a List is + returned. Each List item contains a Dict with the following + items for each diff hunk: + from_idx start index in {fromlist} for this diff hunk. + from_count number of strings in {fromlist} that are + added/removed/modified in this diff hunk. + to_idx start index in {tolist} for this diff hunk. + to_count number of strings in {tolist} that are + added/removed/modified in this diff hunk. + + The {options} Dict argument also specifies diff options + (similar to 'diffopt') and supports the following items: + iblank ignore changes where lines are all + blank. + icase ignore changes in case of text. + iwhite ignore changes in amount of white + space. + iwhiteall ignore all white space changes. + iwhiteeol ignore white space changes at end of + line. + indent-heuristic use the indent heuristic for the + internal diff library. + algorithm Dict specifying the diff algorithm to + use. Supported boolean items are + "myers", "minimal", "patience" and + "histogram". + For more information about these options, refer to 'diffopt'. + + Returns an empty List or String if {fromlist} and {tolist} are + identical. + + Examples: + :echo diff(['abc'], ['xxx']) + @@ -1 +1 @@ + -abc + +xxx + + :echo diff(['abc'], ['xxx'], {'output': 'indices'}) + [{'from_idx': 0, 'from_count': 1, 'to_idx': 0, 'to_count': 1}] + :echo diff(readfile('oldfile'), readfile('newfile')) + :echo diff(getbufline(5, 1, '$'), getbufline(6, 1, '$')) + + For more examples, refer to |diff-func-examples| + + Can also be used as a |method|: > + GetFromList->diff(to_list) +< diff_filler({lnum}) *diff_filler()* Returns the number of filler lines above line {lnum}. These are the lines that were inserted at this point in @@ -2993,6 +3062,45 @@ foldtextresult({lnum}) *foldtextresult()* Can also be used as a |method|: > GetLnum()->foldtextresult() + +foreach({expr1}, {expr2}) *foreach()* + {expr1} must be a |List|, |String|, |Blob| or |Dictionary|. + For each item in {expr1} execute {expr2}. {expr1} is not + modified; its values may be, as with |:lockvar| 1. |E741| + See |map()| and |filter()| to modify {expr1}. + + {expr2} must be a |string| or |Funcref|. + + If {expr2} is a |string|, inside {expr2} |v:val| has the value + of the current item. For a |Dictionary| |v:key| has the key + of the current item and for a |List| |v:key| has the index of + the current item. For a |Blob| |v:key| has the index of the + current byte. For a |String| |v:key| has the index of the + current character. + Examples: > + call foreach(mylist, 'used[v:val] = true') +< This records the items that are in the {expr1} list. + + Note that {expr2} is the result of expression and is then used + as a command. Often it is good to use a |literal-string| to + avoid having to double backslashes. + + If {expr2} is a |Funcref| it must take two arguments: + 1. the key or the index of the current item. + 2. the value of the current item. + With a legacy script lambda you don't get an error if it only + accepts one argument, but with a Vim9 lambda you get "E1106: + One argument too many", the number of arguments must match. + If the function returns a value, it is ignored. + + Returns {expr1} in all cases. + When an error is encountered while executing {expr2} no + further items in {expr1} are processed. + When {expr2} is a Funcref errors inside a function are ignored, + unless it was defined with the "abort" flag. + + Can also be used as a |method|: > + mylist->foreach(expr2) < *foreground()* foreground() Move the Vim window to the foreground. Useful when sent from @@ -3201,6 +3309,8 @@ getbufinfo([{dict}]) bufnr Buffer number. changed TRUE if the buffer is modified. changedtick Number of changes made to the buffer. + command TRUE if the buffer belongs to the + command-line window |cmdwin|. hidden TRUE if the buffer is hidden. lastused Timestamp in seconds, like |localtime()|, when the buffer was @@ -3425,7 +3535,7 @@ getcharmod() *getcharmod()* 32 mouse double click 64 mouse triple click 96 mouse quadruple click (== 32 + 64) - 128 command (Macintosh only) + 128 command (Mac) or super (GTK) Only the modifiers that have not been included in the character itself are obtained. Thus Shift-a results in "A" without a modifier. Returns 0 if no modifiers are used. @@ -3568,6 +3678,7 @@ getcompletion({pat}, {type} [, {filtered}]) *getcompletion()* help help subjects highlight highlight groups history |:history| suboptions + keymap keyboard mappings locale locale names (as output of locale -a) mapclear buffer argument mapping mapping name @@ -4378,14 +4489,16 @@ getwinpos([{timeout}]) *getwinpos()* getwinposx() The result is a Number, which is the X coordinate in pixels of the left hand side of the GUI Vim window. Also works for an xterm (uses a timeout of 100 msec). - The result will be -1 if the information is not available. + The result will be -1 if the information is not available + (e.g. on the Wayland backend). The value can be used with `:winpos`. *getwinposy()* getwinposy() The result is a Number, which is the Y coordinate in pixels of the top of the GUI Vim window. Also works for an xterm (uses a timeout of 100 msec). - The result will be -1 if the information is not available. + The result will be -1 if the information is not available + (e.g. on the Wayland backend). The value can be used with `:winpos`. getwinvar({winnr}, {varname} [, {def}]) *getwinvar()* @@ -6056,6 +6169,51 @@ matcharg({nr}) *matcharg()* Can also be used as a |method|: > GetMatch()->matcharg() +< + *matchbufline()* +matchbufline({buf}, {pat}, {lnum}, {end}, [, {dict}]) + Returns the |List| of matches in lines from {lnum} to {end} in + buffer {buf} where {pat} matches. + + {lnum} and {end} can either be a line number or the string "$" + to refer to the last line in {buf}. + + The {dict} argument supports following items: + submatches include submatch information (|/\(|) + + For each match, a |Dict| with the following items is returned: + byteidx starting byte index of the match + lnum line number where there is a match + text matched string + Note that there can be multiple matches in a single line. + + This function works only for loaded buffers. First call + |bufload()| if needed. + + When {buf} is not a valid buffer, the buffer is not loaded or + {lnum} or {end} is not valid then an error is given and an + empty |List| is returned. + + Examples: > + " Assuming line 3 in buffer 5 contains "a" + :echo matchbufline(5, '\<\k\+\>', 3, 3) + [{'lnum': 3, 'byteidx': 0, 'text': 'a'}] + " Assuming line 4 in buffer 10 contains "tik tok" + :echo matchbufline(10, '\<\k\+\>', 1, 4) + [{'lnum': 4, 'byteidx': 0, 'text': 'tik'}, {'lnum': 4, 'byteidx': 4, 'text': 'tok'}] +< + If {submatch} is present and is v:true, then submatches like + "\1", "\2", etc. are also returned. Example: > + " Assuming line 2 in buffer 2 contains "acd" + :echo matchbufline(2, '\(a\)\?\(b\)\?\(c\)\?\(.*\)', 2, 2 + \ {'submatches': v:true}) + [{'lnum': 2, 'byteidx': 0, 'text': 'acd', 'submatches': ['a', '', 'c', 'd', '', '', '', '', '']}] +< The "submatches" List always contains 9 items. If a submatch + is not found, then an empty string is returned for that + submatch. + + Can also be used as a |method|: > + GetBuffer()->matchbufline('mypat', 1, '$') matchdelete({id} [, {win}) *matchdelete()* *E802* *E803* Deletes a match with ID {id} previously defined by |matchadd()| @@ -6189,6 +6347,40 @@ matchlist({expr}, {pat} [, {start} [, {count}]]) *matchlist()* Can also be used as a |method|: > GetText()->matchlist('word') +< + *matchstrlist()* +matchstrlist({list}, {pat} [, {dict}]) + Returns the |List| of matches in {list} where {pat} matches. + {list} is a |List| of strings. {pat} is matched against each + string in {list}. + + The {dict} argument supports following items: + submatches include submatch information (|/\(|) + + For each match, a |Dict| with the following items is returned: + byteidx starting byte index of the match. + idx index in {list} of the match. + text matched string + submatches a List of submatches. Present only if + "submatches" is set to v:true in {dict}. + + Example: > + :echo matchstrlist(['tik tok'], '\<\k\+\>') + [{'idx': 0, 'byteidx': 0, 'text': 'tik'}, {'idx': 0, 'byteidx': 4, 'text': 'tok'}] + :echo matchstrlist(['a', 'b'], '\<\k\+\>') + [{'idx': 0, 'byteidx': 0, 'text': 'a'}, {'idx': 1, 'byteidx': 0, 'text': 'b'}] +< + If "submatches" is present and is v:true, then submatches like + "\1", "\2", etc. are also returned. Example: > + :echo matchstrlist(['acd'], '\(a\)\?\(b\)\?\(c\)\?\(.*\)', + \ #{submatches: v:true}) + [{'idx': 0, 'byteidx': 0, 'text': 'acd', 'submatches': ['a', '', 'c', 'd', '', '', '', '', '']}] +< The "submatches" List always contains 9 items. If a submatch + is not found, then an empty string is returned for that + submatch. + + Can also be used as a |method|: > + GetListOfStrings()->matchstrlist('mypat') matchstr({expr}, {pat} [, {start} [, {count}]]) *matchstr()* Same as |match()|, but return the matched string. Example: > @@ -7306,9 +7498,9 @@ reltime({start}, {end}) *reltime()* echo startTime->reltime()->reltimestr() < Without an argument reltime() returns the current time (the - representation is system-dependent, it can not be used as the + representation is system-dependent, it cannot be used as the wall-clock time, see |localtime()| for that). - With one argument is returns the time passed since the time + With one argument it returns the time passed since the time specified in the argument. With two arguments it returns the time passed between {start} and {end}. diff --git a/runtime/doc/diff.txt b/runtime/doc/diff.txt index 91b004745a..05dd4a6be9 100644 --- a/runtime/doc/diff.txt +++ b/runtime/doc/diff.txt @@ -1,4 +1,4 @@ -*diff.txt* For Vim version 9.1. Last change: 2023 Apr 04 +*diff.txt* For Vim version 9.1. Last change: 2024 Feb 01 VIM REFERENCE MANUAL by Bram Moolenaar @@ -476,4 +476,43 @@ Otherwise, the expression is evaluated in the context of the script where the option was set, thus script-local items are available. +DIFF FUNCTION EXAMPLES *diff-func-examples* + +Some examples for using the |diff()| function to compute the diff indices +between two Lists of strings are below. +> + " some lines are changed + :echo diff(['abc', 'def', 'ghi'], ['abx', 'rrr', 'xhi'], {'output': 'indices'}) + [{'from_idx': 0, 'from_count': 3, 'to_idx': 0, 'to_count': 3}] + + " few lines added at the beginning + :echo diff(['ghi'], ['abc', 'def', 'ghi'], {'output': 'indices'}) + [{'from_idx': 0, 'from_count': 0, 'to_idx': 0, 'to_count': 2}] + + " few lines removed from the beginning + :echo diff(['abc', 'def', 'ghi'], ['ghi'], {'output': 'indices'}) + [{'from_idx': 0, 'from_count': 2, 'to_idx': 0, 'to_count': 0}] + + " few lines added in the middle + :echo diff(['abc', 'jkl'], ['abc', 'def', 'ghi', 'jkl'], {'output': 'indices'}) + [{'from_idx': 1, 'from_count': 0, 'to_idx': 1, 'to_count': 2}] + + " few lines removed in the middle + :echo diff(['abc', 'def', 'ghi', 'jkl'], ['abc', 'jkl'], {'output': 'indices'}) + [{'from_idx': 1, 'from_count': 2, 'to_idx': 1, 'to_count': 0}] + + " few lines added at the end + :echo diff(['abc'], ['abc', 'def', 'ghi'], {'output': 'indices'}) + [{'from_idx': 1, 'from_count': 0, 'to_idx': 1, 'to_count': 2}] + + " few lines removed from the end + :echo diff(['abc', 'def', 'ghi'], ['abc'], {'output': 'indices'}) + [{'from_idx': 1, 'from_count': 2, 'to_idx': 1, 'to_count': 0}] + + " disjointed changes + :echo diff(['ab', 'def', 'ghi', 'jkl'], ['abc', 'def', 'ghi', 'jk'], {'output': 'indices'}) + [{'from_idx': 0, 'from_count': 1, 'to_idx': 0, 'to_count': 1}, + {'from_idx': 3, 'from_count': 1, 'to_idx': 3, 'to_count': 1}] +< + vim:tw=78:ts=8:noet:ft=help:norl: diff --git a/runtime/doc/editing.txt b/runtime/doc/editing.txt index 2ea6839c90..d0f8938562 100644 --- a/runtime/doc/editing.txt +++ b/runtime/doc/editing.txt @@ -1,4 +1,4 @@ -*editing.txt* For Vim version 9.1. Last change: 2023 Sep 27 +*editing.txt* For Vim version 9.1. Last change: 2024 Jan 14 VIM REFERENCE MANUAL by Bram Moolenaar @@ -1329,8 +1329,9 @@ b:browsefilter variable. You would most likely set b:browsefilter in a filetype plugin, so that the browse dialog would contain entries related to the type of file you are currently editing. Disadvantage: This makes it difficult to start editing a file of a different type. To overcome this, you -may want to add "All Files\t*.*\n" as the final filter, so that the user can -still access any desired file. +may want to add "All Files (*.*)\t*\n" as the final filter on Windows or "All +Files (*)\t*\n" on other platforms, so that the user can still access any +desired file. To avoid setting browsefilter when Vim does not actually support it, you can use has("browsefilter"): > diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt index 2f9aa5c988..9e71392fd2 100644 --- a/runtime/doc/eval.txt +++ b/runtime/doc/eval.txt @@ -1,4 +1,4 @@ -*eval.txt* For Vim version 9.1. Last change: 2023 Dec 09 +*eval.txt* For Vim version 9.1. Last change: 2024 Feb 05 VIM REFERENCE MANUAL by Bram Moolenaar @@ -2005,9 +2005,14 @@ v:collate The current locale setting for collation order of the runtime *v:colornames* v:colornames A dictionary that maps color names to hex color strings. These color names can be used with the |highlight-guifg|, - |highlight-guibg|, and |highlight-guisp| parameters. Updating - an entry in v:colornames has no immediate effect on the syntax - highlighting. The highlight commands (probably in a + |highlight-guibg|, and |highlight-guisp| parameters. + + The key values in the dictionary (the color names) should be + lower cased, because Vim looks up a color by its lower case + name. + + Updating an entry in v:colornames has no immediate effect on + the syntax highlighting. The highlight commands (probably in a colorscheme script) need to be re-evaluated in order to use the updated color values. For example: > @@ -2580,8 +2585,9 @@ v:termresponse The escape sequence returned by the terminal for the |t_RV| 'c', with only digits and ';' in between. When this option is set, the TermResponse autocommand event is fired, so that you can react to the response from the - terminal. You can use |terminalprops()| to see what Vim - figured out about the terminal. + terminal. The TermResponseAll event is also fired, with + set to "version". You can use |terminalprops()| to see + what Vim figured out about the terminal. The response from a new xterm is: "[> Pp ; Pv ; Pc c". Pp is the terminal type: 0 for vt100 and 1 for vt220. Pv is the patch level (since this was introduced in patch 95, it's @@ -2593,27 +2599,37 @@ v:termresponse The escape sequence returned by the terminal for the |t_RV| *v:termblinkresp* v:termblinkresp The escape sequence returned by the terminal for the |t_RC| termcap entry. This is used to find out whether the terminal - cursor is blinking. This is used by |term_getcursor()|. + cursor is blinking. This is used by |term_getcursor()|. When + this option is set, the TermResponseAll autocommand event is + fired, with set to "cursorblink". *v:termstyleresp* v:termstyleresp The escape sequence returned by the terminal for the |t_RS| termcap entry. This is used to find out what the shape of the - cursor is. This is used by |term_getcursor()|. + cursor is. This is used by |term_getcursor()|. When this + option is set, the TermResponseAll autocommand event is fired, + with set to "cursorshape". *v:termrbgresp* v:termrbgresp The escape sequence returned by the terminal for the |t_RB| termcap entry. This is used to find out what the terminal - background color is, see 'background'. + background color is; see 'background'. When this option is + set, the TermResponseAll autocommand event is fired, with + set to "background". *v:termrfgresp* v:termrfgresp The escape sequence returned by the terminal for the |t_RF| termcap entry. This is used to find out what the terminal - foreground color is. + foreground color is. When this option is set, the + TermResponseAll autocommand event is fired, with set + to "foreground". *v:termu7resp* v:termu7resp The escape sequence returned by the terminal for the |t_u7| termcap entry. This is used to find out what the terminal - does with ambiguous width characters, see 'ambiwidth'. + does with ambiguous width characters, see 'ambiwidth'. When + this option is set, the TermResponseAll autocommand event is + fired, with set to "ambiguouswidth". *v:testing* *testing-variable* v:testing Must be set before using `test_garbagecollect_now()`. diff --git a/runtime/doc/filetype.txt b/runtime/doc/filetype.txt index e8445db541..4876e3d754 100644 --- a/runtime/doc/filetype.txt +++ b/runtime/doc/filetype.txt @@ -1,4 +1,4 @@ -*filetype.txt* For Vim version 9.1. Last change: 2024 Jan 01 +*filetype.txt* For Vim version 9.1. Last change: 2024 Jan 04 VIM REFERENCE MANUAL by Bram Moolenaar @@ -148,6 +148,7 @@ variables can be used to overrule the filetype used for certain extensions: *.cls g:filetype_cls *.csh g:filetype_csh |ft-csh-syntax| *.dat g:filetype_dat + *.def g:filetype_def *.f g:filetype_f |ft-forth-syntax| *.frm g:filetype_frm |ft-form-syntax| *.fs g:filetype_fs |ft-forth-syntax| diff --git a/runtime/doc/gui_w32.txt b/runtime/doc/gui_w32.txt index 780c0a00fa..c6f5725d82 100644 --- a/runtime/doc/gui_w32.txt +++ b/runtime/doc/gui_w32.txt @@ -1,4 +1,4 @@ -*gui_w32.txt* For Vim version 9.1. Last change: 2022 Mar 09 +*gui_w32.txt* For Vim version 9.1. Last change: 2024 Jan 23 VIM REFERENCE MANUAL by Bram Moolenaar @@ -454,4 +454,38 @@ You may need to get the vim16x16.xpm file from github: https://github.com/vim/vim/blob/master/runtime/vim16x16.xpm +Keycode translation strategy *w32-experimental-keycode-trans-strategy* + +In Patch v8.2.4807 W32 GVIM was changed over to experimental keycode +translation method with the aim to be able to use more keyboard shortcuts and +especially supporting non-standard keyboard layouts. In order to implement +this support Win API TranslateMessage() call was dropped, and instead the +recognition of keycode was changed over to ToUnicode() Win API call. This +approach uncovered numerous corner cases, which are apparently covered by +TranslateMessage() implementation, each of it is necessary to be dealt with on +an individual basis. Therefore the decision was taken to declare this +functionality experimental for the time being and to recover "classic" keycode +translation method as default again. + +Discussion about use of "experimental" keycode translation method will +probably last some time yet. In the meantime, if you are impacted by this +change over back to "classic" keycode translation method in W32 GVIM, you can +enable "experimental" translation method again in your vimrc using following +snippet: +> + :call test_mswin_event('set_keycode_trans_strategy', {'strategy': 'experimental'}) +< +Similarly, in case you need to turn back "classic" keycode translation method +(for example for testing purposes), please use: +> + :call test_mswin_event('set_keycode_trans_strategy', {'strategy': 'classic'}) +< +Alternatively (this method is especially useful for the TINY GVIM build, where +test_mswin_event() cannot be called), an environment variable +VIM_KEYCODE_TRANS_STRATEGY can be set to the desired value ("experimental" or +"classic"), to override the default, e.g., type in dos prompt: +> + set VIM_KEYCODE_TRANS_STRATEGY=experimental + gvim.exe +< vim:tw=78:sw=4:ts=8:noet:ft=help:norl: diff --git a/runtime/doc/gui_x11.txt b/runtime/doc/gui_x11.txt index dfa69099de..2b4e274e4a 100644 --- a/runtime/doc/gui_x11.txt +++ b/runtime/doc/gui_x11.txt @@ -1,4 +1,4 @@ -*gui_x11.txt* For Vim version 9.1. Last change: 2022 Apr 03 +*gui_x11.txt* For Vim version 9.1. Last change: 2024 Jan 30 VIM REFERENCE MANUAL by Bram Moolenaar @@ -589,7 +589,8 @@ command line argument). *gui-x11-kde* There is no KDE version of Vim. There has been some work on a port using the Qt toolkit, but it never worked properly and it has been abandoned. Work -continues on Yzis: https://github.com/chrizel/Yzis. +continues on Yzis: https://github.com/chrizel/Yzis but it seems also +abandoned. ============================================================================== 8. Compiling *gui-x11-compiling* @@ -656,6 +657,15 @@ versions. This will cause problems. For example, using header files for X11R5 with a library for X11R6 probably doesn't work (although the linking won't give an error message, Vim will crash later). + *gui-wayland* +Initial support for the Wayland display server protocol has landed in patch +9.1.0064. To enable it, you need to set the environment variable +"$GVIM_ENABLE_WAYLAND" in your shell. + +Note: The Wayland protocol is subject to some restrictions, so the following +functions won't work: |getwinpos()|, |getwinposx()|, |getwinposy()| and the +|v:windowid| variable won't be available. + ============================================================================== 9. X11 selection mechanism *x11-selection* diff --git a/runtime/doc/index.txt b/runtime/doc/index.txt index 0b0138cbb5..9a4eb4269c 100644 --- a/runtime/doc/index.txt +++ b/runtime/doc/index.txt @@ -1172,6 +1172,8 @@ tag command action ~ |:>| :> shift lines one 'shiftwidth' right |:@| :@ execute contents of a register |:@@| :@@ repeat the previous ":@" +|:2match| :2mat[ch] define a second match to highlight +|:3match| :3mat[ch] define a third match to highlight |:Next| :N[ext] go to previous file in the argument list |:Print| :P[rint] print lines |:X| :X ask for encryption key diff --git a/runtime/doc/insert.txt b/runtime/doc/insert.txt index de8866fc64..6ebd83e3e7 100644 --- a/runtime/doc/insert.txt +++ b/runtime/doc/insert.txt @@ -1,4 +1,4 @@ -*insert.txt* For Vim version 9.1. Last change: 2022 Sep 30 +*insert.txt* For Vim version 9.1. Last change: 2024 Jan 04 VIM REFERENCE MANUAL by Bram Moolenaar @@ -168,22 +168,22 @@ CTRL-R CTRL-O {register} *i_CTRL-R_CTRL-O* auto-indent. Does the same as pasting with the mouse ||. When the register is linewise this will insert the text above the current line, like with `P`. - Does not replace characters! The '.' register (last inserted text) is still inserted as typed. After this command, the '.' register contains the command typed and not the text. I.e., the literals "^R^O" and not the text from the register. + Does not replace characters in |Replace-mode|! CTRL-R CTRL-P {register} *i_CTRL-R_CTRL-P* Insert the contents of a register literally and fix the indent, like |[|. - Does not replace characters! The '.' register (last inserted text) is still inserted as typed. After this command, the '.' register contains the command typed and not the text. I.e., the literals "^R^P" and not the text from the register. + Does not replace characters in |Replace-mode|! *i_CTRL-T* CTRL-T Insert one shiftwidth of indent at the start of the current diff --git a/runtime/doc/intro.txt b/runtime/doc/intro.txt index 185796f63f..120d65dc85 100644 --- a/runtime/doc/intro.txt +++ b/runtime/doc/intro.txt @@ -1,4 +1,4 @@ -*intro.txt* For Vim version 9.1. Last change: 2023 Nov 18 +*intro.txt* For Vim version 9.1. Last change: 2024 Jan 25 VIM REFERENCE MANUAL by Bram Moolenaar @@ -475,7 +475,7 @@ notation meaning equivalent decimal value(s) ~ control-key *control* *ctrl* * alt-key or meta-key *meta* *alt* * same as * command-key (Macintosh only) * command-key (Mac) / super (GTK) * key with "xx" entry in termcap ----------------------------------------------------------------------- diff --git a/runtime/doc/maketags.awk b/runtime/doc/maketags.awk index c6b2cd91f3..20b2b081ad 100644 --- a/runtime/doc/maketags.awk +++ b/runtime/doc/maketags.awk @@ -21,6 +21,13 @@ NR == 1 { nf=split(FILENAME,f,".") gsub(/%/,"\\%"); nf=split($0,tag," "); + if (counttag[tag[1]] > 0) + { + print "==============" > "errors.log" + print "Duplicate Tag " tag[1] > "errors.log" + print "==============" > "errors.log" + } + counttag[tag[1]]++ tagkey[t]=tag[1];tagref[t]=tag[2];tagnum[t]=NR; print $1 " " $2 " line " NR >"tags.ref" n=split($2,w,"."); diff --git a/runtime/doc/map.txt b/runtime/doc/map.txt index d458aa661a..cf83ffc0c8 100644 --- a/runtime/doc/map.txt +++ b/runtime/doc/map.txt @@ -1,4 +1,4 @@ -*map.txt* For Vim version 9.1. Last change: 2023 December 31 +*map.txt* For Vim version 9.1. Last change: 2024 Jan 25 VIM REFERENCE MANUAL by Bram Moolenaar @@ -21,9 +21,10 @@ manual. 1.9 Using mappings |map-typing| 1.10 Mapping alt-keys |:map-alt-keys| 1.11 Mapping meta-keys |:map-meta-keys| - 1.12 Mapping in modifyOtherKeys mode |modifyOtherKeys| - 1.13 Mapping with Kitty keyboard protocol |kitty-keyboard-protocol| - 1.14 Mapping an operator |:map-operator| + 1.12 Mapping super-keys or command keys |:map-super-keys| + 1.13 Mapping in modifyOtherKeys mode |modifyOtherKeys| + 1.14 Mapping with Kitty keyboard protocol |kitty-keyboard-protocol| + 1.15 Mapping an operator |:map-operator| 2. Abbreviations |abbreviations| 3. Local mappings and functions |script-local| 4. User-defined commands |user-commands| @@ -985,8 +986,17 @@ For the Meta modifier the "T" character is used. For example, to map Meta-b in Insert mode: > :imap terrible +1.12 MAPPING SUPER-KEYS or COMMAND-KEYS *:map-super-keys* *:map-cmd-key* -1.12 MAPPING IN modifyOtherKeys mode *modifyOtherKeys* +The Super modifier is available in GUI mode (when |gui_running| is 1) for +GVim on Linux and MacVim on Mac OS. If you're on a Mac, this represents the +Command key, on Linux with the GTK GUI it represents the Super key. +The character "D" is used for the Super / Command modifier. + +For example, to map Command-b in Insert mode: > + :imap barritone + +1.13 MAPPING IN modifyOtherKeys mode *modifyOtherKeys* Xterm and a few other terminals can be put in a mode where keys with modifiers are sent with a special escape code. Vim recognizes these codes and can then @@ -1048,7 +1058,7 @@ When the 'esckeys' option is off, then modifyOtherKeys will be disabled in Insert mode to avoid every key with a modifier causing Insert mode to end. -1.13 MAPPING WITH KITTY KEYBOARD PROTOCOL *kitty-keyboard-protocol* +1.14 MAPPING WITH KITTY KEYBOARD PROTOCOL *kitty-keyboard-protocol* If the value of 'term' contains "kitty" then Vim will send out an escape sequence to enable the Kitty keyboard protocol. This can be changed with the @@ -1075,7 +1085,7 @@ translated). The meaning of {value}: previous state is unknown -1.14 MAPPING AN OPERATOR *:map-operator* +1.15 MAPPING AN OPERATOR *:map-operator* An operator is used before a {motion} command. To define your own operator you must create a mapping that first sets the 'operatorfunc' option and then @@ -1631,6 +1641,7 @@ completion can be enabled: -complete=help help subjects -complete=highlight highlight groups -complete=history :history suboptions + -complete=keymap keyboard mappings -complete=locale locale names (as output of locale -a) -complete=mapclear buffer argument -complete=mapping mapping name diff --git a/runtime/doc/motion.txt b/runtime/doc/motion.txt index 448b68bce5..8c07fbf53e 100644 --- a/runtime/doc/motion.txt +++ b/runtime/doc/motion.txt @@ -600,7 +600,8 @@ i] *v_i]* *v_i[* *i]* *i[* i[ "inner [] block", select [count] '[' ']' blocks. This goes backwards to the [count] unclosed '[', and finds the matching ']'. The enclosed text is selected, - excluding the '[' and ']'. The |cpo-M| option flag + excluding the '[' and ']'. It's an error to select an + empty inner block like "[]". The |cpo-M| option flag is used to handle escaped brackets. When used in Visual mode it is made characterwise. @@ -618,7 +619,8 @@ i( *vib* *v_ib* *v_i(* *ib* ib "inner block", select [count] blocks, from "[count] [(" to the matching ')', excluding the '(' and ')' (see |[(|). If the cursor is not inside a () block, then - find the next "(". The |cpo-M| option flag + find the next "(". It's an error to select an empty + inner block like "()". The |cpo-M| option flag is used to handle escaped parenthesis. When used in Visual mode it is made characterwise. @@ -632,8 +634,9 @@ a< "a <> block", select [count] <> blocks, from the i> *v_i>* *v_i<* *i>* *i<* i< "inner <> block", select [count] <> blocks, from the [count]'th unmatched '<' backwards to the matching - '>', excluding the '<' and '>'. The |cpo-M| option flag - is used to handle escaped '<' and '>'. + '>', excluding the '<' and '>'. It's an error to + select an empty inner block like "<>". The |cpo-M| + option flag is used to handle escaped '<' and '>'. When used in Visual mode it is made characterwise. *v_at* *at* @@ -663,7 +666,8 @@ i} *v_i}* *i}* *i{* i{ *v_iB* *v_i{* *iB* iB "inner Block", select [count] Blocks, from "[count] [{" to the matching '}', excluding the '{' and '}' (see - |[{|). The |cpo-M| option flag is used to handle + |[{|). It's an error to select an empty inner block + like "{}". The |cpo-M| option flag is used to handle escaped braces. When used in Visual mode it is made characterwise. diff --git a/runtime/doc/options.txt b/runtime/doc/options.txt index b93d5168c5..896cf0e828 100644 --- a/runtime/doc/options.txt +++ b/runtime/doc/options.txt @@ -1,4 +1,4 @@ -*options.txt* For Vim version 9.1. Last change: 2023 Dec 20 +*options.txt* For Vim version 9.1. Last change: 2024 Jan 30 VIM REFERENCE MANUAL by Bram Moolenaar @@ -994,11 +994,11 @@ A jump table for the options with a short description can be found at |Q_op|. what the background color looks like. For changing the background color, see |:hi-normal|. - When 'background' is set Vim will adjust the default color groups for - the new value. But the colors used for syntax highlighting will not - change. *g:colors_name* + When 'background' is changed Vim will adjust the default color groups + for the new value. But the colors used for syntax highlighting will + not change. *g:colors_name* When a color scheme is loaded (the "g:colors_name" variable is set) - setting 'background' will cause the color scheme to be reloaded. If + changing 'background' will cause the color scheme to be reloaded. If the color scheme adjusts to the value of 'background' this will work. However, if the color scheme sets 'background' itself the effect may be undone. First delete the "g:colors_name" variable when needed. @@ -3493,12 +3493,10 @@ A jump table for the options with a short description can be found at |Q_op|. *'fillchars'* *'fcs'* 'fillchars' 'fcs' string (default "vert:|,fold:-,eob:~") global or local to window |global-local| - {not available when compiled without the |+folding| - feature} Characters to fill the statuslines, vertical separators and special lines in the window. It is a comma-separated list of items. Each item has a name, a colon - and the value of that item: + and the value of that item: |E1511| item name default Used for ~ stl ' ' statusline of the current window @@ -3519,7 +3517,7 @@ A jump table for the options with a short description can be found at |Q_op|. < For the "stl", "stlnc", "foldopen", "foldclose" and "foldsep" items single-byte and multibyte characters are supported. But double-width - characters are not supported. + characters are not supported. |E1512| The highlighting used for these items: item name highlight group ~ @@ -5337,7 +5335,7 @@ A jump table for the options with a short description can be found at |Q_op|. 'listchars' 'lcs' string (default "eol:$") global or local to window |global-local| Strings to use in 'list' mode and for the |:list| command. It is a - comma-separated list of string settings. + comma-separated list of string settings. *E1511* *lcs-eol* eol:c Character to show at the end of each line. When omitted, there is no extra character at the end of the @@ -5413,7 +5411,7 @@ A jump table for the options with a short description can be found at |Q_op|. The characters ':' and ',' should not be used. UTF-8 characters can be used when 'encoding' is "utf-8", otherwise only printable - characters are allowed. All characters must be single width. + characters are allowed. All characters must be single width. *E1512* Each character can be specified as hex: > set listchars=eol:\\x24 @@ -8715,8 +8713,11 @@ A jump table for the options with a short description can be found at |Q_op|. will not work (except in the GUI). If the title cannot be restored, it is set to the value of 'titleold'. You might want to restore the title outside of Vim then. - When using an xterm from a remote machine you can use this command: + When using an xterm from a remote machine you can use this command: > + rsh machine_name xterm -display $DISPLAY & + ssh -X machine_name xterm & +< then the WINDOWID environment variable should be inherited and the title of the window should change back to what it should be after exiting Vim. diff --git a/runtime/doc/pi_netrw.txt b/runtime/doc/pi_netrw.txt index 07d70c831d..90164e2996 100644 --- a/runtime/doc/pi_netrw.txt +++ b/runtime/doc/pi_netrw.txt @@ -1,4 +1,4 @@ -*pi_netrw.txt* For Vim version 9.1. Last change: 2023 May 14 +*pi_netrw.txt* For Vim version 9.1. Last change: 2023 Jun 19 ------------------------------------------------ NETRW REFERENCE MANUAL by Charles E. Campbell @@ -1625,10 +1625,8 @@ A further approach is to delete files which match a pattern. This will cause the matching files to be marked. Then, press "D". -If your vim has 7.4 with patch#1107, then |g:netrw_localrmdir| no longer -is used to remove directories; instead, vim's |delete()| is used with -the "d" option. Please note that only empty directories may be deleted -with the "D" mapping. Regular files are deleted with |delete()|, too. +Please note that only empty directories may be deleted with the "D" mapping. +Regular files are deleted with |delete()|, too. The |g:netrw_rm_cmd|, |g:netrw_rmf_cmd|, and |g:netrw_rmdir_cmd| variables are used to control the attempts to remove remote files and directories. The @@ -1647,8 +1645,7 @@ to remove it again using the g:netrw_rmf_cmd variable. Its default value is: |g:netrw_rmf_cmd|: ssh HOSTNAME rm -f Related topics: |netrw-d| -Associated setting variable: |g:netrw_localrmdir| |g:netrw_rm_cmd| - |g:netrw_rmdir_cmd| |g:netrw_ssh_cmd| +Associated setting variable: |g:netrw_rm_cmd| |g:netrw_ssh_cmd| *netrw-explore* *netrw-hexplore* *netrw-nexplore* *netrw-pexplore* @@ -1691,7 +1688,11 @@ DIRECTORY EXPLORATION COMMANDS {{{2 to 2; edits will thus preferentially be made in window#2. The [N] specifies a |g:netrw_winsize| just for the new :Lexplore - window. + window. That means that + if [N] < 0 : use |N| columns for the Lexplore window + if [N] = 0 : a normal split is made + if [N] > 0 : use N% of the current window will be used for the + new window Those who like this method often also like tree style displays; see |g:netrw_liststyle|. @@ -2863,14 +2864,6 @@ your browsing preferences. (see also: |netrw-settings|) =" /c move" Windows Options for |g:netrw_localmovecmd| - *g:netrw_localrmdir* ="rmdir" Linux/Unix/MacOS/Cygwin - =expand("$COMSPEC") Windows - Remove directory command (rmdir) - This variable is only used if your vim is - earlier than 7.4 or if your vim doesn't - have patch#1107. Otherwise, |delete()| - is used with the "d" option. - *g:netrw_maxfilenamelen* =32 by default, selected so as to make long listings fit on 80 column displays. If your screen is wider, and you have file @@ -3781,7 +3774,7 @@ Example: Clear netrw's marked file list via a mapping on gu > Netrw uses several system level commands to do things (see |g:netrw_localcopycmd|, |g:netrw_localmovecmd|, - |g:netrw_localrmdir|, |g:netrw_mkdir_cmd|). + |g:netrw_mkdir_cmd|). You may need to adjust the default commands for one or more of these commands by setting them properly in your .vimrc. Another @@ -3907,8 +3900,13 @@ netrw: ============================================================================== 12. History *netrw-history* {{{1 - v172: Apr 22, 2023 * removed g:netrw_localrmdiropt - removed g:netrw_localrmdir + v172: Sep 02, 2021 * (Bram Moolenaar) Changed "l:go" to "go" + * (Bram Moolenaar) no need for "b" in + netrw-safe guioptions + Nov 15, 2021 * removed netrw_localrm and netrw_localrmdir + references + Aug 18, 2022 * (Miguel Barro) improving compatability with + powershell v171: Oct 09, 2020 * included code in s:NetrwOptionsSafe() to allow |'bh'| to be set to delete when rather than hide when g:netrw_fastbrowse @@ -3996,7 +3994,6 @@ netrw: |g:netrw_localcopydircmdopt| |g:netrw_localmkdiropt| |g:netrw_localmovecmdopt| - g:netrw_localrmdiropt Nov 21, 2016 * (mattn) provided a patch for preview; swapped winwidth() with winheight() Nov 22, 2016 * (glacambre) reported that files containing @@ -4056,7 +4053,7 @@ netrw: refreshes. However, inside a |:map-|, tab and window changes are disallowed. Fixed. (affects netrw's s:LocalBrowseRefresh()) - * |g:netrw_localrmdir| not used any more, but + * g:netrw_localrmdir not used any more, but the relevant patch that causes |delete()| to take over was #1107 (not #1109). * |expand()| is now used on |g:netrw_home|; diff --git a/runtime/doc/syntax.txt b/runtime/doc/syntax.txt index 89f5becc35..f19273ff6b 100644 --- a/runtime/doc/syntax.txt +++ b/runtime/doc/syntax.txt @@ -1,4 +1,4 @@ -*syntax.txt* For Vim version 9.1. Last change: 2023 Dec 27 +*syntax.txt* For Vim version 9.1. Last change: 2024 Feb 05 VIM REFERENCE MANUAL by Bram Moolenaar @@ -271,6 +271,10 @@ you can see the actual color, except for "Ignore"): *Todo anything that needs extra attention; mostly the keywords TODO FIXME and XXX + *Added added line in a diff + *Changed changed line in a diff + *Removed removed line in a diff + The names marked with * are the preferred groups; the others are minor groups. For the preferred groups, the "syntax.vim" file contains default highlighting. The minor groups are linked to the preferred groups, so they get the same @@ -1022,6 +1026,8 @@ Variable Highlight ~ *c_no_c99* don't highlight C99 standard items *c_no_c11* don't highlight C11 standard items *c_no_bsd* don't highlight BSD specific types +*c_functions* highlight function calls and definitions +*c_function_pointers* highlight function pointers definitions When 'foldmethod' is set to "syntax" then /* */ comments and { } blocks will become a fold. If you don't want comments to become a fold use: > @@ -1270,7 +1276,6 @@ there are very long lines in the file. To disable translations: > Also see |diff-slow|. - DIRCOLORS *dircolors.vim* *ft-dircolors-syntax* The dircolors utility highlighting definition has one option. It exists to @@ -1589,13 +1594,11 @@ edit F# or Fortran at all, use this in your startup vimrc: > FORTRAN *fortran.vim* *ft-fortran-syntax* Default highlighting and dialect ~ -Vim highlights according to Fortran 2023 (the most recent standard) by -default. This choice should be appropriate for most users most of the time -because Fortran 2023 is almost a superset of previous versions (Fortran 2018, -2008, 2003, 95, 90, and 77). A small number of features new to Fortran 2018 -and Fortran 2023 may have been omitted at present; the transition to Fortran -2023 will be completed in the near future. A few legacy constructs deleted or -declared obsolescent in recent Fortran standards are highlighted as todo +Vim highlights according to Fortran 2023 (the most recent standard). This +choice should be appropriate for most users most of the time because Fortran +2023 is almost a superset of previous versions (Fortran 2018, 2008, 2003, 95, +90, 77, and 66). A few legacy constructs deleted or declared obsolescent, +respectively, in recent Fortran standards are highlighted as errors and todo items. The syntax script no longer supports Fortran dialects. The variable @@ -1669,27 +1672,19 @@ placed prior to the :syntax on command. Unfortunately, the use of tabs will mean that the syntax file will not be able to detect incorrect margins. Syntax folding of Fortran files ~ -If you wish to use foldmethod=syntax, then you must first set the variable -fortran_fold with a command such as > +Vim will fold your file using foldmethod=syntax, if you set the variable +fortran_fold in your .vimrc with a command such as > :let fortran_fold=1 to instruct the syntax script to define fold regions for program units, that is main programs starting with a program statement, subroutines, function -subprograms, modules, submodules, and block data units. Block, interface, -associate, critical, type definition, and change team constructs will also be -folded. If you also set the variable fortran_fold_conditionals with a command -such as > +subprograms, modules, submodules, blocks of comment lines, and block data +units. Block, interface, associate, critical, type definition, and change team +constructs will also be folded. If you also set the variable +fortran_fold_conditionals with a command such as > :let fortran_fold_conditionals=1 then fold regions will also be defined for do loops, if blocks, select case, -select type, and select rank constructs. If you also set the variable -fortran_fold_multilinecomments with a command such as > - :let fortran_fold_multilinecomments=1 -then fold regions will also be defined for three or more consecutive comment -lines. Note that defining fold regions can be slow for large files. - -If fortran_fold, and possibly fortran_fold_conditionals and/or -fortran_fold_multilinecomments, have been set, then vim will fold your file. -Comments or blank lines placed between two program units are not folded -because they are seen as not belonging to any program unit. +select type, and select rank constructs. Note that defining fold regions can +be slow for large files. The syntax/fortran.vim script contains embedded comments that tell you how to comment and/or uncomment some lines to (a) activate recognition of some @@ -2251,6 +2246,56 @@ have the following in your .vimrc: > let filetype_m = "mma" +MODULA2 *modula2.vim* *ft-modula2-syntax* + +Vim will recognise comments with dialect tags to automatically select a given +dialect. + +The syntax for a dialect tag comment is: > + + taggedComment := + '(*!' dialectTag '*)' + ; + + dialectTag := + m2pim | m2iso | m2r10 + ; + + reserved words + m2pim = 'm2pim', m2iso = 'm2iso', m2r10 = 'm2r10' + +A dialect tag comment is recognised by Vim if it occurs within the first 200 +lines of the source file. Only the very first such comment is recognised, any +additional dialect tag comments are ignored. + +Example: > + + DEFINITION MODULE FooLib; (*!m2pim*) + ... + +Variable g:modula2_default_dialect sets the default Modula-2 dialect when the +dialect cannot be determined from the contents of the Modula-2 file: if +defined and set to 'm2pim', the default dialect is PIM. + +Example: > + + let g:modula2_default_dialect = 'm2pim' + + +Highlighting is further configurable for each dialect via the following +variables. + +Variable Highlight ~ +*modula2_iso_allow_lowline* allow low line in identifiers +*modula2_iso_disallow_octals* disallow octal integer literals +*modula2_iso_disallow_synonyms* disallow "@", "&" and "~" synonyms + +*modula2_pim_allow_lowline* allow low line in identifiers +*modula2_pim_disallow_octals* disallow octal integer literals +*modula2_pim_disallow_synonyms* disallow "&" and "~" synonyms + +*modula2_r10_allow_lowline* allow low line in identifiers + MOO *moo.vim* *ft-moo-syntax* If you use C-style comments inside expressions and find it mangles your @@ -5220,7 +5265,8 @@ ctermul={color-nr} *highlight-ctermul* "cterm=" argument AFTER the "ctermfg=" or "ctermbg=" argument. Or use a number instead of a color name. - The case of the color names is ignored. + The case of the color names is ignored, however Vim will use lower + case color names when reading from the |v:colornames| dictionary. Note that for 16 color ansi style terminals (including xterms), the numbers in the NR-8 column is used. Here '*' means 'add 8' so that Blue is 12, DarkGray is 8 etc. @@ -5259,6 +5305,14 @@ ctermul={color-nr} *highlight-ctermul* command is given. If the Normal group colors are changed later, the "fg" and "bg" colors will not be adjusted. +ctermfont={font-nr} *highlight-ctermfont* + This gives the alternative font number to use in the terminal. The + available fonts depend on the terminal, and if the terminal is not set + up for alternative fonts this simply won't do anything. The range of + {font-nr} is 0-10 where 0 resets the font to the default font, 1-9 + selects one of the 9 alternate fonts, and 10 selects the Fraktur font. + For more information see your terminal's handling of SGR parameters + 10-20. |t_CF| 3. highlight arguments for the GUI @@ -5331,8 +5385,8 @@ guisp={color-name} *highlight-guisp* :highlight Comment guifg=#11f0c3 guibg=#ff00ff < If you are authoring a color scheme and use the same hexadecimal value - repeatedly, you can define a name for it in |v:colornames|. For - example: > + repeatedly, you can define a (lower case) name for it in |v:colornames|. + For example: > # provide a default value for this color but allow the user to # override it. diff --git a/runtime/doc/tags b/runtime/doc/tags index b3343e1e3c..1a41413288 100644 --- a/runtime/doc/tags +++ b/runtime/doc/tags @@ -1042,6 +1042,7 @@ $quote eval.txt /*$quote* 't_AU' term.txt /*'t_AU'* 't_BD' term.txt /*'t_BD'* 't_BE' term.txt /*'t_BE'* +'t_CF' term.txt /*'t_CF'* 't_CS' term.txt /*'t_CS'* 't_CV' term.txt /*'t_CV'* 't_Ce' term.txt /*'t_Ce'* @@ -2899,6 +2900,7 @@ $quote eval.txt /*$quote* :map-arguments map.txt /*:map-arguments* :map-buffer map.txt /*:map-buffer* :map-cmd map.txt /*:map-cmd* +:map-cmd-key map.txt /*:map-cmd-key* :map-commands map.txt /*:map-commands* :map-expression map.txt /*:map-expression* :map-local map.txt /*:map-local* @@ -2911,6 +2913,7 @@ $quote eval.txt /*$quote* :map-special map.txt /*:map-special* :map-special-chars map.txt /*:map-special-chars* :map-special-keys map.txt /*:map-special-keys* +:map-super-keys map.txt /*:map-super-keys* :map-undo map.txt /*:map-undo* :map-unique map.txt /*:map-unique* :map-verbose map.txt /*:map-verbose* @@ -4188,6 +4191,7 @@ E1056 vim9.txt /*E1056* E1057 vim9.txt /*E1057* E1058 vim9.txt /*E1058* E1059 vim9.txt /*E1059* +E106 builtin.txt /*E106* E1060 vim9.txt /*E1060* E1061 vim9.txt /*E1061* E1062 eval.txt /*E1062* @@ -4589,6 +4593,8 @@ E1508 editing.txt /*E1508* E1509 editing.txt /*E1509* E151 helphelp.txt /*E151* E1510 change.txt /*E1510* +E1511 options.txt /*E1511* +E1512 options.txt /*E1512* E152 helphelp.txt /*E152* E153 helphelp.txt /*E153* E154 helphelp.txt /*E154* @@ -5801,6 +5807,7 @@ TabNew autocmd.txt /*TabNew* Tcl if_tcl.txt /*Tcl* TermChanged autocmd.txt /*TermChanged* TermResponse autocmd.txt /*TermResponse* +TermResponseAll autocmd.txt /*TermResponseAll* TermdebugStartPost terminal.txt /*TermdebugStartPost* TermdebugStartPre terminal.txt /*TermdebugStartPre* TermdebugStopPost terminal.txt /*TermdebugStopPost* @@ -5874,6 +5881,7 @@ WinClosed autocmd.txt /*WinClosed* WinEnter autocmd.txt /*WinEnter* WinLeave autocmd.txt /*WinLeave* WinNew autocmd.txt /*WinNew* +WinNewPre autocmd.txt /*WinNewPre* WinResized autocmd.txt /*WinResized* WinResized-event windows.txt /*WinResized-event* WinScrolled autocmd.txt /*WinScrolled* @@ -6374,6 +6382,8 @@ c_ansi_typedefs syntax.txt /*c_ansi_typedefs* c_comment_strings syntax.txt /*c_comment_strings* c_curly_error syntax.txt /*c_curly_error* c_digraph cmdline.txt /*c_digraph* +c_function_pointers syntax.txt /*c_function_pointers* +c_functions syntax.txt /*c_functions* c_gnu syntax.txt /*c_gnu* c_no_ansi syntax.txt /*c_no_ansi* c_no_bracket_error syntax.txt /*c_no_bracket_error* @@ -6524,6 +6534,7 @@ cino-{ indent.txt /*cino-{* cino-} indent.txt /*cino-}* cinoptions-values indent.txt /*cinoptions-values* class vim9class.txt /*class* +class-compile vim9class.txt /*class-compile* class-method vim9class.txt /*class-method* clear-undo undo.txt /*clear-undo* clearmatches() builtin.txt /*clearmatches()* @@ -6848,7 +6859,9 @@ dict-identity eval.txt /*dict-identity* dict-modification eval.txt /*dict-modification* did_filetype() builtin.txt /*did_filetype()* diff diff.txt /*diff* +diff() builtin.txt /*diff()* diff-diffexpr diff.txt /*diff-diffexpr* +diff-func-examples diff.txt /*diff-func-examples* diff-mode diff.txt /*diff-mode* diff-options diff.txt /*diff-options* diff-original-file diff.txt /*diff-original-file* @@ -7247,6 +7260,7 @@ foldtextresult() builtin.txt /*foldtextresult()* font-sizes gui_x11.txt /*font-sizes* fontset mbyte.txt /*fontset* forced-motion motion.txt /*forced-motion* +foreach() builtin.txt /*foreach()* foreground() builtin.txt /*foreground()* fork os_unix.txt /*fork* form.vim syntax.txt /*form.vim* @@ -7369,6 +7383,7 @@ ft-metapost-intro ft_mp.txt /*ft-metapost-intro* ft-metapost-mappings ft_mp.txt /*ft-metapost-mappings* ft-metapost-settings ft_mp.txt /*ft-metapost-settings* ft-mma-syntax syntax.txt /*ft-mma-syntax* +ft-modula2-syntax syntax.txt /*ft-modula2-syntax* ft-moo-syntax syntax.txt /*ft-moo-syntax* ft-msql-syntax syntax.txt /*ft-msql-syntax* ft-n1ql-syntax syntax.txt /*ft-n1ql-syntax* @@ -7636,7 +7651,6 @@ g:netrw_localmkdir pi_netrw.txt /*g:netrw_localmkdir* g:netrw_localmkdiropt pi_netrw.txt /*g:netrw_localmkdiropt* g:netrw_localmovecmd pi_netrw.txt /*g:netrw_localmovecmd* g:netrw_localmovecmdopt pi_netrw.txt /*g:netrw_localmovecmdopt* -g:netrw_localrmdir pi_netrw.txt /*g:netrw_localrmdir* g:netrw_maxfilenamelen pi_netrw.txt /*g:netrw_maxfilenamelen* g:netrw_menu pi_netrw.txt /*g:netrw_menu* g:netrw_mkdir_cmd pi_netrw.txt /*g:netrw_mkdir_cmd* @@ -7961,6 +7975,7 @@ gui-w32-start gui_w32.txt /*gui-w32-start* gui-w32-various gui_w32.txt /*gui-w32-various* gui-w32-windowid gui_w32.txt /*gui-w32-windowid* gui-w32s os_win32.txt /*gui-w32s* +gui-wayland gui_x11.txt /*gui-wayland* gui-win32-maximized gui_w32.txt /*gui-win32-maximized* gui-x11 gui_x11.txt /*gui-x11* gui-x11-athena gui_x11.txt /*gui-x11-athena* @@ -8049,6 +8064,7 @@ highlight-clear syntax.txt /*highlight-clear* highlight-cterm syntax.txt /*highlight-cterm* highlight-ctermbg syntax.txt /*highlight-ctermbg* highlight-ctermfg syntax.txt /*highlight-ctermfg* +highlight-ctermfont syntax.txt /*highlight-ctermfont* highlight-ctermul syntax.txt /*highlight-ctermul* highlight-default syntax.txt /*highlight-default* highlight-font syntax.txt /*highlight-font* @@ -8755,6 +8771,7 @@ match-parens tips.txt /*match-parens* matchadd() builtin.txt /*matchadd()* matchaddpos() builtin.txt /*matchaddpos()* matcharg() builtin.txt /*matcharg()* +matchbufline() builtin.txt /*matchbufline()* matchdelete() builtin.txt /*matchdelete()* matchend() builtin.txt /*matchend()* matchfuzzy() builtin.txt /*matchfuzzy()* @@ -8763,6 +8780,7 @@ matchit-install usr_05.txt /*matchit-install* matchlist() builtin.txt /*matchlist()* matchparen pi_paren.txt /*matchparen* matchstr() builtin.txt /*matchstr()* +matchstrlist() builtin.txt /*matchstrlist()* matchstrpos() builtin.txt /*matchstrpos()* matlab-indent indent.txt /*matlab-indent* matlab-indenting indent.txt /*matlab-indenting* @@ -8818,6 +8836,14 @@ modeline options.txt /*modeline* modeline-local options.txt /*modeline-local* modeline-version options.txt /*modeline-version* modifyOtherKeys map.txt /*modifyOtherKeys* +modula2.vim syntax.txt /*modula2.vim* +modula2_iso_allow_lowline syntax.txt /*modula2_iso_allow_lowline* +modula2_iso_disallow_octals syntax.txt /*modula2_iso_disallow_octals* +modula2_iso_disallow_synonyms syntax.txt /*modula2_iso_disallow_synonyms* +modula2_pim_allow_lowline syntax.txt /*modula2_pim_allow_lowline* +modula2_pim_disallow_octals syntax.txt /*modula2_pim_disallow_octals* +modula2_pim_disallow_synonyms syntax.txt /*modula2_pim_disallow_synonyms* +modula2_r10_allow_lowline syntax.txt /*modula2_r10_allow_lowline* moo.vim syntax.txt /*moo.vim* more-compatible version5.txt /*more-compatible* more-prompt message.txt /*more-prompt* @@ -10301,6 +10327,7 @@ t_AL term.txt /*t_AL* t_AU term.txt /*t_AU* t_BD term.txt /*t_BD* t_BE term.txt /*t_BE* +t_CF term.txt /*t_CF* t_CS term.txt /*t_CS* t_CTRL-W_. terminal.txt /*t_CTRL-W_.* t_CTRL-W_: terminal.txt /*t_CTRL-W_:* @@ -11338,6 +11365,7 @@ vt100-cursor-keys term.txt /*vt100-cursor-keys* vt100-function-keys term.txt /*vt100-function-keys* w motion.txt /*w* w32-clientserver remote.txt /*w32-clientserver* +w32-experimental-keycode-trans-strategy gui_w32.txt /*w32-experimental-keycode-trans-strategy* w32-xpm-support gui_w32.txt /*w32-xpm-support* w: eval.txt /*w:* w:current_syntax syntax.txt /*w:current_syntax* diff --git a/runtime/doc/term.txt b/runtime/doc/term.txt index 546b0bf90d..8154ec596e 100644 --- a/runtime/doc/term.txt +++ b/runtime/doc/term.txt @@ -1,4 +1,4 @@ -*term.txt* For Vim version 9.1. Last change: 2023 Dec 09 +*term.txt* For Vim version 9.1. Last change: 2024 Jan 15 VIM REFERENCE MANUAL by Bram Moolenaar @@ -448,6 +448,7 @@ Added by Vim (there are no standard codes for these): t_AU set underline color (ANSI) *t_AU* *'t_AU'* t_Ce undercurl and underline end *t_Ce* *'t_Ce'* t_Cs undercurl (curly underline) mode *t_Cs* *'t_Cs'* + t_CF set alternate font (using index 0 - 10) *t_CF* *'t_CF'* t_Us double underline mode *t_Us* *'t_Us'* t_ds dotted underline mode *t_ds* *'t_ds'* t_Ds dashed underline mode *t_Ds* *'t_Ds'* diff --git a/runtime/doc/testing.txt b/runtime/doc/testing.txt index dabdd32b02..442285dc86 100644 --- a/runtime/doc/testing.txt +++ b/runtime/doc/testing.txt @@ -1,4 +1,4 @@ -*testing.txt* For Vim version 9.1. Last change: 2023 May 18 +*testing.txt* For Vim version 9.1. Last change: 2024 Jan 23 VIM REFERENCE MANUAL by Bram Moolenaar @@ -234,6 +234,8 @@ test_mswin_event({event}, {args}) *test_mswin_event()* {event} is a String and the supported values are: "mouse" mouse event. "key" keyboard event. + "set_keycode_trans_strategy" + Change the key transation method "mouse": Inject either a mouse button click, or a mouse move, event. @@ -290,6 +292,14 @@ test_mswin_event({event}, {args}) *test_mswin_event()* unprocessed key events. All other {args} items are optional when this is set and true. + "set_keycode_trans_strategy": + |w32-experimental-keycode-trans-strategy| + Switch the keycode translation method. The supported methods are: + experimental: The method used after Patch v8.2.4807 + using ToUnicode() Win API call. + classic: The method used pre Patch v8.2.4807 + using the TranslateMessage() Win API call. + Returns TRUE if the event is successfully added or executed, FALSE if there is a failure. diff --git a/runtime/doc/todo.txt b/runtime/doc/todo.txt index 9847ff7d36..953ae47820 100644 --- a/runtime/doc/todo.txt +++ b/runtime/doc/todo.txt @@ -1,4 +1,4 @@ -*todo.txt* For Vim version 9.1. Last change: 2023 Dec 14 +*todo.txt* For Vim version 9.1. Last change: 2024 Feb 01 VIM REFERENCE MANUAL by Bram Moolenaar @@ -130,8 +130,6 @@ Further Vim9 improvements: Issue #11822: any.Func() can be a dict or an object call, need to handle this at runtime. Also see #12198 for an example. Possibly issue #11981 can be fixed at the same time (has two examples). - - Make ":defcompile ClassName" compile all functions and methods in the - class. - Forward declaration of a class? E.g. for Clone() function. Email lifepillar 2023 Mar 26 - object empty(), len() - can class define a method to be used for them? @@ -958,9 +956,6 @@ When 'sidescrolloff' is set, using "zl" to go to the end of the line, suddenly scrolls back. Should allow for this scrolling, like 'scrolloff' does when using CTRL-E. (Yee Cheng Chin, #3721) -Add function to make use of internal diff, working on two lists and returning -unified diff (list of lines). - When splitting a window with few text lines, the relative cursor position is kept, which means part of the text isn't displayed. Better show all the text when possible. (Dylan Lloyd, #3973) @@ -1123,9 +1118,6 @@ When t_Co is changed from termresponse, the OptionSet autocommand event isn't triggered. Use the code from the end of set_num_option() in set_color_count(). -Add another autocommand like TermResponse that is fired for the other terminal -responses, such as bg and fg. Use "bg", "fg", "blink", etc. for the name. - When using command line window, CmdlineLeave is triggered without CmdlineEnter. (xtal8, 2017 Oct 30, #2263) Add some way to get the nested state. Although CmdwinEnter is obviously @@ -4672,7 +4664,6 @@ GUI: Autocommands: -9 Add WinNewPre - before creating a new window. #10635 9 When triggering WinNew provide the window ID somehow. #10633 9 Rework the code from FEAT_OSFILETYPE for autocmd-osfiletypes to use 'filetype'. Only for when the current buffer is known. diff --git a/runtime/doc/usr_41.txt b/runtime/doc/usr_41.txt index 248b26ddb3..9b033d89da 100644 --- a/runtime/doc/usr_41.txt +++ b/runtime/doc/usr_41.txt @@ -1,4 +1,4 @@ -*usr_41.txt* For Vim version 9.1. Last change: 2023 May 06 +*usr_41.txt* For Vim version 9.1. Last change: 2024 Feb 01 VIM USER MANUAL - by Bram Moolenaar @@ -743,10 +743,13 @@ String manipulation: *string-functions* toupper() turn a string to uppercase charclass() class of a character match() position where a pattern matches in a string + matchbufline() all the matches of a pattern in a buffer matchend() position where a pattern match ends in a string matchfuzzy() fuzzy matches a string in a list of strings matchfuzzypos() fuzzy matches a string in a list of strings matchstr() match of a pattern in a string + matchstrlist() all the matches of a pattern in a List of + strings matchstrpos() match and positions of a pattern in a string matchlist() like matchstr() and also return submatches stridx() first index of a short string in a long string @@ -795,6 +798,7 @@ List manipulation: *list-functions* filter() remove selected items from a List map() change each List item mapnew() make a new List with changed items + foreach() apply function to List items reduce() reduce a List to a value slice() take a slice of a List sort() sort a List @@ -826,6 +830,7 @@ Dictionary manipulation: *dict-functions* filter() remove selected entries from a Dictionary map() change each Dictionary entry mapnew() make a new Dictionary with changed items + foreach() apply function to Dictionary items keys() get List of Dictionary keys values() get List of Dictionary values items() get List of Dictionary key-value pairs @@ -1363,6 +1368,7 @@ Various: *various-functions* changenr() return number of most recent change cscope_connection() check if a cscope connection exists did_filetype() check if a FileType autocommand was used + diff() diff two Lists of strings eventhandler() check if invoked by an event handler getpid() get process ID of Vim getscriptinfo() get list of sourced vim scripts diff --git a/runtime/doc/version9.txt b/runtime/doc/version9.txt index 0f4400a3f5..697fd79844 100644 --- a/runtime/doc/version9.txt +++ b/runtime/doc/version9.txt @@ -1,4 +1,4 @@ -*version9.txt* For Vim version 9.1. Last change: 2024 Jan 01 +*version9.txt* For Vim version 9.1. Last change: 2024 Jan 05 VIM REFERENCE MANUAL by Bram Moolenaar @@ -12957,7 +12957,7 @@ Files: src/fileio.c Patch 8.2.2056 Problem: Configure fails when building with the "implicit-function-declaration" error enabled, specifically on Mac. -Solution: Declear the functions like in the source code. (suggestion by +Solution: Declare the functions like in the source code. (suggestion by Clemens Lang, closes #7380) Files: src/configure.ac, src/auto/configure @@ -18862,7 +18862,7 @@ Solution: Do not handle text properties when deleting a line for splitting a Files: src/structs.h, src/memline.c, src/testdir/test_textprop.vim Patch 8.2.3063 -Problem: Crash when switching 'cryptmethod' to xchaha20 with an existing +Problem: Crash when switching 'cryptmethod' to xchacha20 with an existing undo file. (Martin Tournoij) Solution: Disable reading undo file when decoding can't be done inplace. (issue #8467) @@ -19819,7 +19819,7 @@ Solution: Add missing changes. Files: src/globals.h Patch 8.2.3218 -Problem: When using xchaha20 crypt undo file is not removed. +Problem: When using xchacha20 crypt undo file is not removed. Solution: Reset 'undofile' and delete the file. (Christian Brabandt, closes #8630, closes #8467) Files: src/bufwrite.c, src/crypt.c, src/proto/undo.pro, @@ -29043,7 +29043,7 @@ Files: src/testdir/test_autocmd.vim Patch 8.2.4729 Problem: HEEx and Surface templates do not need a separate filetype. -Solution: Use Eelixir for the similar filetypes. (Aaron Tinio, closes #10124) +Solution: Use Elixir for the similar filetypes. (Aaron Tinio, closes #10124) Files: runtime/filetype.vim, src/testdir/test_filetype.vim Patch 8.2.4730 @@ -31688,7 +31688,7 @@ Files: runtime/makemenu.vim VERSION 9.1 *version-9.1* *version9.1* *vim-9.1* This section is about improvements made between version 9.0 and 9.1. -The release 9.1 is dedicated to Vims Benevolent dictator for life +The release 9.1 is dedicated to Vim's Benevolent dictator for life |Bram-Moolenaar|. This release has hundreds of bug fixes, there are a few new features and there @@ -31774,7 +31774,7 @@ Other improvements *new-other-9.1* - Support "**" for filename expansion with bash using globstar setting. - Add quadruple prime digraph using 4'. - Better high dpi support on Windows. -- Varous fixes for unsafe memory access, memory leaks, buffer overflows +- Various fixes for unsafe memory access, memory leaks, buffer overflows and potential crashes. - Termdebug: Support for the variables window (|termdebug_variables_window|), moving up/down the stack frames (|termdebug-frames|) and setting temporary @@ -32098,7 +32098,7 @@ Problem: Split else-of is confusing. Solution: Join the lines. (closes #10696) Patch 9.0.0051 -Problem: Using CTRL-C wih :append may hang Vim. +Problem: Using CTRL-C with :append may hang Vim. Solution: Reset got_int. (closes #10729, closes #10728) Patch 9.0.0052 @@ -32487,7 +32487,7 @@ Solution: pass the command modifier in sticky_cmdmod_flags. (Kota Kato, closes #10845) Patch 9.0.0141 -Problem: "delmenu" does not remove autocmmands. Running menu test function +Problem: "delmenu" does not remove autocommands. Running menu test function alone fails. Solution: Delete autocommands Make sure there is at least one menu. (closes #10848) @@ -32663,7 +32663,7 @@ Solution: Remove ch_logfile() calls. Patch 9.0.0181 Problem: Textprop test with line2byte() fails on MS-Windows. -Solution: Fix updating chuncks in ml_delete_int(). +Solution: Fix updating chunks in ml_delete_int(). Patch 9.0.0182 Problem: Quarto files are not recognized. @@ -32901,7 +32901,7 @@ Problem: Cannot make difference between the end of :normal and a character Solution: Add the "typebuf_was_empty" flag. (closes #10950) Patch 9.0.0235 -Problem: 'autoshelldir' does not work with chunked respose. +Problem: 'autoshelldir' does not work with chunked response. Solution: Collect chunks before parsing OSC 7. (closes #10949) Patch 9.0.0236 @@ -32991,7 +32991,7 @@ Solution: Add #ifdef. Patch 9.0.0256 Problem: Compiler warning for uninitialized variables. -Solution: Initilize the variables. +Solution: Initialize the variables. Patch 9.0.0257 Problem: "->" in ":scriptnames" output not tested yet. @@ -33101,7 +33101,7 @@ Problem: Build failure without the +eval feature. Solution: Add #ifdef. Patch 9.0.0282 -Problem: A nested timout stops the previous timeout. +Problem: A nested timeout stops the previous timeout. Solution: Ignore any nested timeout. Patch 9.0.0283 @@ -33542,7 +33542,7 @@ Problem: Coverity complains about unused value. Solution: Use the value. Patch 9.0.0384 -Problem: Covertity still complains about using return value of getc(). +Problem: Coverity still complains about using return value of getc(). Solution: Check for EOF. Patch 9.0.0385 @@ -34271,7 +34271,7 @@ Problem: Crash when using NUL in buffer that uses :source. Solution: Don't get a next line when skipping over NL. Patch 9.0.0553 -Problem: No error for "|" after "{" in lamda. +Problem: No error for "|" after "{" in lambda. Solution: Check for invalid "|". (closes #11199) Patch 9.0.0554 @@ -34310,7 +34310,7 @@ Solution: Set a timeout of 30 seconds. Patch 9.0.0562 Problem: HSL playlist files are not recognized. -Solution: Add a pattern to recognize HSL palylist files. (Benoît Ryder, +Solution: Add a pattern to recognize HSL playlist files. (Benoît Ryder, closes #11204) Patch 9.0.0563 @@ -34400,7 +34400,7 @@ Solution: Also remove /private from the expected directory. Patch 9.0.0583 Problem: Only recognizing .m3u8 files is inconsistent. -Solution: Also matc .m3u files. (issue #11204) +Solution: Also match .m3u files. (issue #11204) Patch 9.0.0584 Problem: Cscope test with wrong executable name fails. @@ -34678,7 +34678,7 @@ Solution: Stop at line 1 when 'smoothscroll' is not set. (closes #11261) Patch 9.0.0646 Problem: with 'smoothscroll' set CTRL-E does not work properly when 'foldmethod' is set to "indent". (Yee Cheng Chin) -Solution: Merge the code for scroling with folds and 'smoothscroll'. +Solution: Merge the code for scrolling with folds and 'smoothscroll'. (closes #11262) Patch 9.0.0647 @@ -34770,7 +34770,7 @@ Patch 9.0.0666 Problem: Spacing-combining characters handled as composing, causing text to take more space than expected. Solution: Handle characters marked with "Mc" not as composing. - (closes #11282 + (closes #11282) Patch 9.0.0667 Problem: ml_get error when 'splitkeep' is "screen". (Marius Gedminas) @@ -34858,7 +34858,7 @@ Solution: Use a pointer to the first char. (Yee Cheng Chin, closes #11302) Patch 9.0.0686 Problem: The right ALT key does not work on some MS-Windows keyboards. -Solution: Adjust the modifiers based on GetKeyState(). (Anoton Sharonov, +Solution: Adjust the modifiers based on GetKeyState(). (Anton Sharonov, closes #11300) Patch 9.0.0687 @@ -35139,7 +35139,7 @@ Solution: Adjust expected result to slightly different behavior. Correct Patch 9.0.0747 Problem: Too many #ifdefs. -Solution: Gradudate the +cmdline_info feature. (Martin Tournoij, +Solution: Graduate the +cmdline_info feature. (Martin Tournoij, closes #11330) Patch 9.0.0748 @@ -35305,7 +35305,7 @@ Solution: Free the allocated memory when bailing out. Patch 9.0.0786 Problem: User command does not get number from :tab modifier. -Solution: Include the number. (closes #11393, closes #6801) +Solution: Include the number. (closes #11393, closes #6901) Patch 9.0.0787 Problem: MS-Windows: mouse scrolling in terminal misbehaves without dll. @@ -35372,8 +35372,8 @@ Solution: Remove one typedef. Patch 9.0.0801 Problem: The modifyOtherKeys flag is set when it should not. -Solution: Do not handle special key codes with a modifer value above 16 as a - modifyOtherKeys value. (issue #11403) +Solution: Do not handle special key codes with a modifier value above 16 as + a modifyOtherKeys value. (issue #11403) Patch 9.0.0802 Problem: MS-Windows: cannot map console mouse scroll events. @@ -35385,7 +35385,7 @@ Problem: readblob() cannot read from character device. Solution: Use S_ISCHR() to not check the size. (Ken Takata, closes #11407) Patch 9.0.0804 -Problem: Crash when trying to divice the largest negative number by -1. +Problem: Crash when trying to divide the largest negative number by -1. Solution: Handle this case specifically. Patch 9.0.0805 @@ -35974,7 +35974,7 @@ Solution: Improve code formatting. Patch 9.0.0935 Problem: When using dash it may not be recognize as filetype "sh". -Solution: Add checks for "dash". (Eisuke Kawashima,closes #11600) +Solution: Add checks for "dash". (Eisuke Kawashima, closes #11600) Patch 9.0.0936 Problem: Wrong type for "isunnamed" returned by getreginfo(). @@ -36465,7 +36465,7 @@ Solution: When setting "curwin" also set "curbuf". (closes #11687) Patch 9.0.1045 Problem: In a class object members cannot be initialized. -Solution: Support initializing object members. Make "dissassemble" work on +Solution: Support initializing object members. Make "disassemble" work on an object method. Patch 9.0.1046 @@ -36668,7 +36668,7 @@ Problem: Clang warns for unused variable. Solution: Adjust #ifdef. (John Marriott) Patch 9.0.1089 -Problem: unnessary assignment +Problem: unnecessary assignment Solution: Remove the assignment. (Luuk van Baal, closes #1136) Patch 9.0.1090 @@ -36886,11 +36886,11 @@ Solution: Only use the member when the type is a list. (closes #11774) Patch 9.0.1139 Problem: Cannot create a new object in a compiled function. -Solution: Compile the instructins to create a new object. +Solution: Compile the instructions to create a new object. Patch 9.0.1140 Problem: Cannot call an object method in a compiled function. -Solution: Compile the instructins to invoke an object method. +Solution: Compile the instructions to invoke an object method. Patch 9.0.1141 Problem: 'cursorcolumn' and 'colorcolumn' wrong after concealing and @@ -37031,7 +37031,7 @@ Solution: Redraw the screen when the cell widths have changed. (Yasuhiro Patch 9.0.1172 Problem: When 'selection' is "exclusive" then "1v" is one char short. -Solution: Add one character when 'selection' is "exclusive. (closes #11791) +Solution: Add one character when 'selection' is "exclusive". (closes #11791) Patch 9.0.1173 Problem: Compiler warning for unused variable on non-Unix systems. @@ -37264,7 +37264,7 @@ Problem: Reading past the end of a line when formatting text. Solution: Check for not going over the end of the line. Patch 9.0.1226 -Problem: Spurious empty line when using text propertie and virtual text. +Problem: Spurious empty line when using text properties and virtual text. Solution: Do not set "text_prop_follows" when the other text property is not virtual text. (closes #11846) @@ -37504,7 +37504,7 @@ Problem: Display shows lines scrolled down erroneously. (Yishai Lerner) Solution: Do not change "wl_lnum" at index zero. (closes #11938) Patch 9.0.1280 -Problem: Inssufficient testing for what 9.0.1265 fixes. +Problem: Insufficient testing for what 9.0.1265 fixes. Solution: Add a couple of test cases. (issue #11885) Patch 9.0.1281 @@ -37533,7 +37533,7 @@ Problem: Coverity warns for using a NULL pointer. Solution: Bail out whan "varp" is NULL. Patch 9.0.1287 -Problem: With the Kitty key protocl Esc with NumLock cannot be mapped. +Problem: With the Kitty key protocol Esc with NumLock cannot be mapped. Solution: Also use K_ESC when there is a modifier. (closes #11811) Patch 9.0.1288 @@ -37706,7 +37706,7 @@ Solution: Use the same code as used for "j"/"k" to go to the next/previous Patch 9.0.1325 Problem: 'colorcolumn' highlight wrong with virtual text above. -Solution: Adjust column of 'colorcolumn' for text propertly. (closes #12004) +Solution: Adjust column of 'colorcolumn' for text property. (closes #12004) Patch 9.0.1326 Problem: Relative line number not updated with virtual text above. @@ -37965,8 +37965,8 @@ Problem: xxd: combination of little endian and cols fails. (Aapo Solution: Round up the space taken by the hex output. (closes #12097) Patch 9.0.1384 -Problem: Setting HOMEBREW_NO_AUTO_UPDATE is not needed with Homebew version - 4. +Problem: Setting HOMEBREW_NO_AUTO_UPDATE is not needed with Homebrew + version 4. Solution: Remove setting HOMEBREW_NO_AUTO_UPDATE. (closes #12008) Patch 9.0.1385 @@ -38413,7 +38413,7 @@ Solution: Add entry for Xchacha, even though it is not used. Patch 9.0.1485 Problem: no functions for converting from/to UTF-16 index. -Solution: Add UTF-16 flag to existing funtions and add strutf16len() and +Solution: Add UTF-16 flag to existing functions and add strutf16len() and utf16idx(). (Yegappan Lakshmanan, closes #12216) Patch 9.0.1486 @@ -38427,7 +38427,7 @@ Solution: Use "vscode-jsonrpc" instead of "vim-jsonrpc". (Yegappan Patch 9.0.1488 Problem: xchacha20v2 crypt header is platform dependent. -Solution: Avoid using "size_t". (Ozaki Kiichi, closses #12296) +Solution: Avoid using "size_t". (Ozaki Kiichi, closes #12296) Patch 9.0.1489 Problem: Crypt with libsodium is not tested on CI. @@ -39720,7 +39720,7 @@ Solution: Add a few more tests for operator pending mode and register Patch 9.0.1780 Problem: Vim9 type not defined during object creation Solution: Define type during object creation and not during class - definition, parse mulit-line member initializers, fix lock + definition, parse multi-line member initializers, fix lock initialization Patch 9.0.1781 @@ -39786,7 +39786,7 @@ Problem: obsolete macros in configure script Solution: Remove those and start moving to autoconf 2.71 Patch 9.0.1794 -Problem: autoconf: not correctly detecing include dirs +Problem: autoconf: not correctly detecting include dirs Solution: make use of python3 to generate includedirs Patch 9.0.1795 @@ -40117,7 +40117,7 @@ Problem: Coverity warns about uninitialized var Solution: initialize it Patch 9.0.1870 -Problem: Vim9: disassamble does not show static +Problem: Vim9: disassemble does not show static Solution: Show static flag Patch 9.0.1871 @@ -40860,7 +40860,7 @@ Solution: Fix cmdline completion fuzzy/Ctrl-E/Ctrl-Y/options when not Patch 9.0.2038 Problem: Vim9: object method funcref not cleaned up after use Solution: Clean up type stack after using object method funcref, - remove now longer used ISN_DEFEROBJ instrunction + remove now longer used ISN_DEFEROBJ instruction Patch 9.0.2039 Problem: completion shows current word after completion restart @@ -40883,7 +40883,7 @@ Problem: Vim9: issue with funcref assignment and varargs Solution: Fix funcref type checking Patch 9.0.2044 -Problem: Vim9: exceptions confuse defered functions +Problem: Vim9: exceptions confuse deferred functions Solution: save and restore exception state when calling deferred functions diff --git a/runtime/doc/vim9.txt b/runtime/doc/vim9.txt index b12b1cc998..0f5884b65c 100644 --- a/runtime/doc/vim9.txt +++ b/runtime/doc/vim9.txt @@ -1,4 +1,4 @@ -*vim9.txt* For Vim version 9.1. Last change: 2023 Dec 24 +*vim9.txt* For Vim version 9.1. Last change: 2024 Jan 12 VIM REFERENCE MANUAL by Bram Moolenaar @@ -1260,10 +1260,12 @@ Script-local variables in a |Vim9| script must be declared at the script level. They cannot be created in a function, also not in a legacy function. *:defc* *:defcompile* -:defc[ompile] Compile functions defined in the current script that - were not compiled yet. - This will report any errors found during compilation. - This excludes functions defined inside a class. +:defc[ompile] Compile functions and classes (|class-compile|) + defined in the current script that were not compiled + yet. This will report any errors found during + compilation. + +:defc[ompile] MyClass Compile all methods in a class. |class-compile| :defc[ompile] {func} :defc[ompile] debug {func} @@ -1718,8 +1720,8 @@ an example for each category: > Vim does not have a familiar null value; it has various null_ predefined values, for example |null_string|, |null_list|, |null_job|. Primitives do not have a null_. The typical use cases for null_ are: -- to `clear a variable` and release its resources; -- as a `default for a parameter` in a function definition, see |null-compare|. +- to clear a variable and release its resources; +- as a default for a parameter in a function definition, see |null-compare|. For a specialized variable, like `job`, null_ is used to clear the resources. For a container variable, resources can also be cleared by @@ -1771,7 +1773,7 @@ an empty container, do not use null_ in a comparison: > F(null_list) # output: "null" F([]) # output: "not null, empty" F(['']) # output: "not null, not empty" -The above function takes a `list of strings` and reports on it. +The above function takes a list of strings and reports on it. Change the above function signature to accept different types of arguments: > def F(arg: list = null_list) # any type of list def F(arg: any = null) # any type @@ -1789,18 +1791,18 @@ with vim9 null semantics, the programmer may chose to use null_ in comparisons and/or other situations. Elsewhere in the documentation it says: - Quite often a null value is handled the same as an - empty value, but not always + Quite often a null value is handled the same as an empty value, but + not always Here's an example: > vim9script var s1: list var s2: list = null_list echo s1 # output: "[]" echo s2 # output: "[]" - + echo s1 + ['a'] # output: "['a']" echo s2 + ['a'] # output: "['a']" - + echo s1->add('a') # output: "['a']" echo s2->add('a') # E1130: Can not add to null list < diff --git a/runtime/doc/vim9class.txt b/runtime/doc/vim9class.txt index ca9daffac5..ba821c1b29 100644 --- a/runtime/doc/vim9class.txt +++ b/runtime/doc/vim9class.txt @@ -1,4 +1,4 @@ -*vim9class.txt* For Vim version 9.1. Last change: 2024 Jan 01 +*vim9class.txt* For Vim version 9.1. Last change: 2024 Jan 12 VIM REFERENCE MANUAL by Bram Moolenaar @@ -106,17 +106,17 @@ The object variables "lnum" and "col" can be accessed directly: > echo $'The text position is ({pos.lnum}, {pos.col})' < *E1317* *E1327* *:this* If you have been using other object-oriented languages you will notice that in -Vim, within a class definition, the object members are consistently referred -to with the "this." prefix. This is different from languages like Java and -TypeScript. The naming convention makes the object members easy to spot. -Also, when a variable does not have the "this." prefix you know it is not an -object variable. +Vim, within a class definition, the declared object members are consistently +referred to with the "this." prefix. This is different from languages like +Java and TypeScript. The naming convention makes the object members easy to +spot. Also, when a variable does not have the "this." prefix you know it is +not an object variable. *E1411* From outside the class definition, access an object's methods and variables by using the object name followed by a dot following by the member: > pos.lnum - pos.setCol(10) + pos.SetCol(10) < *E1405* *E1406* A class name cannot be used as an expression. A class name cannot be used in @@ -164,7 +164,7 @@ from outside the class or its sub-classes, you can make them protected. This is done by prefixing an underscore to the name: > var _lnum: number - var _col number + var _col: number Now you need to provide methods to get the value of the protected variables. These are commonly called getters. We recommend using a name that starts with @@ -174,7 +174,7 @@ These are commonly called getters. We recommend using a name that starts with return this._lnum enddef - def GetCol() number + def GetCol(): number return this._col enddef @@ -330,7 +330,8 @@ variables but they have no access to the object variables, they cannot use the Inside the class the class method can be called by name directly, outside the class the class name must be prefixed: `OtherThing.ClearTotalSize()`. To use -a super class method in a child class, the class name must be prefixed. +a class method from a parent class in a child class, the class name must be +prefixed. Just like object methods the access can be made protected by using an underscore as the first character in the method name: > @@ -492,17 +493,15 @@ prefix when defining the method: > abstract class Shape abstract def Draw() - abstract static def SetColor() endclass < A static method in an abstract class cannot be an abstract method. *E1373* -A class extending the abstract class must implement all the abstract methods. -The signature (arguments, argument types and return type) must be exactly the -same. If the return type of a method is a class, then that class or one of -its subclasses can be used in the extended method. Class methods in an -abstract class can also be abstract methods. +A non-abstract class extending the abstract class must implement all the +abstract methods. The signature (arguments, argument types and return type) +must be exactly the same. If the return type of a method is a class, then +that class or one of its subclasses can be used in the extended method. ============================================================================== @@ -610,7 +609,7 @@ once. They can appear in any order, although this order is recommended: > < *E1355* *E1369* Each variable and method name can be used only once. It is not possible to define a method with the same name and different type of arguments. It is not -possible to use a public and protected member variable with the same name. A +possible to use a public and protected member variable with the same name. An object variable name used in a super class cannot be reused in a child class. @@ -688,7 +687,7 @@ Inside a class, in between `:class` and `:endclass`, these items can appear: - A class variable declaration: > static var _protectedClassVariableName: memberType static var readonlyClassVariableName: memberType - static var public readwriteClassVariableName: memberType + public static var readwriteClassVariableName: memberType - A constructor method: > def new(arguments) def newName(arguments) @@ -747,7 +746,7 @@ null object ~ When a variable is declared to have the type of an object, but it is not initialized, the value is null. When trying to use this null object Vim often does not know what class was supposed to be used. Vim then cannot check if -a variable name is correct and you will get an "Using a null object" error, +a variable name is correct and you will get a "Using a null object" error, even when the variable name is invalid. *E1360* *E1362* @@ -787,7 +786,7 @@ the name, you can define the constructor like this: > < When using the default new() method, if the order of the object variables in the class is changed later, then all the callers of the default new() method -needs to change. To avoid this, the new() method can be explicitly defined +need to change. To avoid this, the new() method can be explicitly defined without any arguments. *E1328* @@ -831,7 +830,14 @@ Note that the method name must start with "new". If there is no method called "new()" then the default constructor is added, even though there are other constructor methods. +Compiling methods in a Class ~ + *class-compile* +The |:defcompile| command can be used to compile all the class and object +methods defined in a class: > + defcompile MyClass # Compile class "MyClass" + defcompile # Compile the classes in the current script +< ============================================================================== 7. Type definition *typealias* *Vim9-type* *:type* @@ -993,7 +999,7 @@ in the body, while for other variables this is not needed and often omitted. This leads to a mix of variables with and without "this.", which is inconsistent. -For |Vim9| classes the "this." prefix is always used. Also for declaring the +For |Vim9| classes the "this." prefix is always used for declared methods and variables. Simple and consistent. When looking at the code inside a class it's also directly clear which variable references are object variables and which aren't. @@ -1029,7 +1035,7 @@ Following that Vim object variables could be declared like this: > endclass Some users pointed out that this looks more like an assignment than a -declaration. Adding "var" changes that: > +declaration. Adding "var" and omitting "this." changes that: > class Point var x: number var y = 0 diff --git a/runtime/filetype.vim b/runtime/filetype.vim index 30f8a1e16d..17fe86d7b4 100644 --- a/runtime/filetype.vim +++ b/runtime/filetype.vim @@ -317,6 +317,9 @@ au BufRead,BufNewFile *.chai setf chaiscript " Chatito au BufNewFile,BufRead *.chatito setf chatito +" Chuck +au BufNewFile,BufRead *.ck setf chuck + " Comshare Dimension Definition Language au BufNewFile,BufRead *.cdl setf cdl @@ -619,8 +622,12 @@ au BufNewFile,BufRead *.intr setf dylanintr " Dylan au BufNewFile,BufRead *.dylan setf dylan -" Microsoft Module Definition -au BufNewFile,BufRead *.def setf def +" Microsoft Module Definition or Modula-2 +au BufNewFile,BufRead *.def call dist#ft#FTdef() + +if has("fname_case") + au BufNewFile,BufRead *.DEF setf modula2 +endif " Dracula au BufNewFile,BufRead *.drac,*.drc,*lvs,*lpe setf dracula @@ -1237,6 +1244,9 @@ au BufNewFile,BufRead *.lua setf lua " Luau au BufNewFile,BufRead *.luau setf luau +" Luau config +au BufNewFile,BufRead .luaurc setf jsonc + " Luacheck au BufNewFile,BufRead .luacheckrc setf lua @@ -1339,9 +1349,6 @@ au BufNewFile,BufRead *.mmp setf mmp " ABB Rapid, Modula-2, Modsim III or LambdaProlog au BufNewFile,BufRead *.mod\c call dist#ft#FTmod() -" Modula-2 (.md removed in favor of Markdown, see dist#ft#FTmod for *.MOD) -au BufNewFile,BufRead *.m2,*.DEF,*.mi setf modula2 - " Modula-3 (.m3, .i3, .mg, .ig) au BufNewFile,BufRead *.[mi][3g] setf modula3 diff --git a/runtime/ftplugin/aap.vim b/runtime/ftplugin/aap.vim index df839c99ae..cd7e2a425e 100644 --- a/runtime/ftplugin/aap.vim +++ b/runtime/ftplugin/aap.vim @@ -1,7 +1,7 @@ " Vim filetype plugin file " Language: Aap recipe " Maintainer: The Vim Project -" Last Change: 2023 Aug 10 +" Last Change: 2024 Jan 14 " Former Maintainer: Bram Moolenaar " Only do this when not done yet for this buffer @@ -28,6 +28,11 @@ setlocal commentstring=#\ %s setlocal expandtab if (has("gui_win32") || has("gui_gtk")) && !exists("b:browsefilter") - let b:browsefilter = "Aap Recipe Files (*.aap)\t*.aap\nAll Files (*.*)\t*.*\n" + let b:browsefilter = "Aap Recipe Files (*.aap)\t*.aap\n" + if has("win32") + let b:browsefilter ..= "All Files (*.*)\t*\n" + else + let b:browsefilter ..= "All Files (*)\t*\n" + endif let b:undo_ftplugin ..= " | unlet! b:browsefilter" endif diff --git a/runtime/ftplugin/abap.vim b/runtime/ftplugin/abap.vim index 61db8093fb..8b2040e5aa 100644 --- a/runtime/ftplugin/abap.vim +++ b/runtime/ftplugin/abap.vim @@ -3,7 +3,8 @@ " Author: Steven Oliver " Copyright: Copyright (c) 2013 Steven Oliver " License: You may redistribute this under the same terms as Vim itself -" Last Change: 2023 Aug 28 by Vim Project (undo_ftplugin) +" Last Change: 2023 Aug 28 by Vim Project (undo_ftplugin) +" 2024 Jan 14 by Vim Project (browsefilter) " -------------------------------------------------------------------------- " Only do this when not done yet for this buffer @@ -21,10 +22,14 @@ setlocal suffixesadd=.abap let b:undo_ftplugin = "setl sts< sua< sw<" " Windows allows you to filter the open file dialog -if has("gui_win32") && !exists("b:browsefilter") - let b:browsefilter = "ABAP Source Files (*.abap)\t*.abap\n" . - \ "All Files (*.*)\t*.*\n" - let b:undo_ftplugin .= " | unlet! b:browsefilter" +if (has("gui_win32") || has("gui_gtk")) && !exists("b:browsefilter") + let b:browsefilter = "ABAP Source Files (*.abap)\t*.abap\n" + if has("win32") + let b:browsefilter ..= "All Files (*.*)\t*\n" + else + let b:browsefilter ..= "All Files (*)\t*\n" + endif + let b:undo_ftplugin ..= " | unlet! b:browsefilter" endif let &cpo = s:cpo_save diff --git a/runtime/ftplugin/abaqus.vim b/runtime/ftplugin/abaqus.vim index 5931cd921d..c16e7b032e 100644 --- a/runtime/ftplugin/abaqus.vim +++ b/runtime/ftplugin/abaqus.vim @@ -2,6 +2,7 @@ " Language: Abaqus finite element input file (www.abaqus.com) " Maintainer: Carl Osterwisch " Last Change: 2022 Oct 08 +" 2024 Jan 14 by Vim Project (browsefilter) " Only do this when not done yet for this buffer if exists("b:did_ftplugin") | finish | endif @@ -49,8 +50,12 @@ endif if (has("gui_win32") || has("gui_gtk")) && !exists("b:browsefilter") let b:browsefilter = "Abaqus Input Files (*.inp *.inc)\t*.inp;*.inc\n" . \ "Abaqus Results (*.dat)\t*.dat\n" . - \ "Abaqus Messages (*.pre *.msg *.sta)\t*.pre;*.msg;*.sta\n" . - \ "All Files (*.*)\t*.*\n" + \ "Abaqus Messages (*.pre, *.msg, *.sta)\t*.pre;*.msg;*.sta\n" + if has("win32") + let b:browsefilter .= "All Files (*.*)\t*\n" + else + let b:browsefilter .= "All Files (*)\t*\n" + endif let b:undo_ftplugin .= "|unlet! b:browsefilter" endif diff --git a/runtime/ftplugin/ant.vim b/runtime/ftplugin/ant.vim index aee07ca4b9..65e01a1a76 100644 --- a/runtime/ftplugin/ant.vim +++ b/runtime/ftplugin/ant.vim @@ -1,10 +1,11 @@ " Vim filetype plugin file -" Language: ant +" Language: ant " " This runtime file is looking for a new maintainer. " " Former maintainer: Dan Sharp -" Last Changed: 20 Jan 2009 +" Last Change: 2009 Jan 20 +" 2024 Jan 14 by Vim Project (browsefilter) if exists("b:did_ftplugin") | finish | endif @@ -15,8 +16,12 @@ set cpo-=C " Define some defaults in case the included ftplugins don't set them. let s:undo_ftplugin = "" -let s:browsefilter = "XML Files (*.xml)\t*.xml\n" . - \ "All Files (*.*)\t*.*\n" +let s:browsefilter = "XML Files (*.xml)\t*.xml\n" +if has("win32") + let s:browsefilter .= "All Files (*.*)\t*\n" +else + let s:browsefilter .= "All Files (*)\t*\n" +endif runtime! ftplugin/xml.vim ftplugin/xml_*.vim ftplugin/xml/*.vim let b:did_ftplugin = 1 @@ -30,7 +35,7 @@ if exists("b:browsefilter") endif " Change the :browse e filter to primarily show Ant-related files. -if has("gui_win32") +if (has("gui_win32") || has("gui_gtk")) && !exists("b:browsefilter") let b:browsefilter = "Build Files (build.xml)\tbuild.xml\n" . \ "Java Files (*.java)\t*.java\n" . \ "Properties Files (*.prop*)\t*.prop*\n" . diff --git a/runtime/ftplugin/aspvbs.vim b/runtime/ftplugin/aspvbs.vim index 70a130d287..6979bb8f84 100644 --- a/runtime/ftplugin/aspvbs.vim +++ b/runtime/ftplugin/aspvbs.vim @@ -1,10 +1,11 @@ " Vim filetype plugin file -" Language: aspvbs +" Language: aspvbs " " This runtime file is looking for a new maintainer. " " Former maintainer: Dan Sharp -" Last Changed: 20 Jan 2009 +" Last Change: 2009 Jan 20 +" 2024 Jan 14 by Vim Project (browsefilter) if exists("b:did_ftplugin") | finish | endif @@ -15,8 +16,12 @@ set cpo-=C " Define some defaults in case the included ftplugins don't set them. let s:undo_ftplugin = "" -let s:browsefilter = "HTML Files (*.html, *.htm)\t*.htm*\n" . - \ "All Files (*.*)\t*.*\n" +let s:browsefilter = "HTML Files (*.html, *.htm)\t*.htm*\n" +if has("win32") + let s:browsefilter .= "All Files (*.*)\t*\n" +else + let s:browsefilter .= "All Files (*)\t*\n" +endif let s:match_words = "" runtime! ftplugin/html.vim ftplugin/html_*.vim ftplugin/html/*.vim @@ -51,7 +56,7 @@ if exists("loaded_matchit") endif " Change the :browse e filter to primarily show ASP-related files. -if has("gui_win32") +if (has("gui_win32") || has("gui_gtk")) && !exists("b:browsefilter") let b:browsefilter="ASP Files (*.asp)\t*.asp\n" . s:browsefilter endif diff --git a/runtime/ftplugin/awk.vim b/runtime/ftplugin/awk.vim index 40fe304cf4..bcd772350a 100644 --- a/runtime/ftplugin/awk.vim +++ b/runtime/ftplugin/awk.vim @@ -2,7 +2,7 @@ " Language: awk, nawk, gawk, mawk " Maintainer: Doug Kearns " Previous Maintainer: Antonio Colombo -" Last Change: 2020 Sep 28 +" Last Change: 2024 Jan 14 " This plugin was prepared by Mark Sikora " This plugin was updated as proposed by Doug Kearns @@ -25,8 +25,7 @@ setlocal formatoptions-=t formatoptions+=croql setlocal define=function setlocal suffixesadd+=.awk -let b:undo_ftplugin = "setl fo< com< cms< def< sua<" . - \ " | unlet! b:browsefilter" +let b:undo_ftplugin = "setl fo< com< cms< def< sua<" " TODO: set this in scripts.vim? if exists("g:awk_is_gawk") @@ -49,8 +48,13 @@ if exists("g:awk_is_gawk") endif if (has("gui_win32") || has("gui_gtk")) && !exists("b:browsefilter") - let b:browsefilter = "Awk Source Files (*.awk,*.gawk)\t*.awk;*.gawk\n" . - \ "All Files (*.*)\t*.*\n" + let b:browsefilter = "Awk Source Files (*.awk, *.gawk)\t*.awk;*.gawk\n" + if has("win32") + let b:browsefilter .= "All Files (*.*)\t*\n" + else + let b:browsefilter .= "All Files (*)\t*\n" + endif + let b:undo_ftplugin .= " | unlet! b:browsefilter" endif let &cpo = s:cpo_save diff --git a/runtime/ftplugin/basic.vim b/runtime/ftplugin/basic.vim index 4399fbf3ad..32f713b43e 100644 --- a/runtime/ftplugin/basic.vim +++ b/runtime/ftplugin/basic.vim @@ -1,7 +1,7 @@ " Vim filetype plugin file " Language: BASIC (QuickBASIC 4.5) " Maintainer: Doug Kearns -" Last Change: 2022 Jun 22 +" Last Change: 2024 Jan 14 if exists("b:did_ftplugin") finish @@ -45,8 +45,12 @@ endif if (has("gui_win32") || has("gui_gtk")) && !exists("b:browsefilter") let b:browsefilter = "BASIC Source Files (*.bas)\t*.bas\n" .. - \ "BASIC Include Files (*.bi, *.bm)\t*.bi;*.bm\n" .. - \ "All Files (*.*)\t*.*\n" + \ "BASIC Include Files (*.bi, *.bm)\t*.bi;*.bm\n" + if has("win32") + let b:browsefilter ..= "All Files (*.*)\t*\n" + else + let b:browsefilter ..= "All Files (*)\t*\n" + endif let b:basic_set_browsefilter = 1 let b:undo_ftplugin ..= " | unlet! b:browsefilter b:basic_set_browsefilter" endif diff --git a/runtime/ftplugin/c.vim b/runtime/ftplugin/c.vim index 4ddc4a5392..e2eebc5492 100644 --- a/runtime/ftplugin/c.vim +++ b/runtime/ftplugin/c.vim @@ -1,7 +1,7 @@ " Vim filetype plugin file " Language: C " Maintainer: The Vim Project -" Last Change: 2023 Aug 10 +" Last Change: 2023 Aug 22 " Former Maintainer: Bram Moolenaar " Only do this when not done yet for this buffer @@ -48,24 +48,26 @@ if !exists("b:match_words") let b:undo_ftplugin ..= " | unlet! b:match_skip b:match_words" endif -" Win32 can filter files in the browse dialog +" Win32 and GTK can filter files in the browse dialog if (has("gui_win32") || has("gui_gtk")) && !exists("b:browsefilter") if &ft == "cpp" - let b:browsefilter = "C++ Source Files (*.cpp *.c++)\t*.cpp;*.c++\n" . - \ "C Header Files (*.h)\t*.h\n" . - \ "C Source Files (*.c)\t*.c\n" . - \ "All Files (*.*)\t*.*\n" + let b:browsefilter = "C++ Source Files (*.cpp, *.c++)\t*.cpp;*.c++\n" .. + \ "C Header Files (*.h)\t*.h\n" .. + \ "C Source Files (*.c)\t*.c\n" elseif &ft == "ch" - let b:browsefilter = "Ch Source Files (*.ch *.chf)\t*.ch;*.chf\n" . - \ "C Header Files (*.h)\t*.h\n" . - \ "C Source Files (*.c)\t*.c\n" . - \ "All Files (*.*)\t*.*\n" + let b:browsefilter = "Ch Source Files (*.ch, *.chf)\t*.ch;*.chf\n" .. + \ "C Header Files (*.h)\t*.h\n" .. + \ "C Source Files (*.c)\t*.c\n" else - let b:browsefilter = "C Source Files (*.c)\t*.c\n" . - \ "C Header Files (*.h)\t*.h\n" . - \ "Ch Source Files (*.ch *.chf)\t*.ch;*.chf\n" . - \ "C++ Source Files (*.cpp *.c++)\t*.cpp;*.c++\n" . - \ "All Files (*.*)\t*.*\n" + let b:browsefilter = "C Source Files (*.c)\t*.c\n" .. + \ "C Header Files (*.h)\t*.h\n" .. + \ "Ch Source Files (*.ch, *.chf)\t*.ch;*.chf\n" .. + \ "C++ Source Files (*.cpp, *.c++)\t*.cpp;*.c++\n" + endif + if has("win32") + let b:browsefilter ..= "All Files (*.*)\t*\n" + else + let b:browsefilter ..= "All Files (*)\t*\n" endif let b:undo_ftplugin ..= " | unlet! b:browsefilter" endif diff --git a/runtime/ftplugin/clojure.vim b/runtime/ftplugin/clojure.vim index c922d75699..4da7554d85 100644 --- a/runtime/ftplugin/clojure.vim +++ b/runtime/ftplugin/clojure.vim @@ -6,6 +6,7 @@ " URL: https://github.com/clojure-vim/clojure.vim " License: Vim (see :h license) " Last Change: 2022-03-24 +" 2024 Jan 14 by Vim Project (browsefilter) if exists("b:did_ftplugin") finish @@ -66,10 +67,14 @@ endif " Filter files in the browse dialog if (has("gui_win32") || has("gui_gtk")) && !exists("b:browsefilter") - let b:browsefilter = "All Files\t*\n" . - \ "Clojure Files\t*.clj;*.cljc;*.cljs;*.cljx\n" . + let b:browsefilter = "Clojure Files\t*.clj;*.cljc;*.cljs;*.cljx\n" . \ "EDN Files\t*.edn\n" . \ "Java Files\t*.java\n" + if has("win32") + let b:browsefilter .= "All Files (*.*)\t*\n" + else + let b:browsefilter .= "All Files (*)\t*\n" + endif let b:undo_ftplugin .= ' | unlet! b:browsefilter' endif diff --git a/runtime/ftplugin/cobol.vim b/runtime/ftplugin/cobol.vim index ec1e95456d..5e52702fd5 100644 --- a/runtime/ftplugin/cobol.vim +++ b/runtime/ftplugin/cobol.vim @@ -3,6 +3,7 @@ " Maintainer: Ankit Jain " (formerly Tim Pope ) " Last Update: By Ankit Jain (add gtk support) on 15.08.2020 +" 2024 Jan 14 by Vim Project (browsefilter) " Insert mode mappings: " Normal mode mappings: < > << >> [[ ]] [] ][ @@ -39,8 +40,12 @@ endif " add gtk support if (has("gui_win32") || has("gui_gtk")) && !exists("b:browsefilter") - let b:browsefilter = "COBOL Source Files (*.cbl, *.cob)\t*.cbl;*.cob;*.lib\n". - \ "All Files (*.*)\t*.*\n" + let b:browsefilter = "COBOL Source Files (*.cbl, *.cob)\t*.cbl;*.cob;*.lib\n" + if has("win32") + let b:browsefilter .= "All Files (*.*)\t*\n" + else + let b:browsefilter .= "All Files (*)\t*\n" + endif endif let b:undo_ftplugin = "setlocal com< cms< fo< et< tw<" . diff --git a/runtime/ftplugin/config.vim b/runtime/ftplugin/config.vim index 73136cbc66..595fc657b9 100644 --- a/runtime/ftplugin/config.vim +++ b/runtime/ftplugin/config.vim @@ -1,10 +1,11 @@ " Vim filetype plugin file -" Language: config +" Language: config " " This runtime file is looking for a new maintainer. " " Former maintainer: Dan Sharp -" Last Changed: 20 Jan 2009 +" Last Change: 2009 Jan 20 +" 2024 Jan 14 by Vim Project (browsefilter) if exists("b:did_ftplugin") | finish | endif @@ -15,8 +16,12 @@ set cpo-=C " Define some defaults in case the included ftplugins don't set them. let s:undo_ftplugin = "" -let s:browsefilter = "Bourne Shell Files (*.sh)\t*.sh\n" . - \ "All Files (*.*)\t*.*\n" +let s:browsefilter = "Bourne Shell Files (*.sh)\t*.sh\n" +if has("win32") + let s:browsefilter .= "All Files (*.*)\t*\n" +else + let s:browsefilter .= "All Files (*)\t*\n" +endif let s:match_words = "" runtime! ftplugin/sh.vim ftplugin/sh_*.vim ftplugin/sh/*.vim @@ -31,7 +36,7 @@ if exists("b:browsefilter") endif " Change the :browse e filter to primarily show configure-related files. -if has("gui_win32") +if (has("gui_win32") || has("gui_gtk")) && !exists("b:browsefilter") let b:browsefilter="Configure Scripts (configure.*, config.*)\tconfigure*;config.*\n" . \ s:browsefilter endif diff --git a/runtime/ftplugin/cs.vim b/runtime/ftplugin/cs.vim index 0734d11d22..ada71315e1 100644 --- a/runtime/ftplugin/cs.vim +++ b/runtime/ftplugin/cs.vim @@ -3,6 +3,7 @@ " Maintainer: Nick Jensen " Former Maintainer: Johannes Zellner " Last Change: 2022-11-16 +" 2024 Jan 14 by Vim Project (browsefilter) " License: Vim (see :h license) " Repository: https://github.com/nickspoons/vim-cs @@ -31,10 +32,14 @@ if exists('loaded_matchit') && !exists('b:match_words') endif if (has('gui_win32') || has('gui_gtk')) && !exists('b:browsefilter') - let b:browsefilter = "C# Source Files (*.cs *.csx)\t*.cs;*.csx\n" . + let b:browsefilter = "C# Source Files (*.cs, *.csx)\t*.cs;*.csx\n" . \ "C# Project Files (*.csproj)\t*.csproj\n" . - \ "Visual Studio Solution Files (*.sln)\t*.sln\n" . - \ "All Files (*.*)\t*.*\n" + \ "Visual Studio Solution Files (*.sln)\t*.sln\n" + if has("win32") + let b:browsefilter ..= "All Files (*.*)\t*\n" + else + let b:browsefilter ..= "All Files (*)\t*\n" + endif let b:undo_ftplugin .= ' | unlet! b:browsefilter' endif diff --git a/runtime/ftplugin/csh.vim b/runtime/ftplugin/csh.vim index 2feec57bb2..a22bee3279 100644 --- a/runtime/ftplugin/csh.vim +++ b/runtime/ftplugin/csh.vim @@ -3,7 +3,7 @@ " Maintainer: Doug Kearns " Previous Maintainer: Dan Sharp " Contributor: Johannes Zellner -" Last Change: 2023 Oct 09 +" Last Change: 2024 Jan 14 if exists("b:did_ftplugin") finish @@ -44,8 +44,12 @@ if exists("loaded_matchit") && !exists("b:match_words") endif if (has("gui_win32") || has("gui_gtk")) && !exists("b:browsefilter") - let b:browsefilter = "csh Scripts (*.csh)\t*.csh\n" .. - \ "All Files (*.*)\t*.*\n" + let b:browsefilter = "csh Scripts (*.csh)\t*.csh\n" + if has("win32") + let b:browsefilter ..= "All Files (*.*)\t*\n" + else + let b:browsefilter ..= "All Files (*)\t*\n" + endif let b:csh_set_browsefilter = 1 let b:undo_ftplugin ..= " | unlet! b:browsefilter b:csh_set_browsefilter" endif diff --git a/runtime/ftplugin/diff.vim b/runtime/ftplugin/diff.vim index f2a0820be9..2daa48aeb4 100644 --- a/runtime/ftplugin/diff.vim +++ b/runtime/ftplugin/diff.vim @@ -1,7 +1,7 @@ " Vim filetype plugin file " Language: Diff " Maintainer: The Vim Project -" Last Change: 2023 Aug 10 +" Last Change: 2023 Aug 22 " Former Maintainer: Bram Moolenaar " Only do this when not done yet for this buffer @@ -19,6 +19,11 @@ setlocal nomodeline let &l:commentstring = "# %s" if (has("gui_win32") || has("gui_gtk")) && !exists("b:browsefilter") - let b:browsefilter = "Diff Files (*.diff)\t*.diff\nPatch Files (*.patch)\t*.h\nAll Files (*.*)\t*.*\n" + let b:browsefilter = "Diff Files (*.diff)\t*.diff\nPatch Files (*.patch)\t*.h\n" + if has("win32") + let b:browsefilter ..= "All Files (*.*)\t*\n" + else + let b:browsefilter ..= "All Files (*)\t*\n" + endif let b:undo_ftplugin ..= " | unlet! b:browsefilter" endif diff --git a/runtime/ftplugin/dosbatch.vim b/runtime/ftplugin/dosbatch.vim index f02f26b1fd..5001cf68bd 100644 --- a/runtime/ftplugin/dosbatch.vim +++ b/runtime/ftplugin/dosbatch.vim @@ -2,6 +2,7 @@ " Language: MS-DOS/Windows .bat files " Maintainer: Mike Williams " Last Change: 12th February 2023 +" 2024 Jan 14 by Vim Project (browsefilter) " " Options Flags: " dosbatch_colons_comment - any value to treat :: as comment line @@ -37,12 +38,17 @@ if executable('help.exe') endif " Define patterns for the browse file filter -if has("gui_win32") && !exists("b:browsefilter") - let b:browsefilter = "DOS Batch Files (*.bat, *.cmd)\t*.bat;*.cmd\nAll Files (*.*)\t*.*\n" +if (has("gui_win32") || has("gui_gtk")) && !exists("b:browsefilter") + let b:browsefilter = "DOS Batch Files (*.bat, *.cmd)\t*.bat;*.cmd\n" + if has("win32") + let b:browsefilter ..= "All Files (*.*)\t*\n" + else + let b:browsefilter ..= "All Files (*)\t*\n" + endif endif let b:undo_ftplugin = "setlocal comments< formatoptions< keywordprg<" - \ . "| unlet! b:browsefiler" + \ . "| unlet! b:browsefilter" let &cpo = s:cpo_save unlet s:cpo_save diff --git a/runtime/ftplugin/dtd.vim b/runtime/ftplugin/dtd.vim index a046118c70..bea8c5c18a 100644 --- a/runtime/ftplugin/dtd.vim +++ b/runtime/ftplugin/dtd.vim @@ -1,10 +1,11 @@ " Vim filetype plugin file -" Language: dtd +" Language: dtd " " This runtime file is looking for a new maintainer. " " Former maintainer: Dan Sharp -" Last Changed: 20 Jan 2009 +" Last Change: 2009 Jan 20 +" 2024 Jan 14 by Vim Project (browsefilter) if exists("b:did_ftplugin") | finish | endif let b:did_ftplugin = 1 @@ -27,10 +28,14 @@ if exists("loaded_matchit") endif " Change the :browse e filter to primarily show Java-related files. -if has("gui_win32") +if (has("gui_win32") || has("gui_gtk")) && !exists("b:browsefilter") let b:browsefilter="DTD Files (*.dtd)\t*.dtd\n" . - \ "XML Files (*.xml)\t*.xml\n" . - \ "All Files (*.*)\t*.*\n" + \ "XML Files (*.xml)\t*.xml\n" + if has("win32") + let b:browsefilter .= "All Files (*.*)\t*\n" + else + let b:browsefilter .= "All Files (*)\t*\n" + endif endif " Undo the stuff we changed. diff --git a/runtime/ftplugin/eiffel.vim b/runtime/ftplugin/eiffel.vim index 216fdde162..e193110cde 100644 --- a/runtime/ftplugin/eiffel.vim +++ b/runtime/ftplugin/eiffel.vim @@ -1,7 +1,7 @@ " Vim filetype plugin " Language: Eiffel " Maintainer: Doug Kearns -" Last Change: 2010 Aug 29 +" Last Change: 2024 Jan 14 if (exists("b:did_ftplugin")) finish @@ -18,8 +18,12 @@ setlocal formatoptions-=t formatoptions+=croql if (has("gui_win32") || has("gui_gtk")) && !exists("b:browsefilter") let b:browsefilter = "Eiffel Source Files (*.e)\t*.e\n" . - \ "Eiffel Control Files (*.ecf, *.ace, *.xace)\t*.ecf;*.ace;*.xace\n" . - \ "All Files (*.*)\t*.*\n" + \ "Eiffel Control Files (*.ecf, *.ace, *.xace)\t*.ecf;*.ace;*.xace\n" + if has("win32") + let b:browsefilter .= "All Files (*.*)\t*\n" + else + let b:browsefilter .= "All Files (*)\t*\n" + endif endif if exists("loaded_matchit") && !exists("b:match_words") diff --git a/runtime/ftplugin/eruby.vim b/runtime/ftplugin/eruby.vim index 893fa58d32..b5c4665d24 100644 --- a/runtime/ftplugin/eruby.vim +++ b/runtime/ftplugin/eruby.vim @@ -4,6 +4,7 @@ " URL: https://github.com/vim-ruby/vim-ruby " Release Coordinator: Doug Kearns " Last Change: 2022 May 15 +" 2024 Jan 14 by Vim Project (browsefilter) " Only do this when not done yet for this buffer if exists("b:did_ftplugin") @@ -15,7 +16,11 @@ set cpo-=C " Define some defaults in case the included ftplugins don't set them. let s:undo_ftplugin = "" -let s:browsefilter = "All Files (*.*)\t*.*\n" +if has("win32") + let s:browsefilter = "All Files (*.*)\t*\n" +else + let s:browsefilter = "All Files (*)\t*\n" +endif let s:match_words = "" if !exists("g:eruby_default_subtype") @@ -109,8 +114,8 @@ exe 'cmap