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

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

[nongnu] elpa/geiser-chicken bfccf97 038/102: Fixes for Literals, Errors


From: Philip Kaludercic
Subject: [nongnu] elpa/geiser-chicken bfccf97 038/102: Fixes for Literals, Errors and Modules
Date: Sun, 1 Aug 2021 18:26:51 -0400 (EDT)

branch: elpa/geiser-chicken
commit bfccf97f9477fc47dd89e0ea7f0cb9fb3b5136a8
Author: Dan Leslie <dan@ironoxide.ca>
Commit: Dan Leslie <dan@ironoxide.ca>

    Fixes for Literals, Errors and Modules
    
    If literals were present chicken wouldn't provide any autodocumentation
    due to an error. Module evaluation was failing due to poor
    input. Chicken's Error output was failing to parse
    
    - Filter out all non-symbols from the autodoc set
    - Properly escape module names
    - Add "Error" to the set of accepted error prefixes
---
 geiser/emacs.scm | 37 +++++++++++++++++++++----------------
 1 file changed, 21 insertions(+), 16 deletions(-)

diff --git a/geiser/emacs.scm b/geiser/emacs.scm
index 401eb90..f31bba9 100644
--- a/geiser/emacs.scm
+++ b/geiser/emacs.scm
@@ -432,21 +432,20 @@
 
   ;; Builds a signature list from an identifier
   (define (find-signatures sym)
-    (let ((str (->string sym)))
+    (map
+     (cut fmt sym <>)
+     (filter
+      (lambda (v)
+       (eq? (car v) sym))
       (map
-       (cut fmt sym <>)
-       (filter
-               (lambda (v)
-                 (eq? (car v) sym))
-       (map
-        (lambda (s)
-          ;; Remove egg name and add module
-          (let-values
-              (((name module) (remove-internal-name-mangling (car s))))        
     
-            (cons (string->symbol name)
-                  (cons (if (string? module) (string->symbol module) module)
-                        (cdr s)))))
-        (apropos-information-list sym #:macros? #t))))))
+       (lambda (s)
+        ;; Remove egg name and add module
+        (let-values
+            (((name module) (remove-internal-name-mangling (car s))))       
+          (cons (string->symbol name)
+                (cons (if (string? module) (string->symbol module) module)
+                      (cdr s)))))
+       (apropos-information-list sym #:macros? #t)))))
 
   ;; Builds the documentation from Chicken Doc for a specific symbol
   (define (make-doc symbol #!optional (filter-for-type #f))
@@ -482,14 +481,18 @@
             geiser-module-exports geiser-module-path geiser-module-location
             geiser-module-completions geiser-use-debug-log)))
     
-    (when (and module
-              (not (symbol? module)))
+    (define (form-has-any-geiser? form)
+      (string-has-prefix? (->string (car form)) "geiser-"))
+    
+    (when (and module (not (symbol? module)))
       (error "Module should be a symbol"))
 
     ;; All calls start at toplevel
     (let* ((is-module? (form-has-module? form))
+          (is-geiser? (form-has-any-geiser? form))
           (is-safe-geiser? (form-has-safe-geiser? form))
            (host-module (and (not is-module?)
+                            (not is-geiser?)
                              (any (cut equal? module <>) (list-modules))
                              module))
           (thunk (lambda () (eval form))))
@@ -567,6 +570,8 @@
      ((null? ids) '())
      ((not (list? ids))
       (geiser-autodoc (list ids)))
+     ((not (symbol? (car ids)))
+      (geiser-autodoc (cdr ids)))
      (else
       (let ((details (find-signatures (car ids))))
        (if (null? details)



reply via email to

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