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

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

[nongnu] elpa/racket-mode 37d972634b 1/4: Don't get completion candidate


From: ELPA Syncer
Subject: [nongnu] elpa/racket-mode 37d972634b 1/4: Don't get completion candidates from configure-runtime submodules
Date: Sat, 18 Nov 2023 16:00:02 -0500 (EST)

branch: elpa/racket-mode
commit 37d972634bafc12a68ca74d9e21f8adbdb6824bd
Author: Greg Hendershott <git@greghendershott.com>
Commit: Greg Hendershott <git@greghendershott.com>

    Don't get completion candidates from configure-runtime submodules
    
    They are N/A for the program the user is editing.
    
    For example `#lang rhombus` might have a configure-runtime
    using racket/base, which shouldn't contribute completion candidates.
---
 racket/imports.rkt | 44 ++++++++++++++++++++++++++------------------
 1 file changed, 26 insertions(+), 18 deletions(-)

diff --git a/racket/imports.rkt b/racket/imports.rkt
index 6f55159728..8f95115375 100644
--- a/racket/imports.rkt
+++ b/racket/imports.rkt
@@ -41,25 +41,29 @@
   (->* (syntax?) (set-mutable?) set-mutable?)
 
   (define (handle-module stx)
-    (syntax-case stx (module #%module-begin #%plain-module-begin #%require)
-      [(module _id lang (#%module-begin e ...))
-       (handle-module-level #'(e ...) #'lang)]
-      [(module _id lang (#%plain-module-begin e ...))
-       (handle-module-level #'(e ...) #'lang)]))
+    (syntax-case stx (module #%module-begin #%plain-module-begin)
+      [(module id lang (#%module-begin e ...))
+       (handle-module-level #'id #'lang #'(e ...))]
+      [(module id lang (#%plain-module-begin e ...))
+       (handle-module-level #'id #'lang #'(e ...))]))
 
-  (define (handle-module-level es lang)
-    (module-exported-strings lang lang)
+  (define (handle-module-level id lang es)
+    (unless (equal? (syntax-e id) 'configure-runtime)
+      (module-exported-strings lang lang))
     (for ([e (in-syntax es)])
       (syntax-case* e (#%require module module*) symbolic-compare?
         [(#%require e ...)
-         (for ([spec (in-syntax #'(e ...))])
-           (handle-raw-require-spec spec lang))]
-        [(module _id sub-mod-lang (_mb e ...))
-         (handle-module-level #'(e ...) #'sub-mod-lang)]
-        [(module* _id sub-mod-lang (_mb e ...))
-         (handle-module-level #'(e ...) (if (syntax-e #'sub-mod-lang)
-                                            #'sub-mod-lang
-                                            lang))]
+         (unless (equal? (syntax-e id) 'configure-runtime)
+           (for ([spec (in-syntax #'(e ...))])
+             (handle-raw-require-spec spec lang)))]
+        [(module id sub-mod-lang (_mb e ...))
+         (handle-module-level #'id #'sub-mod-lang #'(e ...))]
+        [(module* id sub-mod-lang (_mb e ...))
+         (handle-module-level #'id
+                              (if (syntax-e #'sub-mod-lang)
+                                  #'sub-mod-lang
+                                  lang)
+                              #'(e ...))]
         [ _ (void)])))
 
   (define (handle-raw-require-spec spec lang)
@@ -175,12 +179,17 @@
            (module sub racket/base (void))
            (require racket/require
                     (submod "." sub)
-                    (except-in "../error.rkt" show-full-path-in-errors)
                     (prefix-in XXX: (except-in racket/file other-write-bit))
                     (rename-in racket/path [path-only PATH-ONLY])))))
     (syntax->datum stx)
     (imports stx)))
 
+(module+ completions-example-2
+  (require "syntax.rkt")
+  (parameterize ([current-namespace (make-base-empty-namespace)])
+    (string->expanded-syntax "/tmp/foo.rkt" "#lang rhombus\n1"
+                             imports)))
+
 (module+ test
   (require rackunit
            version/utils)
@@ -259,8 +268,7 @@
                          #`(module mod racket/base
                              (module sub1 racket/base)
                              (module sub2 racket/base
-                               (require (submod ".." sub1))))))))
-  )
+                               (require (submod ".." sub1)))))))))
 
 (module+ slow-test
   ;; Exercise our parsing of the #%require grammar: Try doing



reply via email to

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