doom-modeline 2.1.0

doom-modeline, 左下角会经常出现 这个字,这个问题是怎么解决的?我用的是macos下的emacs,安装了cnfonts。

知道方法了:init.el文件的修改如下:

;;(cnfonts-enable)      // 防止cnfonts自动启动

;; 如果用户觉得 cnfonts *太厚重*, 可以将下面
;; 一段 elisp 粘贴到 ~/.emacs 文件,然后保存,就不需要启
;; 动 cnfonts 来配置字体了。
;; -------

;; Auto generated by cnfonts
;; <https://github.com/tumashu/cnfonts>
(set-face-attribute
 'default nil
 :font (font-spec :name "-*-Monaco-normal-normal-normal-*-*-*-*-*-m-0-iso10646-1"
                  :weight 'normal
                  :slant 'normal
                  :size 15.0))
(dolist (charset '(kana han symbol cjk-misc bopomofo))
  (set-fontset-font
   (frame-parameter nil 'font)
   charset
   (font-spec :name "-*-Hiragino Sans GB-normal-normal-normal-*-*-*-*-*-p-0-iso10646-1"
              :weight 'normal
              :slant 'normal
              :size 18.0)))


//下面这段拷贝至上面的朋友 
 (defun +ng/better-font()
      (interactive)
      (if (display-graphic-p)
        (progn
          (set-face-attribute
           'default nil
           :font (font-spec :name "-PfEd-DejaVu Sans Mono-bold-normal-normal-*-*-*-*-*-m-0-iso10646-1"
                            :weight 'normal
                            :slant 'normal
                            :size 9.0))
          (dolist (charset '(kana han symbol cjk-misc bopomofo))
            (set-fontset-font
             (frame-parameter nil 'font)
             charset
             (font-spec :name "-ADBO-思源黑体 CN-light-normal-normal-*-*-*-*-*-*-0-iso10646-1"
                        :weight 'normal
                        :slant 'normal
                        :size 11.0))))))

    (defun +ng|init-font(frame)
      (with-selected-frame frame
        (if (display-graphic-p)
            (+ng/better-font))))

    (if (and (fboundp 'daemonp) (daemonp))
        (add-hook 'after-make-frame-functions #'+ng|init-font))

谢谢楼上朋友的提示,谢谢。

doom-emacs, 平时显示icon正常,但是当使用leader key 唤出底部菜单时,icon便显示乱码。 这是bug吗?

本地测试没有这个问题。你可能需要问下doom-emacs.

关于前天在 GitHub 上反馈的图标背景色不一致的 issue,非常感谢作者能够快速修复。不过在使用的时候还是有些疑问,放到 issue 里讨论觉得不太合适,就在论坛反馈一下。

首先是经过更新,在 vanilla emacs 使用完全正常,但是在 Doom 中使用时还是和之前一样。同时因为去掉了 inactive icon 这个 face,所以也不能通过 (custom-set-faces `(doom-modeline-icon-inactive ((t (:inherit mode-line-inactive))))) 解决。
不知道 Doom 对 doom-modeline 和 which-key 进行了哪些魔法 hack,尝试找了一下没找到。

所以,我觉得还是恢复 inactive icon 这个 face 比较好,这样起码 vanilla emacs 和 doom 中都能通过上面那条配置解决图标背景色的问题 :sweat_smile:

另外,在 vanilla emacs 中 M-x 进行 tab 补全时,modeline 背景色不太对,不知道是 doom-themes 故意设计的,还是没有适配这个场景。

modeline的魔法

关键字是 remapping

我没有用 doom,不知道 doom 内部还有什么设置。不过奇怪的是目前只有你一个人报告这个问题。建议你试试 which-key-setup-minibuffer之类的,看看是否还有问题。

关于第二个问题,很奇怪的是补全操作焦点为何是在*Completions*buffer 里。我再在本地重现下。

谢谢提示,我再看一下

只有我报告这个问题,可能是因为在部分主题下(doom-one/light),图标背景色虽然与整体不一致,但是区别不是很明显,其他人没有注意或者是注意到了也没太在意。
而我也是因为 doom-one 用腻了换成 doom-dark+,这才发现这个问题。

在将 which-key 的弹出方式设为 minibuffer 后确实没有这个问题,因为没有弹出新的窗口,所以 modeline 一直是激活状态,不需要切换到 inactive 状态。

我怀疑跟 doom 内部的 popup buffer 机制有关。Centaur 中用的 shackle 没有问题。

第二个问题找到原因了,应该是 lib 函数兼容性问题。我马上提交一个 patch 。

C-h v face-remapping-alist

是什么?

你应该能从他的输出中找到线索!

输出结果是这样的:

face-remapping-alist is a variable defined in C source code.

Value in #<buffer init.el>
((mode-line-inactive solaire-mode-line-inactive-face mode-line-inactive)
 (mode-line solaire-mode-line-face mode-line)
 (header-line solaire-header-line-face header-line)
 (org-indent solaire-org-hide-face org-indent)
 (org-hide solaire-org-hide-face org-hide)
 (hl-line solaire-hl-line-face hl-line)
 (default solaire-default-face default))

可能是,Doom 内部为了管理弹出窗口自己写了一套机制,有很多 hack 配置。
我去 Discord 频道问一下 Doom 的作者这个问题。

当你需要用到mode-line的face的时候

他给你转到了 solaire-mode-line-face

如果你需要用到 mode-line-inactive

那么你得用 solaire-mode-line-inactive-face 替换

我先尝试将 solaire-mode 这个包禁用了,face-remapping-alist 的值现在是 nil, modeline 图标背景色的问题没有变化。感觉和这个没有关系。

由于有兼容性问题,我 revert 了 commit,重新恢复了doom-modeline-icon-inactive face。

昨天经过这个 patch 后,在 vanilla emacs 测试发现又变成之前那样了,which-key 激活时 modeline 上的图标不会隐藏,并且背景色不对。

刚才拉取最新的代码,配合 custom-set-faces 没有问题了,不过 flycheck 的图标背景色不对。

vanilla emacs有这个问题吗? 我想你是不是在加载 theme 前设置的doom-modeline-mode.

上面那幅图是在 vanilla emacs 下测试的,刚才换了下 theme 和 doom-modeline 的加载顺序,还是会出现这个问题。

因为缺少一些细节,仍然无法重现你的问题。不过我想了个全新的方法,希望能彻底解决这个问题。已经提交了 pacth。

1赞