比如org文件, 打开后, 大部分内容是折叠(隐藏的),如果想把隐藏的行全部忽略掉,只统计可见的行,如何计算光标所在位置的行号(忽略隐藏的行)?
不怎么清楚 Emacs 的「行」究竟是怎么一回事,所以也不能下面这个是不是正解,尽管稍微试了下没发现问题。
(defun what-visual-line ()
(interactive)
(save-excursion
(let ((op (point))
(linum 1))
(goto-char (point-min))
(while (and (line-move-visual 1 'noerror)
(<= (point) op))
(setq linum (1+ linum)))
(message "Visual Line Number: %s" linum))))
(defun zx ()
(interactive)
(save-excursion
(goto-char 1)
(print (line-number-at-pos))
(while (line-move 1 t)
(print (line-number-at-pos)))))
这种方法能想到, 我是想问一下有没有更高效的方法,org文件大的时候, 移动光标都有点卡顿