gpt4 book ai didi

emacs - Emacs 中的相对行号

转载 作者:行者123 更新时间:2023-12-03 11:50:37 24 4
gpt4 key购买 nike

有谁知道这样的事情如何Vim Relative Line Numbers emacs 存在吗?我使用 vimpulse,伙计,这将非常方便!我知道一些 lisp,所以如果没有,我可以尝试自己做,如果我在正确的方向上找到了一点。

更新 :
多亏了正确的响应,我想出了这个,当前行显示 1,前一行显示 -1,与 vimpulse yanks 和 deletes 结合使用。

非常感谢所有帮助过的人!我知道这不完全是 Vim 所做的,但是 vim 中从零开始的相对行号有什么用?愚蠢的vim。

(defvar my-linum-current-line-number 0)

(setq linum-format 'my-linum-relative-line-numbers)

(defun my-linum-relative-line-numbers (line-number)
(let ((test2 (1+ (- line-number my-linum-current-line-number))))
(propertize
(number-to-string (cond ((<= test2 0) (1- test2))
((> test2 0) test2)))
'face 'linum)))

(defadvice linum-update (around my-linum-update)
(let ((my-linum-current-line-number (line-number-at-pos)))
ad-do-it))
(ad-activate 'linum-update)

最佳答案

(2012-03-16:行号现在右对齐,并显示在正确的面上。)

这里的问题是,到时候自定义 linum-format函数被调用,点已经被移动(由 linum-update-window )到有问题的线,所以我们不能再用它来建立两条线之间的差异;它只会为每一行打印一个零。

有一个linum-before-numbering-hook ,但这是在点移动到缓冲区开头之后运行的,因此这对我们的目的没有用。

以下代码通过对 linum-update 使用通知来解决问题存储当前行号,以便它可用于自定义 linum-format功能。

为了使数字右对齐,我最初使用了硬编码格式字符串 %3d基于一个窗口显示超过 100 行代码的可能性不大。如果您是 follow-mode 的粉丝,但是(或者只是在同一个缓冲区上有多个窗口),这种情况变得极有可能;所以代码现在动态计算所需的列数。 linum-before-numbering-hook的使用使这比默认采用的方法更有效 dynamic linum 格式。

请注意,如果您注释掉 add-hook ,使用更快的非动态方法。

(defvar my-linum-format-string "%3d")

(add-hook 'linum-before-numbering-hook 'my-linum-get-format-string)

(defun my-linum-get-format-string ()
(let* ((width (1+ (length (number-to-string
(count-lines (point-min) (point-max))))))
(format (concat "%" (number-to-string width) "d")))
(setq my-linum-format-string format)))

(defvar my-linum-current-line-number 0)

(setq linum-format 'my-linum-relative-line-numbers)

(defun my-linum-relative-line-numbers (line-number)
(let ((offset (- line-number my-linum-current-line-number)))
(propertize (format my-linum-format-string offset) 'face 'linum)))

(defadvice linum-update (around my-linum-update)
(let ((my-linum-current-line-number (line-number-at-pos)))
ad-do-it))
(ad-activate 'linum-update)

关于emacs - Emacs 中的相对行号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6874516/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com