2015-07-12 39 views
3

我正在运行racket作为repl(与xrepl),并且我可以使用​​来查看一些相关文档(几乎很棒),但它会引发火灾通过网络浏览器查看文档。我希望能够在repl中看到文档,就像它在其他repl(R,Clojure,ipython,pry等)中的呈现方式一样。这可能吗?Racket内置帮助文本(非HTML)文档xrepl

例如,在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 ... 

这也将是巨大的,可以看到源((source map) Clojure中),但我还没有看到这是任何可用的线索。

我正好在使用Vim(与slime/tmux),所以任何基于Vim的解决方案也可以工作,可能与其内置的帮助相关的K

+0

看看优秀的插件[参考](https://github.com/thinca/vim-ref)。它不支持'racket'帮助,但是你可以为它写一个后端。 – lcd047

+0

由于DrRacket和Emacs模式的racket模式,Racket社区中很少有vim用户。最好的办法是重用现有的基础设施,例如https://github.com/greghendershott/racket-mode/blob/master/defn.rkt#L19哪种拍框模式用来查找定义。 (代码在Racket中,所以应该可以从vim内部调用Racket)。 – soegaard

+0

一个问题:find-definition代码需要从'module-> namespace'运行在文件的命名空间中,因为最终它依赖于'identifier-binding'。因此,要使用xrepl,我认为需要将其构建到xrepl中。 –

回答

0

我把VROD放在一起,这个解决方案将参考文档解析为Vim可以使用的东西。这基本上提供了clojure的doc内置帮助,但通过Vim的K帮助。它也做了一些突出显示和示例。

(这也恰好做的功能自动完成。)

1

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

  • 帮助提供的是HTML。

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

  • 球拍文档没有像文档字符串的第一行应该是摘要(在命令列表或REPL中使用的简短版本)那样的约定。

您可以尝试xrepl的,desc <id>命令。 Starting in Racket 6.1.1,如果该功能已经安装了文档,它将打印“蓝框”的呈现 - 具有合同和/或类型的功能签名。在许多情况下,这就是你所需要的,比如说让你记忆。但是没有描述该项目的文字。如果没有安装函数帮助,它不会尝试根据函数的定义来显示任何东西。

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


有使用球拍的vim粉丝;我所知道的是在Emacs中使用邪恶模式,并感觉它是两个世界中最好的。不过,我很欣赏这不是您当前使用多种语言的工作流程,所以我不会将其作为您的解决方案。