Emacs Lisp中的缓冲区列?

问题描述 投票:7回答:3

在Emacs Lisp中,如果缓冲区位置存储在变量中,您如何找到它所在的列?

emacs lisp elisp
3个回答
16
投票

查看columnssave-excursion的文档。

(save-excursion (goto-char pos) (current-column))

1
投票

特雷已经钉了它(虽然我没有亲自尝试过),但这是我写的东西。

(defun calculate-column (point)
  (save-excursion
    (goto-char point)
    (beginning-of-line)
    (- point (point))))

0
投票

这个问题有一个含糊不清的地方:“它是什么列”可能意味着1)“它看起来是什么字符列”或2)“从行的开头到一个字符列需要多少个字符到达当前位置“。这些通常是相同的,但在存在具有文本属性的字符时可以是不同的,例如'(display(space:width 7))[表示显示具有该text属性的字符,好像它们是7个空格宽]。

elisp函数current-column返回含义1,但计算(point)的值会返回含义2.在某些情况下,Trey Jackson的答案将返回与compman不同的值。

意义2的另一种可能性是( - (点)(行 - 开始 - 位置))

© www.soinside.com 2019 - 2024. All rights reserved.