Function: posn-at-point
posn-at-point is a function defined in keyboard.c.
Signature
(posn-at-point &optional POS WINDOW)
Documentation
Return position information for buffer position POS in WINDOW.
POS defaults to point in WINDOW; WINDOW defaults to the selected window.
If POS is in invisible text or is hidden by display properties,
this function may report on buffer positions before or after POS.
Return nil if POS is not visible in WINDOW. Otherwise,
the return value is similar to that returned by event-start for
a mouse click at the upper left corner of the glyph corresponding
to POS:
(WINDOW AREA-OR-POS (X . Y) TIMESTAMP OBJECT POS (COL . ROW)
IMAGE (DX . DY) (WIDTH . HEIGHT))
The posn- functions access elements of such lists.
Probably introduced at or before Emacs version 22.1.
Source Code
// Defined in /usr/src/emacs/src/keyboard.c
{
Lisp_Object tem;
if (NILP (window))
window = selected_window;
tem = Fpos_visible_in_window_p (pos, window, Qt);
if (!NILP (tem))
{
Lisp_Object x = XCAR (tem);
Lisp_Object y = XCAR (XCDR (tem));
Lisp_Object aux_info = XCDR (XCDR (tem));
int y_coord = XFIXNUM (y);
/* Point invisible due to hscrolling? X can be -1 when a
newline in a R2L line overflows into the left fringe. */
if (XFIXNUM (x) < -1)
return Qnil;
if (!NILP (aux_info) && y_coord < 0)
{
int rtop = XFIXNUM (XCAR (aux_info));
y = make_fixnum (y_coord + rtop);
}
tem = Fposn_at_x_y (x, y, window, Qnil);
}
return tem;
}