自定义的不如doom-modeline好看省心。
doom-modeline 功能更完备
自己配,用啥就配啥,简单。
我本地还是无法复现,不过我尝试修改了一版,等会你更新试试。 这回完全去除了和原生不一样的逻辑,性能应该会更好。
checkout github master branch, commit: 297fb8c 看到了更改,使用emacs -Q 效果没有明显变化,profiler结果和以前一样。
附加一段 emacs -Q profiler report, 这里面最大的不同是 71%的CPU command-execute,6% GC, redisplay_internal 几乎不消耗CPU或者profiler拿不到采样。 在doom-modeline时,redisplay_interal消耗大量CPU, 然后才是 command-execute
Samples % Function
152 71% - command-execute
152 71% - call-interactively
141 66% - funcall-interactively
96 45% - scroll-up-command
20 9% - scroll-up
20 9% - eval
20 9% mode-line-eol-desc
24 11% - next-line
24 11% - line-move
9 4% - line-move-partial
9 4% - window-inside-pixel-edges
9 4% window-edges
7 3% - window-inside-pixel-edges
7 3% - window-edges
7 3% window-current-scroll-bars
16 7% scroll-down-command
5 2% - execute-extended-command
5 2% - command-execute
5 2% - call-interactively
5 2% - funcall-interactively
5 2% profiler-stop
11 5% - byte-code
11 5% - read-extended-command
11 5% - read-extended-command-1
11 5% - completing-read
11 5% - completing-read-default
11 5% read-from-minibuffer
33 15% - timer-event-handler
33 15% - apply
33 15% - show-paren-function
33 15% - show-paren--default
33 15% syntax-ppss
13 6% - ...
13 6% Automatic GC
13 6% - undo-auto--add-boundary
13 6% undo-auto--boundaries
1 0% - redisplay_internal (C function)
1 0% - redisplay--pre-redisplay-functions
1 0% run-hook-with-args
问题出在 doom-modeline-segments.el line: 1648
在 literally 大文件下调用 (line-number-at-pos (point-max))
是会非常卡的。
我去掉调用就好了,但功能/逻辑就不对了。看看怎么处理一下。
另外就是本想通过doom-modeline-total-line-number 这个custom来跳过总行数计算, 然而这个宏展开时,即使我加上条件判断仍然执行计算,这就不明白了,elisp有点薄弱
(when doom-modeline-total-line-number
(doom-modeline-total-line-number
,(format "/%d" (line-number-at-pos (point-max))))
本来默认 doom-modeline-total-line-number 就是nil
point-max
在大文件的情况下确实可能比较耗性能,虽然是C语言实现。
你的 doom-modeline-total-line-number
是什么值?
doom-modeline-total-line-number 是 nil
我搞不定那个宏,写了个方法,然后在宏中调用,现在 doom-modeline-total-line-number 为t
时会卡,为nil
则不卡。
我试过 (point-max)
不卡,但(line-number-at-pos (point-max))
就卡了。
我理解 (point-max)
返回的是 current_buffer->zv
, 准确的说在大文件时,第一次调用(比如移动到文件尾 meta + >
会卡,但之后就不会卡了,我尝试对文件进行编辑,然后在四处移动,也不卡,应该是编辑时会修改current_buffer->zv
。
line-number-at-pos
则会调用 count_lines
这个方法,这个在大文件时就会慢了。
对于 大文件(line-number-at-pos (point-max))
确实比较慢。试试最新的版本,doom-modeline-total-line-number 为nil时应该不卡。
已更新melpa版本, 当doom-modeline-total-line-number
为nil
不会再有doom-modeline带来的问题了。
非常感谢。
挺好看的。但我装上了以后,某些buffer执行 mark-whole-buffer (C-x h)命令时,虽然选择上了,但是背景色不变。不知道为啥。
我也遇到了类似的问题。选中了后,背景色无变化,其实是可以 M-w 复制的。
doom-modeline
只控制mode-line的显示,对于编辑区无影响才对。看看你环境上的 region
face是什么。
怎么看“环境上的region face”?
不加载doom-modeline就没有问题,是不是有啥设置冲突了?
另外,有时候C-x h复制了,然后到另外一个buffer,再C-x h,再粘贴,会粘贴在buffer开头,而没有覆盖粘贴。
M-x describe-face RET region RET
看着正常。我这里没有问题,你最好用 emacs -Q
复现下。
如果还有问题按照issue模板的反馈吧,现在看不出和mode-line有啥关系,可能与主题和其他插件有关。
我 emacs -Q 下,加载了 meow 和 doom-modeline,打开任意文件,按「向上」键多次后,就会出现 . b
选中区域背景色不变的问题。(但是我 C-x h
始终是没有问题的。)单独加载 meow 的时候没有问题。(不知道该如何定位了)
或者 emacs -Q 的时候同时加载 meow 和 doom-modeline,复现时,只需要 doom-modelilne-mode 关闭后就可以恢复正常。
以上回复参考一下,或者有定位的思路提点一下,感谢。
emacs -Q
只加载doom-modeline
不要加载任何其他配置,会出现吗?视频中看到还加载了一堆其他配置。似乎至今你没有提及到Emacs版本。