Emacs: открыть буферы из последнего сеанса при запуске?


каждый день я запускаю emacs и открываю те же самые файлы, которые я открыл накануне. Есть ли что-то, что я могу добавить к init.el-файл, чтобы он снова открыл все буферы, которые я использовал, когда я в последний раз выходил из emacs?

6 67

6 ответов:

можно использовать настольная библиотека Emacs:

вы можете сохранить рабочий стол вручную с помощью команда M-x desktop-save. Вы можете также включите автоматическое сохранение рабочий стол при выходе из Emacs, и автоматическое восстановление последнего сохраненный рабочий стол при запуске Emacs: использовать буфер настройки (см. Easy Настройка) для установки desktop-save-mode to t for future сеансы, или добавить эту строку в свой ~/.файл emacs:

 (desktop-save-mode 1)

хотя я подозреваю, что вопрос искал функциональность emacs "desktop" (см. выше ответ), подход Lewap может быть полезен, если набор файлов, которые он использует, действительно является точно таким же набором файлов. Фактически, можно пойти еще дальше и определить "профили", если у вас есть разные наборы регулярно используемых файлов... Быстрый пример:

(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 с помощью следующей функции:

(find-file "/ home / me / path-to-file")

(find-file-noselect "/my/file") откроет его молча, т. е. без поднятия буфера. Просто говорю.

изменить эту команду не interactive; чтобы проверить его, вы должны оценить выражение, например, установив курсор после последней скобки и нажав C-x C-e

Downvoting это не круто; эта команда определенно работает и находится в области вопроса.