[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: line-start?

From: Eli Zaretskii
Subject: Re: line-start?
Date: Fri, 07 Feb 2020 12:24:37 +0200

> From: Bastien <address@hidden>
> Cc: address@hidden
> Date: Fri, 07 Feb 2020 11:11:15 +0100
> Eli Zaretskii <address@hidden> writes:
> > Once again, window-hscroll just returns the number of columns by which
> > the window is hscrolled, it doesn't return the buffer position.  For
> > example, window-hscroll will return the same value for each line in
> > the window, although the buffer position of the beginning of each line
> > is different.  Are you looking for columns or for buffer positions?
> I was looking for columns.

Then (nth 1) of what posn-at-x-y returns is not what you want.  You
should use the (car (nth 6)) instead.

> The use case was this one: given a line, display the content of this
> line in the header line.  When horizontally scrolled, the header has
> to display a substring of the line under the cursor, something like
> (substring (current-line-string) offset-in-columns).

But using the buffer position, you could use buffer-substring instead,

> (defun window-line-start (&optional pos window)
>   "Return the position of the visual start of the line.
> POS defaults to point in WINDOW; WINDOW defaults to the current window."
>   (nth 1 (posn-at-x-y
>         0 (+ (cdr (posn-x-y (posn-at-point pos window)))
>              (- (nth 1 (window-edges nil t nil t))
>                 (nth 1 (window-edges nil nil nil t)))))))
> My use-case is gone, I went with overlays instead of the header line.
> But I guess `window-line-start' could perhaps be useful to others.


reply via email to

[Prev in Thread] Current Thread [Next in Thread]