From 56c9ecaf528712f5d8ebfa5e8d48bb9eb8827a64 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Mon, 11 Feb 2019 23:00:43 +0100 Subject: Add support for flycheck. --- guile-studio-configure.scm | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) (limited to 'guile-studio-configure.scm') diff --git a/guile-studio-configure.scm b/guile-studio-configure.scm index dc7cea4..08293d3 100644 --- a/guile-studio-configure.scm +++ b/guile-studio-configure.scm @@ -46,6 +46,46 @@ ;; Hide the fact that this is Emacs (modify-frame-parameters nil '((title . "Guile Studio"))) + ;; Check syntax on the fly + (require 'flycheck) + (flycheck-define-checker guile + "A Guile syntax checker with `guild compile'." + :command ("guild" "compile" + "--warn=unused-variable" + "--warn=unused-toplevel" + "--warn=unbound-variable" + "--warn=macro-use-before-definition" + "--warn=arity-mismatch" + "--warn=duplicate-case-datum" + "--warn=bad-case-datum" + "--warn=format" + source) + :predicate + (lambda () + (and (boundp 'geiser-impl--implementation) + (eq geiser-impl--implementation 'guile))) + :verify + (lambda (checker) + (let ((geiser-impl (bound-and-true-p geiser-impl--implementation))) + (list + (flycheck-verification-result-new + :label "Geiser Implementation" + :message (cond + ((eq geiser-impl 'guile) "Guile") + (geiser-impl (format "Other: %s" geiser-impl)) + (t "Geiser not active")) + :face (cond + ((or (eq geiser-impl 'guile)) 'success) + (t '(bold error))))))) + :error-patterns + ((warning + line-start (file-name) ":" line ":" column ": warning:" (message) line-end) + (error + line-start (file-name) ":" line ":" column ":" (message) line-end)) + :modes (scheme-mode geiser-mode)) + (add-to-list 'flycheck-checkers 'guile) + (global-flycheck-mode 1) + ;; Remember location in buffers (require 'saveplace) (setq-default save-place t) -- cgit v1.2.3