Разница между посещением файла через Emacs или с Emacsclient?

823
hatmatrix

Причина, по которой я спрашиваю, заключается в том, что в большинстве случаев они выглядят одинаково, за исключением случаев, когда используется расширение внешнего редактора Thunderbird (редактор обозначен как emacsclient -c). Закрытие фрейма, созданного с помощью этого экземпляра emacsclient с помощью C-x C-c( C-x #иногда не работает?), Также уничтожит буфер, связанный с этим фреймом (не обычное поведение emacsclient).

И, как правило, C-x C-cпросто закроет фрейм, если в этом фрейме не будет посещен другой буфер - после этого C-x C-cпопытается закрыть все emacs. Как я пытаюсь понять это поведение?

2

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

2
spiffworks

В Emacs вы можете получить справку для любой клавиши, нажав Ch k и затем введя комбинацию клавиш, о которой вы хотите знать. Нажатие Ch k Cx # возвращает это:

Cx # запускает команду server-edit, которая представляет собой интерактивную скомпилированную функцию Lisp в `server.el '.

Это связано с Cx #.

(серверное редактирование и необязательный ARG)

Переключиться на следующий буфер редактирования сервера; сказать "Готово" для текущего буфера. Если буфер сервера является текущим, он помечается как «выполненный» и при необходимости сохраняется. Буфер также уничтожается, если он не существовал до того, как клиенты запросили его. Когда все клиентские буферы помечены как выполненные, клиент получает уведомление.

Временные файлы, такие как файлы MH, всегда сохраняются и сохраняются без вопросов. (Переменная 'make-backup-files', если nil, по-прежнему запрещает резервное копирование; вы можете установить ее локально в определенном буфере, чтобы предотвратить ее резервное копирование.) Переменная 'server-temp-file-regexp' контролирует, какие имена файлов считаются временными.

Если вызывается с префиксным аргументом или если не запущен серверный процесс, запускается серверный процесс, и это все. Вызывается Cx #. Cx # запускает команду server-edit, которая представляет собой интерактивную скомпилированную функцию Lisp в 'server.el'.

Аналогично для Cx Cc

Cx Cc запускает команду save-buffers-kill-terminal, которая представляет собой интерактивную скомпилированную функцию Lisp в `files.el '.

Это связано с Cx Cc.

(save-buffers-kill-terminal & необязательный ARG)

Предложите сохранить каждый буфер, а затем убить текущее соединение. Если в текущем кадре нет клиента, уничтожьте сам Emacs.

С префиксом ARG, молча сохраните все буферы, посещающие файлы, затем убейте.

Если emacsclient был запущен со списком имен файлов для редактирования, то только эти файлы будут предложены для сохранения.

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