更改 REPL 以显示用户名、主机名和当前工作目录?
Alter REPL to display username, hostname and current working directory?
在 Guile 的 REPL 中,提示符是 scheme@(guile-user)>
,但我希望它显示 my-name@hostname(current-working-directory)>
。有办法吗?
IN system/repl/common 在 guile scheme distribution 中你可以看到 repl-prompt 实现:
(define (repl-prompt repl)
(cond
((repl-option-ref repl 'prompt)
=> (lambda (prompt) (prompt repl)))
(else
(format #f "~A@~A~A> " (language-name (repl-language repl))
(module-name (current-module))
(let ((level (length (cond
((fluid-ref *repl-stack*) => cdr)
(else '())))))
(if (zero? level) "" (format #f " [~a]" level)))))))
这表示您有一个 repl 选项 'prompt,它是一个 lambda
(lambda (repl) ...)
(但也可以是简单的字符串)比什么都可以输出。
你有,
https://www.gnu.org/software/guile/manual/html_node/System-Commands.html#System-Commands
所以你可以做到
scheme@(guile-user)> ,option prompt ">"
>
>(+ 1 2)
= 3
>,option prompt (lambda (repl) ">>")
>>(+ 2 3)
= 5
>>
但是如果你想在你的 .guile 文件中添加提示怎么办?
如果将它们放入 .guile(在创建提示之前)
(use-modules (system repl common))
(repl-default-option-set! 'prompt ">>>")
你会得到
>>> (+ 1 2)
3
您也可以创建新的回复,但那是另一个问题
对于您的具体示例,您可以尝试
> ,option prompt (lambda (repl)
(format #f "~a@~a(~a)>"
(getenv "USER")
(vector-ref (uname) 1)
(getcwd)))
(但在一条线上)并得到
stis@lapwine(/home/stis/src/guile/module/system/repl)> (+ 1 2)
3
希望对您有所帮助。
在 Guile 的 REPL 中,提示符是 scheme@(guile-user)>
,但我希望它显示 my-name@hostname(current-working-directory)>
。有办法吗?
IN system/repl/common 在 guile scheme distribution 中你可以看到 repl-prompt 实现:
(define (repl-prompt repl)
(cond
((repl-option-ref repl 'prompt)
=> (lambda (prompt) (prompt repl)))
(else
(format #f "~A@~A~A> " (language-name (repl-language repl))
(module-name (current-module))
(let ((level (length (cond
((fluid-ref *repl-stack*) => cdr)
(else '())))))
(if (zero? level) "" (format #f " [~a]" level)))))))
这表示您有一个 repl 选项 'prompt,它是一个 lambda
(lambda (repl) ...)
(但也可以是简单的字符串)比什么都可以输出。
你有,
https://www.gnu.org/software/guile/manual/html_node/System-Commands.html#System-Commands
所以你可以做到
scheme@(guile-user)> ,option prompt ">"
>
>(+ 1 2)
= 3
>,option prompt (lambda (repl) ">>")
>>(+ 2 3)
= 5
>>
但是如果你想在你的 .guile 文件中添加提示怎么办?
如果将它们放入 .guile(在创建提示之前)
(use-modules (system repl common))
(repl-default-option-set! 'prompt ">>>")
你会得到
>>> (+ 1 2)
3
您也可以创建新的回复,但那是另一个问题
对于您的具体示例,您可以尝试
> ,option prompt (lambda (repl)
(format #f "~a@~a(~a)>"
(getenv "USER")
(vector-ref (uname) 1)
(getcwd)))
(但在一条线上)并得到
stis@lapwine(/home/stis/src/guile/module/system/repl)> (+ 1 2)
3
希望对您有所帮助。