我可以更改emacs对第一列的概念吗? (从零到一)

时间:2011-10-19 15:50:22

标签: emacs

Emacs列号模式编号从0开始的列通常不会让我感到悲伤,但我正在使用一些基于行/列的数据文件,其规格以“1”开头,这将是很多如果我可以让emacs做到这一点,或者找到一些elisp来更容易。

欢迎思考。

3 个答案:

答案 0 :(得分:10)

您不能轻易地将Emacs更改为基于1的列计数,更改必须在C代码中。

但是,您可以计算自己的列并将其放在模式行中。注意:这需要使用force-mode-line-update - 这可能会降低你的Emacs的速度(只要记住两年后Emacs在某些大缓冲区感觉迟钝的话)。

;; update the mode line to have line number and column number
(setq mode-line-position 
      '("%p (%l," (:eval (format "%d)" (1+ (current-column))))))
;; force the update of the mode line so the column gets updated
(add-hook 'post-command-hook 'force-mode-line-update)

文档使用链接为'Variables Used In Mode Line''Cursor Position Information'

答案 1 :(得分:4)

从Emacs 26(现已发布)开始,有一个内置旋钮可以解决这个问题。

要使用它,请设置 (setq column-number-indicator-zero-based nil) 在.emacs中

[编辑反映Emacs 26现已出局。]

答案 2 :(得分:1)

嗯,这可能不是最好的答案,因为我不知道emacs那么好。我已编辑mode-line-position,这是mode-line-format的一部分。在使用之前,请查看原始值,以确保没有遗漏任何内容。

(setq mode-line-position
  '((-3 #("%p" 0 2 (help-echo "Size indication mode
mouse-1: Display Line and Column Mode Menu" mouse-face mode-line-highlight local-map (keymap (mode-line keymap (down-mouse-1 keymap (column-number-mode menu-item "Display Column Numbers" column-number-mode :help "Toggle displaying column numbers in the mode-line" :button (:toggle . column-number-mode)) (line-number-mode menu-item "Display Line Numbers" line-number-mode :help "Toggle displaying line numbers in the mode-line" :button (:toggle . line-number-mode)) "Toggle Line and Column Number Display"))))))
     (size-indication-mode (8 #(" of %I" 0 6 (help-echo "Size indication mode
mouse-1: Display Line and Column Mode Menu" mouse-face mode-line-highlight local-map (keymap (mode-line keymap (down-mouse-1 keymap (column-number-mode menu-item "Display Column Numbers" column-number-mode :help "Toggle displaying column numbers in the mode-line" :button (:toggle . column-number-mode)) (line-number-mode menu-item "Display Line Numbers" line-number-mode :help "Toggle displaying line numbers in the mode-line" :button (:toggle . line-number-mode)) "Toggle Line and Column Number Display")))))))
     "(%l,[%c"
     (:eval (format ",%d])" (1+ (current-column))))))

主要问题是,当您从模式行格式中删除%c(列号)时,(:eval (current-column))的工作速度非常慢。我不知道如何做得更好。