Emacs: заново открывать буферы из последней сессии при запуске?
Каждый день я запускаю emacs и открываю те же самые файлы, которые были открыты накануне. Что я могу добавить в файл init.el, чтобы он снова открывал все буферы, которые я использовал при последнем выходе из Emacs?
6 ответов
Вы можете использовать библиотеку Emacs Desktop:
Вы можете сохранить рабочий стол вручную с помощью команды Mx desktop-save. Вы также можете включить автоматическое сохранение рабочего стола при выходе из Emacs и автоматическое восстановление последнего сохраненного рабочего стола при запуске Emacs: используйте буфер настройки (см. Простая настройка), чтобы установить для desktop-save-mode значение t для будущих сессий, или добавить эта строка в вашем файле ~/.emacs:
(desktop-save-mode 1)
Несмотря на то, что я подозреваю, что вопрос искал функциональность emacs для "рабочего стола" (см. Ответ выше), подход Lewap может быть полезен, если набор используемых файлов действительно является точно таким же набором файлов. На самом деле, можно пойти еще дальше и определить "профили", если у вас есть разные наборы регулярно используемых файлов... Пример Quickie:
(let ((profile
(read-from-minibuffer "Choose a profile (acad,dist,lisp,comp,rpg): ")
))
(cond
((string-match "acad" profile)
(dired "/home/thomp/acad")
(dired "/home/thomp/acad/papers")
)
((string-match "lisp" profile)
(setup-slime)
(lisp-miscellany)
(open-lisp-dirs)
)
((string-match "rpg" profile)
(find-file "/home/thomp/comp/lisp/rp-geneval/README")
(dired "/home/thomp/comp/lisp/rp-geneval/rp-geneval")
... etc.
Если вы обнаружите, что вы регулярно переключаетесь между различными наборами регулярно используемых файлов во время работы, рассмотрите возможность использования перспектив и наполнения каждой перспективы требуемым набором регулярно используемых файлов.
Для хранения / восстановления буферов / вкладок (в частности, вкладок elscreen): я использую elscreen и способ управления сохранением / восстановлением сеанса рабочего стола, а конфигурация вкладок elscreen - следующий код в моем файле.emacs (используемые названия говорят сами за себя) и если функции сохранения / восстановления не должны выполняться каждый раз, когда emacs запускается, просто закомментируйте строки с помощью "(push #'elscreen-store kill-emacs-hook)" и "(elscreen-restore)"):
(defvar emacs-configuration-directory
"~/.emacs.d/"
"The directory where the emacs configuration files are stored.")
(defvar elscreen-tab-configuration-store-filename
(concat emacs-configuration-directory ".elscreen")
"The file where the elscreen tab configuration is stored.")
(defun elscreen-store ()
"Store the elscreen tab configuration."
(interactive)
(if (desktop-save emacs-configuration-directory)
(with-temp-file elscreen-tab-configuration-store-filename
(insert (prin1-to-string (elscreen-get-screen-to-name-alist))))))
(push #'elscreen-store kill-emacs-hook)
(defun elscreen-restore ()
"Restore the elscreen tab configuration."
(interactive)
(if (desktop-read)
(let ((screens (reverse
(read
(with-temp-buffer
(insert-file-contents elscreen-tab-configuration-store-filename)
(buffer-string))))))
(while screens
(setq screen (car (car screens)))
(setq buffers (split-string (cdr (car screens)) ":"))
(if (eq screen 0)
(switch-to-buffer (car buffers))
(elscreen-find-and-goto-by-buffer (car buffers) t t))
(while (cdr buffers)
(switch-to-buffer-other-window (car (cdr buffers)))
(setq buffers (cdr buffers)))
(setq screens (cdr screens))))))
(elscreen-restore)
Есть полезные улучшения, которые вы можете внести в базовую функцию рабочего стола. Особенно удобны (IMO) методы автоматического сохранения рабочего стола во время сеанса, так как в противном случае, если ваша система выйдет из строя, вы застрянете с файлом рабочего стола, с которого вы начали этот сеанс - довольно раздражает, если вы склонны поддерживать Emacs в течение многих лет. дни за раз.
http://www.emacswiki.org/emacs/DeskTop
Вики также содержит полезную информацию о сохранении данных между сессиями в целом:
http://www.emacswiki.org/emacs/SessionManagement
Особенно для настольных компьютеров, я думал, что Desktop Recover выглядело особенно многообещающе, однако я еще не пробовал его.
Вы можете открыть файлы в вашем файле.emacs, используя следующую функцию:
(найти файл "/home/me/ путь к файлу")
(find-file-noselect "/my/file")
откроет его тихо, т.е. без поднятия буфера. Просто говорю.
РЕДАКТИРОВАТЬ Эта команда не является интерактивной; Чтобы проверить это, вы должны оценить выражение, например, поместив курсор после последней круглой скобки и нажав Cx Ce
Понизить это не круто; эта команда определенно работает и находится в рамках вопроса.