Racket xrepl的内置帮助文本(不是html)文档

时间:2015-07-12 18:39:50

标签: vim clojure racket

我正在运行racket作为repl(使用xrepl),我可以使用,doc查看一些相关文档(几乎非常棒),但它会启动用于查看文档的Web浏览器。我希望能够在repl中看到正确的文档,类似于在其他repl(R,Clojure,ipython,pry等)中呈现的文档。这可能吗?

例如,在Clojure的lein repl中,可以做到:

user=> (doc map)
-------------------------
clojure.core/map
([f coll] [f c1 c2] [f c1 c2 c3] [f c1 c2 c3 & colls])
  Returns a lazy sequence consisting of the result of applying ...

能够在clojure中看到源((source map))也很棒,但我还没有看到任何有关此内容的提示。

我碰巧使用的是Vim(使用slime / tmux),因此任何基于Vim的解决方案都可以使用,可能与其 K 内置帮助有关。

2 个答案:

答案 0 :(得分:2)

鉴于Racket文档的性质,我不确定这是否实用。

  • 帮助可交付成果是HTML。

  • 与Clojure(或Emacs Lisp)不同,Racket在函数定义源中没有doc字符串。

  • 球拍文档没有类似于doc字符串的第一行应该是摘要(在命令列表或REPL中使用的短版本)的约定。< / p>

您可以尝试使用xrepl的,desc <id>命令。 Starting in Racket 6.1.1,如果函数安装了文档,它将打印“蓝盒子”的渲染 - 带有合同和/或类型的函数签名。在许多情况下,这就是你所需要的,比如慢慢记忆。但是没有描述该项目的文字。如果没有为函数安装帮助,它将不会尝试根据函数的定义源显示任何内容。

因此,例如在Emacs的racket-mode中,有一个racket-describe命令,它不会启动浏览器 - 但它会显示使用shr的完整HTML帮助(如果有的话)一个单独的Emacs缓冲区。如果没有帮助,它会尝试查找源并提取合同/类型和签名以向您显示。但同样,该来源中没有文档字符串,更不用说在REPL中整齐地显示单行摘要。

有使用Racket的vim粉丝;我所知道的是在Emacs中使用邪恶模式并感觉它是两个世界中最好的。但是,我感谢您使用多种语言的当前工作流程,因此我不建议将其作为您的解决方案。

答案 1 :(得分:0)

我把VROD放在一起,这个解决方案将参考文档解析为Vim可以使用的东西。这基本上可以从clojure的doc内置帮助中获得,但通过Vim的K - 帮助。它还有一些突出显示并显示示例。

(它也可以自动完成功能。)