在窗口中查找垂直位置

时间:2013-11-18 14:41:54

标签: emacs elisp

我想知道光标相对于窗口顶部的垂直位置。我试过这个

(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 个答案:

答案 0 :(得分:2)

查看(nth 6 (posn-at-point)),该对应(COL . ROW)

答案 1 :(得分: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)))