Восстановить Emacs Session / Desktop - PullRequest
13 голосов
/ 24 апреля 2010

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

Каждый раз, когда я открываю emacs, я трачу значительное количество времени на расстановку своих буферов; разбивая их на строки и столбцы, открывая оболочку, размещая каналы irc. На работу требуется время.

Я попытался добавить следующее в мой init.el

(desktop-save-mode 1)

А затем с помощью M-x desktop-save . Кажется, что это только восстанавливает файлы , которые открыты, а не оболочки или что-либо еще, работающее в буферах.

Я также проверил следующие вопросы:

И прочитайте:

Вот пример скриншота моего сеанса emacs.

Простой ответ будет просто сосредоточиться на реальной работе: P

Ответы [ 3 ]

8 голосов
/ 24 апреля 2010

Я бы предложил простое решение - создать функцию, которая устанавливает предпочтительный макет. Например, мне нравится иметь несколько каналов IRC во второй половине моего экрана в отдельных окнах, чтобы я мог время от времени просматривать их во время кодирования, например, в другом окне. Итак, я написал простой код, который позаботится о разбиении окна и расположит мои буферы так, как я хочу:

;; show some buffers
(defun show-some-buffers (buffer-list)
  (split-window-horizontally)
  (other-window 1)
  (dolist (buffer buffer-list)
    (split-window-vertically)
    (switch-to-buffer (get-buffer buffer))
    (other-window 1))
  ;; at the end we have one extra window we need to delete
  (delete-window)
  (balance-windows))

;; show some erc buffers
(defun show-erc-buffers ()
  (interactive)
  (show-some-buffers '("#emacs" "#clojure")))

Код довольно прост и не содержит проверки ошибок, но он даст вам подсказку о том, что я имею в виду.

Возможно, вы захотите использовать также регистры для хранения некоторых конфигураций окна.

4 голосов
/ 28 апреля 2010

Как вы обнаружили, desktop.el и session.el - хорошее начало, но они не восстанавливают макеты окон.

Однако, используя revive.el , вы можете сохранять / восстанавливать произвольные конфигурации окон, которые запоминаются между перезапусками.

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

2 голосов
/ 26 апреля 2010

В дополнение к отличному ответу @ Bozhidar об автоматизации макета вашего окна (что я делаю сам), вы также можете захотеть использовать GNU Screen , который можно использовать для сохранения произвольного набора процессов в логин Здесь есть довольно хороший учебник , и, поскольку вы будете использовать emacs, вам также захочется прочитать this .

...