在evil下 就不能显示 这个字符统计了吗? doom-modeline-enable-word-count 这个也没用
在evil下 就不能显示 这个字符统计了吗? doom-modeline-enable-word-count 这个也没用
你好最近在尝试你的配置, 对其中作者的 Centaur 出现 Backtrace buffer 时, 不是像 Spacemacs 那样弹出另一半窗口(个人非常不喜欢, 认为非常容易打断自己.), 而是在 mode-line 变颜色进行提示. 这样的配置是怎么实现的呢? 我看了你的 init-ui.el
文件, 是 shackle
这个包吗, 好像我用了还是会有弹窗.
使用
;; Enable flashing mode-line on errors
(doom-themes-visual-bell-config)
(set-face-attribute 'doom-visual-bell nil
:background (face-foreground 'error)
:foreground (face-background 'default)
:inverse-video nil)
也没有实现和你的 Centaur 一样的效果. 感谢作者指点.
同时参考 init-window.el
作者你好, 最近发现使用 doom-modeline 有个问题.即第一次打开 message buffer
时, modeline 的样式是 spacemacs 自带的, 需要将 message buffer
kill 后, 重新打开, 才能正常变成 doom-modeline.
#### System Info :computer:
- OS: darwin
- Emacs: 26.2
- Spacemacs: 0.200.13
- Spacemacs branch: master (rev. 26b8fe0c3)
- Graphic display: t
- Distribution: spacemacs
- Editing style: vim
- Completion: ivy
- Layers:
相关配置如下:
defun czqhurricane-ui/init-doom-modeline ()
(use-package doom-modeline
:init
(spacemacs/add-to-hooks 'doom-modeline-env-update-python '(pyvenv-post-activate-hooks
pyvenv-post-deactivate-hooks
venv-postactivate-hook
venv-postdeactivate-hook))
:ensure t
:defer t
:hook
(after-init . doom-modeline-mode)
:custom
(doom-modeline-icon t)
(doom-modeline-major-mode-icon nil)
(doom-modeline-minor-modes nil)
:config
(line-number-mode 0)
(column-number-mode 0))
看起来是spacemacs和 doom-modeline 有冲突,猜测是 doom-modeline 启动后 spacemacs-modeline 又设置了。我不太理解为什么你的配置会启用两个 mode-line。你可以试试这个:
(defun czqhurricane-ui/init-doom-modeline ()
(use-package doom-modeline
:init
(doom-modeline-mode 1)
(spacemacs/add-to-hooks 'doom-modeline-env-update-python '(pyvenv-post-activate-hooks
pyvenv-post-deactivate-hooks
venv-postactivate-hook
venv-postdeactivate-hook))
:ensure t
:defer t
:custom
(doom-modeline-icon t)
(doom-modeline-major-mode-icon nil)
(doom-modeline-minor-modes nil)
:config
(line-number-mode 0)
(column-number-mode 0))
很遗憾, 改成你所说的配置, 反而更不行了, 甚至连以前能正常使用的 buffer 都无法显示 doom-modeline.
200貌似是master分支?我推荐去spacemacs-modeline layer中把spaceline相关的配置删掉
我也有这个现象,只读模式就会出现这个”女旁“
all-the-icons
没有安装好,或者字体有其他冲突,比如安装了 cnfonts
.
好像 dev 分支直接有选项可以使用 doom-modeline
。如果是你手工添加请确认不使用 spaceline
,混用会有不可预知的行为。
一般来讲modeline延迟加载的话会导致*Messages*
等几个buffer的modeline未设置,因为*Messages*
在配置modeline之前就已经创建了,spacemacs应对这种情况也是采用retore的方式来配置modeline,具体可看spacemacs-ui-visual/funcs.el
可以试试spacemacs-post-theme-change-hook
而不是after-init-hook
对的,其实doom-modeline
里也处理了,参考
楼上的问题应该是 spaceline 又主动覆盖了这几个 buffer 的 mode-line。所以混用的行为就异常了。
使用
...
:hook
(spacemacs-post-theme-change . doom-modeline-mode)
...
1.一样还是不行, 甚至原来能正常使用的 buffer 都失效了.
2. 在重新加载主题后, 现象和原来的一样.
所以没有解决.
不过你说的没错是在 spacemacs-ui-visual
的 package.el
文件中, spacemacs-ui-visual/init-spaceline
函数中调用了函数 (spacemacs//set-powerline-for-startup-buffers)
.
(defun spacemacs//set-powerline-for-startup-buffers ()
"Set the powerline for buffers created when Emacs starts."
(dolist (buffer '("*Messages*" "*spacemacs*" "*Compile-Log*"))
(when (and (get-buffer buffer)
(configuration-layer/package-usedp 'spaceline))
(spacemacs//restore-powerline buffer))))
(defun spacemacs//restore-powerline (buffer)
"Restore the powerline in buffer"
(with-current-buffer buffer
(setq-local mode-line-format (default-value 'mode-line-format))
(powerline-set-selected-window)
(powerline-reset)))
我到 spacemacs Github 上查找了一下, 和这个 issue 有关: Fix doom-modeline in the messages buffer by duianto · Pull Request #11517 · syl20bnr/spacemacs · GitHub.
这里面的观点是 after-init-time
不为零, 所以将在 after-init-hook
中的 doom-modeline-init
改到 :init
中.我也看了维护者合并到 develop 版本中的代码, 如下:
(spacemacs//restore-buffers-powerline)
和 master 版本中 函数(spacemacs//set-powerline-for-startup-buffers)
, 两个的区别是 开发版只针对 whick-key
buffer 做了 restore 处理.
develop:
(defun spacemacs//restore-buffers-powerline ()
"Restore the powerline in the buffers.
Excluding which-key."
(dolist (buffer (buffer-list))
(unless (string-match-p "\\*which-key\\*" (buffer-name buffer))
(spacemacs//restore-powerline buffer))))
master:
(defun spacemacs//set-powerline-for-startup-buffers ()
"Set the powerline for buffers created when Emacs starts."
(dolist (buffer '("*Messages*" "*spacemacs*" "*Compile-Log*"))
(when (and (get-buffer buffer)
(configuration-layer/package-usedp 'spaceline))
(spacemacs//restore-powerline buffer))))
这样的确证实你所说的是 spacemacs 覆盖了 Messages
, spacemacs
, Compile-Log
这三个 buffer 的mode-line.
再后来我将 doom-modeline.el
文件里
(unless after-init-time
....
)
改成了:
( when after-init-time
...
)
居然发现使用:
...
:hook
(after-init . doom-modeline-mode)
...
可以使得所有 buffer 正确显示 doom-modeline了. 此时, 我不禁在想作者的代码里:
(unless after-init-time
;; These buffers are already created and don't get modelines. For the love
;; of Emacs, someone give the man a modeline!
(dolist (bname '("*scratch*" "*Messages*"))
(with-current-buffer bname
(doom-modeline-set-main-modeline))))
这样的处理是不是不妥当?
:init
中 而非 after-init-hook
中.因为 after-init-time
不为零.unless
这段代码无法被执行到.我只知道如何添加 layer, 不知道如何把一个 layer 中某个 package 去掉. 难道是直接修改代码? 能不能给予指教.
这段代码重构之后其实不起作用了,只是你的这个 case 中被 spaceline 覆盖了。我可以提交个 patch 强制再刷新一次,但是如果覆盖了其他 buffer 还是无能为力,所以根本原因还是不能混用两个 mode-line。为何不切换到 dev branch 上?
因为自己的一些配置在 develop 上有问题, 以前尝试过. 所以没有切换. 作者什么时候提交 patch?
已经提交了,你可以更新试试
感谢分享,已经用上了,挺酷炫的!!!