繁体   English   中英

Emacs Lisp 中的缓冲区 position 的列?

[英]Column of buffer position in Emacs Lisp?

在 Emacs Lisp 中,如果你有一个缓冲区 position 存储在一个变量中,你如何找到它在哪一列?

查看save-excursion的文档。

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

Trey 已经搞定了(虽然我没有亲自尝试过),但这是我写的东西。

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

这个问题有一个模棱两可的地方:“它在哪一列”可能意味着 1)“它出现在哪个字符列中”或 2)“一个人必须从行首前进多少个字符到到达当前位置”。 这些通常是相同的,但在存在具有诸如 '(display (space:width 7)) 之类的文本属性的字符时可能会有所不同[它表示将具有该文本属性的字符显示为 7 个空格宽]。

elisp function 当前列返回含义 1,但计算 (point) 的值返回含义 2。因此在某些情况下,Trey Jackson 的答案将返回与 compman 不同的值。

含义 2 的另一种可能性是 (- (point) (line-beginning-position))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM