zsh-workers
 help / color / mirror / code / Atom feed
From: "Bart Schaefer" <schaefer@candle.brasslantern.com>
To: Huy Le <huyle@chop.ugcs.caltech.edu>, zsh-workers@math.gatech.edu
Subject: Re: Remaining zsh3.0-pre2 bugs
Date: Sun, 7 Jul 1996 00:07:57 -0700	[thread overview]
Message-ID: <960707000759.ZM2589@candle.brasslantern.com> (raw)
In-Reply-To: "Bart Schaefer" <schaefer@candle.brasslantern.com> "Re: Remaining zsh3.0-pre2 bugs" (Jul  6, 10:53pm)

On Jul 6, 10:53pm, Bart Schaefer wrote:
} Subject: Re: Remaining zsh3.0-pre2 bugs
}
} On Jul 6,  3:59pm, Huy Le wrote:
} } Subject: Remaining zsh3.0-pre2 bugs
} }
} } 1. History bug:
} } The magic-space binding seems to mess up the history of
} } a line with a quoted argument that spawns two lines.
} 
} This is not a magic-space bug, specifically.  It happens any time
} doexpandhist() is called on the second or later line of a command
} that spans multiple lines.
} 
} zsh[85] echo 'a
} > b'<TAB><RET>	<-- TAB moves cursor to beginning of line, then RET
} a
} b
} zsh[85] history -4	<-- Note event number in prompt hasn't changed!
}    81   c
}    82  history
}    83   co
}    84  history -2
}    85  history -4
} 
} I think the problem is with the "if (!err)" block near the end of
} doexpandhist(), because it has a comment about resetting the cursor
} to the beginning of line for vi mode.  However, I don't know enough
} about how history works to want to mess with it.

Further investigation indicates that docomplete() itself is also
broken, in this section:

    /* If we are completing in a multi-line buffer (which was not taken *
     * from the history), we have to prepend the stuff saved in chline  *
     * to the contents of line.                                         */

    if (!isfirstln && chline != NULL) {
	char *p, *q;

	/* .... */
    }
    else
	ol = NULL;

I think the problem has to do with metafication of the stuff that was
in chline; specifically, here:

        /* Finally remove quoted newlines and replace non-quoted newlines *
         * with semicolons.  This second thing isn't really correct (e.g. *
         * if the command separated by the newlines were actually         *
         * connected with a pipe), but the effect in the completion code  *
         * is the same.                                                   */
        for (p = (char *)line; *p; p++)
            if (*p == '\n')
                if (p > (char *) line && p[-1] == '\\')
                    p[-1] = *p = ' ';
                else
                    *p = ';';

When that loop starts, line is "echo 'a\nb'" and after the loop, it's
"echo 'a;b'" which I'm pretty certain is wrong.  However, I don't know
what to do about it.

-- 
Bart Schaefer                             Brass Lantern Enterprises
http://www.well.com/user/barts            http://www.nbn.com/people/lantern

New male in /home/schaefer:
>N  2 Justin William Schaefer  Sat May 11 03:43  53/4040  "Happy Birthday"



  reply	other threads:[~1996-07-07  7:12 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
1996-07-06 22:59 Huy Le
1996-07-07  5:29 ` Bart Schaefer
1996-07-07  5:53 ` Bart Schaefer
1996-07-07  7:07   ` Bart Schaefer [this message]
1996-07-07  6:08 ` Bart Schaefer
1996-07-07  9:06   ` Zefram
1996-07-08  0:48 ` Zoltan Hidvegi
1996-07-08  4:22   ` Bart Schaefer
1996-07-08  6:21     ` Bart Schaefer
1996-07-08  7:57       ` Zefram
1996-07-08  8:48         ` Bart Schaefer
1996-07-09  1:32           ` Zoltan Hidvegi
1996-07-09  9:08             ` Bart Schaefer
1996-07-09 14:06               ` Zoltan Hidvegi
1996-07-10 19:11                 ` Bart Schaefer
1996-07-10 19:48                   ` Zoltan Hidvegi
1996-07-11  0:04                     ` Bart Schaefer
1996-07-11 12:16                       ` Zoltan Hidvegi
1996-07-11 16:45                         ` Bart Schaefer
1996-07-08 14:28     ` Zoltan Hidvegi
1996-07-08  6:38   ` Bart Schaefer
1996-07-11  8:11 ` Peter Stephenson
1996-07-11 12:51   ` Redirection bug fix Peter Stephenson

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=960707000759.ZM2589@candle.brasslantern.com \
    --to=schaefer@candle.brasslantern.com \
    --cc=huyle@chop.ugcs.caltech.edu \
    --cc=schaefer@nbn.com \
    --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).