From f963cbb42fa4d59c8b77668d2cc17c441da3c088 Mon Sep 17 00:00:00 2001 From: Vincent Zhang Date: Thu, 27 May 2021 15:03:11 +0800 Subject: [PATCH] [Refactor] Restore to original format while disabling. --- doom-modeline-core.el | 11 +++++++++++ doom-modeline.el | 18 ++++++------------ 2 files changed, 17 insertions(+), 12 deletions(-) diff --git a/doom-modeline-core.el b/doom-modeline-core.el index 1df0d31..862250f 100644 --- a/doom-modeline-core.el +++ b/doom-modeline-core.el @@ -1045,6 +1045,17 @@ If DEFAULT is non-nil, set the default mode-line for all buffers." ((floatp height) (* height (frame-char-height))) (t (frame-char-height))))))) +(defun doom-modeline--original-value (sym) + "Return the original value for SYM, if any. + +If SYM has an original value, return it in a list. Return nil +otherwise." + (let* ((orig-val-expr (get sym 'standard-value))) + (when (consp orig-val-expr) + (ignore-errors + (list + (eval (car orig-val-expr))))))) + (defun doom-modeline-add-variable-watcher (symbol watch-function) "Cause WATCH-FUNCTION to be called when SYMBOL is set if possible. diff --git a/doom-modeline.el b/doom-modeline.el index 20d51b2..e4f5843 100644 --- a/doom-modeline.el +++ b/doom-modeline.el @@ -232,11 +232,6 @@ If DEFAULT is non-nil, set the default mode-line for all buffers." ;; Minor mode ;; -(defvar doom-modeline--default-format mode-line-format - "Storage for the default `mode-line-format'. - -So it can be restored when `doom-modeline-mode' is disabled.") - (defvar doom-modeline-mode-map (make-sparse-keymap)) ;; Suppress warnings @@ -284,15 +279,14 @@ So it can be restored when `doom-modeline-mode' is disabled.") (advice-add #'helm-display-mode-line :after #'doom-modeline-set-helm-modeline)) (progn ;; Restore mode-line - (setq-default mode-line-format doom-modeline--default-format) - (dolist (buf (buffer-list)) - (with-current-buffer buf - (setq mode-line-format doom-modeline--default-format))) + (let ((original-format (doom-modeline--original-value 'mode-line-format))) + (setq-default mode-line-format original-format) + (dolist (buf (buffer-list)) + (with-current-buffer buf + (setq mode-line-format original-format)))) ;; For two-column editing - (setq 2C-mode-line-format - '("-%*- %15b --" (-3 . "%p") "--%[(" mode-name - minor-mode-alist "%n" mode-line-process ")%]%-")) + (setq 2C-mode-line-format (doom-modeline--original-value '2C-mode-line-format)) ;; Remove hooks (remove-hook 'Info-mode-hook #'doom-modeline-set-info-modeline)