Как закрыть рамку guac emacsclient без убийства сервера

Как вы закрываете рамку emacsclient, не убивая сервера/демона?

Выполнение C-x C-c или C-x 5 0 в gui приведет к завершению работы как с кадром, так и с сервером (и другими клиентами), в то время как это просто выйдет из текущего кадра, когда он сделан из терминала.

(Ps: Моя версия emacs - 24.2, gtk. Я пробовал без init файла, чтобы узнать, не идет ли она из моей конфигурации, но результаты были одинаковыми)

Ответ 1

Он говорит в минибуфере, когда начинается emacsclient, что "Когда сделано с буфером, введите C-x #".

Ответ 2

Я думаю, что ключевым моментом здесь является необходимость запуска сервера в режиме демона. Если сервер работает в существующем процессе emacs - например, если у вас есть (server-start) в вашем файле инициализации - сервер умирает с процессом emacs.

Существует несколько способов запуска сервера в режиме демона:

  • вызов emacs с опцией командной строки --daemon
  • вызов emacsclient с параметром командной строки --alternate-editor="", который будет запускать emacs --daemon для вас, затем попытайтесь подключиться к нему

После того, как у вас есть сервер в режиме демона, вы сможете закрыть любые кадры, и демон продолжит сидеть и ждать дальнейших подключений.

Ответ 3

Запуск символа emacsclient с -n/--no-wait будет:

Не дожидайтесь возврата сервера

В этом случае вам не нужно закрывать клиент.

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

Ответ 4

Поскольку вы запустили (server-start) из существующего фрейма, этот кадр не является фреймом emacsclient, и закрытие последнего такого кадра, очевидно, получает то же самое отношение, что и C-x C-c: он выйдет из Emacs.

Если вы использовали emacs --daemon, возможно, используя трюк ALTERNATE_EDITOR='', у вас не было бы этой проблемы; вы можете просто использовать emacsclient -n -c, чтобы открыть кадр графического интерфейса пользователя, и после его закрытия демон просто сидит, ожидая, когда вы откроете новый фрейм, будь то графический или терминальный.

Ответ 5

Я использую как Debian с i3, так и OSX. Я обычно выхожу из графического интерфейса emacsclient с помощью ярлыка окна закрытия оконного менеджера. Например, в OSX я использую команду "Command + w", чтобы закрыть клиентский графический интерфейс без уничтожения сервера, а в i3 я использую "Super + Shift + q" (окно закрытия по умолчанию для i3), чтобы выйти из кадра клиента.