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

From: Eli Zaretskii <[email-masked]>
Date: Fri, 19 Sep 2014 17:00:06 +0300

> Date: Fri, 19 Sep 2014 17:46:57 +0400
> From: Dmitry Gutov <[email-masked]>
> CC: [email-masked]
> 
> On 09/19/2014 05:35 PM, Eli Zaretskii wrote:
> 
> > Btw, why is it important what happens when the user types C-g, i.e. if
> > she abandons the completion?  Or does the problem happen without C-g
> > as well?
> 
> I'm not quite sure how we get to that point, to be honest.

??? Your recipe includes fast presses on C-/ and C-g.  Or did I
misunderstand?

> --- a/company.el
> +++ b/company.el
> @@ -782,7 +782,13 @@ means that `company-mode' is always turned on 
> except in `message-mode' buffers."
>       (cons (+ col (window-hscroll)) row)))
> 
>   (defun company--col-row (&optional pos)
> -  (company--posn-col-row (posn-at-point pos)))
> +  (let ((posn (posn-at-point pos)))
> +    ;; Completion should be invoked at column > 1.
> +    (when (zerop (car (posn-x-y posn)))
> +      (message "company--col-row zero!")
> +      (message "then:")
> +      (message "%s" (posn-x-y (posn-at-point pos))))
> +    (company--posn-col-row posn)))
> 
>   (defun company--row (&optional pos)
>     (cdr (company--col-row pos)))
> 
> I get:
> 
> company--col-row zero!
> then:
> (0 . 198)

Thanks, but with what sequence of commands do you get that?