From: Sven Wischnowsky <wischnow@informatik.hu-berlin.de>
To: zsh-workers@math.gatech.edu
Subject: PATCH: was Re: zsh-3.1.5-pws4. accept-and-menu-complete bug?
Date: Mon, 4 Jan 1999 10:29:22 +0100 (MET) [thread overview]
Message-ID: <199901040929.KAA09706@beta.informatik.hu-berlin.de> (raw)
In-Reply-To: "Bart Schaefer"'s message of Sun, 3 Jan 1999 18:14:36 -0800
Bart Schaefer wrote:
>
> On Dec 31, 10:58am, Andrej Borsenkow wrote:
> } Subject: zsh-3.1.5-pws4. accept-and-menu-complete bug?
> }
> } bor@itsrm2:/tools/src%> bindkey '^[^M'
> } "^[^M" accept-and-menu-complete
> } bor@itsrm2:/tools/src%> rm -rf mc-4.5.1/^@mc-4.5.3/
> } mc-4.5.1/ mc-4.5.3/
> }
> } Note this ^@ and not removed suffix instead of blank.
>
> In acceptandmenucomplete() in zle_tricky.c, there's this fragment:
>
> cs = menuend + menuinsc;
> inststrlen(" ", 1, 1);
> menuinsc = menulen = 0;
> menupos = cs;
>
> menuend is supposed to be "the end position of this string in the command
> line" and menuinsc "is the length of any suffix that has been temporarily
> added." However, at that point menuend is large enough to *include* the
> trailing slash. In 3.0.5's acceptandmenucomplete(), menuinsc is not added
> when computing cs.
>
> So I don't know if this is a general problem -- that menuend is just plain
> wrong, and anything that refers to it will be messed up -- or if that ref
> to menuinsc crept in by mistake and should be deleted (in which case the
> suffix doesn't get autoremoved), or if there's a whole lot of suffix-removal
> code that ought to be copied from 3.0.5, or what.
It seems that I forgot to test accept-and-menu-complete in the final
version of my patch, sorry.
`menuend' now points to the position where the cursor is (which may be
in the word, e.g. for completion in paths). The patch below fixes a
bug in the calculation of `menuend' in do_single() and the stuff in
acceptandmenucomplete() (positioning the cursor and removing the
suffix).
Bye
Sven
*** os/Zle/zle_tricky.c Thu Dec 17 12:20:33 1998
--- Src/Zle/zle_tricky.c Mon Jan 4 10:19:19 1999
***************
*** 408,418 ****
void
acceptandmenucomplete(void)
{
if (!menucmp) {
feep();
return;
}
! cs = menuend + menuinsc;
inststrlen(" ", 1, 1);
menuinsc = menulen = 0;
menupos = cs;
--- 408,422 ----
void
acceptandmenucomplete(void)
{
+ int sl = suffixlen[' '];
+
if (!menucmp) {
feep();
return;
}
! cs = menupos + menulen + menuinsc;
! if (sl)
! backdel(sl);
inststrlen(" ", 1, 1);
menuinsc = menulen = 0;
menupos = cs;
***************
*** 4991,5000 ****
if (m->suf) {
havesuff = 1;
menuinsc = ztrlen(m->suf);
! if (menuwe && (m->flags & CMF_REMOVE)) {
! makesuffix(menuinsc);
! if (menuinsc == 1)
! suffixlen[m->suf[0]] = 1;
}
} else {
/* There is no user-specified suffix, *
--- 4995,5008 ----
if (m->suf) {
havesuff = 1;
menuinsc = ztrlen(m->suf);
! menulen -= menuinsc;
! if (menuwe) {
! menuend += menuinsc;
! if (m->flags & CMF_REMOVE) {
! makesuffix(menuinsc);
! if (menuinsc == 1)
! suffixlen[m->suf[0]] = 1;
! }
}
} else {
/* There is no user-specified suffix, *
--
Sven Wischnowsky wischnow@informatik.hu-berlin.de
reply other threads:[~1999-01-04 9:32 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
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=199901040929.KAA09706@beta.informatik.hu-berlin.de \
--to=wischnow@informatik.hu-berlin.de \
--cc=zsh-workers@math.gatech.edu \
/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).