2011-02-15 13 views

cevap

2

Ben bunu kolayca yapılandırabilirsiniz sanmıyorum: En ocaml kurulumda caml-types.el dosyada caml-types-locate-type-file işlevi de bakabilirsiniz.

Bu, .annot dosyalarını araya getiren işlevdir. Muhtemelen "_build"'u (ocamlbuild oluşturulan dosyaları koyar) obj ile değiştirmek ve bununla bitiştirmek için düzenleyebilirsiniz.

.emacs.el dosyanızdaki bir değişkeni tanımlamak ve caml-types.el dosyasında kullanmak daha iyi bir seçenektir. Bu şekilde, yamayu ocamlı insanlara önerebilirsiniz.

+0

Teşekkür tonio, Öneriniz mükemmel çalıştı. Zamanım varsa belki çözümü cilalar ve bir yama gönderirim. – Calin

0

Aşağıdaki kod benim için yeterlidir: yeni bir özelleştirme değişkeni oluşturur (bu, bir özelleştirme grubuna bağlı değilim, ancak isterseniz bunu yapabilirsiniz), sonra bu değişkeni, aranacak dizinlerin bir listesi olarak kullanır.

(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

Neden bu durum reddedildi? Aslında, "caml-types.el" el ile değiştirmek zorunda kalmadan, kabul edilen yanıtın önerdiği yamayu uygular. –

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