2012-07-09 27 views
7

Obecnie używam trybu tuareg, ale chciałbym móc również korzystać z funkcjonalności trybu caml. W szczególności chcę móc interaktywnie korzystać z adnotacji typu i najwyraźniej dzieje się tak z typami caml. Próbowałem umieścić http://cristal.inria.fr/~remy/poly/emacs/index.html w moim pliku .emacs.d, ale jestem zdezorientowany, w jaki sposób lub czy te dwa tryby mogą współpracować ze sobą. W rzeczywistości nie mogę w ogóle uruchomić trybu caml.Tryb Tuareg i tryb Caml

Mam ten wiersz w moim init.el:

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

ale pliki nie są ładowane - przynajmniej żadna z definicji funkcji lub skróty klawiszowe są. Naprawdę myślałem, że zaczynam rozumieć, jak działają te wtyczki emacs, ale zaczynam się zastanawiać. Może ktoś może wyjaśnić, co jeszcze musi się wydarzyć?

Edycja: Nie zdawałem sobie sprawy, że muszę to zrobić, aby zadziałało require 'caml. Mimo to adnotacje nie działają, chociaż mam typy caml od http://caml.inria.fr/svn/ocaml/branches/gadts/emacs/. Kompiluję się z -annot, ale nadal słyszę, że nie ma pliku adnotacji.

Odpowiedz

5

Możesz wpisać adnotację w trybie Tuareg. Jeśli mam dokładnie ten plik ~/.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) 

następnie naciskając F10 pokazuje rodzaj ekspresji pod punkcie. Jak wiecie, trzeba skompilować plik foo.ml z

ocamlc -annot foo.ml 

tak, że nie jest to plik foo.annot w tym samym katalogu co foo.ml.

+0

Dzięki, to działa. Ale próbowałem związać się z "C-c C-t" bez powodzenia. Czy istnieje specjalny format określania kluczy w define-key? – scry

+0

"C-c C-t" również tutaj działa, z tym minimalnym .emacs, bez konieczności definiowania go. – jrouquie

+0

Wygląda na to, że wszystko działa tak, jak powinno, dopóki 'tuareg-with-caml-mode-p' nie ma zerowej wartości - kiedy to powinno być włączone? Czuję, że nie powinienem był tego robić sam. eh. – scry