From: Jun T <takimoto-j@kba.biglobe.ne.jp>
To: zsh-workers@zsh.org
Subject: Re: [PATCH] out of memory error after "edit-command-line"
Date: Thu, 27 Oct 2022 14:34:11 +0900 [thread overview]
Message-ID: <2D734D59-80DF-464C-8536-7301E5C53D1F@kba.biglobe.ne.jp> (raw)
In-Reply-To: <16F15191-2C2A-4292-8DC7-7134C024E417@kba.biglobe.ne.jp>
> 2022/10/19 18:12, Jun T <takimoto-j@kba.biglobe.ne.jp> wrote:
>
> Instead of fixing this problem, I feel it is better to do
> nothing for 'setopt localoptions emacs'.
Here is a revised patch.
Do nothing for EMACS/VI options, and add a few comments in the
description of these options in options.yo.
diff --git a/Doc/Zsh/options.yo b/Doc/Zsh/options.yo
index bf73664c9..445052617 100644
--- a/Doc/Zsh/options.yo
+++ b/Doc/Zsh/options.yo
@@ -2550,10 +2550,12 @@ pindex(NO_EMACS)
pindex(NOEMACS)
item(tt(EMACS))(
If ZLE is loaded, turning on this option has the equivalent effect
-of `tt(bindkey -e)'. In addition, the VI option is unset.
+of `tt(bindkey -e)'. In addition, the tt(VI) option is unset.
Turning it off has no effect. The option setting is
-not guaranteed to reflect the current keymap. This option is
-provided for compatibility; tt(bindkey) is the recommended interface.
+not guaranteed to reflect the current keymap, and the tt(LOCALOPTIONS)
+option does not work correctly. This option is provided only for
+compatibility, and its use is highly discouraged. tt(bindkey) is the
+recommended interface.
)
pindex(OVERSTRIKE)
pindex(NO_OVERSTRIKE)
@@ -2582,10 +2584,12 @@ pindex(NO_VI)
pindex(NOVI)
item(tt(VI))(
If ZLE is loaded, turning on this option has the equivalent effect
-of `tt(bindkey -v)'. In addition, the EMACS option is unset.
+of `tt(bindkey -v)'. In addition, the tt(EMACS) option is unset.
Turning it off has no effect. The option setting is
-not guaranteed to reflect the current keymap. This option is
-provided for compatibility; tt(bindkey) is the recommended interface.
+not guaranteed to reflect the current keymap, and the tt(LOCALOPTIONS)
+option does not work correctly. This option is provided only for
+compatibility, and its use is highly discouraged. tt(bindkey) is the
+recommended interface.
)
pindex(ZLE)
pindex(NO_ZLE)
diff --git a/Src/exec.c b/Src/exec.c
index f2911807c..c8bcf4ee5 100644
--- a/Src/exec.c
+++ b/Src/exec.c
@@ -5961,11 +5961,23 @@ doshfunc(Shfunc shfunc, LinkList doshargs, int noreturnval)
emulation = funcsave->emulation;
sticky = funcsave->sticky;
} else if (isset(LOCALOPTIONS)) {
+ /* we need to call inittyptab() if these options change */
+ int init_typtab =
+#ifdef MULTIBYTE_SUPPORT
+ funcsave->opts[MULTIBYTE] != opts[MULTIBYTE] ||
+#endif
+ funcsave->opts[BANGHIST] != opts[BANGHIST] ||
+ funcsave->opts[SHINSTDIN] != opts[SHINSTDIN];
+ /* take care of SUNKEYBOARDHACK but not of EMACS/VI */
+ if (funcsave->opts[SUNKEYBOARDHACK] != opts[SUNKEYBOARDHACK])
+ keyboardhackchar = funcsave->opts[SUNKEYBOARDHACK] ? '`' : '\0';
/* restore all shell options except PRIVILEGED and RESTRICTED */
funcsave->opts[PRIVILEGED] = opts[PRIVILEGED];
funcsave->opts[RESTRICTED] = opts[RESTRICTED];
memcpy(opts, funcsave->opts, sizeof(opts));
emulation = funcsave->emulation;
+ if (init_typtab)
+ inittyptab();
} else {
/* just restore a couple. */
opts[XTRACE] = funcsave->opts[XTRACE];
diff --git a/Src/options.c b/Src/options.c
index a1fe918fc..a994b563e 100644
--- a/Src/options.c
+++ b/Src/options.c
@@ -904,7 +904,11 @@ dosetopt(int optno, int value, int force, char *new_opts)
keyboardhackchar = (value ? '`' : '\0');
}
new_opts[optno] = value;
- if (optno == BANGHIST || optno == SHINSTDIN)
+ if (
+#ifdef MULTIBYTE_SUPPORT
+ optno == MULTIBYTE ||
+#endif
+ optno == BANGHIST || optno == SHINSTDIN)
inittyptab();
return 0;
}
prev parent reply other threads:[~2022-10-27 5:34 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-08-02 3:47 Jim
2022-08-12 15:33 ` Jim
2022-08-12 20:18 ` Bart Schaefer
2022-08-13 0:10 ` [PATCH] " Bart Schaefer
2022-10-18 15:07 ` [PATCH] " Jun. T
2022-10-18 20:08 ` Bart Schaefer
2022-10-19 9:12 ` Jun T
2022-10-27 5:34 ` Jun T [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=2D734D59-80DF-464C-8536-7301E5C53D1F@kba.biglobe.ne.jp \
--to=takimoto-j@kba.biglobe.ne.jp \
--cc=zsh-workers@zsh.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.vuxu.org/mirror/zsh/
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).