guile-user
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Geiser vs. guile-mode?


From: Ricardo Wurmus
Subject: Re: Geiser vs. guile-mode?
Date: Wed, 19 Feb 2020 15:16:34 +0100
User-agent: mu4e 1.2.0; emacs 26.3

sirgazil <address@hidden> writes:

> I also find some fundamental things missing when programming in Guile Scheme 
> (with Emacs+Geiser):
>
> 1. On-the-fly syntax checking (see flycheck)

This is available by default in “Guile Studio”[1].  It works by compiling
the buffer:

--8<---------------cut here---------------start------------->8---
(require 'flycheck)
(flycheck-define-checker guile
                         "A Guile syntax checker with `guild compile'."
                         :command ("guild" "compile" "--to=cps"
                                   "--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)
--8<---------------cut here---------------end--------------->8---


-- 
Ricardo


[1]: https://git.elephly.net/software/guile-studio.git, available via
Guix: “guix install guile-studio”.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]