From: Dmitry Gutov <dgutov@yandex.ru>
To: Eli Zaretskii <eliz@gnu.org>
Cc: alexanderm@web.de, 27427@debbugs.gnu.org
Subject: bug#27427: 26.0.50; Native line numbers lead to display error in company-mode popup
Date: Fri, 23 Jun 2017 02:17:24 +0300 [thread overview]
Message-ID: <49b431fd-aaa4-e7ca-06fc-7146a0a5692c@yandex.ru> (raw)
In-Reply-To: <83o9tgul6h.fsf@gnu.org>
On 6/22/17 5:55 PM, Eli Zaretskii wrote:
>> Yep! And there are zero outstanding bug reports related to this.
>
> Well, except this one ;-)
But it's not about line-prefix, it's about a new feature in Emacs that
was just introduced in a way that's different from those that came before.
>> I'm saying it's not easy, and I'm not brimming with ideas.
>
> Is it not easy because the assumption about column-zero is hard-coded
> in many places? Or for some other reason?
Because if we're not allowed to use column-zero, the first line of the
popup and the rest are behaving differently. And, depending on which
feature is causing the first character of the visual line to be on a
non-zero column, the popup lines are offset in different directions.
> Keeping the numbers out of the margins was my explicit design goal,
> because some packages want the margins, and we don't have a good
> solution for "sharing" margins.
It's not without problems, though, as it introduces a new, different
type of margin, doesn't it? Why not put it outside of the window bounds
next to the "actual" margins? That's one option.
> So from my POV putting the numbers in
> the margins would be a step backward. It will probably also create
> major havoc for the few packages that do display in the margins,
Not any more havoc than linum or nlinum which many people install and
use, and are apparently fine with them taking up one of the margins.
> because Emacs facilities for layout of text and other stuff there are
> exceedingly limited.
But of course, it would be ideal if you could also introduce a facility
that would allow sharing of margins (and hopefully also fringes) between
different modes.
> Not sure what you mean by "chromeless" here, but if I understand you
> correctly, Martin's work is already on master.
I think so, yes.
>> 1. The first visual line containing the popup has the line number at its
>> beginning. And as such, the popup line is shifted to the right.
>
> That's the "BOL at non-zero column" issue, right?
Yes, but also the lack of ability to disable the line numbering on a
line-by-line basis (which could be one solution for this problem).
> The lack of numbers is a "feature", I think: only "physical" lines in
> buffer text are counted, newlines in overlay and display strings do
> not count.
It is indeed a feature from your standpoint, but it's a bug from the
point of view of the popup's rendering.
Imagine of the line numbers were displayed using line-prefix (I'm not
really suggesting that, but...). Then the popup could pick them up and
include in the overlay's `display' property text. The user wouldn't see
any difference.
> Can you artificially offset the beginning of the overlay to account
> for the line numbers, and see if that alone solves the problem of the
> first lines, and doesn't cause problems in the subsequent lines?
Offset the beginning by how much? By
(- (car (posn-col-row (posn-at-point (point))))
(car (posn-col-row (posn-at-point (beginning-of-visual-line)))))
? Let's call the value of this expression X.
Let's try a thought experiment.
Suppose X is non-zero because of line numbering. Then adding an offset
of X to the position of the first popup line should fix it.
What if X is non-zero because of line-prefix, though? If it's because of
line-prefix variable, okay, we don't support it.
What if X is non-zero because of the line-prefix text property? We'd get
an "array out of bounds" error somewhere, because the first popup line
is currently positioned correctly.
So when should we add an X offset to the first popup line's position?
Suppose X is non-nil because of line numbering and the line-prefix text
property both? Org uses the line-prefix text property in certain
configurations, so it's a real possibility.
One idea would be to first create an overlay on the first visual line
which overrides the line-prefix property to zero, *then* measure
(car (posn-col-row (posn-at-point (beginning-of-visual-line))))
, then delete the said overlay and proceed. Doesn't that sound like a
mess already?
next prev parent reply other threads:[~2017-06-22 23:17 UTC|newest]
Thread overview: 97+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-06-19 16:50 bug#27427: 26.0.50; Native line numbers lead to display error in company-mode popup Alexander Miller
2017-06-19 17:08 ` Eli Zaretskii
[not found] ` <6b307502-53db-e92d-1050-3cf0132537cb@web.de>
2017-06-19 19:23 ` Eli Zaretskii
2017-06-19 19:53 ` Alexander Miller
2017-06-19 21:03 ` Dmitry Gutov
2017-06-20 15:04 ` Eli Zaretskii
2017-06-21 2:18 ` Dmitry Gutov
2017-06-21 2:40 ` Eli Zaretskii
2017-06-21 13:04 ` Dmitry Gutov
2017-06-21 15:51 ` Alexander Miller
2017-06-21 18:15 ` Eli Zaretskii
2017-06-21 22:41 ` Dmitry Gutov
2017-06-22 14:55 ` Eli Zaretskii
2017-06-22 23:17 ` Dmitry Gutov [this message]
2017-06-23 9:10 ` Eli Zaretskii
2017-06-23 23:26 ` Dmitry Gutov
2017-06-24 7:47 ` Eli Zaretskii
2017-06-24 17:28 ` Eli Zaretskii
2017-06-24 20:43 ` Dmitry Gutov
2017-06-25 13:51 ` Dmitry Gutov
2017-06-25 14:32 ` Eli Zaretskii
2017-06-25 14:36 ` Dmitry Gutov
2017-06-25 14:13 ` Eli Zaretskii
2017-06-25 14:46 ` Dmitry Gutov
2017-06-25 15:05 ` Eli Zaretskii
2017-06-25 16:35 ` Eli Zaretskii
2017-06-25 17:57 ` Eli Zaretskii
2017-06-25 22:56 ` Dmitry Gutov
2017-06-26 8:23 ` martin rudalics
2017-06-26 15:07 ` Eli Zaretskii
2017-06-27 7:06 ` martin rudalics
2017-06-27 14:48 ` Eli Zaretskii
2017-06-26 15:22 ` Eli Zaretskii
2017-06-26 15:28 ` Dmitry Gutov
2017-06-26 15:50 ` Eli Zaretskii
2017-06-26 17:12 ` Dmitry Gutov
2017-06-26 21:30 ` Johan Bockgård
2017-06-27 16:47 ` Eli Zaretskii
2017-07-13 23:04 ` Dmitry Gutov
2017-07-14 6:11 ` Eli Zaretskii
2017-07-14 6:24 ` Dmitry Gutov
2017-07-14 7:04 ` Eli Zaretskii
2017-07-15 17:38 ` Dmitry Gutov
2017-07-15 17:49 ` Eli Zaretskii
2017-06-25 14:31 ` Dmitry Gutov
2017-06-25 14:54 ` Eli Zaretskii
2017-06-25 15:25 ` Dmitry Gutov
2017-06-25 16:12 ` martin rudalics
2017-06-25 18:21 ` Eli Zaretskii
2017-06-25 15:59 ` martin rudalics
2017-06-25 16:24 ` Dmitry Gutov
2017-06-25 17:10 ` martin rudalics
2017-06-25 18:36 ` Eli Zaretskii
2017-06-25 18:51 ` Eli Zaretskii
2017-06-26 8:21 ` martin rudalics
2017-06-26 8:18 ` martin rudalics
2017-06-25 18:24 ` Eli Zaretskii
2017-06-26 7:15 ` martin rudalics
2017-06-26 8:18 ` martin rudalics
2017-06-26 12:07 ` Dmitry Gutov
2017-06-26 15:05 ` Eli Zaretskii
2017-06-27 7:06 ` martin rudalics
2017-06-27 14:48 ` Eli Zaretskii
2017-06-27 15:27 ` martin rudalics
2017-06-27 16:27 ` Eli Zaretskii
2017-06-28 8:45 ` martin rudalics
2017-06-28 16:48 ` Eli Zaretskii
2017-06-28 18:35 ` martin rudalics
2017-06-28 18:56 ` Eli Zaretskii
2017-06-29 7:17 ` martin rudalics
2017-06-29 16:29 ` Eli Zaretskii
2017-06-30 8:27 ` martin rudalics
2017-06-30 9:33 ` Eli Zaretskii
2017-07-01 10:31 ` martin rudalics
2017-07-01 11:59 ` Eli Zaretskii
2017-07-01 13:22 ` martin rudalics
2017-07-01 13:33 ` Eli Zaretskii
2017-07-01 15:20 ` martin rudalics
2017-07-01 15:41 ` Eli Zaretskii
2017-07-02 7:54 ` martin rudalics
2017-07-02 14:10 ` Eli Zaretskii
2017-07-02 14:45 ` Dmitry Gutov
2017-07-02 15:18 ` Eli Zaretskii
2017-07-03 0:22 ` Dmitry Gutov
2017-07-03 2:29 ` Eli Zaretskii
2017-07-06 7:08 ` martin rudalics
2017-07-06 13:06 ` Dmitry Gutov
2017-07-07 6:52 ` martin rudalics
2017-07-06 7:08 ` martin rudalics
2017-07-06 15:21 ` Eli Zaretskii
2017-07-07 6:52 ` martin rudalics
2017-06-29 1:34 ` Dmitry Gutov
2017-06-29 16:20 ` Eli Zaretskii
2017-06-29 17:55 ` Dmitry Gutov
2017-06-25 19:00 ` Eli Zaretskii
2017-06-26 8:21 ` martin rudalics
2017-06-26 15:06 ` 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=49b431fd-aaa4-e7ca-06fc-7146a0a5692c@yandex.ru \
--to=dgutov@yandex.ru \
--cc=27427@debbugs.gnu.org \
--cc=alexanderm@web.de \
--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 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.