summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRicardo Wurmus <rekado@elephly.net>2019-02-11 23:00:43 +0100
committerRicardo Wurmus <rekado@elephly.net>2019-02-11 23:00:43 +0100
commit56c9ecaf528712f5d8ebfa5e8d48bb9eb8827a64 (patch)
tree8dfced5b2e01ea7333a6454c5eec7109304b8a36
parent2f51d37597a3ed604c72d70f65f8d9499b754283 (diff)
Add support for flycheck.
-rw-r--r--guile-studio-configure.scm40
-rw-r--r--guix/rekado/guile-studio.scm1
2 files changed, 41 insertions, 0 deletions
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)))