2011-02-15 11 views

Respuesta

2

no creo que se puede configurar fácilmente esta: echar un vistazo a la función caml-types-locate-type-file en el archivo caml-types.el en su instalación ocaml.

Esta es la función que busca archivos .annot. Probablemente pueda editarlo para reemplazar el "_build" (que es donde ocamlbuild coloca los archivos generados) con obj y listo.

Una opción mucho mejor es definir una variable en su .emacs.el, y usarla en el archivo caml-types.el. de esta manera, incluso podrías proponer el parche a la gente ocaml.

+0

Gracias tonio, su sugerencia funcionó a la perfección. Si tengo tiempo, tal vez puliré la solución y enviaré un parche. – Calin

0

El siguiente código me basta: crea una nueva variable de personalización (que no he vinculado a un grupo de personalización, pero puede hacerlo si lo desea) y luego usa esa variable como una lista de directorios para buscar.

(defcustom caml-types-annot-directories-search 
    '("_build" "obj" "../obj") 
    "List of directories to search for .annot files" 
    :type '(repeat string) 
) 
(defun or-list (f lst) 
    (if (null lst) nil 
    (if (apply f (car lst) nil) 
     (car lst) 
     (or-list f (cdr lst))))) 

(add-hook 'tuareg-mode-hook 
      (lambda() 
      (defun caml-types-locate-type-file (target-path) 
       (let ((sibling (concat (file-name-sans-extension target-path) ".annot"))) 
       (if (file-exists-p sibling) 
        sibling 
        (let ((project-dir (file-name-directory sibling)) 
         (test-dir (lambda (prefix) 
            (message "Prefix is %s" prefix) 
            (setq type-path 
              (expand-file-name 
              (file-relative-name sibling project-dir) 
              (expand-file-name prefix project-dir))) 
            (message "Testing %s" type-path) 
            (file-exists-p type-path))) 
         type-path) 
        (while (not (or-list test-dir caml-types-annot-directories-search)) 
         (if (equal project-dir (caml-types-parent-dir project-dir)) 
          (error (concat "No annotation file. " 
             "You should compile with option \"-annot\"."))) 
         (setq project-dir (caml-types-parent-dir project-dir))) 
        type-path)))))) 
+0

¿Por qué se modificó esta votación? De hecho, implementa el parche sugerido por la respuesta aceptada, sin tener que modificar manualmente 'caml-types.el' ... –

0
 
# soft link .annot files so that Emacs' tuareg-mode can find them 
mkdir -p _build 
for f in `find lib/obj -name *.annot` ; do ln -s ../$f _build/ ; done 
Cuestiones relacionadas