mirror of
https://github.com/vale981/doom-modeline
synced 2025-03-05 09:21:38 -05:00
parent
33caf3e1d7
commit
0553a3f348
2 changed files with 50 additions and 46 deletions
|
@ -489,6 +489,11 @@ It requires `circe' package."
|
||||||
"Face for error state in LSP."
|
"Face for error state in LSP."
|
||||||
:group 'doom-modeline-faces)
|
:group 'doom-modeline-faces)
|
||||||
|
|
||||||
|
(defface doom-modeline-lsp-running
|
||||||
|
'((t (:inherit compilation-mode-line-run)))
|
||||||
|
"Face for running state in LSP."
|
||||||
|
:group 'doom-modeline-faces)
|
||||||
|
|
||||||
|
|
||||||
;;
|
;;
|
||||||
;; Externals
|
;; Externals
|
||||||
|
|
|
@ -107,7 +107,7 @@
|
||||||
(declare-function edebug-help 'edebug)
|
(declare-function edebug-help 'edebug)
|
||||||
(declare-function edebug-next-mode 'edebug)
|
(declare-function edebug-next-mode 'edebug)
|
||||||
(declare-function edebug-stop 'edebug)
|
(declare-function edebug-stop 'edebug)
|
||||||
(declare-function eglot--current-server 'eglot)
|
(declare-function eglot-current-server 'eglot)
|
||||||
(declare-function eglot--major-mode 'eglot)
|
(declare-function eglot--major-mode 'eglot)
|
||||||
(declare-function eglot--project-nickname 'eglot)
|
(declare-function eglot--project-nickname 'eglot)
|
||||||
(declare-function eglot--spinner 'eglot)
|
(declare-function eglot--spinner 'eglot)
|
||||||
|
@ -1769,53 +1769,52 @@ mouse-1: Reload to start server")
|
||||||
(defun doom-modeline-update-eglot ()
|
(defun doom-modeline-update-eglot ()
|
||||||
"Update `eglot' status."
|
"Update `eglot' status."
|
||||||
(setq doom-modeline--eglot
|
(setq doom-modeline--eglot
|
||||||
(when eglot--managed-mode
|
(pcase-let* ((server (eglot-current-server))
|
||||||
(pcase-let* ((server (eglot--current-server))
|
(nick (and server (eglot--project-nickname server)))
|
||||||
(nick (and server (eglot--project-nickname server)))
|
(pending (and server (hash-table-count
|
||||||
(pending (and server (hash-table-count
|
(jsonrpc--request-continuations server))))
|
||||||
(jsonrpc--request-continuations server))))
|
(`(,_id ,doing ,done-p ,detail) (and server (eglot--spinner server)))
|
||||||
(`(,_id ,doing ,done-p ,detail) (and server (eglot--spinner server)))
|
(last-error (and server (jsonrpc-last-error server)))
|
||||||
(last-error (and server (jsonrpc-last-error server)))
|
(face (cond (last-error 'doom-modeline-lsp-error)
|
||||||
(face (cond (last-error 'doom-modeline-lsp-error)
|
((and doing (not done-p)) 'doom-modeline-lsp-running)
|
||||||
((and doing (not done-p)) 'compilation-mode-line-run)
|
((and pending (cl-plusp pending)) 'doom-modeline-lsp-warning)
|
||||||
((and pending (cl-plusp pending)) 'doom-modeline-lsp-warning)
|
(nick 'doom-modeline-lsp-success)
|
||||||
(nick 'doom-modeline-lsp-success)
|
(t 'mode-line)))
|
||||||
(t 'mode-line)))
|
(icon (doom-modeline-lsp-icon "EGLOT" face)))
|
||||||
(icon (doom-modeline-lsp-icon "EGLOT" face)))
|
(propertize icon
|
||||||
(propertize icon
|
'help-echo (cond
|
||||||
'help-echo (cond
|
(last-error
|
||||||
(last-error
|
(format "EGLOT\nAn error occured: %s
|
||||||
(format "EGLOT\nAn error occured: %s
|
mouse-3: Clear this status" (plist-get last-error :message)))
|
||||||
mouse-3: clear this status" (plist-get last-error :message)))
|
((and doing (not done-p))
|
||||||
((and doing (not done-p))
|
(format "EGLOT\n%s%s" doing
|
||||||
(format "EGLOT\n%s%s" doing
|
(if detail (format "%s" detail) "")))
|
||||||
(if detail (format "%s" detail) "")))
|
((and pending (cl-plusp pending))
|
||||||
((and pending (cl-plusp pending))
|
(format "EGLOT\n%d outstanding requests" pending))
|
||||||
(format "EGLOT\n%d outstanding requests" pending))
|
(nick (format "EGLOT Connected (%s/%s)
|
||||||
(nick (format "EGLOT Connected (%s/%s)
|
C-mouse-1: Go to server errors
|
||||||
C-mouse-1: Disply server errors
|
mouse-1: Go to server events
|
||||||
mouse-1: Display server events
|
|
||||||
mouse-2: Quit server
|
mouse-2: Quit server
|
||||||
mouse-3: Reconnect to server" nick (eglot--major-mode server)))
|
mouse-3: Reconnect to server" nick (eglot--major-mode server)))
|
||||||
(t "EGLOT Disconnected"))
|
(t "EGLOT Disconnected"))
|
||||||
'mouse-face 'mode-line-highlight
|
'mouse-face 'mode-line-highlight
|
||||||
'local-map (let ((map (make-sparse-keymap)))
|
'local-map (let ((map (make-sparse-keymap)))
|
||||||
(cond (last-error
|
(cond (last-error
|
||||||
(define-key map [mode-line mouse-3]
|
(define-key map [mode-line mouse-3]
|
||||||
#'eglot-clear-status))
|
#'eglot-clear-status))
|
||||||
((and pending (cl-plusp pending))
|
((and pending (cl-plusp pending))
|
||||||
(define-key map [mode-line mouse-3]
|
(define-key map [mode-line mouse-3]
|
||||||
#'eglot-forget-pending-continuations))
|
#'eglot-forget-pending-continuations))
|
||||||
(nick
|
(nick
|
||||||
(define-key map [mode-line C-mouse-1]
|
(define-key map [mode-line C-mouse-1]
|
||||||
#'eglot-stderr-buffer)
|
#'eglot-stderr-buffer)
|
||||||
(define-key map [mode-line mouse-1]
|
(define-key map [mode-line mouse-1]
|
||||||
#'eglot-events-buffer)
|
#'eglot-events-buffer)
|
||||||
(define-key map [mode-line mouse-2]
|
(define-key map [mode-line mouse-2]
|
||||||
#'eglot-shutdown)
|
#'eglot-shutdown)
|
||||||
(define-key map [mode-line mouse-3]
|
(define-key map [mode-line mouse-3]
|
||||||
#'eglot-reconnect)))
|
#'eglot-reconnect)))
|
||||||
map))))))
|
map)))))
|
||||||
(add-hook 'eglot--managed-mode-hook #'doom-modeline-update-eglot)
|
(add-hook 'eglot--managed-mode-hook #'doom-modeline-update-eglot)
|
||||||
|
|
||||||
(doom-modeline-def-segment lsp
|
(doom-modeline-def-segment lsp
|
||||||
|
|
Loading…
Add table
Reference in a new issue