как CD к PWD Emacsclient при выходе

421
raco

Может ли кто-нибудь предоставить хук для изменения каталога в текущий каталог 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 #» для выхода только из клиента.

0

1 ответ на вопрос

0
sds

emacsclient is an ordinary shell command, so it cannot change the shell's idea of what the current directory is.

You can, however, call emacsclient like this:

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

i.e., have emacs print the new directory name when the client returns.

It will not be easy to get right, and the effort is not worth it.

If you are doing more than a simple edit in your emacsclient, you should be using emacs and its shell.

Вы правы, что я почему-то думал, что emacsclient работает внутри сервера emacs и надеется на решение elisp. Возможно, я хотел бы расширить ваше предложение, но я не уверен, как. Похоже, вы знаете, что пример кода не работает. raco 10 лет назад 0
Иногда легче научиться любить существующий инструмент, чем научить его вести себя так, как вам нравится. sds 10 лет назад 0

Похожие вопросы