featurep! will be renamed modulep! in the future, so it's been deprecated. They have identical interfaces, and can be replaced without issue. featurep! was never quite the right name for this macro. It implied that it had some connection to featurep, which it doesn't (only that it was similar in purpose; still, Doom modules are not features). To undo such implications and be consistent with its namespace (and since we're heading into a storm of breaking changes with the v3 release anyway), now was the best opportunity to begin the transition.
83 lines
3 KiB
EmacsLisp
83 lines
3 KiB
EmacsLisp
;;; checkers/syntax/config.el -*- lexical-binding: t; -*-
|
|
|
|
;;
|
|
;;; Flycheck
|
|
|
|
(use-package! flycheck
|
|
:commands flycheck-list-errors flycheck-buffer
|
|
:hook (doom-first-buffer . global-flycheck-mode)
|
|
:config
|
|
(setq flycheck-emacs-lisp-load-path 'inherit)
|
|
|
|
;; Rerunning checks on every newline is a mote excessive.
|
|
(delq 'new-line flycheck-check-syntax-automatically)
|
|
;; And don't recheck on idle as often
|
|
(setq flycheck-idle-change-delay 1.0)
|
|
|
|
;; For the above functionality, check syntax in a buffer that you switched to
|
|
;; only briefly. This allows "refreshing" the syntax check state for several
|
|
;; buffers quickly after e.g. changing a config file.
|
|
(setq flycheck-buffer-switch-check-intermediate-buffers t)
|
|
|
|
;; Display errors a little quicker (default is 0.9s)
|
|
(setq flycheck-display-errors-delay 0.25)
|
|
|
|
;; Don't commandeer input focus if the error message pops up (happens when
|
|
;; tooltips and childframes are disabled).
|
|
(set-popup-rules!
|
|
'(("^\\*Flycheck error messages\\*" :select nil)
|
|
("^\\*Flycheck errors\\*" :size 0.25)))
|
|
|
|
(add-hook! 'doom-escape-hook :append
|
|
(defun +syntax-check-buffer-h ()
|
|
"Flycheck buffer on ESC in normal mode."
|
|
(when flycheck-mode
|
|
(ignore-errors (flycheck-buffer))
|
|
nil)))
|
|
|
|
(map! :map flycheck-error-list-mode-map
|
|
:n "C-n" #'flycheck-error-list-next-error
|
|
:n "C-p" #'flycheck-error-list-previous-error
|
|
:n "j" #'flycheck-error-list-next-error
|
|
:n "k" #'flycheck-error-list-previous-error
|
|
:n "RET" #'flycheck-error-list-goto-error
|
|
:n [return] #'flycheck-error-list-goto-error))
|
|
|
|
|
|
(use-package! flycheck-popup-tip
|
|
:commands flycheck-popup-tip-show-popup flycheck-popup-tip-delete-popup
|
|
:hook (flycheck-mode . +syntax-init-popups-h)
|
|
:config
|
|
(setq flycheck-popup-tip-error-prefix "X ")
|
|
(after! evil
|
|
;; Don't display popups while in insert or replace mode, as it can affect
|
|
;; the cursor's position or cause disruptive input delays.
|
|
(add-hook! '(evil-insert-state-entry-hook evil-replace-state-entry-hook)
|
|
#'flycheck-popup-tip-delete-popup)
|
|
(defadvice! +syntax--disable-flycheck-popup-tip-maybe-a (&rest _)
|
|
:before-while #'flycheck-popup-tip-show-popup
|
|
(if evil-local-mode
|
|
(eq evil-state 'normal)
|
|
(not (bound-and-true-p company-backend))))))
|
|
|
|
|
|
(use-package! flycheck-posframe
|
|
:when (modulep! +childframe)
|
|
:hook (flycheck-mode . +syntax-init-popups-h)
|
|
:config
|
|
(setq flycheck-posframe-warning-prefix "! "
|
|
flycheck-posframe-info-prefix "··· "
|
|
flycheck-posframe-error-prefix "X ")
|
|
(after! company
|
|
;; Don't display popups if company is open
|
|
(add-hook 'flycheck-posframe-inhibit-functions #'company--active-p))
|
|
(after! evil
|
|
;; Don't display popups while in insert or replace mode, as it can affect
|
|
;; the cursor's position or cause disruptive input delays.
|
|
(add-hook! 'flycheck-posframe-inhibit-functions
|
|
#'evil-insert-state-p
|
|
#'evil-replace-state-p)))
|
|
|
|
|
|
;;
|
|
;;; TODO Flymake
|