Предотвращение автоматической смены default-directory - PullRequest
15 голосов
/ 10 декабря 2008

Согласно документам Emacs , каждый раз, когда вы открываете файл, Emacs меняет default-directory на каталог, содержащий этот файл.

Затем, если курсор находится в этом буфере и вы (например) запускаете SLIME, он использует default-directory в качестве текущего рабочего каталога для SLIME. Если вы попытаетесь открыть новый файл, он откроет файл с default-directory в качестве отправной точки.

Я хочу иметь возможность M-x cd или иным образом cd в каталог, а затем никогда не заставлять Emacs изменять мой текущий рабочий каталог на что-либо, кроме этого каталога, пока я не скажу иначе. Я хочу, чтобы это было глобальным для всех буферов, так что каждый раз, когда я делаю что-то с текущим рабочим каталогом, я знаю, на что он установлен, независимо от того, где находится мой курсор в данный момент. Есть ли способ сделать это?

Ответы [ 3 ]

12 голосов
/ 10 декабря 2008

Вы можете попробовать что-то вроде этого:

(add-hook 'find-file-hook
          (lambda ()
            (setq default-directory command-line-default-directory)))
4 голосов
/ 18 декабря 2008

Другой вариант - связать default-directory с необходимым каталогом в локальных переменных каталога, например, в файле .dir-locals.el в одном из ваших родительских каталогов что-то вроде:

((nil . ((default-directory . "~/.emacs.d/"))))
1 голос
/ 18 января 2009

Это лучшее, что я придумал, к сожалению:

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

Это работает до тех пор, пока default-directory правильно установлено до I C-x C-f. Я собираюсь принять ответ юрты за то, что он указал мне полезное направление.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...