Может ли кто-нибудь предоставить хук для изменения каталога в текущий каталог emacsclient при выходе из emacsclient?

Я часто перемещаюсь к некоторым файлам через терминал, открываю emacsclient для редактирования некоторых файлов, затем выхожу из emacsclient для запуска некоторых команд оболочки для файлов в том же каталоге. Я нахожу это более удовлетворительным, чем некоторые другие варианты, которые включают открытие терминала внутри emacs (включая popshell, Mx!, Multi term и т.д.)

Однако я также иногда посещаю файлы в других каталогах при использовании emacsclient, затем хочу выйти из emacsclient для запуска некоторых команд оболочки из того же каталога, где я только что редактировал файлы. Однако, когда я выхожу из emacsclient, я возвращаюсь в исходный каталог, в котором я открыл emacsclient, а затем должен перейти в тот же каталог, используя cd. Это неудобно и приводит к ошибкам, когда я не замечаю, так как структура файлов в каталогах похожа / идентична.

Дополнительная справочная информация: я запускаю emacs --daemon, затем открываю emacsclient -nw в терминале, когда у меня есть несколько быстрых файлов для редактирования в моем текущем рабочем каталоге или рядом с ним. Я обнаружил, что «Cx Cc» выйдет из emacsclient, но также уничтожит демон emacs, поэтому я использую «Cx 5 0» или «Cx #» для выхода только из клиента.

1 ответ1

0

emacsclient - это обычная команда оболочки, поэтому она не может изменить представление оболочки о текущем каталоге.

Однако вы можете вызвать emacsclient следующим образом:

$ cd "$(emacsclient -e '(progn (find-file ....) (print default-directory))')"

то есть, чтобы emacs имя нового каталога при возврате клиента.

Это не будет легко получить право, и усилия не стоят того.

Если вы делаете нечто большее, чем простое редактирование в вашем emacsclient, вы должны использовать emacs и его оболочку.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .