2014-01-23 3 views
1

При запуске emacs в демонах с клиентом и я нажимаю C-x k, он говорит: буфер Emacs по-прежнему имеет клиентов. Вы уверены, что хотите выйти?Клиент Emacs: разница между C-x k и C-x #

Но при использовании C-x # он немедленно выходит.

Я не понимаю разницы. Почему C-x k просто ведет себя нормально, в первую очередь, если это в клиенте?

Я нашел этот фрагмент, который должен делать C-x k, вести себя правильно, но я не понимаю разницы.

Кроме того, когда клиент emacs запускается, он начинается с предыдущего буфера в течение нескольких секунд, после чего открывается новый буфер. Разве это не означает, что сервер emacs ускоряет первоначальное время запуска? Почему это делается/как я могу это исправить? При начальной загрузке он начинается с нуля в течение нескольких секунд.

+0

Сколько времени занимает «несколько секунд»? Я не могу сказать, преувеличиваете ли вы, или если вы действительно подразумеваете, что вы смотрите на предыдущий буфер на несколько секунд, прежде чем вы увидите нужный буфер. Вы начинаете клиенты GUI или терминальные клиенты? Является ли он быстрее, чем другой? Является ли время задержки значительно дольше, чем требуется для загрузки файлов из Emacs? Если вы открываете файл на клиенте, закройте его с помощью 'C-x #', а затем повторно откроете тот же файл у нового клиента, второй раз быстрее первого? – phils

+0

И если у вас есть буфер '* Messages * ', видимый в одном окне клиента, когда вы открываете файл в новом клиенте, вы видите какую-либо активность, кроме сообщения, чтобы ввести' Cx # ', когда вы закончите с буфером ? – phils

+0

Это похоже на то, что вы не оставите один процесс 'emacs' запущенным сервером. Поэтому, когда запускается 'emacsclient', сначала нужно запустить' emacs'. Я ошибаюсь? Потому что всякий раз, когда я вызываю 'emacsclient', процесс emacs, который у меня работает, имеет буфер и готов для использования. Это означает, что я _NOT_ получаю сеанс редактирования в оболочке, где я вызывал 'emacsclient'. –

ответ

3

Я не могу написать лучшее объяснение C-х# чем Emacs уже дает вам. Просто введите ChкCx#

Я предполагаю, что Cxк предупреждает вас, потому что вы не с помощью механизма говоря клиенту явно, что вы сделали, и, как вы могли бы попытаться убить буфер от , любой кадр Emacs (и если вы не используете Emacs в качестве демона, там будут неклинические кадры), это гарантирует, что вы знаете, что буфер , связанный с клиентом где-то.

Сам запрос исходит от server-kill-buffer-query-function, который добавлен к kill-buffer-query-functions и, вероятно, не имеет способа сообщить, откуда было убито. Он имеет следующие комментарии:

;; Ask before killing a server buffer. 
;; It was suggested to release its client instead, 
;; but I think that is dangerous--the client would proceed 
;; using whatever is on disk in that file. -- rms. 
+0

Получил его. Как насчет проблемы с «царапинами»? При этом emacsclient занимает столько времени, сколько emacs для загрузки, что делает его бесполезным. – darksky

0

В основном С-х к убивает буфер и С-х # уведомляет сервер Emacs, что вы закончите редактирование и что клиент может выйти. Например, убить процесс с помощью kill или выйти из него правильно.

+0

Получил это. Как насчет проблемы с «царапинами»? При этом emacsclient занимает столько времени, сколько emacs для загрузки, что делает его бесполезным. – darksky

Смежные вопросы