doomemacs/modules/feature/syntax-checker/autoload.el
Henrik Lissner 9c62ef9dfa
Fix flycheck-posframe errors #653
The +childframe check was too simple (and unnecessary, since the
posframe function autoloaded).
2018-06-05 03:20:19 +02:00

45 lines
1.6 KiB
EmacsLisp

;;; feature/syntax-checker/autoload.el -*- lexical-binding: t; -*-
(defun +syntax-checker-show-popup (errors)
"TODO"
(if (and EMACS26+
(featurep! +childframe)
(display-graphic-p))
(flycheck-posframe-show-posframe errors)
(flycheck-popup-tip-show-popup errors)))
(defun +syntax-checker-cleanup-popup ()
"TODO"
(when (display-graphic-p)
(flycheck-popup-tip-delete-popup)))
;;;###autoload
(define-minor-mode +syntax-checker-popup-mode
"TODO"
:lighter nil
:group 'doom
(require 'flycheck-popup-tip)
(let ((hooks '(post-command-hook focus-out-hook)))
(cond
;; Use our display function and remember the old one but only if we haven't
;; yet configured it, to avoid activating twice.
((and +syntax-checker-popup-mode
(not (eq flycheck-display-errors-function
#'+syntax-checker-show-popup)))
(setq flycheck-popup-tip-old-display-function
flycheck-display-errors-function
flycheck-display-errors-function
#'+syntax-checker-show-popup)
(dolist (hook hooks)
(add-hook hook #'+syntax-checker-cleanup-popup nil t)))
;; Reset the display function and remove ourselves from all hooks but only
;; if the mode is still active.
((and (not +syntax-checker-popup-mode)
(eq flycheck-display-errors-function
#'+syntax-checker-show-popup))
(setq flycheck-display-errors-function
flycheck-popup-tip-old-display-function
flycheck-popup-tip-old-display-function nil)
(dolist (hook hooks)
(remove-hook hook '+syntax-checker-cleanup-popup t))))))