2008-12-09 7 views
15

Selon the Emacs docs, chaque fois que vous ouvrez un fichier, Emacs modifie default-directory dans le répertoire contenant ce fichier. Ensuite, si le curseur est dans ce tampon et que vous lancez par exemple SLIME, il utilise default-directory comme répertoire de travail courant pour SLIME. Si vous essayez d'ouvrir un nouveau fichier, il ouvre le fichier avec default-directory comme point de départ.Empêcher le changement automatique du répertoire par défaut

Je veux être en mesure de M-x cd ou sinon cd à un répertoire, et puis jamais Emacs ne changera mon répertoire de travail en cours à tout sauf ce répertoire jusqu'à ce que je le dise autrement. Je veux que ce soit global dans tous les tampons, de sorte que chaque fois que je fais quelque chose impliquant le répertoire de travail actuel, je sais ce que c'est réglé indépendamment de l'endroit où se trouve mon curseur pour le moment. Y a-t-il un moyen de faire cela?

Répondre

11

Vous pouvez essayer d'utiliser quelque chose comme ceci:

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

Une autre variante consiste à lier par défaut répertoire dans le répertoire nécessaire dans les variables de répertoire local, par exemple dans le fichier .dir-locals.el dans l'un de vos répertoires parents à quelque chose comme:

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

C'est le meilleur que je suis venu avec jusqu'à présent, malheureusement:

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

Cela fonctionne tant que default-directory est correctement défini avant I C-x C-f. Je vais accepter la réponse de jurta pour m'avoir indiqué dans une direction utile.

Questions connexes