Наивный вопрос о том, как набрать аннотации к моей проге ocaml. в Emacs - PullRequest
3 голосов
/ 26 июня 2011

Я слышал, что мы можем комментировать прогу ocaml. по их типам. В старой ветке форума предлагалось использовать режим 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 (который содержит 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.ml

- открыть annot.ml с помощью emacs и нажать «c-c c-t», когда курсор находится под «n»

Я попал в минибуфер 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

1 Ответ

1 голос
/ 26 июня 2011

Вы автоматически загружаете 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)
...