* zsh: insert-last-word problem after completion
@ 2010-04-26 10:53 Vincent Lefevre
2010-04-26 11:34 ` Mikael Magnusson
2010-04-26 12:11 ` Peter Stephenson
0 siblings, 2 replies; 6+ messages in thread
From: Vincent Lefevre @ 2010-04-26 10:53 UTC (permalink / raw)
To: zsh-workers; +Cc: 579209
I've reported the following bug in Debian. It also occurs
under Mac OS X.
After a "zsh -f":
% alias my_echo=echo
% false
% true &
% my_ech[TAB]
A succession of [ESC] . (bound to insert-last-word) gives:
my_echo&
my_echo&&
my_echo&false
while I would expect:
my_echo &
my_echo false
or even better:
my_echo true
my_echo false
i.e. the "&" should be ignored by insert-last-word.
--
Vincent Lefèvre <vincent@vinc17.net> - Web: <http://www.vinc17.net/>
100% accessible validated (X)HTML - Blog: <http://www.vinc17.net/blog/>
Work: CR INRIA - computer arithmetic / Arénaire project (LIP, ENS-Lyon)
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: zsh: insert-last-word problem after completion
2010-04-26 10:53 zsh: insert-last-word problem after completion Vincent Lefevre
@ 2010-04-26 11:34 ` Mikael Magnusson
2010-04-26 12:11 ` Peter Stephenson
1 sibling, 0 replies; 6+ messages in thread
From: Mikael Magnusson @ 2010-04-26 11:34 UTC (permalink / raw)
To: zsh-workers
On 26 April 2010 12:53, Vincent Lefevre <vincent@vinc17.net> wrote:
> I've reported the following bug in Debian. It also occurs
> under Mac OS X.
>
> After a "zsh -f":
>
> % alias my_echo=echo
> % false
> % true &
> % my_ech[TAB]
>
> A succession of [ESC] . (bound to insert-last-word) gives:
>
> my_echo&
> my_echo&&
> my_echo&false
>
> while I would expect:
>
> my_echo &
> my_echo false
>
> or even better:
>
> my_echo true
> my_echo false
>
> i.e. the "&" should be ignored by insert-last-word.
Maybe you want smart-insert-last-word?
Otherwise, the rightmost ``interesting'' word from the
previous com-
mand is found and inserted. The default definition of
``interesting''
is that the word contains at least one alphabetic
character, slash, or
backslash. This definition may be overridden by use
of the match
style.
--
Mikael Magnusson
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: zsh: insert-last-word problem after completion
2010-04-26 10:53 zsh: insert-last-word problem after completion Vincent Lefevre
2010-04-26 11:34 ` Mikael Magnusson
@ 2010-04-26 12:11 ` Peter Stephenson
2010-04-26 15:42 ` Vincent Lefevre
1 sibling, 1 reply; 6+ messages in thread
From: Peter Stephenson @ 2010-04-26 12:11 UTC (permalink / raw)
To: zsh-workers; +Cc: 579209
On Mon, 26 Apr 2010 12:53:31 +0200
Vincent Lefevre <vincent@vinc17.net> wrote:
> After a "zsh -f":
>
> % alias my_echo=echo
> % false
> % true &
> % my_ech[TAB]
>
> A succession of [ESC] . (bound to insert-last-word) gives:
>
> my_echo&
> my_echo&&
> my_echo&false
>
> while I would expect:
>
> my_echo &
> my_echo false
That's a bug: can you get it to happen with the new completion system (I
tried briefly and failed)? I presume there's a gap in the suffix-fixing
logic for completion.
> or even better:
>
> my_echo true
> my_echo false
>
> i.e. the "&" should be ignored by insert-last-word.
That's not a bug. As Mikael suggested, you need to use something that's
smart about syntax; that's not the job of insert-last-word, which only
knows about the division into editing words.
--
Peter Stephenson <pws@csr.com> Software Engineer
Tel: +44 (0)1223 692070 Cambridge Silicon Radio Limited
Churchill House, Cambridge Business Park, Cowley Road, Cambridge, CB4 0WZ, UK
Member of the CSR plc group of companies. CSR plc registered in England and Wales, registered number 4187346, registered office Churchill House, Cambridge Business Park, Cowley Road, Cambridge, CB4 0WZ, United Kingdom
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: zsh: insert-last-word problem after completion
2010-04-26 12:11 ` Peter Stephenson
@ 2010-04-26 15:42 ` Vincent Lefevre
2010-04-26 22:38 ` Peter Stephenson
0 siblings, 1 reply; 6+ messages in thread
From: Vincent Lefevre @ 2010-04-26 15:42 UTC (permalink / raw)
To: Peter Stephenson; +Cc: zsh-workers, 579209
On 2010-04-26 13:11:39 +0100, Peter Stephenson wrote:
> On Mon, 26 Apr 2010 12:53:31 +0200
> Vincent Lefevre <vincent@vinc17.net> wrote:
> > After a "zsh -f":
> >
> > % alias my_echo=echo
> > % false
> > % true &
> > % my_ech[TAB]
> >
> > A succession of [ESC] . (bound to insert-last-word) gives:
> >
> > my_echo&
> > my_echo&&
> > my_echo&false
> >
> > while I would expect:
> >
> > my_echo &
> > my_echo false
>
> That's a bug: can you get it to happen with the new completion system (I
> tried briefly and failed)? I presume there's a gap in the suffix-fixing
> logic for completion.
Actually I noticed the bug with the new completion system.
The bug still occurs by typing
autoload -U compinit
compinit
first.
--
Vincent Lefèvre <vincent@vinc17.net> - Web: <http://www.vinc17.net/>
100% accessible validated (X)HTML - Blog: <http://www.vinc17.net/blog/>
Work: CR INRIA - computer arithmetic / Arénaire project (LIP, ENS-Lyon)
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: zsh: insert-last-word problem after completion
2010-04-26 15:42 ` Vincent Lefevre
@ 2010-04-26 22:38 ` Peter Stephenson
2010-04-27 14:24 ` Vincent Lefevre
0 siblings, 1 reply; 6+ messages in thread
From: Peter Stephenson @ 2010-04-26 22:38 UTC (permalink / raw)
To: zsh-workers; +Cc: 579209
On Mon, 26 Apr 2010 17:42:10 +0200
Vincent Lefevre <vincent@vinc17.net> wrote:
> On 2010-04-26 13:11:39 +0100, Peter Stephenson wrote:
> > On Mon, 26 Apr 2010 12:53:31 +0200
> > Vincent Lefevre <vincent@vinc17.net> wrote:
> > > After a "zsh -f":
> > >
> > > % alias my_echo=echo
> > > % false
> > > % true &
> > > % my_ech[TAB]
> > >
> > > A succession of [ESC] . (bound to insert-last-word) gives:
> > >
> > > my_echo&
> > > my_echo&&
> > > my_echo&false
>
> Actually I noticed the bug with the new completion system.
I've got there, too, eventually.
There are two ways to approach this: either have the "&" inserted as
now, with the space removed, which is the same as if the "&" was typed;
or fix the suffix when inserting the last word. The drawback with the
former (which is what it's currently trying to do, but failing) is that
replacing the & with earlier words would leave the space before it
removed, and in most cases that won't be the right thing to do (you'd
get "my_echofalse" in this case). So I think the latter is the right
answer---we know that what we're inserting always functions as a
complete word, hence fixing the space or whatever makes more sense even
if in the case of the first last word you happen not to need it.
This happens to be the simpler fix (though I have an implementation of
the other one, too).
By the way, as an alternative to smart-insert-last-word, what I do is
have the widget copy-earlier-word bound to ESC = so that I can get
earlier words from the line to which ESC . has taken me.
Index: Src/Zle/zle_hist.c
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/Zle/zle_hist.c,v
retrieving revision 1.64
diff -p -u -r1.64 zle_hist.c
--- Src/Zle/zle_hist.c 18 Mar 2010 16:03:20 -0000 1.64
+++ Src/Zle/zle_hist.c 26 Apr 2010 22:29:11 -0000
@@ -634,6 +634,7 @@ insertlastword(char **args)
}
}
+ fixsuffix();
metafy_line();
if (lastinsert && lastlen &&
lastpos <= zlemetacs &&
--
Peter Stephenson <p.w.stephenson@ntlworld.com>
Web page now at http://homepage.ntlworld.com/p.w.stephenson/
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: zsh: insert-last-word problem after completion
2010-04-26 22:38 ` Peter Stephenson
@ 2010-04-27 14:24 ` Vincent Lefevre
0 siblings, 0 replies; 6+ messages in thread
From: Vincent Lefevre @ 2010-04-27 14:24 UTC (permalink / raw)
To: Peter Stephenson; +Cc: zsh-workers, 579209
On 2010-04-26 23:38:40 +0100, Peter Stephenson wrote:
> There are two ways to approach this: either have the "&" inserted as
> now, with the space removed, which is the same as if the "&" was typed;
> or fix the suffix when inserting the last word. The drawback with the
> former (which is what it's currently trying to do, but failing) is that
> replacing the & with earlier words would leave the space before it
> removed, and in most cases that won't be the right thing to do (you'd
> get "my_echofalse" in this case). So I think the latter is the right
> answer---we know that what we're inserting always functions as a
> complete word, hence fixing the space or whatever makes more sense even
> if in the case of the first last word you happen not to need it.
> This happens to be the simpler fix (though I have an implementation of
> the other one, too).
Thanks, I confirm that this fixes the problem.
> By the way, as an alternative to smart-insert-last-word, what I do is
> have the widget copy-earlier-word bound to ESC = so that I can get
> earlier words from the line to which ESC . has taken me.
FYI, I was using smart-insert-last-word in the past, but it was too
buggy (see the discussion in zsh-users in October 2006). I think that
the problems have been resolved and I can reenable it...
--
Vincent Lefèvre <vincent@vinc17.net> - Web: <http://www.vinc17.net/>
100% accessible validated (X)HTML - Blog: <http://www.vinc17.net/blog/>
Work: CR INRIA - computer arithmetic / Arénaire project (LIP, ENS-Lyon)
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2010-04-27 14:24 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2010-04-26 10:53 zsh: insert-last-word problem after completion Vincent Lefevre
2010-04-26 11:34 ` Mikael Magnusson
2010-04-26 12:11 ` Peter Stephenson
2010-04-26 15:42 ` Vincent Lefevre
2010-04-26 22:38 ` Peter Stephenson
2010-04-27 14:24 ` Vincent Lefevre
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).