mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-06-12 23:00:22 +02:00
add repl-default-option-set! in (system repl common)
* module/system/repl/common.scm (repl-default-option-set!): New interface. (repl-default-prompt-set!): New procedure, sets the 'prompt property in the default env. (repl-prompt): Use the 'prompt repl option if available.
This commit is contained in:
parent
40f17f1e0a
commit
91037860bd
1 changed files with 21 additions and 4 deletions
|
@ -28,6 +28,7 @@
|
||||||
repl-tm-stats repl-gc-stats
|
repl-tm-stats repl-gc-stats
|
||||||
repl-welcome repl-prompt repl-read repl-compile repl-eval
|
repl-welcome repl-prompt repl-read repl-compile repl-eval
|
||||||
repl-parse repl-print repl-option-ref repl-option-set!
|
repl-parse repl-print repl-option-ref repl-option-set!
|
||||||
|
repl-default-option-set! repl-default-prompt-set!
|
||||||
puts ->string user-error
|
puts ->string user-error
|
||||||
*warranty* *copying* *version*
|
*warranty* *copying* *version*
|
||||||
*repl-level*))
|
*repl-level*))
|
||||||
|
@ -121,10 +122,14 @@ See <http://www.gnu.org/licenses/lgpl.html>, for more details.")
|
||||||
(display "Enter `,help' for help.\n"))
|
(display "Enter `,help' for help.\n"))
|
||||||
|
|
||||||
(define (repl-prompt repl)
|
(define (repl-prompt repl)
|
||||||
(format #f "~A@~A~A> " (language-name (repl-language repl))
|
(cond
|
||||||
(module-name (current-module))
|
((repl-option-ref repl 'prompt)
|
||||||
(let ((level (or (fluid-ref *repl-level*) 0)))
|
=> (lambda (prompt) (prompt repl)))
|
||||||
(if (zero? level) "" (format #f " [~a]" level)))))
|
(else
|
||||||
|
(format #f "~A@~A~A> " (language-name (repl-language repl))
|
||||||
|
(module-name (current-module))
|
||||||
|
(let ((level (or (fluid-ref *repl-level*) 0)))
|
||||||
|
(if (zero? level) "" (format #f " [~a]" level)))))))
|
||||||
|
|
||||||
(define (repl-read repl)
|
(define (repl-read repl)
|
||||||
((language-reader (repl-language repl)) (current-input-port)
|
((language-reader (repl-language repl)) (current-input-port)
|
||||||
|
@ -167,6 +172,18 @@ See <http://www.gnu.org/licenses/lgpl.html>, for more details.")
|
||||||
(define (repl-option-set! repl key val)
|
(define (repl-option-set! repl key val)
|
||||||
(set! (repl-options repl) (assq-set! (repl-options repl) key val)))
|
(set! (repl-options repl) (assq-set! (repl-options repl) key val)))
|
||||||
|
|
||||||
|
(define (repl-default-option-set! key val)
|
||||||
|
(set! repl-default-options (assq-set! repl-default-options key val)))
|
||||||
|
|
||||||
|
(define (repl-default-prompt-set! prompt)
|
||||||
|
(repl-default-option-set!
|
||||||
|
'prompt
|
||||||
|
(cond
|
||||||
|
((string? prompt) (lambda (repl) prompt))
|
||||||
|
((thunk? prompt) (lambda (repl) (prompt)))
|
||||||
|
((procedure? prompt) prompt)
|
||||||
|
(else (error "Invalid prompt" prompt)))))
|
||||||
|
|
||||||
|
|
||||||
;;;
|
;;;
|
||||||
;;; Utilities
|
;;; Utilities
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue