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中使用邪惡模式,並感覺它是兩個世界中最好的。不過,我很欣賞這不是您當前使用多種語言的工作流程,所以我不會將其作爲您的解決方案。