diff --git a/core/core-modeline.el b/core/core-modeline.el index 14f02ad8e..7a6b7b3df 100644 --- a/core/core-modeline.el +++ b/core/core-modeline.el @@ -350,5 +350,47 @@ to be enabled." (setq-default mode-line-format (doom-mode-line)) +;; Eldoc support +(defun doom-eldoc-show-in-mode-line (input) + "Display string STR in the mode-line next to minibuffer." + (with-current-buffer (eldoc-current-buffer) + (let* ((max (window-width (selected-window))) + (str (and (stringp input) (concat " " input))) + (len (length str)) + (tmp-str str) + (mode-line-format (or (and str (doom-eldoc-mode-line)) + mode-line-format)) + roll mode-line-in-non-selected-windows) + (catch 'break + (if (and (> len max) eldoc-mode-line-rolling-flag) + (progn + (while (setq roll (sit-for 0.3)) + (setq tmp-str (substring tmp-str 2) + mode-line-format (concat tmp-str " [<]" str)) + (force-mode-line-update) + (when (< (length tmp-str) 2) (setq tmp-str str))) + (unless roll + (when eldoc-mode-line-stop-rolling-on-input + (setq eldoc-mode-line-rolling-flag nil)) + (throw 'break nil))) + (force-mode-line-update) + (sit-for eldoc-show-in-mode-line-delay)))) + (force-mode-line-update))) + +(defun doom-eldoc-mode-line () + `(:eval + (let ((active (eq (selected-window) mode-line-selected-window))) + (list (list (propertize " " 'display mode-line-eldoc-bar) + (and (bound-and-true-p str) str)) + (propertize + " " 'display `((space :align-to (1- (+ right right-fringe right-margin))))))))) + +(use-package eldoc-eval + :config + (setq eldoc-in-minibuffer-show-fn 'doom-eldoc-show-in-mode-line) + (eldoc-in-minibuffer-mode +1)) + +(defvar eldoc-mode-line-format (doom-eldoc-mode-line)) + (provide 'core-modeline) ;;; core-modeline.el ends here diff --git a/core/core-ui.el b/core/core-ui.el index 4d256607d..2c18c0d5c 100644 --- a/core/core-ui.el +++ b/core/core-ui.el @@ -76,11 +76,6 @@ (when (and (> emacs-major-version 24) (featurep 'eldoc)) (global-eldoc-mode -1)) -(use-package eldoc-eval - :config - (setq eldoc-in-minibuffer-show-fn 'doom/eldoc-show-in-mode-line) - (eldoc-in-minibuffer-mode +1)) - ;; Highlight TODO/FIXME/NOTE tags (add-hook! (prog-mode emacs-lisp-mode css-mode) (font-lock-add-keywords