Lines Matching refs:repl

1 #| repl.jl -- rep input loop
3 $Id: repl.jl,v 1.50 2004/10/07 05:03:54 jsh Exp $
25 (define-structure rep.util.repl
27 (export repl
28 make-repl
29 repl-struct
30 repl-pending
31 repl-eval
32 repl-iterate
33 repl-completions
34 define-repl-command)
42 (define current-repl (make-fluid))
44 (define (make-repl #!optional initial-struct)
47 (define repl-struct car)
48 (define repl-pending cdr)
49 (define repl-set-struct rplaca)
50 (define repl-set-pending rplacd)
52 (define (repl-eval form)
53 (eval form (intern-structure (repl-struct (fluid current-repl)))))
55 (define (repl-boundp x)
58 (repl-eval x)
62 ;; returns t if repl should run again
63 (define (repl-iterate repl input)
64 (setq input (concat (repl-pending repl) input))
65 (repl-set-pending repl nil)
66 (let-fluids ((current-repl repl))
80 (let ((command (repl-command (car sexps))))
89 (repl-set-pending repl input)
93 (let ((result (repl-eval form)))
109 (define (repl #!optional initial-structure)
110 ;; returns t if repl should run again
111 (define (run-repl)
113 (format nil (if (repl-pending (fluid current-repl))
115 (repl-struct (fluid current-repl)))
117 (and input (repl-iterate (fluid current-repl) input))))
124 (let-fluids ((current-repl (make-repl initial-structure)))
127 (when (call-with-exception-handler run-repl interrupt-handler)
150 (lambda (x) (assq x repl-commands))))
151 (apropos (concat #\^ (quote-regexp w)) repl-boundp)))
153 (define (repl-completions repl word)
154 (let-fluids ((current-repl repl))
167 (or (locate-binding name (append (list (repl-struct (fluid current-repl)))
169 (repl-struct (fluid current-repl)))))
171 (get-structure (repl-struct (fluid current-repl))) name)
172 (repl-struct (fluid current-repl)))))
177 (define repl-commands '())
179 (define (define-repl-command name function #!optional doc)
180 (let ((cell (assq name repl-commands)))
183 (setq repl-commands (cons (list name function doc) repl-commands)))))
186 (let ((cell (assq name repl-commands)))
191 (let loop ((rest repl-commands)
208 (define (repl-command name)
212 (define (repl-documentation name)
216 (define-repl-command
222 (repl-set-struct (fluid current-repl) struct)))
225 (define-repl-command
232 (define-repl-command
242 (define-repl-command
251 (define-repl-command
255 (repl-eval `(,load ,f))) files))
258 (define-repl-command
261 (repl-eval `(,open-structures (,quote ,structs))))
264 (define-repl-command
267 (repl-eval `(,access-structures (,quote ,structs))))
270 (define-repl-command
281 (define-repl-command
291 (define-repl-command
297 (repl-struct (fluid current-repl))))))
299 (define-repl-command
304 (repl-struct (fluid current-repl)))))))
306 (define-repl-command
309 (print-list (module-imports (repl-struct (fluid current-repl))))))
311 (define-repl-command
316 (repl-struct (fluid current-repl)))))))
318 (define-repl-command
330 (define-repl-command
334 (disassemble (repl-eval arg)))
337 (define-repl-command
342 (compile-function (repl-eval arg) arg)) args))
345 (define-repl-command
350 (compile-module (repl-struct (fluid current-repl)))
354 (define-repl-command
361 (define-repl-command
368 (repl-set-struct (fluid current-repl) name))
371 (define-repl-command
374 (format standard-output "%s\n" (repl-eval `(,macroexpand ',form))))
377 (define-repl-command
380 (format standard-output "%s\n" (repl-eval `(,step ',form))))
383 (define-repl-command
390 (print-list (sort (mapcar car repl-commands))
392 (format nil ",%s %s" x (or (repl-documentation x) ""))))))
394 (define-repl-command 'quit (lambda () (throw 'quit 0)))
396 (define-repl-command
400 (let* ((value (repl-eval name))
410 (define-repl-command
414 (let ((funs (apropos re repl-boundp)))
416 (describe-value (repl-eval x) x)) funs)))
419 (define-repl-command
428 (define-repl-command
444 (define-repl-command
449 (setq ret (repl-eval form))
455 (define-repl-command
460 (lambda () (repl-eval form))))
464 (define-repl-command