2009-10-14 17 views
6

¿Alguien sabe cómo configurar el modo Erlang emacs para que la compilación de un búfer [C-c C-k] escriba el archivo del rayo en el directorio ebin en lugar del directorio actual?Erlang emacs mode - setting outdir

Gracias!

Respuesta

1

Si configura la estructura de directorios de este modo:

/ 
/src/ 
/ebin/ 

y colocar el módulo (por ejemplo, "my_file.erl") en el "/src/"directorio luego compilarlo (Cc Ck) entonces Emacs debería colocar automáticamente el rayo en el directorio"/ebin/".

Sin embargo, si su módulo no está en un directorio llamado "/ src /" (o si falta el directorio "ebin"), la barra se dejará caer junto con el archivo de origen.

Para ver exactamente cómo funciona, eche un vistazo a $ERL_TOP/lib/tools/emacs/erlang.el y busque "ebin". Esto es lo que encontrará:

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

No sé cuando se añadió esta chuchería, pero fue en OTP_R13B03 y funciona para mí en R14B03.