GNU bug report logs - #18504
24.3.93; posn-at-point intermittently returns wrong value for a valid buffer position

Previous Next

Package: emacs;

Reported by: Dmitry <dgutov <at> yandex.ru>

Date: Fri, 19 Sep 2014 01:02:02 UTC

Severity: normal

Found in version 24.3.93

Done: Dmitry Gutov <dgutov <at> yandex.ru>

Bug is archived. No further changes may be made.

Full log


View this message in rfc822 format

From: help-debbugs <at> gnu.org (GNU bug Tracking System)
To: Dmitry <dgutov <at> yandex.ru>
Subject: bug#18504: closed (Re: bug#18504: 24.3.93;	posn-at-point
 intermittently returns wrong value for a valid buffer	position)
Date: Tue, 23 Sep 2014 18:40:05 +0000
[Message part 1 (text/plain, inline)]
Your bug report

#18504: 24.3.93; posn-at-point intermittently returns wrong value for a valid buffer position

which was filed against the emacs package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to 18504 <at> debbugs.gnu.org.

-- 
18504: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=18504
GNU Bug Tracking System
Contact help-debbugs <at> gnu.org with problems
[Message part 2 (message/rfc822, inline)]
From: Dmitry Gutov <dgutov <at> yandex.ru>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: 18504-done <at> debbugs.gnu.org
Subject: Re: bug#18504: 24.3.93;	posn-at-point intermittently returns wrong
 value for a valid buffer	position
Date: Tue, 23 Sep 2014 22:39:49 +0400
On 09/20/2014 11:13 AM, Eli Zaretskii wrote:

> This happens when posn-at-point is called with the company-mode
> overlay still (or already?) in place at that position.  That overlay
> has the invisible property, so it hides the buffer text starting at
> the position with which you call posn-at-point.  Therefore,
> posn-at-point returns information about the first visible buffer
> position after the overlay string.

I see, thanks. But does the fact that we get a different return value 
with different values of bidi-display-reordering, look right to you?

> So I think you need to make sure inside company--col-row that the
> overlay is popped down, before you call posn-at-point.  Evidently, in
> some scenarios it isn't.

Yes, seems to be a bug with the way we set the "current" keymap when 
completion is performed (the popup is displayed only during that time). 
Thank you for confirming, I'm looking into it.

> The buffer position returned by
> posn-at-point can serve as your control variable: if it is different
> from the position that is the argument to company--col-row, you have
> this situation.

Ok. I can just directly check if the overlay has the `invisible' 
property set to t or not, though. We keep a reference to the overlay.

[Message part 3 (message/rfc822, inline)]
From: Dmitry <dgutov <at> yandex.ru>
To: bug-gnu-emacs <at> gnu.org
Subject: 24.3.93;
 posn-at-point intermittently returns wrong value for a valid buffer
 position
Date: Fri, 19 Sep 2014 04:56:04 +0400
(Not a regression, same in Emacs 24.3).

I've been trying to understand what triggers this and create a smaller
repro case, but so far had no luck. So we'll use the company package.

1. git clone https://github.com/company-mode/company-mode.git

2. cd company-mode; git checkout foofoofoo

(Note that the last commit in this branch adds a `message' call that
outputs a multiline string. This doesn't seem to be mandatory, but makes
reproduction easier).

3. emacs -L . -Q

4. (require 'company)
M-x global-company-mode
;; Pick another binding if you're in tty
(global-set-key (kbd "C-/") 'company-complete-common)

5. Type `C-o' several times, so that there are a few empty lines under
the current one.

6. Type `  a'. Again not mandatory, but I've had better odds of
reproduction with this line content.

7. Quickly and repeatedly mash `C-/' and `C-g', a lot.

You'll see the popup appearing under the current line and column, but
sometimes noticeably displaced to the right (like by 15 columns). If it
doesn't happen, try mashing the keys in different rhythms, faster or
slower, and kind of simultaneously (not alternating).

After you've seen it, eval (setq bidi-display-reordering nil).

Mash the keys again, now the popup will occasionally be displayed below
its intended position, by 11 lines or so.

If you add some debugging output to `company--col-row', you'll see that,
for the same value of POS, (posn-at-point pos) returns in these odd
moments "position objects" with very different X and Y coordinates.

This bug is most likely related to the `company-pseudo-tooltip-overlay'
now being positioned starting with the end of the current line (before
the newline), because if I add a space after the current point, I can't
reproduce it anymore. This was at one point suggested by Eli
(http://lists.gnu.org/archive/html/emacs-devel/2014-08/msg00328.html),
or at least hinted at.

I'd be happy to help debugging this further, if someone tells me how.

In GNU Emacs 24.3.93.3 (x86_64-unknown-linux-gnu, GTK+ Version 3.10.8)
 of 2014-09-05 on axl
Repository revision: 117482 monnier <at> iro.umontreal.ca-20140904161426-2072ebabqpyhaadw
Windowing system distributor `The X.Org Foundation', version 11.0.11501000
System Description:	Ubuntu 14.04.1 LTS



This bug report was last modified 10 years and 248 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.