2012-06-29 6 views
14

Per area di lavoro, voglio dire - Devo salvare lo stato dei miei buffer aperti (possibilmente in un file di area di lavoro specificato dall'utente) e passare rapidamente a un altro set di buffer aperti, ad es. per continuare a lavorare su file relativi a un altro progetto.Qual è il miglior plug-in degli spazi di lavoro di Emacs?

C'è un plug-in Emacs che consente questo? Quale raccomanderesti?

risposta

10

Io uso una combinazione di save-visited-files e workgroups . In effetti, i gruppi di lavoro probabilmente faranno la maggior parte di ciò che si desidera da soli.

mio config:

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 
;;; workgroups for windows 

(setq wg-prefix-key (kbd "C-c z") 
     wg-no-confirm t 
     wg-file (concat emacs-persistence-directory "workgroups") 
     wg-use-faces nil 
     wg-switch-on-load nil) 

(defun wg-load-default() 
    "Run `wg-load' on `wg-file'." 
    (interactive) 
    (wg-load wg-file)) 

(defun wg-save-default() 
    "Run `wg-save' on `wg-file'." 
    (interactive) 
    (when wg-list 
    (with-temp-message "" 
     (wg-save wg-file)))) 

(with-library 'workgroups 
    (define-key wg-map (kbd "C-l") 'wg-load-default) 
    (define-key wg-map (kbd "C-s") 'wg-save-default) 
    (workgroups-mode 1) 
    (add-hook 'auto-save-hook 'wg-save-default) 
    (add-hook 'kill-emacs-hook 'wg-save-default)) 
+2

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

+1

'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

+0

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

2

desktop.el sarà utile nella vostra situazione.

Può (copiato dalla sua pagina di introduzione) dal buffer di Emacs pacchetti:

Salvare il desktop, vale a dire, - alcune variabili globali - l'elenco dei buffer con file associati. Per ogni buffer anche - la modalità principale - la directory predefinita - il punto - il marchio & mark-attiva - buffer read-only - alcune variabili locali

+1

Non ho provato con più file sul desktop, funziona? Ho pensato che fosse di più per salvare lo stato attraverso le ripartenze di Emacs, cosa che fa molto bene. – tripleee

+0

Sì, può: possiamo salvare un file desktop in una determinata directory ('desktop-save-in-directory'), e rileggerlo (con un argomento su' desktop-read'). – Ehvince

5

Personalmente, ho usato `persp-mode':

Prospettive per emacs, sulla base di perspective-el da Nathan Weizenbaum. Ma prospettive condivise tra frame + possibilità di salvare/ripristinare da/a file.

2

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) 
Problemi correlati