ease-of-use improvement to ,m; catch read errors at the repl
authorAndy Wingo <wingo@pobox.com>
Mon, 11 Aug 2008 17:27:23 +0000 (19:27 +0200)
committerAndy Wingo <wingo@pobox.com>
Mon, 11 Aug 2008 17:27:23 +0000 (19:27 +0200)
* module/system/repl/command.scm (module): Accept e.g. `,m ice-9 popen'
  in addition to `,m (ice-9 popen)'.

* module/system/repl/repl.scm (start-repl): Call read with a backtrace
  handler too.

module/system/repl/command.scm
module/system/repl/repl.scm

index 7708628..328207b 100644 (file)
@@ -206,7 +206,9 @@ Quit this session."
 Change modules / Show current module."
   (pmatch args
     (() (puts (module-name (current-module))))
-    ((,mod-name) (set-current-module (resolve-module mod-name)))))
+    ((,mod-name) (guard (list? mod-name))
+     (set-current-module (resolve-module mod-name)))
+    (,mod-name (set-current-module (resolve-module mod-name)))))
 
 (define (import repl . args)
   "import [MODULE ...]
index 01f6ed4..20155c7 100644 (file)
   (let ((repl (make-repl lang)))
     (repl-welcome repl)
     (let prompt-loop ()
-      (let ((exp (prompting-meta-read repl)))
+      (let ((exp (call-with-backtrace
+                  (lambda () (prompting-meta-read repl)))))
         (cond
+         ((eqv? exp (if #f #f))) ; read error, pass
          ((eq? exp meta-command-token)
           (call-with-backtrace
            (lambda ()