首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >更改REPL以显示用户名、主机名和当前工作目录?

更改REPL以显示用户名、主机名和当前工作目录?
EN

Stack Overflow用户
提问于 2019-02-24 04:03:09
回答 1查看 220关注 0票数 2

在Guile的REPL中,提示符是scheme@(guile-user)>,但我希望它显示my-name@hostname(current-working-directory)>。有没有办法做到这一点?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-03 00:31:00

在guile方案发行版的system/repl/common中,您可以看到repl-prompt实现:

代码语言:javascript
复制
(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

代码语言:javascript
复制
(lambda (repl) ...)

(但它也可以是一个简单的字符串),它可以输出您想要的任何内容。

你有,

https://www.gnu.org/software/guile/manual/html_node/System-Commands.html#System-Commands

所以你可以这样做

代码语言:javascript
复制
scheme@(guile-user)> ,option prompt ">"
>
>(+ 1 2)
$1 = 3
>,option prompt (lambda (repl) ">>")
>>(+ 2 3)
$2 = 5
>>

但是,如果要在.guile文件中添加提示符,该怎么办呢?

如果您将它们放入.guile中(在创建提示符前)

代码语言:javascript
复制
(use-modules (system repl common))
(repl-default-option-set! 'prompt ">>>")

你会得到

代码语言:javascript
复制
>>> (+ 1 2)
3

您也可以创建新的回复,但这是另一个问题

对于您的特定示例,您可以尝试

代码语言:javascript
复制
> ,option prompt (lambda (repl) 
                    (format #f "~a@~a(~a)>" 
                            (getenv "USER") 
                            (vector-ref (uname) 1) 
                            (getcwd)))

(但只在一行上)和get

代码语言:javascript
复制
 stis@lapwine(/home/stis/src/guile/module/system/repl)> (+ 1 2)
 3

希望这能有所帮助。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54845668

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档