3

我听说我们可以注释 ocaml prog。按他们的类型。论坛中的一个旧帖子建议使用 http://cristal.inria.fr/~remy/poly/emacs/index.html的 ocaml 模式

我一直在使用 Tuareg 模式,它建议使用“cc ct”来检索类型,cf。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)

我得到了“cc ct”未定义,尽管一切似乎都配置得很好。

这是 .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 模式下的文件(包含 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”下时按“cc ct”

我进入了 emacs 的 minibuffer

c-c c-t undefined

结论,我仍然无法检索类型。为什么???谢谢你的想法。

更多信息:当我尝试 Mx 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
4

1 回答 1

1

您正在caml-modeocaml.el或自动加载ocaml.elc。但是没有这样的文件!官方的 Caml 模式在一个名为的文件中caml.el,而 Tuareg 模式在一个名为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)
于 2011-06-26T13:09:10.137 回答