diff --git a/emacs/.emacs.d/site-lisp/my-smt.el b/emacs/.emacs.d/site-lisp/my-smt.el index afc2d59..5d81091 100644 --- a/emacs/.emacs.d/site-lisp/my-smt.el +++ b/emacs/.emacs.d/site-lisp/my-smt.el @@ -45,6 +45,36 @@ (not (equal jabber-activity-mode-string ""))) (concat jabber-activity-mode-string " ")))) +;;; TODO Turn: +;; #("message: (FORMAT-STRING &rest ARGS)" +;; 0 7 (face font-lock-function-name-face) +;; 10 23 (face eldoc-highlight-function-argument)) +;;; into: +;;; (tspan (tspan :fill (fg-color font-lock-function-name-face) "message:") +;;; " (" +;;; (tspan :fill (fg-color highlight-function-argument) "FORMAT-STRING") +;;; " &rest ARGS)") +(defun my-smt-eldoc-minibuffer-message (format-string &rest args) + (if (minibufferp) + (progn + (add-hook 'minibuffer-exit-hook + (lambda () (setq my-smt-eldoc-message nil + eldoc-mode-line-string nil + eldoc-last-message nil)) + nil t) + (setq my-smt-eldoc-message + (when (stringp format-string) + (apply 'format format-string args))) + (force-mode-line-update t)) + (apply 'message format-string args))) + +(defvar my-smt-eldoc-message nil) +(smt/defwidget my-smt-eldoc-message + :text (lambda (widget) + (ignore widget) + (when my-smt-eldoc-message + `(tspan :fill "#bfbfbf" " (" (tspan :fill "#5476a8" ,my-smt-eldoc-message) ")")))) + (defun my-smt-yoshi-title-style (widget) "Fill color for either active or inactive windows. @@ -112,7 +142,7 @@ WIDGET is ignored." (smt/defrow my-smt-left :prototype 'default-left :widgets '(buffer-info my-smt-buffer-identification my-smt-po-counters - which-function)) + which-function my-smt-eldoc-message)) (smt/defrow my-smt-position :prototype 'default-position @@ -131,5 +161,8 @@ WIDGET is ignored." :style 'my-smt-major-mode-style))) :rows '(my-smt-left my-smt-position my-smt-right)) +(add-function :override (symbol-function 'eldoc-minibuffer-message) + #'my-smt-eldoc-minibuffer-message) + (provide 'my-smt) ;;; my-smt.el ends here