2013-11-18 5 views
2

Я хочу знать вертикальное положение курсора относительно верхней части окна. Я попробовал этотНайти вертикальное положение в окне

(defun cursor-line-in-window() 
    (save-excursion 
    (let* ((current-line (line-number-at-pos (point))) 
      (top-of-window-line (progn (move-to-window-line 0) 
          (line-number-at-pos (point)))))                    
     (- current-line top-of-window-line)))) 

Это работает, за исключением того, когда я нахожусь в файле орг-режиме, где несколько строк сложенный под заголовком. Поэтому я хотел бы либо:

1: найти способ подсчета количества видимых строк в диапазоне, или

2: найти функцию, которая дает мне вертикальное положение непосредственно.

ответ

2

Посмотрите на (nth 6 (posn-at-point)), которая должна быть пара (COL . ROW).

1

Здесь у вас есть не-очень-элегантное решение:

(defun cursor-line-in-window() 
    (save-excursion 
    (beginning-of-line) 
    (let ((pos (point)) 
      (r 0)) 
     (move-to-window-line 0) 
     (while (<= (point) pos) 
     (next-line 1) 
     (beginning-of-line) 
     (incf r)) 
     r))) 
Смежные вопросы