2009-10-14 16 views
6

Qualcuno sa come configurare la modalità Erlang emacs in modo che la compilazione di un buffer [C-c C-k] scriva il file del fascio nella directory ebin piuttosto che nella directory corrente?Modalità Erlang emacs - impostazione fuori

Grazie!

risposta

1

Se si imposta la struttura di directory in questo modo:

/ 
/src/ 
/ebin/ 

e inserire il vostro modulo (ad esempio "my_file.erl") nel "/src/"quindi compilare (Cc Ck), quindi Emacs dovrebbe mettere automaticamente il raggio nella directory"/ebin/".

Tuttavia, se il modulo non si trova in una directory denominata "/ src /" (o se la directory "ebin" è mancante) la trave verrà rilasciata accanto al file sorgente.

Per vedere esattamente come funziona, dare un'occhiata a $ERL_TOP/lib/tools/emacs/erlang.el e cercare "ebin". Ecco cosa troverete:

(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)))) 

Non so quando è stato aggiunto questo Goody, ma era in OTP_R13B03 e funziona per me in R14B03.