在Guile的REPL中,提示符是scheme@(guile-user)>,但我希望它显示my-name@hostname(current-working-directory)>。有没有办法做到这一点?
发布于 2019-03-03 00:31:00
在guile方案发行版的system/repl/common中,您可以看到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 option‘提示符,它是一个lambda
(lambda (repl) ...)(但它也可以是一个简单的字符串),它可以输出您想要的任何内容。
你有,
https://www.gnu.org/software/guile/manual/html_node/System-Commands.html#System-Commands
所以你可以这样做
scheme@(guile-user)> ,option prompt ">"
>
>(+ 1 2)
$1 = 3
>,option prompt (lambda (repl) ">>")
>>(+ 2 3)
$2 = 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)))(但只在一行上)和get
stis@lapwine(/home/stis/src/guile/module/system/repl)> (+ 1 2)
3希望这能有所帮助。
https://stackoverflow.com/questions/54845668
复制相似问题