* Vi command mode and end-of-line; ZWC('\n') ?
@ 2015-08-23 1:19 Bart Schaefer
2015-08-24 8:33 ` Peter Stephenson
0 siblings, 1 reply; 2+ messages in thread
From: Bart Schaefer @ 2015-08-23 1:19 UTC (permalink / raw)
To: zsh-workers
That thread about end-of-line not working as a "bindkey -a" widget annoys
me for some reason. I started looking through zle_move.c and discovered
that in a few places we compare
zleline[zlecs] == ZWC('\n')
but in more places we simply do
zleline[pos] == '\n'
zleline[zlecs - 1] != '\n'
There's even one comment about the latter
/* works OK with combining chars since '\n' must be on its own */
So which is it? Should we be using ZWC() or not?
Meanwhile, any objection to this?
diff --git a/Src/Zle/zle_move.c b/Src/Zle/zle_move.c
index f49df86..155fda8 100644
--- a/Src/Zle/zle_move.c
+++ b/Src/Zle/zle_move.c
@@ -344,6 +344,8 @@ endofline(char **args)
zlecs = zlell;
return 0;
}
+ if ((zlecs += invicmdmode()) == zlell)
+ break;
if (zleline[zlecs] == '\n')
if (++zlecs == zlell)
return 0;
@@ -414,6 +416,8 @@ endoflinehist(char **args)
zlecs = zlell;
break;
}
+ if ((zlecs += invicmdmode()) == zlell)
+ break;
if (zleline[zlecs] == '\n')
if (++zlecs == zlell)
break;
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: Vi command mode and end-of-line; ZWC('\n') ?
2015-08-23 1:19 Vi command mode and end-of-line; ZWC('\n') ? Bart Schaefer
@ 2015-08-24 8:33 ` Peter Stephenson
0 siblings, 0 replies; 2+ messages in thread
From: Peter Stephenson @ 2015-08-24 8:33 UTC (permalink / raw)
To: zsh-workers
On Sat, 22 Aug 2015 18:19:11 -0700
Bart Schaefer <schaefer@brasslantern.com> wrote:
> That thread about end-of-line not working as a "bindkey -a" widget annoys
> me for some reason. I started looking through zle_move.c and discovered
> that in a few places we compare
>
> zleline[zlecs] == ZWC('\n')
>
> but in more places we simply do
>
> zleline[pos] == '\n'
> zleline[zlecs - 1] != '\n'
>
> There's even one comment about the latter
>
> /* works OK with combining chars since '\n' must be on its own */
>
> So which is it? Should we be using ZWC() or not?
ZWC is basically a glorified standards-compliant cast --- '\n' is a char
while zleline takes wchar_t. So the sole effect is to ensure we assign
a wide character. So ideally we should be using it everywhere for
consistency; however, I can't think of a practical effect for a 7-bit
ASCII character on a modern system.
pws
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2015-08-24 8:33 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-08-23 1:19 Vi command mode and end-of-line; ZWC('\n') ? Bart Schaefer
2015-08-24 8:33 ` Peter Stephenson
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).