doom-modeline 2.1.0

自定义的不如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

如果仅显示 空格, 百分比, Top/Bot 我确定是不卡的。

问题出在 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-numbernil 不会再有doom-modeline带来的问题了。

非常感谢。

1 个赞

挺好看的。但我装上了以后,某些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版本。