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


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.