
Как восстановить окна и буферы Emacs из последнего сеанса?
Мне нужно поведение, похожее на поведение веб-браузера, когда можно восстановить все вкладки из последнего сеанса.
решение1
В дополнение кавтоматическивосстановление вашегопоследний сеанс Emacsstate, вы также можете сохранять любое количество состояний сеанса и восстанавливать их по требованию в любом другом сеансе, любое количество раз. IOW, вы можете легко переключаться междуразные рабочие столы.
Самый простой способ сделать это — загрузить библиотеку.Добавить в закладки+и используйте ключ C-x r K
для сохранения текущего состояния сеанса в качестве закладки рабочего стола. Затем вы можете восстановить любую закладку рабочего стола в любом сеансе, используя ключ C-x j K
.
решение2
перейдите в файл .emacs и введите (desktop-save-mode 1), это сохранит все текущие буферы в файле «desktop», он не сохранит фактическую компоновку ваших фреймов, но вы можете посмотреть «регистры» для этого.
решение3
Вот код, который это делает. Чтобы код работал, вам нужно установить библиотеку Lisp "tapestry". Если вы используете VM mailer, у вас уже установлена библиотека. В противном случае вы можетескачать его отсюда.
Поместите следующий код в ваш файл .emacs. Если вы хотите восстановить настройки окна и фрейма из последнего сеанса Emacs, введите M-x load-my-tapestry RET
.
(require 'tapestry)
(defvar my-tapestry-file "~/.tapestry")
(defun load-my-tapestry ()
(interactive)
(let ((b (find-file-noselect my-tapestry-file)))
(sit-for 0)
(set-tapestry (read b))
(kill-buffer b)))
(defun save-my-tapestry ()
(interactive)
(let ((tap (tapestry)))
(with-temp-buffer
(let ((standard-output (current-buffer)))
(setcar tap (make-list (length (car tap)) nil))
(print tap)
(write-region (point-min) (point-max) my-tapestry-file)))))
(add-hook 'kill-emacs-hook 'save-my-tapestry)