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 ++++++++++++++++++++++++++++++++++++++++ guix/rekado/guile-studio.scm | 1 + 2 files changed, 41 insertions(+) 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) diff --git a/guix/rekado/guile-studio.scm b/guix/rekado/guile-studio.scm index c34b4c6..8e555bf 100644 --- a/guix/rekado/guile-studio.scm +++ b/guix/rekado/guile-studio.scm @@ -44,6 +44,7 @@ ("emacs" ,emacs) ("emacs-geiser" ,emacs-geiser) ("emacs-company" ,emacs-company) + ("emacs-flycheck" ,emacs-flycheck) ("emacs-smart-mode-line" ,emacs-smart-mode-line) ("emacs-paren-face" ,emacs-paren-face) ("adwaita-icon-theme" ,adwaita-icon-theme))) -- cgit v1.2.3