mirror of
https://git.sr.ht/~magic_rb/dotfiles
synced 2024-11-29 11:36:16 +01:00
640de3fb86
This reverts commit b673fb12c1
.
67 lines
1.9 KiB
Org Mode
67 lines
1.9 KiB
Org Mode
:PROPERTIES:
|
|
:ID: 334a4188-93e6-4378-b22d-b0c302fc26a1
|
|
:END:
|
|
#+title: Flycheck
|
|
#+filetags: emacs-load
|
|
|
|
# SPDX-FileCopyrightText: 2022 Richard Brežák <richard@brezak.sk>
|
|
#
|
|
# SPDX-License-Identifier: LGPL-3.0-or-later
|
|
|
|
* Flycheck Posframe
|
|
|
|
Display flycheck messages in a posframe.
|
|
|
|
#+begin_src emacs-lisp :noweb yes
|
|
(use-package flycheck-posframe
|
|
:straight t
|
|
:config
|
|
(setq flycheck-posframe-position 'frame-bottom-right-corner)
|
|
<<flycheck-display-errors-delay>>
|
|
<<lsp-ui-sideline-show-diagnostics>>
|
|
:hook (flycheck-mode . flycheck-posframe-mode))
|
|
#+end_src
|
|
|
|
Flycheck calls ~flycheck-display-errors-function~ every ~flycheck-display-errors-delay~.
|
|
|
|
#+name: flycheck-display-errors-delay
|
|
#+begin_src emacs-lisp
|
|
(setq flycheck-display-errors-delay 0.1)
|
|
#+end_src
|
|
|
|
Since we get errors and such in a posframe, we don't need them in the sideline.
|
|
|
|
#+name: lsp-ui-sideline-show-diagnostics
|
|
#+begin_src emacs-lisp
|
|
(setq lsp-ui-sideline-show-diagnostics nil)
|
|
#+end_src
|
|
|
|
Since flycheck recalls ~flycheck-display-errors-function~ on every point movement, it creates this really ugly flicker and also lags a bit, so if the diagnostic message didn't change, filter out the call.
|
|
|
|
#+name: flycheck-posframe-change-filter
|
|
#+begin_src emacs-lisp
|
|
(defvar flycheck-posframe-last-error-list '())
|
|
|
|
(advice-add
|
|
'flycheck-posframe-hidehandler
|
|
:override
|
|
(lambda (info)
|
|
(if (not (equal
|
|
(flycheck-overlay-errors-at (point))
|
|
flycheck-posframe-last-error-list))
|
|
(progn
|
|
(setq flycheck-posframe-last-error-list nil)
|
|
t)
|
|
nil))
|
|
'((name . "flycheck-error-display-filter")))
|
|
|
|
(advice-add
|
|
'flycheck-posframe-show-posframe
|
|
:before-while
|
|
(lambda (diagnostic)
|
|
(let ((last-list flycheck-posframe-last-error-list))
|
|
(setq flycheck-posframe-last-error-list diagnostic)
|
|
(if (equal diagnostic last-list) nil t)))
|
|
'((name . "flycheck-error-display-filter")))
|
|
#+end_src
|