我听说我们可以注释ocaml prog。按他们的类型。论坛中较旧的帖子建议使用ocaml模式 http://cristal.inria.fr/~remy/poly/emacs/index.html
我一直在使用图阿雷格模式,其中建议使用“c-c c-t”来检索类型,参见这段代码在tuareg.el
(when tuareg-with-caml-mode-p
;; Trigger caml-types
(define-key map [?\C-c ?\C-t] 'caml-types-show-type)
;; To prevent misbehavior in case of error during exploration.
(define-key map [(control mouse-2)] 'caml-types-mouse-ignore)
(define-key map [(control down-mouse-2)] 'caml-types-explore)
我得到了“c-c c-t”未定义,虽然一切似乎都配置得很好。
这是.emacs文件
(setq auto-mode-alist
(cons '("\\.ml[iyl]?$" . caml-mode) auto-mode-alist))
(autoload 'caml-mode "ocaml"
"Major mode for editing Caml code." t)
(autoload 'camldebug "camldebug"
"Call the camldebugger on FILE" t)
;; adjust paths for emacs source code
(add-to-list 'load-path "~/my-emacs-config/caml-mode")
;; adjust paths for emacs ocaml info sources
(require 'info)
(add-to-list 'Info-directory-list "~/my-emacs-config/caml-mode")
这是caml-mode中的文件(包含ocaml.el)
bash-3.2$ ls ~/my-emacs-config/caml-mode/
caml-compat.el caml-emacs.el caml-font.el caml-help.el caml-hilit.el caml-types.el caml.el camldebug.el inf-caml.el ocaml.el
我做了以下
- 写一个阶乘函数。在ocaml中,称为“annot.ml”
let rec f n =
if n = 1 then 0 else n * f(n-1)
- ocamlc -annot annot.ml
- 通过emacs打开annot.ml并在光标位于“n”下时按“c-c c-t”
我加入了emacs的迷你缓冲区
c-c c-t undefined
结论,我仍然无法检索类型。为什么???谢谢你的想法。
更多信息:当我尝试M-x caml- [tab]时,我得到以下列表,其中不包含caml-types-show-types
Possible completions are:
caml-mode camldebug
camldebug-backtrace camldebug-break
camldebug-close camldebug-complete
camldebug-delete camldebug-display-frame
camldebug-down camldebug-finish
camldebug-goto camldebug-kill
camldebug-last camldebug-mode
camldebug-next camldebug-open
camldebug-print camldebug-refresh
camldebug-reverse camldebug-run
camldebug-step camldebug-up
答案 0 :(得分:1)
您从caml-mode
或ocaml.el
自动加载ocaml.elc
。但是没有这样的文件!官方Caml模式位于名为caml.el
的文件中,图阿雷格模式位于名为tuareg.el
的文件中。这解释了为什么打开.ml
文件不会使您进入Ocaml模式并且不加载Caml支持。将您的自动加载更改为此选项以使用官方模式
(autoload 'caml-mode "caml"
"Major mode for editing Caml code." t)
或者这使用图阿雷格模式
(autoload 'caml-mode "tuareg"
"Major mode for editing Caml code." t)