Skip to content

Commit 19b79ff

Browse files
committed
[Optimize] just update the face of the buffer name in `after-change-functions'.
`doom-modeline--buffer-file-name' may consume lots fof CPU if it's called too frequently. Refer to #32 (comment).
1 parent 2a6e2e1 commit 19b79ff

File tree

1 file changed

+11
-2
lines changed

1 file changed

+11
-2
lines changed

doom-modeline-segments.el

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -305,6 +305,7 @@ Uses `all-the-icons-material' to fetch the icon."
305305
(advice-add #'org-narrow-to-element :after #'doom-modeline-update-buffer-file-state-icon)
306306
(advice-add #'org-narrow-to-subtree :after #'doom-modeline-update-buffer-file-state-icon)
307307
(advice-add #'org-edit-src-save :after #'doom-modeline-update-buffer-file-state-icon)
308+
(advice-add #'symbol-overlay-rename :after #'doom-modeline-update-buffer-file-state-icon)
308309

309310
(when (>= emacs-major-version 26)
310311
(add-variable-watcher
@@ -340,7 +341,6 @@ mouse-1: Previous buffer\nmouse-3: Next buffer"
340341
(add-hook 'find-file-hook #'doom-modeline-update-buffer-file-name)
341342
(add-hook 'after-revert-hook #'doom-modeline-update-buffer-file-name)
342343
(add-hook 'after-save-hook #'doom-modeline-update-buffer-file-name)
343-
(add-hook 'after-change-functions #'doom-modeline-update-buffer-file-name)
344344
(add-hook 'clone-indirect-buffer-hook #'doom-modeline-update-buffer-file-name)
345345
(add-hook 'evil-insert-state-exit-hook #'doom-modeline-update-buffer-file-name)
346346
(advice-add #'not-modified :after #'doom-modeline-update-buffer-file-name)
@@ -350,10 +350,10 @@ mouse-1: Previous buffer\nmouse-3: Next buffer"
350350
(advice-add #'undo :after #'doom-modeline-update-buffer-file-name)
351351
(advice-add #'undo-tree-undo-1 :after #'doom-modeline-update-buffer-file-name)
352352
(advice-add #'undo-tree-redo-1 :after #'doom-modeline-update-buffer-file-name)
353-
(advice-add #'symbol-overlay-rename :after #'doom-modeline-update-buffer-file-name)
354353
(advice-add #'popup-create :after #'doom-modeline-update-buffer-file-name)
355354
(advice-add #'popup-delete :after #'doom-modeline-update-buffer-file-name)
356355
(advice-add #'org-edit-src-save :after #'doom-modeline-update-buffer-file-name)
356+
(advice-add #'symbol-overlay-rename :after #'doom-modeline-update-buffer-file-name)
357357

358358
(with-no-warnings
359359
(if (boundp 'after-focus-change-function)
@@ -375,6 +375,15 @@ mouse-1: Previous buffer\nmouse-3: Next buffer"
375375
(if buffer-file-name
376376
(doom-modeline-update-buffer-file-name))))))))
377377

378+
;; Optimize: just update the face of the buffer name in `after-change-functions', since
379+
;; `doom-modeline--buffer-file-name' may consume lots fof CPU if it's called too frequently.
380+
(defun doom-modeline-update-buffer-file-name-face (&rest _)
381+
"Update the face of buffer file name in mode-line."
382+
(when (and doom-modeline--buffer-file-name (buffer-modified-p))
383+
(setq doom-modeline--buffer-file-name
384+
(propertize doom-modeline--buffer-file-name 'face 'doom-modeline-buffer-modified))))
385+
(add-hook 'after-change-functions #'doom-modeline-update-buffer-file-name-face)
386+
378387
(defsubst doom-modeline--buffer-mode-icon ()
379388
"The icon of the current major mode."
380389
(when (and doom-modeline-icon doom-modeline-major-mode-icon)

0 commit comments

Comments
 (0)