Как изменить текущий рабочий каталог?

11

как изменить текущий рабочий каталог Emacs?

set default-directoryне влияет на текущий рабочий каталог процесса emacs, что можно проверить с помощью lsof -p pid.

FunkyBaby
источник
1
Emacs, будучи «некой ОС», на самом деле не имеет единого текущего рабочего каталога. Таким образом, то, что вы видите как cwd процесса, в значительной степени случайное и не совсем задокументировано. Глядя на C-код Emacs, у меня складывается впечатление, что в настоящее время нет способа сделать то, что вы хотите. Вы можете, следовательно, M-x report-emacs-bugи запросить его как новую функцию.
Стефан
1
Предполагая, что вы работаете в Linux, вы можете принудительно изменить cwd, работая на уровне операционной системы, подробности смотрите на unix.stackexchange.com/questions/281994/…
TTimo

Ответы:

4

Я думаю, что единственный способ, которым Emacs предлагает управлять cwdпроцессом, - это --chdirаргумент командной строки. Как только процесс запущен, в настоящее время нет способа его изменить.

Стефан
источник
15

M-x cd

Это должно решить вашу проблему.

ksinkar
источник
1
Согласно документации, cd«Сделать DIR станет каталогом текущего буфера по умолчанию». Я бы предположил, что это значение для каждого буфера и не будет применяться к другим существующим или вновь созданным буферам.
Моджо
@mojo возможно, но если вы сделаете это с буфером по умолчанию, когда все остальные ваши буферы закрыты, это все, что у вас все равно останется. Так что это все еще довольно практично
Keldon Alleyne
5

C-h f cd:

cdпредставляет собой интерактивный скомпилирован функции Лиспа в files.el.

(cd DIR)

Сделать DIRкаталог текущей буфера по умолчанию.

Если ваша среда включает CDPATHпеременную, попробуйте каждый из этого списка каталогов (разделенных вхождениями path-separator) при разрешении относительного имени каталога. Разделитель пути - это двоеточие в GNU и GNU-подобных системах.

И , пожалуйста , объясните , почему изменение default-directoryникак тоже не изменить «текущий каталог» для вас: (setq default-directory "/my/favorite/dir").

Нарисовался
источник
Я имею в виду cwd процесса emacs, который является записью в блоке управления процессом, и его можно легко проверить с помощью = lsof -p pid =. = Default-directory = - это внутренняя вещь для emacs. Почему мне нужно изменить cwd, потому что tmux использует cwd процесса переднего плана в качестве начального каталога нового окна / панели.
FunkyBaby
Понимаю. Тогда ваш вопрос был (и остается для меня) неясным. Что значит изменить текущий рабочий каталог процесса Emacs? Вы хотите изменить его после того, как процесс существует? Больше чем единожды?
Дрю
это буквально меняет = cwd = emacs. "Больше чем единожды"? Что ты имеешь в виду. = cwd = не предназначен для фиксированной вещи. В с, человек 2 чдир. В питоне, os.chdir. Я хочу знать, как это сделать в elisp (для emacs).
FunkyBaby
Смотрите @ ответ Стефана.
Дрю