From 3cfc99ad2dce02806c23e089de355f971bed8823 Mon Sep 17 00:00:00 2001 From: Alexander Heldt Date: Sat, 8 Nov 2025 23:12:16 +0100 Subject: [PATCH] pinwheel: Configure `flycheck` for `emacs` --- hosts/pinwheel/modules/emacs/config.org | 36 ++++++++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) diff --git a/hosts/pinwheel/modules/emacs/config.org b/hosts/pinwheel/modules/emacs/config.org index 47c3c01..8bcc843 100644 --- a/hosts/pinwheel/modules/emacs/config.org +++ b/hosts/pinwheel/modules/emacs/config.org @@ -479,7 +479,34 @@ Setup prefix for keybindings. * Flycheck #+BEGIN_SRC emacs-lisp - (use-package flycheck) + (use-package flycheck + :preface + (defun mp-flycheck-eldoc (callback &rest _ignored) + "Print flycheck messages at point by calling CALLBACK." + (when-let ((flycheck-errors (and flycheck-mode (flycheck-overlay-errors-at (point))))) + (mapc + (lambda (err) + (funcall callback + (format "%s: %s" + (let ((level (flycheck-error-level err))) + (pcase level + ('info (propertize "I" 'face 'flycheck-error-list-info)) + ('error (propertize "E" 'face 'flycheck-error-list-error)) + ('warning (propertize "W" 'face 'flycheck-error-list-warning)) + (_ level))) + (flycheck-error-message err)) + :thing (or (flycheck-error-id err) + (flycheck-error-group err)) + :face 'font-lock-doc-face)) + flycheck-errors))) + + (defun mp-flycheck-prefer-eldoc () + (add-hook 'eldoc-documentation-functions #'mp-flycheck-eldoc nil t) + (setq eldoc-documentation-strategy 'eldoc-documentation-compose-eagerly) + (setq flycheck-display-errors-function nil) + (setq flycheck-help-echo-function nil)) + + :hook ((flycheck-mode . mp-flycheck-prefer-eldoc))) (use-package flycheck-eglot :after (flycheck eglot) @@ -503,6 +530,12 @@ Setup prefix for keybindings. (add-hook 'before-save-hook #'eglot-format-buffer -10 t)))) (use-package eglot + :preface + (defun mp-eglot-eldoc () + (setq eldoc-echo-area-use-multiline-p nil) + (setq eldoc-documentation-strategy + 'eldoc-documentation-compose-eagerly)) + :config (add-to-list 'eglot-server-programs '(scala-mode . @@ -523,6 +556,7 @@ Setup prefix for keybindings. ) :hook ( + (eglot-managed-mode . mp-eglot-eldoc) (go-mode . eglot-ensure) (go-mode . alex/organize-imports-on-save) (go-mode . alex/format-on-save)