diff --git a/NEWS b/NEWS index b0ee23497..add28c93b 100644 --- a/NEWS +++ b/NEWS @@ -3,6 +3,12 @@ For full details, see the git log at: https://github.com/ksh93/ksh/tree/1.0 Any uppercase BUG_* names are modernish shell bug IDs. +2022-02-12: + +- In multibyte locales such as UTF-8, shell input is no longer corrupted when + a KEYBD trap is active. However, the KEYBD trap is not yet multibyte ready + and is now only triggered for ASCII characters (1-127) in a multibyte locale. + 2022-02-11: - On the interactive shell, tab/esc completion is no longer disabled as a side diff --git a/src/cmd/ksh93/edit/edit.c b/src/cmd/ksh93/edit/edit.c index d9933b63b..371f5a9ec 100644 --- a/src/cmd/ksh93/edit/edit.c +++ b/src/cmd/ksh93/edit/edit.c @@ -1122,7 +1122,10 @@ int ed_getchar(register Edit_t *ep,int mode) killpg(getpgrp(),SIGINT); siglongjmp(ep->e_env, UINTR); } - if(mode<=0 && sh.st.trap[SH_KEYTRAP]) + if(mode<=0 && sh.st.trap[SH_KEYTRAP] + /* workaround for : + * do not trigger KEYBD for non-ASCII in multibyte locale */ + && (CC_NATIVE!=CC_ASCII || !mbwide() || c > -128)) { ep->e_keytrap = 1; n=1; diff --git a/src/cmd/ksh93/include/version.h b/src/cmd/ksh93/include/version.h index aed2f3a41..2704d4785 100644 --- a/src/cmd/ksh93/include/version.h +++ b/src/cmd/ksh93/include/version.h @@ -21,7 +21,7 @@ #define SH_RELEASE_FORK "93u+m" /* only change if you develop a new ksh93 fork */ #define SH_RELEASE_SVER "1.0.0-beta.2" /* semantic version number: https://semver.org */ -#define SH_RELEASE_DATE "2022-02-11" /* must be in this format for $((.sh.version)) */ +#define SH_RELEASE_DATE "2022-02-12" /* must be in this format for $((.sh.version)) */ #define SH_RELEASE_CPYR "(c) 2020-2022 Contributors to ksh " SH_RELEASE_FORK /* Scripts sometimes field-split ${.sh.version}, so don't change amount of whitespace. */ diff --git a/src/cmd/ksh93/sh.1 b/src/cmd/ksh93/sh.1 index 841c28a43..61f71c2d1 100644 --- a/src/cmd/ksh93/sh.1 +++ b/src/cmd/ksh93/sh.1 @@ -9062,6 +9062,10 @@ Thus, a trap on .B CHLD won't be executed until the foreground job terminates. .PP +In locales that use a multibyte character set such as UTF-8, the +.B KEYBD +trap is only triggered for ASCII characters (1-127). +.PP It is a good idea to leave a space after the comma operator in arithmetic expressions to prevent the comma from being interpreted as the decimal point character in certain locales.