buffer状态是modified,默认显示为黄色
原来是这个原因,抱歉,打扰了。
(doom-modeline-def-segment lucius/buffer-info
"custom doom-modeline for telega-chat-mode"
(let ((buffer-name (doom-modeline--buffer-name)))
(when (eq major-mode 'telega-chat-mode)
(setq buffer-name (propertize buffer-name 'face '(:foreground ,(frame-parameter nil 'foreground-color) :weight bold))))
(concat
(doom-modeline-spc)
(doom-modeline--buffer-mode-icon)
(doom-modeline--buffer-state-icon)
buffer-name)))
写了个 segments 弄一下,舒服多了
说到 buffer-name, 因为可长可短,会有把 modeline 挤爆的情况,请问可以增一个 defcustom 用于自定义最大 buffer-name 长度么?超过则 truncate 用 … 替代。 @seagle0128
See doom-modeline-buffer-file-name-style
.
遇到了doom-modeline的问题,不知道是最近有什么改动么.
我用的doom emacs在debian上,也可能是doom emacs有改动,换回之前的配置就没有问题
Error during redisplay: (eval (doom-modeline-segment--modals)) signaled (wrong-type-argument stringp nil) [9 times]
可能是这个问题
doom-emacs 的问题,见:
doom-modeline-def-segment 直接在config.el 下写会报错,你是怎么解决的呀?
⛔ Warning (initialization): An error occurred while loading ‘/Users/van/.emacs.d/.local/etc/@/init.29.elc’:
Error caused by user's config or system: /Users/van/.doom.d/config.el, (void-function doom-modeline-def-segment)
To ensure normal operation, you should investigate and remove the
cause of the error in your initialization file. Start Emacs with
the ‘--debug-init’ option to view a complete error backtrace.
不用 doom,不过你这个提示的错误信息已经很明显了,没找到 doom-modeline-def-segment
函数。
需要用 with-eval-after-load
最近工作需要,经常需要处理体积较大的日志文件,发现在文件中移动光标非常卡顿,使用emacs -Q则相对流畅。
find-file-literally
profiler跑了一下,如果仅移动光标则绝大部分CPU消耗在 doom-modeline-segment–buffer-position 上,之后禁掉 doom-mode-line 仍加载100来个包,则移动光标流畅。
目前只能禁掉doom-modeline来用,有什么方法解决一下?
emacs: 29.4.50
doom-modeline 版本 melpa 20240905.635
理论上 buffer-position 性能消耗和原生的是一样的,需要具体看看消耗在哪个函数上,最好把profile的backtrace贴出来。另外,看看有没有用 nyan-mode 、poke-line-mode 之类的,需要禁用。
没有使用 nyan-mode, poke-line-mode之类的。 刚移动至文件尾,光标上移动,移动到文件头,光标移动,翻页:
Samples % Function
10957 74% - redisplay_internal (C function)
10957 74% - eval
10913 74% doom-modeline-segment--buffer-position
17 0% + doom-modeline-segment--buffer-info
13 0% + doom-modeline-format--main
4 0% + doom-modeline-segment--major-mode
4 0% + doom-modeline-segment--mu4e
3709 25% - command-execute
3706 25% - call-interactively
3605 24% - funcall-interactively
3365 22% - scroll-up-command
3356 22% - scroll-up
3356 22% - eval
3348 22% doom-modeline-segment--buffer-position
1 0% + doom-modeline-format--main
154 1% + previous-line
82 0% + next-line
4 0% + execute-extended-command
101 0% + byte-code
9 0% + ...
9 0% + timer-event-handler
1 0% which-key--hide-popup
开两个emacs一个禁用doom-modeline,一个启用,都打开同一个文件。
以下是 describe-mode
,不同的仅仅是 doom-modeline。
禁用时
Minor mode enabled in this buffer: Font-Lock
The major mode is Fundamental mode defined in simple.el:
Major mode not specialized for anything in particular.
Other major modes are defined by comparison with this one.
Global minor modes enabled: Auto-Encryption Blink-Cursor Column-Number
Dirvish-Override-Dired Electric-Indent File-Name-Shadow
Global-Font-Lock Line-Number Marginalia Nerd-Icons-Completion
Projectile Savehist Show-Paren Tooltip Transient-Mark Vertico
Which-Key
启用时
Minor mode enabled in this buffer: Font-Lock
The major mode is Fundamental mode defined in simple.el:
Major mode not specialized for anything in particular.
Other major modes are defined by comparison with this one.
Global minor modes enabled: Auto-Encryption Blink-Cursor Column-Number
Dirvish-Override-Dired Doom-Modeline Electric-Indent File-Name-Shadow
Global-Font-Lock Line-Number Marginalia Nerd-Icons-Completion
Projectile Savehist Show-Paren Tooltip Transient-Mark Vertico
Which-Key
方便提供下文件重现吗?另外,用的什么操作系统
Arch Linux up-to-date. 6.10.9-arch1-1 #1 SMP PREEMPT_DYNAMIC
内存 64G,
日志文件6,000,000行,600+M,我在一台 ubuntu 20.04上编译 29.4.50 重现了。
5.4.0-189-generic #209-Ubuntu SMP
内存 24G,虚拟机,
以上不存在内存不足的情况。
我感觉文件内容不重要,也不方便提供。
有时间我试一下不加载其他包,仅加载doom-modeline 看看是不是有包发生了不知道的冲突。
你试试2用Emacs -Q + doom-modeline 来重现吧
使用 emacs -Q -nw my-600m-log-file
回答 yes-no-literally, literally
.
确认上下移动光标,翻页流畅。
切换至 scratch
输入
(add-to-list 'load-path "~/.local/share/emacs/elpa/f-20240308.906")
(add-to-list 'load-path "~/.local/share/emacs/elpa/s-20220902.1511")
(add-to-list 'load-path "~/.local/share/emacs/elpa/dash-20240510.1327")
(add-to-list 'load-path "~/.local/share/emacs/elpa/shrink-path-20190208.1335")
(add-to-list 'load-path "~/.local/share/emacs/elpa/nerd-icons-20240816.1555")
(add-to-list 'load-path "~/.local/share/emacs/elpa/compat-30.0.0.0")
(add-to-list 'load-path "~/.local/share/emacs/elpa/doom-modeline-20240905.635")
(use-package doom-modeline
:commands doom-modeline-mode
:config
(setq doom-modeline-buffer-file-name-style 'truncate-upto-project)
:custom
(doom-modeline-height 25)
:init
(doom-modeline-mode t))
这里偷懒复制了正常配置里面的一段, 如果使用 (use-package doom-modeline)
然后 m-x doom-modeline
也试过,效果一样。
运行 eval-buffer
switch-to-buffer my-600m-log-file 上下移动光标,翻页都卡,快速翻页会卡住不动较长时间。
profiler-start/stop/report
CPU使用超过95%在 doom-modeline-segment--buffer-position
可能 doom-modeline 需要的包我的版本不一定合适,我是elpa + melpa 的组合。经常更新。
使用 doom-modeline 一段时间之后就发现有这个问题。很久之前。
后来就把 doom-modeline 卸了,自定义 modeline。