HIROSE Yuuji's revive.el ha funzionato bene per me per un bel po 'di tempo. Io uso la configurazione standard presentata nei commenti su revive.el. La documentazione è ben scritta e revive è molto facile da usare e configurare. In particolare, revive.el ha un supporto migliore di alcuni per il ripristino di configurazioni un po 'più complesse. È particolarmente bello se lo abbini a HIROSE Yuuji's windows.el. Sono fatti per lavorare insieme. windows.el rende possibile richiamare le suddivisioni di finestre, ecc. revive.el è costruito con un occhio verso l'estensibilità verso l'integrazione della modalità più profonda per configurazioni particolari. Ma per i miei usi, ho trovato che sia abbastanza carino, anche se penso che lo modificherò per far rivivere Windows w3m che attualmente non ho impostato (Aggiornamento: lo faccio ora: vedi in basso).
Ecco la mia riconfigurazione. Includo alcuni commenti utili, prima per windows.el e quindi in linea revive.el:
(provide 'my-revive-config)
(require 'windows) ; use this with revive so that window splits are recallable
; too
(win:startup-with-window) ; start with window 1
;;;[Key Bindings]
;;;
;;; The default prefix key stroke for Windows is `C-c C-w'. If it
;;; causes you some troubles, see the section `Customizations'.
;;; Here are the default key bindings.
;;;
;;; C-c C-w 1 Switch to window 1 (Q)
;;; C-c C-w 2 Switch to window 2 (Q)
;;; :
;;; C-c C-w 9 Switch to window 9 (Q)
;;; C-c C-w 0 Swap windows with the buffer 0 (Q)
;;; (Select unallocated frame(Emacs 19))
;;; C-c C-w SPC Switch to window previously shown (Q)
;;; C-c C-w C-n Switch to next window
;;; C-c C-w C-p Switch to previous window
;;; C-c C-w ! Delete current window (Q)
;;; C-c C-w C-w Window operation menu
;;; C-c C-w C-r Resume menu
;;; C-c C-w C-l Local resume menu
;;; C-c C-w C-s Switch task
;;; C-c C-w = Show window list (Q)
;;;
;;; The key strokes to select windows from 1 to 9 must be
;;; frequently used, so the alternative key strokes `C-c [Num.]' are
;;; available by default (And any function with (Q)mark can be
;;; invoked without C-w). To disable these quick key strokes, set
;;; the variable win:quick-selection to `nil' in your ~/.emacs.
(autoload 'save-current-configuration "revive" "Save status" t)
(autoload 'resume "revive" "Resume Emacs" t)
(autoload 'wipe "revive" "Wipe Emacs" t)
(define-key ctl-x-map "S" 'save-current-configuration)
(define-key ctl-x-map "F" 'resume)
(define-key ctl-x-map "K" 'wipe)
;;;
;;;[How to use]
;;;
;;; Call `save-current-configuration' (`C-x S' if you define key as
;;; above) when you want to save current editing status and call
;;; `resume' to restore it. Numerical prefix arg to them specifies
;;; the buffer number in which the editing status will be saved.
;;; Here the buffer refers to a revive s-exp in ~/.revive.el of
;;; which there can be n
;;;
;;; [Sample Operations]
;;; C-u 2 C-x S ;save status into the buffer #2
;;; C-u 3 C-x F ;load status from the buffer #3
Non ci sono varianti di questo che gli altri come revive-plus.el e un slightly modified clone on github, ma preferisco l'originale.
Aggiornamento lunedì, 12 gennaio 2015: ora è possibile ripristinare w3m in revive (vedere revive.el Documentazione per maggiori dettagli e guardare in modo particolare esempi in rivivere: major-mode-comando-alist-default):
(setq revive:major-mode-command-alist-private
'(("*w3m*" . w3m)))
Avviso si sta dicendo rivivere il nome del buffer w3m. Anche se hai più schede, solo la prima deve essere enumerata come sopra.
Qui è la variabile w3m ho impostato per ripristinare tutte le schede della sessione precedente:
(setq w3m-session-load-last-sessions t)
Vorrei passare a un altro gruppo di lavoro per chiudere tutti i buffer associati al vecchio gruppo di lavoro e aprirne di nuovi, invece di _just_ aprirne di nuovi. – axel22
'workgroups' non ha un passaggio corretto tra i set di buffer e il caricamento/salvataggio è un problema. Apprezzo la risposta, ma non penso che sia una buona soluzione. – axel22
Concordo sul fatto che il ripristino (wg-restore-workgroup) e l'aggiornamento (wg-update-workgroup) possono essere un problema, perché richiede disciplina. Potresti creare alcuni hook per automatizzarlo, ma in realtà dovrebbe essere qualcosa che è integrato. Il caricamento e il salvataggio possono essere facilmente automatizzati, ad es. con auto-save-hook come ho fatto io. Ho smesso di preoccuparmi dei buffer aperti molto tempo fa. Ho eliminato alcuni di loro ogni pochi giorni e la modalità ido rende il passaggio facile. Ho 91 buffer aperti proprio ora. – jpkotta