Emacs: заново открывать буферы из последней сессии при запуске? - PullRequest
76 голосов
/ 29 апреля 2009

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

Ответы [ 6 ]

103 голосов
/ 29 апреля 2009

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

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

 (desktop-save-mode 1)
10 голосов
/ 06 июня 2009

Хотя я подозреваю, что вопрос касался функциональности emacs для «рабочего стола» (см. Ответ выше), подход 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.

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

5 голосов
/ 05 декабря 2012

Для хранения / восстановления буферов / вкладок (особенно вкладок elscreen): Я использую elscreen и способ управления хранением / восстановлением сеанса рабочего стола, а конфигурация вкладки elscreen - следующий код в моем .emacs file (используемые имена говорят сами за себя, и если функции сохранения / восстановления не должны выполняться каждый раз, когда emacs запускается, просто закомментируйте строки с помощью «(push # 'elscreen-store kill-emacs-hook)» и «(elscreen- восстановление) "):

(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)
2 голосов
/ 16 июля 2010

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

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

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

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

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

1 голос
/ 29 апреля 2009

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

(найти файл "/ home / me / путь к файлу")

0 голосов
/ 03 декабря 2011

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

РЕДАКТИРОВАТЬ Эта команда не интерактивная ; Чтобы проверить это, вы должны оценить выражение, например, поместив курсор после последней круглой скобки и нажав C-x C-e

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...