Как восстановить окна и буферы Emacs с последнего сеанса?
Мне нужно поведение, похожее на веб-браузер, при котором вы можете восстановить все вкладки с последнего сеанса.
перейдите к вашему файлу .emacs и введите (desktop-save-mode 1), чтобы сохранить все текущие буферы в файл "desktop", это не сохранит фактическое расположение ваших кадров, но вы можете посмотреть "регистры" для этого.
Вот некоторый код, чтобы сделать это. Чтобы код работал, вам нужна установленная библиотека Lisp "tapestry". Если вы используете почтовую программу VM, у вас уже установлена библиотека. В противном случае вы можете скачать его здесь.
Поместите следующий код в ваш файл .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)
В дополнение к автоматическому восстановлению вашего последнего состояния сеанса Emacs , вы также можете сохранять любое количество состояний сеанса и восстанавливать их по требованию в любом другом сеансе любое количество раз. IOW, вы можете легко переключаться между различными рабочими столами.
Самый простой способ сделать это - загрузить библиотеку Bookmark+ и использовать клавишу C-x r K
чтобы сохранить текущее состояние сеанса в качестве закладки рабочего стола. Затем вы можете восстановить любую настольную закладку в любом сеансе, используя клавишу C-x j K