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

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

Ответ 1

Вы можете использовать Emacs Desktop library:

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

 (desktop-save-mode 1)

Ответ 2

Хотя я подозреваю, что вопрос искал функциональность 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.

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

Ответ 3

Для хранения/восстановления буферов/вкладок (в частности, экранов): Я использую elscreen и способ управления хранением/восстановлением сеанса рабочего стола, а настройка elscreen tab - следующий код в моем. 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)

Ответ 4

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

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

Ответ 5

Есть полезные улучшения, которые вы можете сделать для основной функции рабочего стола. Особо удобными (IMO) являются методы автоматического сохранения рабочего стола во время сеанса, так как в противном случае, если ваша система выйдет из строя, вы будете застрять с файлом рабочего стола, с которого вы начали этот сеанс, - довольно раздражает, если вы склонны поддерживать Emacs для многих дней за раз.

http://www.emacswiki.org/emacs/DeskTop

В вики также есть полезная информация о сохраняющихся данных между сеансами в целом:

http://www.emacswiki.org/emacs/SessionManagement

Для настольных компьютеров в частности я думал, что Desktop Recover выглядел особенно многообещающе, однако я еще не пробовал его.

Ответ 7

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

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

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