doom-modeline 2.1.0

分析很细致。我还没来得及看最近的变化,推测29里byte-compile做了修改。等29稳定下来再看看吧

(等等,我还没分析完…

分析完成了!

doom-modeline右边显示不全,这是窗口最大化之后,最右边的截图,最右好像是个错误数量,只显示了一点点。 image

  • win10
  • “GNU Emacs 28.0.50 (build 1, x86_64-w64-mingw32)”
  • doom-modeline-20220325.554

跟字体和大小有关,图标计算没办法很精确

和keycast-mode好像配合的不是很好……

我的配置文件:

(use-package doom-modeline
  :diminish doom-modeline-mode
  :config
  (setq doom-modeline-modal-icon nil)
  ;; Must use mono font here
  (set-face-attribute 'mode-line nil :font "Jetbrains Mono NL" :height 140 :weight 'semi-bold)
  (set-face-attribute 'mode-line-inactive nil :font "Jetbrains Mono NL" :height 140 :weight 'semi-bold)
  :hook (after-init . doom-modeline-mode))

(use-package keycast
  :after doom-modeline
  :commands keycast-mode
  :config
  (define-minor-mode keycast-mode
    "Show current command and its key binding in the mode line."
    :global t
    (if keycast-mode
        (progn
          (add-hook 'pre-command-hook 'keycast--update t)
          (add-to-list 'global-mode-string '("" keycast-mode-line " ")))
      (remove-hook 'pre-command-hook 'keycast--update)
      (setq global-mode-string (remove '("" keycast-mode-line " ") global-mode-string))))
  (keycast-mode)
  )

麻烦帮忙看看哪里有问题?

没看懂你想表达什么

modeline最右侧无法显示全

换其他字体或者缩小字体。图标显示太多无法精确计算

@seagle0128 能否把 all-the-icon改为可选依赖呢?我在teminal和gui都不用任何图标,不太想安装这个依赖项。我看在 Fix #149 中你revert了之前的commit是出于什么考量呢?

(setq doom-modeline-icon 1) fails and hangs emacs daemon · Issue #149 · seagle0128/doom-modeline (github.com) issue中有详细描述。

理论上是可以去掉all-the-icons的,但改动相当多,很多情况需要考虑。另外,其实icons在terminal下也是能用的,只是很多terminal配置不方便。

好的。我有点强迫症啦。。我去看一下

今天我更新了下,把 all-the-icons 包变成optional的。帮忙测试下有没有问题?

好!我已经安全移除了all-the-icons !不过我好像发现了一些modeline的face没有随着frame-focus而update,我用的是“29.0.50”。 Kapture 2022-05-16 at 00.28.17

minimal config:

(load-theme 'wombat)                                                                                                                                                                                                                                                                            
(use-package doom-modeline                                                                                                                                                                 
  :hook (after-init-hook . doom-modeline-mode)                                                                                                                                      
  :init                                                                                                                                                                             
  (setq doom-modeline-icon nil                                                                                                                                                      
        doom-modeline-bar-width 0                                                                                                                                                   
        doom-modeline-height 15                                                                                                                                                     
        doom-modeline-persp-name nil                                                                                                                                                
        doom-modeline-irc nil                                                                                                                                                       
        doom-modeline-minor-modes nil                                                                                                                                               
        doom-modeline-enable-word-count nil                                                                                                                                         
        doom-modeline-buffer-encoding nil                                                                                                                                           
        doom-modeline-checker-simple-format nil                                                                                                                                     
        doom-modeline-indent-info nil                                                                                                                                               
        doom-modeline-env-load-string "..."                                                                                                                                         
        doom-modeline-vcs-max-length 20                                                                                                                                             
        doom-modeline-window-width-limit (+ fill-column 20)                                                                                                                         
        doom-modeline-buffer-file-name-style 'truncate-with-project))    

去掉all-the-icons 没有影响了吗?如果是用deamon启动,然后在GUI下开client 是什么效果?再手动安装all-the-icons 然后 enable doom-modelin-icon又是什么效果呢?

不过我好像发现了一些modeline的face没有随着frame-focus而update,我用的是“29.0.50”。

这个问题是 29 修改造成的,暂时不会处理。29还不稳定,内部机制还会变动。我认为是瞎搞,不考虑兼容性没有意义的修改。

我一直是用的damon,不用icon的话没区别。 如果安装了all-the-icons,并且enable doom-modeline-icon的话,tui依然是不变的,但是一旦新建了gui的frame,gui会自动使用icon,再切换回tui时,tui也会同步的显示icon,如果不装nerd-font的话,tui的icon会显示乱码。 damon模式下,不同的frame好像是要共用modeline的。我反正都不用icon,目前看没什么问题。

thx!这样看起来就没问题了。

@seagle0128 今天尝试了一下,在不装 all-the-icons 的情况下滚动卡顿很严重,emacs -Q环境也测试过了,inhibit-compacting-font-caches 也开了,必须同时设置 (setq doom-modeline-icon nil) 关掉图标才好。这是设计行为还是出bug了?

我本地测试正常呢,没有卡顿。看看这几个情况:

  1. 升级到最新版后用emacs -Q重启;
  2. 查看message和error
  3. 做profiling: https://www.gnu.org/software/emacs/manual/html_node/elisp/Profiling.html

Windows 10 Emacs 28.1 今天又用emacs -Q测试了一次,还是一样的结果 profiling之前也做过,结果 image

在自己编译的Emacs 29里面也试过,还是一样的结果