Як змінити поточний робочий каталог?


11

як змінити поточний робочий каталог emacs?

Набір default-directoryне впливає на поточний робочий каталог процесу emacs, який можна перевірити за допомогою lsof -p pid.


1
Emacs, будучи "ОС на зразок ОС", насправді не має єдиного поточного робочого каталогу. Тож те, що ви бачите як процес переробки, є в основному випадковим і не дуже задокументованим. Переглядаючи код C Emacs, у мене складається враження, що наразі немає способу зробити те, що ти хочеш. Ви можете, таким чином, M-x report-emacs-bugі запросити його як нову функцію.
Стефан

1
Якщо припустити, що ви працюєте в Linux, ви можете змусити cwd змінюватися, працюючи на рівні ОС, детальну інформацію див. У Unix.stackexchange.com/questions/281994/… .
TTimo

Відповіді:


4

Я думаю, що єдиний спосіб, яким Emacs пропонує контролювати cwdпроцес, є --chdirаргумент командного рядка. Після запуску процесу в даний час неможливо змінити його.


15

M-x cd

Це повинно вирішити вашу проблему.


1
Згідно з документами, cd"Зробити DIR стане каталогом за замовчуванням поточного буфера". Я б припустив, що це значення для буфера і не застосовуватиметься до інших існуючих буферів або до новостворених.
mojo

@mojo, можливо, але якщо ви зробите це з буфером за замовчуванням, коли всі ваші інші буфери закриті, це все одно у вас залишилось. Тож це все ще цілком практично
Keldon Alleyne

5

C-h f cd:

cdє інтерактивно складеною функцією Lisp в 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? Ви хочете змінити його після існування процесу? Більше одного разу?
Дрю

це буквально змінює emacs = cwd =. "Більше одного разу"? що ти маєш на увазі. = cwd = не призначений для фіксованої речі. В с, людина 2 чдір. У python, os.chdir. Я хочу знати, як це зробити в elisp (для emacs).
FunkyBaby

Дивіться відповідь @ Стефана.
Дрю
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.