all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Eli Zaretskii <eliz@gnu.org>
To: Alex <agrambot@gmail.com>
Cc: emacs-devel@gnu.org
Subject: Re: Native line numbers, final testing
Date: Fri, 07 Jul 2017 09:19:54 +0300	[thread overview]
Message-ID: <83a84gn4z9.fsf@gnu.org> (raw)
In-Reply-To: <878tk1rmjx.fsf@lylat> (message from Alex on Thu, 06 Jul 2017 20:46:42 -0600)

> From: Alex <agrambot@gmail.com>
> Cc: emacs-devel@gnu.org
> Date: Thu, 06 Jul 2017 20:46:42 -0600
> 
> Eli Zaretskii <eliz@gnu.org> writes:
> 
> >> From: Alex <agrambot@gmail.com>
> >> Cc: emacs-devel@gnu.org
> >> Date: Tue, 04 Jul 2017 13:36:03 -0600
> >> 
> >> I've never heard of line-prefix before this discussion, so I don't know
> >> what the expected behaviour of it is/should be. However, I don't believe
> >> the width of the line numbers should have any bearing on the column
> >> position of a particular character in the buffer. Indeed, C-x = at the
> >> beginning of a line with display-line-numbers correctly shows
> >> "column=0". So I don't see the link between your recipe and mine.
> >
> > "C-x =" just counts characters.  Try "M-: (posn-at-point) RET" for
> > more insight.
> 
> OK, so C-n/C-p currently try to preserve the column calculated by either
> posn-col-row or posn-actual-col-row?

More accurately, C-n/C-p try to preserve the horizontal coordinate
(which can be expressed either in pixels or in canonical column
units), and posn-col-row calculates and returns the same coordinates.

> If one has to choose between these two behaviours, then I believe the
> former is significantly more user-friendly. It is much easier to reason
> about, and it does not change the horizontal cursor position relative to
> buffer contents.

OK.

> Sorry, I think we both lost focus a bit since there's a few different
> topics in this thread. Here, I believe we were talking about line
> numbers in the margin, and if the property of being in the margin by
> itself would be able to avoid this issue. I was under the assumption
> that it would be, but assuming strict compliance to the documentation of
> line-move-visual, then I think I get now why it wouldn't.

Actually, I think it would be easier, because x coordinates are
counted from the text-area edge, so they are unaffected by the
margins.

But this fact alone is not enough to invalidate the design that
doesn't use the margin for line numbers.  A few complications like the
one we are talking about can always be solved by some support code,
they are not obstacles that cannot be negotiated.

> I figured it would be best to change display-line-number-width as soon
> as possible, and for the check to be made as infrequent as possible.

Line numbers are calculated every redisplay cycle (for those lines
that need to be redrawn), and a redisplay cycle always follows a
command, so the frequency is not affected by using the hooks I
proposed.

> pre-command-hook definitely sounds better than pre-redisplay-functions,
> but it would be nice if the check didn't have to be made every time a
> command is issued. Although I suppose if the width accessor is a fast
> constant lookup, then it doesn't really matter.

