web-dev-qa-db-fra.com

Emacs: rouvrir les tampons de la dernière session au démarrage?

Chaque jour, je lance emacs et ouvre exactement les mêmes fichiers que j'avais ouverts la veille. Puis-je ajouter quelque chose au fichier init.el pour qu'il rouvre tous les tampons que j'utilisais lorsque j'ai quitté emacs pour la dernière fois?

84
kristina

Vous pouvez utiliser la bibliothèque Emacs Desktop :

Vous pouvez enregistrer le bureau manuellement avec la commande M-x desktop-save. Vous pouvez également activer l'enregistrement automatique du bureau lorsque vous quittez Emacs et la restauration automatique du dernier bureau enregistré au démarrage d'Emacs: utilisez le tampon de personnalisation (voir Personnalisation facile) pour définir le mode d'enregistrement du bureau sur t pour les sessions futures, ou ajoutez cette ligne dans votre fichier ~/.emacs:

 (desktop-save-mode 1)
112
Jared Oberhaus

Bien que je soupçonne que la question recherchait la fonctionnalité "bureau" d'emacs (voir la réponse ci-dessus), l'approche de Lewap peut être utile si l'ensemble de fichiers que l'on utilise est vraiment exactement le même ensemble de fichiers. En fait, on peut aller plus loin et définir des "profils" si l'on a différents ensembles de fichiers régulièrement utilisés ... Exemple 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.

Si vous constatez que vous basculez régulièrement entre différents ensembles de fichiers régulièrement utilisés pendant que vous travaillez, envisagez d'utiliser perspectives et de remplir chaque perspective avec l'ensemble souhaité de fichiers régulièrement utilisés.

10
dat

Pour stocker/restaurer les tampons/onglets (en particulier les onglets elscreen): J'utilise elscreen et la façon dont je gère le stockage/restauration de la session de bureau et la configuration de l'onglet elscreen est le code suivant dans mon fichier .emacs ( les noms utilisés sont explicites et si les fonctions de stockage/restauration ne doivent pas être exécutées à chaque démarrage d'emacs, il suffit de commenter les lignes avec "(Push # 'elscreen-store kill-emacs-hook)" et "(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)
6
sadesyllas

Vous pouvez apporter des améliorations utiles à la fonction de bureau de base. Les méthodes de sauvegarde automatique du bureau pendant la session sont particulièrement pratiques (IMO), car sinon, si votre système se bloque, vous serez bloqué avec le fichier du bureau avec lequel vous avez commencé cette session - assez ennuyeux si vous avez tendance à laisser Emacs fonctionner pour beaucoup jours à la fois.

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

Le wiki contient également des informations utiles sur la persistance des données entre les sessions en général:

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

Pour les ordinateurs de bureau en particulier, je pensais que Desktop Recover semblait particulièrement prometteur, mais je ne l'ai pas encore essayé.

2
phils

Vous pouvez ouvrir des fichiers dans votre fichier .emacs en utilisant la fonction suivante:

(trouver le fichier "/ home/me/chemin-vers-fichier")

1
paweloque