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