emacs26 Native display of line numbers 非常快

https://lists.gnu.org/archive/html/emacs-devel/2017-06/msg00318.html

开了几千行的PHP文件, 发现编辑起来很慢, 原本用的nlinum-mode , 突然发现有个display-line-numbers-mode, 试了下, 居然快了很多 再google 了下相关新闻, 分享给大家

2 个赞

想想这功能都出来了快一年了。 Emacs 26 还没正式出来。

和vsc哪個快?

这个功能有Bug,可配置性不如nlinum

用了几个月了,感觉没啥问题,挺问题,速度也快很多。

链接里的这个问题是可以通过 emacs -Q 复现的啊

;;; 不管设置什么,都有一个多余的空格,应该是 display-line-numbers-width 的计算方式有点问题
;; (setq display-line-numbers-grow-only t)
;; (setq-default display-line-numbers-widen t)
;; (setq-default display-line-numbers-width 1)
(global-display-line-numbers-mode +1)

此外,相比 nlinum,还有一点不足是,不能捕捉点击事件了,我之前也有过类似的问题。这意味着不能再模拟其他编辑器的点击行号折叠代码了

1 个赞

这个问题我还真没注意,不知道是故意这样还是bug。 [left-margin mouse-1]事件应该还没有实现,display-line-numers-mode算是比较新的package,主要是为了解决效率问题,功能还不完善。问下,你的鼠标点击margin折叠代码是怎么实现的?一直没有找到好用的代码折叠实现,有时候甚至觉得没有必要,直接上outline或者imenu解决。

以前的 nlinum 是直接在 left-margin 里的,直接捕捉 [left-margin mouse-1] 事件到 hideshow 就好了,现在的display-line-numbers 没有用到 left-margin

I don’t think we can ignore this tendency any longer, even if we agree that this is a disease.

:joy::joy::joy::joy::joy::joy:

(From Native display of line numbers )

这里说emacs中不需要

“move down N lines, then DO SOMETHING”

为什么?“正确的”做法是?用avy?avy也不是内置的呀

C-s incremental search

out


不知道为什麼 ffmpeg 做出的 gif 都很糟。

因为 gif 是个很糟糕的格式。

ref: ffmpeg 命令行参数调优

2 个赞

nlinum 之前好像也用过, 但是感觉还是line number 快点, 用着没发现bug

用的emacs-mac 版本

emacs-mac更新了之后试了一下,关于几个line number的mode有点疑问:

  • 我现在知道linum-mode是内置的老的mode,display-line-numbers-mode是26新加的,nlinum-mode是elpa上的,这些都没错?simple.el里还有个line-number-mode是干什么的?

edit: 啊没好好看文档,根据 @netjune 的解答又看了一眼:

Toggle line number display in the mode line (Line Number mode).

控制mode-line上那个行列数字中的行

用了 Native display of line numbers,发现左边这拦非常宽,大概是4个字符,即使行号只有个位数,也是4个字符宽度,这个怎么调整?

看我提到的链接.

其中,display-line-numbers 的作者 eli 说

No, one leading and one trailing space cannot be removed.

前后会空一个字符,但是会根据行号长度缩短的,如果是spacemacs的话,spacemacs develop设为至少4个字符了,(setq-default display-line-numbers-width nil)一下

感谢
话说这个setq 和 setq-default 有什么差异?