zsh-workers
 help / color / mirror / code / Atom feed
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;


  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).