在Emacs Lisp中,如果缓冲区位置存储在变量中,您如何找到它所在的列?
查看columns和save-excursion
的文档。
(save-excursion (goto-char pos) (current-column))
特雷已经钉了它(虽然我没有亲自尝试过),但这是我写的东西。
(defun calculate-column (point)
(save-excursion
(goto-char point)
(beginning-of-line)
(- point (point))))
这个问题有一个含糊不清的地方:“它是什么列”可能意味着1)“它看起来是什么字符列”或2)“从行的开头到一个字符列需要多少个字符到达当前位置“。这些通常是相同的,但在存在具有文本属性的字符时可以是不同的,例如'(display(space:width 7))[表示显示具有该text属性的字符,好像它们是7个空格宽]。
elisp函数current-column返回含义1,但计算(point)的值会返回含义2.在某些情况下,Trey Jackson的答案将返回与compman不同的值。
意义2的另一种可能性是( - (点)(行 - 开始 - 位置))