2008-12-09 10 views
15

Zgodnie z the Emacs docs, za każdym razem, gdy otwierasz plik, Emacs zmienia default-directory w katalog zawierający ten plik.Zapobieganie automatycznej zmianie domyślnego katalogu

Następnie, jeśli kursor znajduje się w tym buforze, a Ty (na przykład) uruchamiasz SLIME, używa on default-directory jako bieżącego katalogu roboczego dla SLIME. Jeśli spróbujesz otworzyć nowy plik, otwiera on plik o numerze default-directory jako miejscu początkowym.

Chcę być w stanie M-x cd lub w inny sposób cd do katalogu, a następnie nigdy nie powinienem mieć Emacs zmienić mój bieżący katalog roboczy na nic z wyjątkiem tego katalogu, dopóki nie powiem inaczej. Chcę, aby było to globalne we wszystkich buforach, więc za każdym razem, gdy robię coś z bieżącym katalogiem roboczym, wiem, co jest ustawione niezależnie od tego, gdzie aktualnie znajduje się mój kursor. Czy jest jakiś sposób na zrobienie tego?

Odpowiedz

11

Można spróbować użyć coś takiego:

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

Innym wariantem jest związać default-katalogu do niezbędnego katalogu w katalogu zmienne lokalne, na przykład w pliku .dir-locals.el w jednym z katalogów nadrzędnych do czegoś podobnego:

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

Jest to najlepszy jaki wymyślić tak daleko, niestety:

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

to działa tak długo, jak default-directory jest poprawnie ustawiony przed I C-x C-f. Zamierzam zaakceptować odpowiedź jurty za wskazanie mi użytecznego kierunku.

Powiązane problemy