From: Liu Hui <liuhui1610@gmail.com>
To: Eli Zaretskii <eliz@gnu.org>
Cc: 45837@debbugs.gnu.org
Subject: bug#45837: 28.0.50; incorrect cursor position in visual-line-mode when word-wrap-by-category is t
Date: Fri, 15 Jan 2021 15:28:33 +0800 [thread overview]
Message-ID: <CAOQTW-MfV0qaKvpmruP1offiBjVyWy1QWaLcgCXZyELeGsdumA@mail.gmail.com> (raw)
In-Reply-To: <83v9bzbp8s.fsf@gnu.org>
Eli Zaretskii <eliz@gnu.org> 于2021年1月14日周四 下午9:51写道:
>
> > From: Liu Hui <liuhui1610@gmail.com>
> > Date: Thu, 14 Jan 2021 12:51:12 +0800
> > Cc: 45837@debbugs.gnu.org
> >
> > BTW, in the case above, if the line wraps after a non-whitespace
> > character, C-k does not delete this character. How about the following
> > change to kill-visual-line?
>
> Yes, good catch. However, this is not entirely right, as the code you
> suggest should be _instead_ of skipping the whitespace that follows,
> not _in_addition_ to it (imagine that the line is wrapped at a
> non-whitespace character followed by whitespace). And while looking
> into adapting your patch to avoid removing more than the user
> intended, I found more issues with the existing code. So I'm
> proposing the patch below instead, which should correctly handle the
> following use cases:
>
> . visual line that ends in one or more whitespace characters, and the
> following visual line begins with one or more whitespace characters
> . visual line that ends with a non-whitespace character (under
> word-wrap-by-category) that is followed by one or more whitespace
> characters
> . line that is continued on the next visual line (visual-line-mode is
> off)
> . visual line that is wrapped in the middle of a display string or an
> overlay string with embedded whitespace characters
> . visual line that is wrapped in the middle of intangible text
>
> (The patch also fixes some minor issues with the documentation of this
> command.)
>
> WDYT?
>
I have tested the patch and found that the condition `(= (cdr (nth 2
(posn-at-point))) orig-y)` was sometimes too strict. `posn-at-point`
may give slightly different y positions for characters on the same
line when different fonts were used (examples can be found in the
HELLO file). If there are inline graphics (e.g. latex previews), the y
position can also be different.
My suggestion is `(< (abs (- (cdr (nth 2 (posn-at-point))) orig-y))
X)`, where X could be, empirically, `(/ (line-pixel-height) 3)` or
a customizable value.
The patch works well in other cases, thanks!
next prev parent reply other threads:[~2021-01-15 7:28 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-01-13 2:27 bug#45837: 28.0.50; incorrect cursor position in visual-line-mode when word-wrap-by-category is t Liu Hui
2021-01-13 14:47 ` Eli Zaretskii
2021-01-14 4:51 ` Liu Hui
2021-01-14 13:51 ` Eli Zaretskii
2021-01-15 7:28 ` Liu Hui [this message]
2021-01-15 8:15 ` Eli Zaretskii
2021-01-18 17:14 ` Eli Zaretskii
2021-01-21 3:07 ` Liu Hui
2021-01-21 14:22 ` Eli Zaretskii
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.gnu.org/software/emacs/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=CAOQTW-MfV0qaKvpmruP1offiBjVyWy1QWaLcgCXZyELeGsdumA@mail.gmail.com \
--to=liuhui1610@gmail.com \
--cc=45837@debbugs.gnu.org \
--cc=eliz@gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs.git
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 read-only IMAP folder(s) and NNTP newsgroup(s).