2013-12-15 4 views
1

У меня есть много фреймов, всегда открытых в emacs. Подобно тому, как я использую emacsclient (daemon) и почти никогда не перезапускаю свой компьютер, эти кадры никогда не закрываются. Я мог бы закрыть его с помощью C-x k, но как закрыть все открытые кадры?Как закрыть все открытые кадры в emacsclient?

+0

Вы имеете в виду буферы, если это возможно? Проверьте 'C-x C-b' или' list-buffers' – progo

+0

Также 'C-x k' убивает буфер, а не соответствующий фрейм. 'C-x 5 0' убивает фрейм (но сохраняет буфер). – tripleee

+0

Почему вы создаете так много кадров, во всяком случае? См. Http://stackoverflow.com/questions/9968740/create-or-reuse-existing-emacs-gui-frame – tripleee

ответ

1

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

(defun close-all-other-buffers-and-frames() 
    "Destroy all frames except this one, kill all buffers, display `*scratch*'." 
    (interactive) 
    (set-buffer "*scratch*") 
    (delete-other-frames) 
    (let ((l (buffer-list)) b) 
    (while l 
     (setq b (car l) 
      l (cdr l)) 
     (and (buffer-file-name b) 
      (kill-buffer b))))) 

У меня есть ощущение, что цикл для уничтожения буферов может быть выполнен более элегантно - пожалуйста, предложите улучшения!

+0

У меня есть что-то подобное в моих праведниках (вы можете посетить его и посмотреть, хотите ли вы что-то от него принять). Я отклонил его, так как не нашел способ безопасно обнаружить последний открытый файл, который я хотел сохранить открытым. (Я хотел вызвать его в 'find-file-hook'.) Я также добавил' buffer-modified-p' и убил только буферы, которые не были изменены. – Tobias

1

Закрытие всех фреймов только уходит, не так ли?

Для того, чтобы закрыть все рамки, кроме одного, вы можете использовать delete-other-frames с ключевой последовательностью C-x 5 1.

+0

Я хочу, чтобы не закрыть окно, а затем перезапустить emacsclient и все еще открыть много буфера. Я хочу выйти из emacsclient, как я ушел из emacs (закрывая каждый буфер). И когда я снова начинаю emacsclient, мне нужны свежие emacs без открытия буфера. – ppr

+0

Если вы хотите выйти из emacs-client как emacs, я не понимаю, почему вы используете emacs-client вообще. Тогда вы можете использовать emacs напрямую. – Tobias

+0

Я использую emacsclient, потому что запуск намного быстрее, чем emacs. Я на очень старом компьютере ... – ppr

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