|
From: | Dmitry Gutov |
Subject: | Re: bug#9782: 24.0.90; move-to-window-line not taking header line into account |
Date: | Tue, 07 May 2013 11:41:00 +0400 |
User-agent: | Mozilla/5.0 (Windows NT 6.1; WOW64; rv:17.0) Gecko/20130328 Thunderbird/17.0.5 |
On 07.05.2013 6:54, Eli Zaretskii wrote:
One might think that `move-to-window-line' is also window-relative and thus agnostic to the header line (that naturally follows if we consider the header line a part of the window)."Line" is a line of text, and move-to-window-line was written to go to a line of text.
The question is how they're numbered. One might imagine that the "zeroth" line is covered by the header, so the first one visible is number one.
Note I'm not really arguing in favor in that change, since it won't help me get rid of the version check for 24.1-24.3 anyway.
We still need to compare the column values to see if the click happened exactly inside the rectangle, not to the right or left of it.Doesn't the overlay cover the entire rectangle?And in `company-select-mouse', we need the row values to find out which rectangle line was clicked (which candidate to select)Isn't each rectangle a different string?
There's just one overlay, and it covers all of them (plus all text on the sides). Maybe what you're suggesting would be an improvement (I see dropdown-list.el also does that), but the current approach works fast enough, and it would have the advantage in a hypothetical situation when some of the text we need to "draw on" is already rendered via `display' property.
Taking the above into account, I think having a header-line-aware version of `move-to-window-line' instead would be best.??? But you don't want to _move_ anywhere, AFAIU. You want to compute a window-relative screen line number of a given position (I used point in the above example, but that can be replaced by any buffer position). So how does move-to-window-line fit that bill? Its return value is undocumented, so you cannot really rely on that.
I mean fixing the row number <-> line number discrepancy from the other side, by making a wrapper for `move-to-window-line', the only function of the bunch that deals with line numbers. It's used in `company-pseudo-tooltip-show'.
Like suggested before, it would adjust the argument by 1 if emacs-version >= "24", and the header line is present.The function move-to-window-line is implemented in C, so it is pointless to make it sensitive to Emacs version.
The wrapper will need to check the version because Emacs 23 and earlier don't need the adjustment.
[Prev in Thread] | Current Thread | [Next in Thread] |