From: Andrey Borzenkov <arvidjaar@mail.ru>
To: zsh-workers@sunsite.dk
Subject: Re: Strange _values completion on accept-and-menu-complete and menu selection
Date: Sun, 12 Dec 2004 19:15:33 +0300 [thread overview]
Message-ID: <200412121915.34004.arvidjaar@mail.ru> (raw)
In-Reply-To: <Pine.LNX.4.61.0412111229070.16206@toltec.zanshin.com>
On Sunday 12 December 2004 00:05, Bart Schaefer wrote:
> A fix seems to be something in the direction of this pseudo-patch (do NOT
> apply it as-is) to compresult.c, but I don't know how to get the boolean
> value for "we are not completing values from compvalues" at this location.
>
I already got a prototype patch for it when I accidentally hit a-a-i-n-h and
voila - it did what I expected from a-a-m-c (except that a-a-m-c stays on the
same word while a-a-i-n-h starts from scratch - because with a-a-i-n-h it
actually starts new completion every time).
I attach prototype patch - it adds compstate element that tells accept_last to
skip suffix removal. It can be used in more general case than just _values -
what I am not sure how and when this is to be set. I.e. using this patch
following function now "correctly" works for a-a m-c:
function _foo () {
compstate[stayinword]=1
compset -P '*,'
compadd -qS , ${(k)compstate}
}
compdef _foo foo
regards
-andrey
Index: Src/Zle/complete.c
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/Zle/complete.c,v
retrieving revision 1.27
diff -u -p -r1.27 complete.c
--- Src/Zle/complete.c 7 Dec 2004 16:55:11 -0000 1.27
+++ Src/Zle/complete.c 12 Dec 2004 16:13:03 -0000
@@ -38,7 +38,8 @@ zlong compcurrent,
complistmax;
/**/
zlong complistlines,
- compignored;
+ compignored,
+ compstayinword;
/**/
mod_export
@@ -1018,6 +1019,7 @@ static struct compparam compkparams[] =
{ "list_lines", PM_INTEGER | PM_READONLY, NULL, GSU(listlines_gsu) },
{ "all_quotes", PM_SCALAR | PM_READONLY, VAL(compqstack), NULL },
{ "ignored", PM_INTEGER | PM_READONLY, VAL(compignored), NULL },
+ { "stayinword", PM_INTEGER, VAL(compstayinword), NULL },
{ NULL, 0, NULL, NULL }
};
Index: Src/Zle/compresult.c
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/Zle/compresult.c,v
retrieving revision 1.52
diff -u -p -r1.52 compresult.c
--- Src/Zle/compresult.c 12 Jul 2004 10:05:52 -0000 1.52
+++ Src/Zle/compresult.c 12 Dec 2004 16:13:04 -0000
@@ -1243,14 +1243,16 @@ accept_last(void)
int l;
cs = minfo.pos + minfo.len + minfo.insc;
- iremovesuffix(' ', 1);
+ if (!compstayinword)
+ iremovesuffix(' ', 1);
l = cs;
cs = minfo.pos + minfo.len + minfo.insc - (*(minfo.cur))->qisl;
if (cs < l)
foredel(l - cs);
else if (cs > ll)
cs = ll;
- inststrlen(" ", 1, 1);
+ if (!compstayinword)
+ inststrlen(" ", 1, 1);
minfo.insc = minfo.len = 0;
minfo.pos = cs;
minfo.we = 1;
next prev parent reply other threads:[~2004-12-12 16:16 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-12-11 10:11 Andrey Borzenkov
2004-12-11 21:05 ` Bart Schaefer
2004-12-12 16:15 ` Andrey Borzenkov [this message]
2004-12-12 17:51 ` Bart Schaefer
2004-12-12 21:06 ` Andrey Borzenkov
2004-12-12 21:44 ` Bart Schaefer
2004-12-13 10:43 ` Peter Stephenson
2004-12-25 17:32 ` Andrey Borzenkov
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=200412121915.34004.arvidjaar@mail.ru \
--to=arvidjaar@mail.ru \
--cc=zsh-workers@sunsite.dk \
/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).