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