2008-12-09 19 views
15

Según the Emacs docs, cada vez que abre un archivo, Emacs cambia default-directory al directorio que contiene ese archivo.Prevención del cambio automático del directorio predeterminado

Luego, si el cursor está en ese búfer y usted (por ejemplo) inicia SLIME, usa default-directory como el directorio de trabajo actual para SLIME. Si intenta abrir un nuevo archivo, abre el archivo con default-directory como punto de partida.

Quiero poder M-x cd o de lo contrario cd a un directorio, y entonces nunca tenga Emacs cambie mi directorio de trabajo actual a cualquier cosa que no sea ese directorio hasta que le indique lo contrario. Quiero que esto sea global en todos los buffers, de modo que cada vez que haga algo relacionado con el directorio de trabajo actual, sé lo que está configurado, independientemente de dónde esté mi cursor en este momento. ¿Hay alguna forma de hacer esto?

Respuesta

11

Usted podría tratar de usar algo como esto:

(add-hook 'find-file-hook 
      (lambda() 
      (setq default-directory command-line-default-directory))) 
4

Otra variante consiste en vincular default-directory al directorio necesario en las variables de directorio local, por ejemplo, en el archivo .dir-locals.el en uno de sus directorios padre a algo como:

((nil . ((default-directory . "~/.emacs.d/")))) 
1

Este es el mejor que he encontrado hasta el momento, por desgracia:

(defun find-file-save-directory() 
    (interactive) 
    (setq saved-default-directory default-directory) 
    (ido-find-file) 
    (setq default-directory saved-default-directory)) 
(global-set-key "\C-x\C-f" 'find-file-save-directory) 

Estos trabajos siempre que default-directory esté configurado correctamente antes de I C-x C-f. Voy a aceptar la respuesta de jurta por apuntarme en una dirección útil.

Cuestiones relacionadas