Emacs Lisp中缓冲区位置的列?

Emacs Lisp中缓冲区位置的列?,emacs,lisp,elisp,Emacs,Lisp,Elisp,在Emacs Lisp中,如果在变量中存储了缓冲区位置,如何查找该位置所在的列?请查看和的文档 Trey已经搞定了(虽然我还没有亲自尝试过),但我写了一些东西来实现它 (defun calculate-column (point) (save-excursion (goto-char point) (beginning-of-line) (- point (point)))) 问题中有一个模棱两可的地方:“它在哪一列”可能意味着1)“它似乎在哪一个字符列中”或2)“

在Emacs Lisp中,如果在变量中存储了缓冲区位置,如何查找该位置所在的列?

请查看和的文档

Trey已经搞定了(虽然我还没有亲自尝试过),但我写了一些东西来实现它

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

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

elisp函数current column返回值1,但计算(点)的值返回值2。特雷·杰克逊的回答将返回一个与康普曼不同的值,因为在某些情况下


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

当存在内置函数
当前列时,为什么还要自己计算呢?你只会忘记所有的特殊情况。Like tabs.@nschum或Like
'显示
属性。我很好奇,为什么pos上没有列号
函数使用这个对应于pos上的
行号
(defun calculate-column (point)
  (save-excursion
    (goto-char point)
    (beginning-of-line)
    (- point (point))))