doom-modeline 2.1.0

没有对比过,不过以时间判断比较明显(反正只find-file时判断一次

可能会触发gc,肯定慢不少的。

company-mode 支持在 modeline 上显示当前的 candidate 是由哪个 backend 产生的,不知道这个能否支持呢?

image

如果没有这个功能的话,很难区分上图的第一个 main 是由 company-capf 提供的,第二个 main 是由 company-tempo 提供的。

这个是可以支持的。只是看backend意义不大,而且直接在company里显示是不是更自然?

直接开启 (setq doom-modeline-minor-modes t) 也可以达到相同的目的,但是它额外的显示了其他不想看到的 minor-mode。如果可以的话,是否支持仅显示部分的 minor-mode 呢?


曾经有 issue 提过想要直接在 company 的候选列表上面显示,但是似乎能够在 modeline 上显示就可以了.

用diminish可以不显示不需要的minor modes。另一种解决方案是可以把company-backend显示到 global-mode-string

又有个新想法了… 不知能否显示 repeating… 呢? 开启 repeat-mode, 且当 repeat-echo-function 设置为 repeat-echo-mode-line 时,默认会在 modeline 这样显示。

试试:

(defun repeat-echo-mode-line+ (keymap)
  "Display the repeat indicator in the mode line."
  (if keymap
      (unless (assq 'repeat-in-progress global-mode-string)
        (add-to-list 'global-mode-string (list 'repeat-in-progress
                                               repeat-echo-mode-line-string)))
    (force-mode-line-update t)))
(setq repeat-echo-function #'repeat-echo-mode-line+)
1 个赞

遇到一个问题是并排开helpbuffer,两个buffer中doom-modeline的高度不一样。

字体设置:

(when (display-graphic-p)
  ;; Set default font
  (cl-loop for font in '("Sarasa Mono SC" "SF Mono" "Hack" "Source Code Pro" "Fira Code"
                         "Menlo" "Monaco" "DejaVu Sans Mono" "Consolas")
           return (set-face-attribute 'default nil
                                      :font font
                                      :height (cond (sys/mac-x-p 130)
                                                    (sys/win32p 110)
                                                    (t 120))))

  ;; Specify font for all unicode characters
  (cl-loop for font in '("Symbol" "Apple Color Emoji" "Segoe UI Symbol" "Symbola")
           return(set-fontset-font t 'unicode font nil 'prepend))

  ;; Specify font for Chinese characters
  (cl-loop for font in '("Sarasa Mono SC" "WenQuanYi Micro Hei" "Microsoft Yahei")
           return (set-fontset-font t '(#x4e00 . #x9fff) font)))

doom-modeline:

(use-package doom-modeline
  :hook (after-init . doom-modeline-mode)
  :config
  (setq doom-modeline-icon t)
  )

image

观察下两边的icon有什么不同,看看有没有哪个字符或者icon大一些。还有一个解决方案是设置 doom-modeline-height,调大一些试试看。

把doom-modeline-height设置成30,两个一样高了。

如果把上面的字体设置注释掉,modeline的高度是一样的。icon的大小和字体的大小是有什么关系吗?不是很了解。

为了保持字体完整,mode-line高度取这两个高度最大值:bar 高度(也就是doom-modeline-height),字体高度(图标也属于unicode字符)。所以建议doom-modeline-height 设置稍微大点,至少比字体高度大一些,会更美观些。

半人马大佬,mode-line高度好像不能低于25,我设置了 doom-modeline-height 20 15 10all-the-icons缩小 (setq all-the-icons-scale-factor 1.0),都不能减小mode-line高度,看着还有很多空间可减小。还有什么办法吗?

高度最小值是字体的高度,不用icon的话会减小高度。

我记得当时看 readme 的方法不行,然后自己折腾的


  (defun smaller-modeline ()
    "Make doom-modeline smaller."
    (when window-system
      (create-fontset-from-ascii-font "Source Code Pro:medium" nil "modeline")
      (set-face-attribute 'mode-line nil
                          :height 120 :fontset "fontset-modeline")
      (set-face-attribute 'mode-line-inactive nil
                          :height 120 :fontset "fontset-modeline"))))

推荐使用 spaceline,看起来效果不错,关键是高度比这个低很多。我一开始用的就是这个,后面因为高度原因切换过去了。

@seagle0128 @Voleking 谢谢两位大佬!总结就是单独对mode-linde和mode-line-inactive设置字体大小即可进一步压缩doom-modeline-height

1、请问 @seagle0128 大佬,doom-modeline以后会支持切换到header-line吗?目前这点做的比较好的是 nano-modeline,好像doom-emacs也设置了一个modeline switch header line的todo。

2、请问 @Voleking 大佬, (create-fontset-from-ascii-font "Source Code Pro:medium" nil "modeline")是单独给modeline设置一个字体集的意思吗?我把它和:fontset "fontset-modeline"注释掉也可以。另外,face attributes 里有个 :font 选项也是可以单独设置mode-line字体的,这两种设置字体的方式之间有什么区别呢?

哈哈,我也是,不过昨晚刚好折腾mode-line,就顺便弄弄doom-modeline。现在可以愉快地用doom-modeline了 :grin: 经过上面两位大佬解答,发现进一步压缩高度也是很简单的,改一改:height 即可:

(set-face-attribute 'mode-line nil
                    :height 140)
(set-face-attribute 'mode-line-inactive nil
                    :height 140)

另外,不知道all-the-icon大小有没有影响doom-modeline-height,但可以这样进行缩小:(setq all-the-icons-scale-factor 1.0)

直接设置 header-line-format就可以,不过很多包也用headerline,会有冲突。本质上doom-modeline就是设置 mode-line-format.

会影响。默认设置为25也是为了适配icon