It cannot be an accessor to a value that is already stored (because it
currently isn't stored anywhere once redisplay finishes), but it
should be fast enough nonetheless.  And if it turns out it isn't, we
can always speed it up.



  reply	other threads:[~2017-07-07  6:19 UTC|newest]

Thread overview: 90+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-06-30 14:49 Native line numbers, final testing Eli Zaretskii
2017-06-30 17:51 ` Alex
2017-06-30 18:20   ` Eli Zaretskii
2017-06-30 19:06     ` Alex
2017-06-30 19:55       ` Eli Zaretskii
2017-06-30 21:15         ` Alex
2017-07-01  8:00           ` Eli Zaretskii
2017-07-01 21:00             ` Alex
2017-07-02  2:40               ` Eli Zaretskii
2017-07-02  5:16                 ` Alex
2017-07-02 15:10                   ` Eli Zaretskii
2017-07-02 16:47                     ` Stefan Monnier
2017-07-02 16:51                       ` Eli Zaretskii
2017-07-02 17:38                         ` Stefan Monnier
2017-07-02 19:27                           ` Eli Zaretskii
2017-07-03  5:06                     ` Alex
2017-07-03 15:24                       ` Eli Zaretskii
2017-07-04 19:36                         ` Alex
2017-07-05 17:39                           ` Eli Zaretskii
2017-07-07  2:46                             ` Alex
2017-07-07  6:19                               ` Eli Zaretskii [this message]
2017-07-07  9:24                                 ` Eli Zaretskii
2017-07-08 20:51                                   ` Alex
2017-07-09 20:16                                     ` James Cloos
2017-07-09 21:45                                       ` Yuri Khan
2017-07-10  2:33                                         ` Eli Zaretskii
2017-07-10  7:09                                           ` Yuri Khan
2017-07-10 17:02                                             ` Eli Zaretskii
2017-07-10  2:31                                       ` Eli Zaretskii
2017-07-10  5:35                                         ` James Cloos
2017-07-10 17:00                                           ` Eli Zaretskii
2017-07-10 18:15                                             ` Filipe Silva
2017-07-10 18:18                                               ` Eli Zaretskii
2017-07-10 18:23                                                 ` Filipe Silva
2017-07-10 18:32                                             ` James Cloos
2017-07-11 20:58                                             ` Alex
2017-07-11 21:18                                               ` Filipe Silva
2017-07-11 21:20                                                 ` Filipe Silva
2017-07-11 21:37                                                   ` Alex
2017-07-12  2:35                                               ` Eli Zaretskii
2017-07-12  2:53                                                 ` Alex
2017-07-12 14:21                                                   ` Eli Zaretskii
2017-07-12 17:22                                                     ` Alex
2017-07-12 17:25                                                       ` Alex
2017-07-12 18:38                                                       ` Eli Zaretskii
2017-07-12 20:03                                                         ` Alex
2017-07-13  2:38                                                           ` Eli Zaretskii
2017-07-13  4:11                                                             ` Alex
2017-07-13 15:56                                                               ` Eli Zaretskii
2017-07-26  3:50                                                                 ` Alex
2017-07-26 14:42                                                                   ` Eli Zaretskii
2017-07-29  6:12                                                                     ` Alex
2017-07-29  7:01                                                                       ` Eli Zaretskii
2017-07-07  9:47                                 ` Eli Zaretskii
2017-07-07  9:49                                   ` Eli Zaretskii
2017-07-07 11:14                                     ` Filipe Silva
2017-07-07 12:21                                       ` Eli Zaretskii
2017-07-07 12:29                                   ` Eli Zaretskii
     [not found]                                     ` <CAEwkUWN8GkCyOiF4jEgKuZwJHhvMgJi9yVnvggRvu+Yddfp4qQ@mail.gmail.com>
2017-07-07 12:56                                       ` Filipe Silva
2017-07-01  1:59 ` Filipe Silva
2017-07-02 19:27 ` James Nguyen
2017-07-03  2:33   ` Eli Zaretskii
2017-07-03  3:22     ` James Nguyen
2017-07-03 15:58       ` Eli Zaretskii
2017-07-03 17:04         ` James Nguyen
2017-07-04 10:57           ` Filipe Silva
2017-07-04 11:00             ` Filipe Silva
2017-07-04 13:51               ` Kaushal Modi
2017-07-04 14:30               ` Eli Zaretskii
2017-07-04 14:32             ` Eli Zaretskii
2017-07-04 14:48               ` Filipe Silva
2017-07-04 14:50                 ` Filipe Silva
2017-07-04 15:44                   ` Eli Zaretskii
2017-07-04 16:22                     ` Filipe Silva
2017-07-04 16:34                       ` Filipe Silva
2017-07-04 16:35                       ` Richard Copley
2017-07-04 16:44                         ` Eli Zaretskii
2017-07-04 17:13                           ` Richard Copley
2017-07-04 17:35                             ` Filipe Silva
2017-07-04 17:48                               ` Eli Zaretskii
2017-07-04 17:52                               ` Stefan Monnier
2017-07-10 18:22                                 ` Filipe Silva
2017-07-10 20:28                                   ` Stefan Monnier
2017-07-04 17:47                             ` Eli Zaretskii
2017-07-04 17:50                           ` Alex
2017-07-04 18:24                             ` Eli Zaretskii
2017-07-04 18:37                               ` Richard Copley
2017-07-04 18:43                                 ` Eli Zaretskii
2017-07-05 20:24 ` Andy Moreton
2017-07-06 17:24   ` 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

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=83a84gn4z9.fsf@gnu.org \
    --to=eliz@gnu.org \
    --cc=agrambot@gmail.com \
    --cc=emacs-devel@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 external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.