Subject: Re: bug#31966: 27.0.50; auto-complete candidates aren't aligned properly

From: John Shahid <[email-masked]>
Date: Mon, 25 Jun 2018 19:10:45 +0000

Eli Zaretskii <[email-masked]> writes:

> tags 31966 notabug
> thanks
>
>> From: John Shahid <[email-masked]>
>> Date: Mon, 25 Jun 2018 17:08:50 +0000
>>
>> The candidates in the auto-complete popup aren't aligned properly. The
>> left margin appears to be shifted to the right relative to the
>> point. This seems to be caused by `vertical-motion' behavior changing on
>> master.
>>
>> when display-line-numbers is turned on I expect the following to move
>> the point to the following line while keeping the point's column fixed
>> (assuming of course that the following line is long enough):
>>
>>   (vertical-motion (cons (car (posn-col-row (posn-at-point))) 1))
>>
>> This isn't the case anymore with current master. Point will move to the
>> right by the number of characters used to display the line numbers.
>
> (The emacs-26 branch behaves like master now, btw.)
>
> This is not a bug.  posn-at-point doesn't measure columns, it measures
> the X coordinate relative to the window edge, and just expresses it in
> columns, so the result includes the width taken by the line-number
> display.  If you need to get at the column number relative to the
> leftmost text character, use current-column.  And if you want the
> result in canonical columns, i.e. in units of width of the frame's
> default face's font (as opposed to the font used by buffer text near
> point), then subtract from what posn-at-point returns the value
> returned by the following function call:
>
>   (line-number-display-width 'columns)

Thanks for the explanation. I opened a PR on the popup-el github
repository https://github.com/auto-complete/popup-el/pull/116. The PR
does something similar to the following

     (if (functionp 'line-number-display-width) (setq column ...))

is that an acceptable approach or should I use the emacs-major-version
instead ?

>
> The code you show used to work because there was a bug which masked
> this issue, and that bug is now fixed on both master and the emacs-26
> branch.

I read the emacs-26 NEWS file and all of this is making more sense now.

> Thanks.