* posn-at-point returns nil after goto-char
@ 2010-04-11 7:30 D Chiesa
2010-04-11 14:49 ` Jeff Clough
2010-04-11 17:39 ` Eli Zaretskii
0 siblings, 2 replies; 3+ messages in thread
From: D Chiesa @ 2010-04-11 7:30 UTC (permalink / raw)
To: help-gnu-emacs
I've got a function that looks something like this:
(defun my-move-and-popup-menu ()
"move the point, then pop up a menu."
(goto-char xxxx)
(setq p (posn-at-point))
(my-popup-menu p ...)
)
Basically, move the point, then retrieve the screen position at that point,
and then popup a menu at that screen position.
But I am finding that `posn-at-point` returns non-nil, only if the xxxx
character position (the *after* position) is visible in the window, *before*
the call to `goto-char`. It seems that the position is not actually updated
until exit from the function. If `goto-char` goes a long way, more than one
screenful, then the retrieved position is always nil, and my code doesn't
know where to popup the menu.
The reason I suggest that the position is not actually updated until exit
from the function - when the menu successfully pops up (which happens when
the xxxx position is visible, though not at point, before entering the
function), the cursor is clearly visible in its previous location while the
popup menu is being displayed. When I dismiss the menu, the cursor moves to
where I expected it to move, during the `goto-char` call.
How can I get the position to be *really* updated, between `goto-char` and
`posn-at-point`, so that `posn-at-point` will not return nil?
Thanks for any hints y'all can provide.
D Chiesa
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: posn-at-point returns nil after goto-char
2010-04-11 7:30 posn-at-point returns nil after goto-char D Chiesa
@ 2010-04-11 14:49 ` Jeff Clough
2010-04-11 17:39 ` Eli Zaretskii
1 sibling, 0 replies; 3+ messages in thread
From: Jeff Clough @ 2010-04-11 14:49 UTC (permalink / raw)
To: help-gnu-emacs
"D Chiesa" <dpchiesa@hotmail.com> writes:
> How can I get the position to be *really* updated, between `goto-char`
> and `posn-at-point`, so that `posn-at-point` will not return nil?
Putting a call to (recenter) between them will work.
Jeff
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: posn-at-point returns nil after goto-char
2010-04-11 7:30 posn-at-point returns nil after goto-char D Chiesa
2010-04-11 14:49 ` Jeff Clough
@ 2010-04-11 17:39 ` Eli Zaretskii
1 sibling, 0 replies; 3+ messages in thread
From: Eli Zaretskii @ 2010-04-11 17:39 UTC (permalink / raw)
To: help-gnu-emacs
> From: "D Chiesa" <dpchiesa@hotmail.com>
> Date: Sun, 11 Apr 2010 03:30:21 -0400
>
> But I am finding that `posn-at-point` returns non-nil, only if the xxxx
> character position (the *after* position) is visible in the window, *before*
> the call to `goto-char`. It seems that the position is not actually updated
> until exit from the function.
The documentation explicitly says that it returns nil for a position
that is not visible.
> If `goto-char` goes a long way, more than one screenful, then the
> retrieved position is always nil, and my code doesn't know where to
> popup the menu.
That's because Emacs never updates the display until it has no more
pending commands to run.
> How can I get the position to be *really* updated, between `goto-char` and
> `posn-at-point`, so that `posn-at-point` will not return nil?
Add a call to `sit-for'?
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2010-04-11 17:39 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-04-11 7:30 posn-at-point returns nil after goto-char D Chiesa
2010-04-11 14:49 ` Jeff Clough
2010-04-11 17:39 ` Eli Zaretskii
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.