2012-07-09 97 views
7

我目前使用的是图阿雷格模式,但我希望能够使用caml模式的功能。特别是我希望能够交互式地使用类型注释,显然这与caml类型有关。我尝试将http://cristal.inria.fr/~remy/poly/emacs/index.html放入我的.emacs.d中,但我对这两种模式如何或如果可以一起工作感到困惑。事实上,我不能让caml模式工作。图阿雷格模式和caml模式

我有这行我init.el:

(add-to-list 'load-path "~/.emacs.d/modes/caml") 

但文件没有加载 - 至少,没有一个功能定义或按键绑定的是。我真的认为我已经开始了解这些emacs插件是如何工作的,但我开始怀疑。也许有人可以解释还有什么需要发生?

编辑:我没有意识到我必须require 'caml这个工作。尽管如此,虽然我有http://caml.inria.fr/svn/ocaml/branches/gadts/emacs/的caml类型,但注释似乎不起作用。我编译-annot,但我仍然被告知没有注释文件。

回答

5

您可以使用tuareg模式进行类型注释。 如果我有此确切〜/ .emacs文件:

(add-hook 'tuareg-mode-hook '(lambda() 
    (define-key tuareg-mode-map [f10] 'caml-types-show-type); requires caml-types 
)) 
(add-to-list 'auto-mode-alist '("\\.ml\\w?" . tuareg-mode)) 
(autoload 'caml-types-show-type "caml-types" "Show the type of expression or pattern at point." t) 

然后按F10显示点下的表达式的类型。 如你所知,你需要编译的文件foo.ml

ocamlc -annot foo.ml 

,以便有在同一个目录中foo.ml文件foo.annot

+0

谢谢,这个工程。但我试图绑定到“C-C C-t”而没有成功。是否有一种特殊的格式用于在define-key中指定键? – scry 2012-07-09 15:22:53

+0

“C-c C-t”也可以在这里使用,这个最小的.emacs不需要定义它。 – jrouquie 2012-07-09 15:55:10

+0

只要'tuareg-with-caml-mode-p'不是零 - 它应该启用的时间是什么时候,它看起来应该像所有的一样工作?我觉得我不应该自己做。诶。 – scry 2012-07-11 00:43:19