2009-10-14 10 views
6

Est-ce que quelqu'un sait comment configurer le mode emacs d'Erlang de sorte que la compilation d'un tampon [C-c C-k] écrit le fichier de poutre dans le répertoire ebin plutôt que dans le répertoire courant?Erlang emacs mode - setting outdir

Merci!

Répondre

1

Si vous configurez votre structure de répertoire comme ceci:

/ 
/src/ 
/ebin/ 

et placez votre module (par exemple "my_file.erl") dans "/src/"répertoire puis le compiler (Cc Ck) puis Emacs devrait automatiquement mettre le faisceau dans le répertoire"/ebin/". Cependant, si votre module ne se trouve pas dans un répertoire nommé "/ src /" (ou si le répertoire "ebin" est manquant), le faisceau sera supprimé à côté du fichier source.

Pour voir exactement comment cela fonctionne, jetez un œil à $ERL_TOP/lib/tools/emacs/erlang.el et recherchez "ebin". Voici ce que vous trouverez:

(defun inferior-erlang-compile-outdir() 
    "Return the directory to compile the current buffer into." 
    (let* ((buffer-dir (directory-file-name 
       (file-name-directory (buffer-file-name)))) 
    (parent-dir (directory-file-name 
       (file-name-directory buffer-dir))) 
     (ebin-dir (concat (file-name-as-directory parent-dir) "ebin")) 
    (buffer-dir-base-name (file-name-nondirectory 
       (expand-file-name 
       (concat (file-name-as-directory buffer-dir) 
        "."))))) 
    (if (and (string= buffer-dir-base-name "src") 
     (file-directory-p ebin-dir)) 
    (file-name-as-directory ebin-dir) 
     (file-name-as-directory buffer-dir)))) 

Je ne sais pas quand ce Goody a été ajouté, mais il était en OTP_R13B03 et il fonctionne pour moi dans R14B03.