Emacs, будучи «некой ОС», на самом деле не имеет единого текущего рабочего каталога. Таким образом, то, что вы видите как cwd процесса, в значительной степени случайное и не совсем задокументировано. Глядя на C-код Emacs, у меня складывается впечатление, что в настоящее время нет способа сделать то, что вы хотите. Вы можете, следовательно, M-x report-emacs-bugи запросить его как новую функцию.
Я думаю, что единственный способ, которым Emacs предлагает управлять cwdпроцессом, - это --chdirаргумент командной строки. Как только процесс запущен, в настоящее время нет способа его изменить.
Согласно документации, 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).
M-x report-emacs-bug
и запросить его как новую функцию.Ответы:
Я думаю, что единственный способ, которым Emacs предлагает управлять
cwd
процессом, - это--chdir
аргумент командной строки. Как только процесс запущен, в настоящее время нет способа его изменить.источник
M-x cd
Это должно решить вашу проблему.
источник
cd
«Сделать DIR станет каталогом текущего буфера по умолчанию». Я бы предположил, что это значение для каждого буфера и не будет применяться к другим существующим или вновь созданным буферам.C-h f cd
:И , пожалуйста , объясните , почему изменение
default-directory
никак тоже не изменить «текущий каталог» для вас:(setq default-directory "/my/favorite/dir")
.источник