Mercurial > vim
view src/installman.sh @ 33914:966a1af141b0 v9.0.2157
patch 9.0.2157: Vim9: incorrectly parses :def func definitions
Commit: https://github.com/vim/vim/commit/e4a450a87ba532cbfe1c4e97cac378eaafc3ae39
Author: Christian Brabandt <cb@256bit.org>
Date: Fri Dec 8 20:57:38 2023 +0100
patch 9.0.2157: Vim9: incorrectly parses :def func definitions
Problem: Vim9: incorrectly parses :def func definitions
Solution: check for more context when parsing function args
Signed-off-by: Christian Brabandt <cb@256bit.org>
Incorrectly parses def function definitions
Vim currently allows to define the following vim9 function:
def Func(f=
)
enddef
It currently thinks a Lambda is following the `=` but it doesn't check,
that there is actually an expression following. So when such a think is
encountered, remember that an expression should be following.
If no expression is coming in the next few lines, fail parsing the
function arguments, which will Vim no longer accept such a function.
Signed-off-by: Christian Brabandt <cb@256bit.org>
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Mon, 11 Dec 2023 18:00:02 +0100 |
parents | a7b8f78dd868 |
children |
line wrap: on
line source
#! /bin/sh # installman.sh --- install or uninstall manpages for Vim # # arguments: # 1 what: "install", "uninstall" or "xxd" # 2 target directory e.g., "/usr/local/man/it/man1" # 3 language addition e.g., "" or "-it" # 4 vim location as used in manual pages e.g., "/usr/local/share/vim" # 5 runtime dir for menu.vim et al. e.g., "/usr/local/share/vim/vim81" # 6 runtime dir for global vimrc file e.g., "/usr/local/share/vim" # 7 source dir for help files e.g., "../runtime/doc" # 8 mode bits for manpages e.g., "644" # 9 vim exe name e.g., "vim" # 10 name of vimdiff exe e.g., "vimdiff" # 11 name of evim exe e.g., "evim" errstatus=0 what=$1 destdir=$2 langadd=$3 vimloc=$4 scriptloc=$5 vimrcloc=$6 helpsource=$7 manmod=$8 exename=$9 # older shells don't support ${10} shift vimdiffname=$9 shift evimname=$9 helpsubloc=$scriptloc/doc printsubloc=$scriptloc/print synsubloc=$scriptloc/syntax tutorsubloc=$scriptloc/tutor if test $what = "install" -o $what = "xxd"; then if test ! -d $destdir; then echo creating $destdir /bin/sh install-sh -c -d $destdir chmod 755 $destdir fi fi # Note: setting LC_ALL to C is required to avoid illegal byte errors from sed # on some systems. if test $what = "install"; then # vim.1 if test -r $helpsource/vim$langadd.1; then echo installing $destdir/$exename.1 LC_ALL=C sed -e s+/usr/local/lib/vim+$vimloc+ \ -e s+$vimloc/doc+$helpsubloc+ \ -e s+$vimloc/print+$printsubloc+ \ -e s+$vimloc/syntax+$synsubloc+ \ -e s+$vimloc/tutor+$tutorsubloc+ \ -e s+$vimloc/vimrc+$vimrcloc/vimrc+ \ -e s+$vimloc/gvimrc+$vimrcloc/gvimrc+ \ -e s+$vimloc/menu.vim+$scriptloc/menu.vim+ \ -e s+$vimloc/bugreport.vim+$scriptloc/bugreport.vim+ \ -e s+$vimloc/filetype.vim+$scriptloc/filetype.vim+ \ -e s+$vimloc/scripts.vim+$scriptloc/scripts.vim+ \ -e s+$vimloc/optwin.vim+$scriptloc/optwin.vim+ \ -e 's+$vimloc/\*.ps+$scriptloc/\*.ps+' \ $helpsource/vim$langadd.1 > $destdir/$exename.1 chmod $manmod $destdir/$exename.1 fi # vimtutor.1 if test -r $helpsource/vimtutor$langadd.1; then echo installing $destdir/$exename""tutor.1 LC_ALL=C sed -e s+/usr/local/lib/vim+$vimloc+ \ -e s+$vimloc/tutor+$tutorsubloc+ \ $helpsource/vimtutor$langadd.1 > $destdir/$exename""tutor.1 chmod $manmod $destdir/$exename""tutor.1 fi # vimdiff.1 if test -r $helpsource/vimdiff$langadd.1; then echo installing $destdir/$vimdiffname.1 cp $helpsource/vimdiff$langadd.1 $destdir/$vimdiffname.1 chmod $manmod $destdir/$vimdiffname.1 fi # evim.1 if test -r $helpsource/evim$langadd.1; then echo installing $destdir/$evimname.1 LC_ALL=C sed -e s+/usr/local/lib/vim+$vimloc+ \ -e s+$vimloc/evim.vim+$scriptloc/evim.vim+ \ $helpsource/evim$langadd.1 > $destdir/$evimname.1 chmod $manmod $destdir/$evimname.1 fi fi if test $what = "uninstall"; then echo Checking for Vim manual pages in $destdir... if test -r $destdir/$exename.1; then echo deleting $destdir/$exename.1 rm -f $destdir/$exename.1 fi if test -r $destdir/$exename""tutor.1; then echo deleting $destdir/$exename""tutor.1 rm -f $destdir/$exename""tutor.1 fi if test -r $destdir/$vimdiffname.1; then echo deleting $destdir/$vimdiffname.1 rm -f $destdir/$vimdiffname.1 fi if test -r $destdir/$evimname.1; then echo deleting $destdir/$evimname.1 rm -f $destdir/$evimname.1 fi fi if test $what = "xxd" -a -r "$helpsource/xxd${langadd}.1"; then echo installing $destdir/xxd.1 cp $helpsource/xxd$langadd.1 $destdir/xxd.1 chmod $manmod $destdir/xxd.1 fi exit $errstatus # vim: set sw=3 sts=3 :