emacs-elpa-diffs
[Top][All Lists]
Advanced

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

[nongnu] elpa/geiser-guile 7563473 167/284: Guile: configurable warning


From: Philip Kaludercic
Subject: [nongnu] elpa/geiser-guile 7563473 167/284: Guile: configurable warning level
Date: Sun, 1 Aug 2021 18:29:38 -0400 (EDT)

branch: elpa/geiser-guile
commit 75634733f322e856c8608c1adff0fb7df9edb06d
Author: Jose Antonio Ortega Ruiz <jao@gnu.org>
Commit: Jose Antonio Ortega Ruiz <jao@gnu.org>

    Guile: configurable warning level
---
 geiser/emacs.scm      | 16 +++++++++++-----
 geiser/evaluation.scm | 40 +++++++++++++++++++++++++++++++---------
 2 files changed, 42 insertions(+), 14 deletions(-)

diff --git a/geiser/emacs.scm b/geiser/emacs.scm
index 3b6f49c..af1a052 100644
--- a/geiser/emacs.scm
+++ b/geiser/emacs.scm
@@ -10,9 +10,7 @@
 ;; Start date: Sun Feb 08, 2009 18:39
 
 (define-module (geiser emacs)
-  #:re-export (ge:eval
-               ge:compile
-               ge:macroexpand
+  #:re-export (ge:macroexpand
                ge:compile-file
                ge:load-file
                ge:autodoc
@@ -26,8 +24,10 @@
                ge:callers
                ge:callees
                ge:find-file)
-  #:export (ge:no-values)
-  #:export (ge:newline)
+  #:export (ge:compile
+            ge:no-values
+            ge:newline)
+  #:use-module (ice-9 match)
   #:use-module (geiser evaluation)
   #:use-module ((geiser modules) :renamer (symbol-prefix-proc 'ge:))
   #:use-module ((geiser completion) :renamer (symbol-prefix-proc 'ge:))
@@ -37,4 +37,10 @@
 (define (ge:no-values) (values))
 (define ge:newline newline)
 
+(define (ge:compile form mod)
+  (match form
+    (`((@ (geiser emacs) . ,_) . ,_) (compile/no-warns form mod))
+    (_ (compile/warns form mod))))
+
+
 ;;; emacs.scm ends here
diff --git a/geiser/evaluation.scm b/geiser/evaluation.scm
index aba0cfe..6b8df8f 100644
--- a/geiser/evaluation.scm
+++ b/geiser/evaluation.scm
@@ -10,11 +10,12 @@
 ;; Start date: Mon Mar 02, 2009 02:46
 
 (define-module (geiser evaluation)
-  #:export (ge:eval
-            ge:compile
+  #:export (compile/warns
+            compile/no-warns
             ge:macroexpand
             ge:compile-file
-            ge:load-file)
+            ge:load-file
+            ge:set-warnings)
   #:use-module (geiser modules)
   #:use-module (srfi srfi-1)
   #:use-module (language tree-il)
@@ -39,7 +40,26 @@
   (write (list (cons 'result result) (cons 'output output)))
   (newline))
 
-(define compile-opts '(#:warnings (arity-mismatch unbound-variable)))
+(define compile-opts (make-fluid))
+(define compile-file-opts (make-fluid))
+
+(define default-warnings '(arity-mismatch unbound-variable))
+(define verbose-warnings `(unused-variable ,@default-warnings))
+
+(define (ge:set-warnings wl)
+  (let* ((warns (cond ((list? wl) wl)
+                      ((symbol? wl) (case wl
+                                      ((none nil null) '())
+                                      ((medium default) default-warnings)
+                                      ((high verbose) verbose-warnings)))
+                      (else '())))
+         (fwarns (if (memq 'unused-variable warns)
+                     (cons 'unused-toplevel warns)
+                     warns)))
+    (fluid-set! compile-opts (list #:warnings warns))
+    (fluid-set! compile-file-opts (list #:warnings fwarns))))
+
+(ge:set-warnings 'none)
 
 (define (call-with-result thunk)
   (letrec* ((result #f)
@@ -50,7 +70,11 @@
                    (set! result (thunk)))))))
     (write-result result output)))
 
-(define (ge:compile form module-name)
+(define (compile/no-warns form module)
+  (with-fluids ((compile-opts '()))
+    (compile/warns form module)))
+
+(define (compile/warns form module-name)
   (let* ((module (or (find-module module-name) (current-module)))
          (ev (lambda ()
                (call-with-values
@@ -58,21 +82,19 @@
                      (let* ((o (compile form
                                         #:to 'objcode
                                         #:env module
-                                        #:opts compile-opts))
+                                        #:opts (fluid-ref compile-opts)))
                             (thunk (make-program o)))
                        (start-stack 'geiser-evaluation-stack
                                     (eval `(,thunk) module))))
                  (lambda vs (map object->string vs))))))
     (call-with-result ev)))
 
-(define ge:eval ge:compile)
-
 (define (ge:compile-file path)
   (call-with-result
    (lambda ()
      (let ((cr (compile-file path
                              #:canonicalization 'absolute
-                             #:opts compile-opts)))
+                             #:opts (fluid-ref compile-file-opts))))
        (and cr
             (list (object->string (save-module-excursion
                                    (lambda () (load-compiled cr))))))))))



reply via email to

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