2008-12-09 5 views
15

Per the Emacs docs, jedes Mal wenn Sie eine Datei öffnen, ändert sich Emacs default-directory in das Verzeichnis die Datei enthält.Verhindern automatische Änderung der default-Verzeichnis

Wenn sich der Cursor dann in diesem Puffer befindet und Sie (zum Beispiel) SLIME starten, wird default-directory als aktuelles Arbeitsverzeichnis für SLIME verwendet. Wenn Sie versuchen, eine neue Datei zu öffnen, wird die Datei mit default-directory als Ausgangspunkt geöffnet.

Ich möchte in der Lage M-x cd oder sonst cd in ein Verzeichnis zu sein, und dann nie Emacs mein aktuelles Arbeitsverzeichnis zu irgendetwas außer diesem Verzeichnis ändern, bis ich es anders erzähle. Ich möchte, dass dies in allen Puffern global ist, so dass ich jedes Mal, wenn ich etwas mit dem aktuellen Arbeitsverzeichnis mache, weiß, worauf es eingestellt ist, unabhängig davon, wo sich mein Cursor gerade befindet. Gibt es eine Möglichkeit, dies zu tun?

Antwort

11

Sie könnten versuchen, so etwas wie dies mit:

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

Eine weitere Variante default-Verzeichnis auf das notwendige Verzeichnis in Verzeichnis-lokalen Variablen zu binden, z.B. in der .dir-locals.el Datei in einem Ihrer übergeordneten Verzeichnissen zu so etwas wie:

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

Dies ist das Beste, was ich mit so weit habe kommen, leider:

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

Dies funktioniert solange default-directory richtig eingestellt ist vor I C-x C-f. Ich werde Jurtas Antwort akzeptieren, weil sie mich in eine nützliche Richtung weist.