zsh-workers
 help / color / mirror / code / Atom feed
* yank-pop broken in current dev zsh?
@ 2016-01-12  5:11 Bart Schaefer
  2016-04-13 21:01 ` Oliver Kiddle
  0 siblings, 1 reply; 2+ messages in thread
From: Bart Schaefer @ 2016-01-12  5:11 UTC (permalink / raw)
  To: zsh-workers

zsh-5.2-67-g424b417 (haven't checked older ones, but I don't know of any
very recent changes that would affect this):

If I start (zsh -f, emacs bindings) with

% echo one two three

and I execute ESC backspace ctl-space ESC backspace, I have

% echo one 

(with trailing space) and the kill ring contains "two " and "three".  If
I now execute ctl-y ESC y (yank "two " then yank-pop to get "three"), I
end up with

% echo one three

with "thre" highlighted and the cursor on the final "e".  The cursor should
be after the entire word "three", should it not?  The whole "three" is then
removed/replaced on a subsequent yank-pop, but the highlighting and cursor
may be off by one on the next (and all following until I cycle all the way
back to "
two ") replacement as well.

I at first thought this was related to setting the mark, but that isn't it.
It also doesn't seem to be related to yank-popping a shorter word after a
longer one.  It doesn't always happen, though it is repeatable via the
example above.

I suppose this might be related to the CURSOR increment I mentioned needing
following select-in-shell-word in a widget.


^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: yank-pop broken in current dev zsh?
  2016-01-12  5:11 yank-pop broken in current dev zsh? Bart Schaefer
@ 2016-04-13 21:01 ` Oliver Kiddle
  0 siblings, 0 replies; 2+ messages in thread
From: Oliver Kiddle @ 2016-04-13 21:01 UTC (permalink / raw)
  To: zsh-workers

On 11 Jan, Bart wrote:
> with "thre" highlighted and the cursor on the final "e".  The cursor should
> be after the entire word "three", should it not?  The whole "three" is then

> I suppose this might be related to the CURSOR increment I mentioned needing
> following select-in-shell-word in a widget.

That's more-or-less exactly what the issue is. There was a cursor
correction in there that should only be there for vi command-mode. Does
things seem right in emacs mode with the following fix?

In many cases we compare zlecs to findbol() for the correction but I
don't think that would be correct in this case.

diff --git a/Src/Zle/zle_misc.c b/Src/Zle/zle_misc.c
index 25f65b3..a040ca0 100644
--- a/Src/Zle/zle_misc.c
+++ b/Src/Zle/zle_misc.c
@@ -597,7 +597,7 @@ static void pastebuf(Cutbuffer buf, int mult, int position)
 	    zlecs += cc;
 	}
 	yanke = zlecs;
-	if (zlecs)
+	if (zlecs && invicmdmode())
 	    DECCS();
     }
 }


^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2016-04-13 21:06 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-01-12  5:11 yank-pop broken in current dev zsh? Bart Schaefer
2016-04-13 21:01 ` Oliver Kiddle

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