2013-05-27 65 views
2

有沒有人設法得到當前版本的typerex(1.0.1我猜)意味着爲ocaml < 4.0.0完全工作? 我目前與ocaml 3.12.1,這應該是好的,和emacs24。我按照typerex網站上的說明進行操作,因此我下載了gz,進行了配置,進行安裝並將emacs行添加到我的.emacs文件中。如果我啓動emacs,它會執行代碼突出顯示,但是當我從typerex下拉菜單中嘗試某些內容時(例如重命名),我會得到一個'命令失敗:無cmt(i)文件...'。typerex 1.0.1與ocaml 3.12.1和emacs,沒有cmt(i)文件發現

根據typerex(http://www.typerex.org/manual-index.html)的網站,我應該添加一行myocamlbuild文件,

Options.ocamlc := S [ A "ocp-ocamlc"]

,我不喜歡這樣:

let _ = dispatch & function 
    | Before_options -> 
     (* Set up to use ocamlfind *) 
     Options.ocamlc  := S [ A "ocp-ocamlc"] 

但我仍得到同樣的問題。

我的.typerex文件指向我提到的_build,因此CMT _build(這是目前該文件中唯一存在的)。

我開始懷疑,因爲顯然cmt文件只支持ocaml 4.0.0或類似的東西(閱讀某處),所以我有一個錯誤版本的東西在某處(我不這麼認爲) ,但這當然不能證明任何事情)。 網站上的文檔是怎麼樣的稀疏和支持選項卡立即轉發到計算器,所以我在這裏,我想...

卡斯帕

+0

是的,'.cmt'文件是通過OCaml> 4.00.0版本中的'-bin_annot'標誌編譯的。在以前的版本中,'-annot'和'-dtypes'標誌以不同的格式產生類型信息。我還沒有處理'typerex'知道如何啓用和解析這些格式。 – nlucaroni

+0

因此,我認爲版本有問題的假設是正確的嗎?根據他們的網站,我的版本應該取決於ocaml 3.11。+,我有3.12,所以它應該根據我的工作。所以,或者錯誤信息是錯誤的,或者他們的文檔是錯誤的,基本上...... – Kasper

回答

3

.cmt文件由OCaml中開始產生4.00版本。我相信早期版本的Typerex提供了專門修改版本的OCaml編譯器,它已經在4.00版本之前集成了-bin-annot分支 - -bin-annot在OCamlPro中爲滿足Typerex的需求而精確開發。

Typerex 2將有明顯不同的原因是,Typerex的前期/現在設計使其部署過於沉重,並且如您所見,難以配置。當你等待一個更完美的第二個版本,你可以使用下面的非常好的工具:

  • Merlin是一個年輕的計劃,逐步提取從OCaml的緩衝區語法和打字的信息進行編輯(因此只部分正確來源),以提供早期的錯誤反饋,類型意識完成等。它爲Vim和Emacs提供了編輯器模式(Vim之一現在更加精細),並且我相信它是正確答案獲得關於部分完整來源的增量信息 - 它會比Typerex做得更好。

  • ocamlspot是一個程序分析完成 OCaml源文件並提供語義信息,目前主要是定義點信息。自4.00開始,它依賴於-bin-annot機器,因此安裝和部署非常簡單(之前它與4.00之前的Typerex有很多相同的問題)。它也可以從Emacs和Vim使用(但是這次Emacs界面看起來更加精美)。

這些工具的組合將無法爲您提供Typerex的所有功能,現在還是答應(尤其是沒有太多的重構),但他們停留在一個堅實的設計,將可能演變很好地爲時間繼續。

+0

那麼,只要我們不遷移到ocaml 4,底線是否會有很多類似ide的功能?因爲遷移顯然不是一種選擇... – Kasper

+0

我懷疑Merlin將會在4.00之前的版本中工作,但它的報告稍微有些退化:它報告的警告和錯誤將與4.00版本相對應(它目前嵌入了4.00型檢查器) 。您仍然可以在舊版本的代碼上運行它(OCaml保持向後兼容性)。 Merlin的來源將以3.12構建。如果你開始這樣做,你應該通知Merlin開發者(他們的bugtracker上的一個問題),以便他們知道這個工作流存在並考慮保留它。 – gasche