2012-06-29 17 views
14

Por espacio de trabajo, quiero decir: necesito guardar el estado de mis búferes abiertos (posiblemente en un archivo de espacio de trabajo especificado por el usuario) y pasar rápidamente a otro conjunto de búferes abiertos, p. para continuar trabajando en archivos relacionados con otro proyecto.¿Cuál es el mejor plugin de espacios de trabajo de Emacs?

¿Hay un plugin de Emacs que lo permita? ¿Cuál recomendarías?

Respuesta

10

utilizo una combinación de save-visited-files y workgroups . De hecho, los grupos de trabajo probablemente harán la mayor parte de lo que quieras por sí mismo.

Mi 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

Ojalá cambiar a otro grupo de trabajo cerraría todos los almacenamientos intermedios asociados con el grupo de trabajo anterior y abriría los nuevos, en lugar de simplemente abrir unos nuevos. – axel22

+1

'workgroups' no tiene la conmutación adecuada entre los conjuntos de almacenamientos intermedios, y cargar/guardar es un problema. Agradezco la respuesta, pero no creo que sea una buena solución. – axel22

+0

Acepto que restaurar (wg-restore-workgroup) y actualizar (wg-update-workgroup) puede ser complicado, ya que requiere disciplina. Podría hacer algunos ganchos para automatizarlo, pero realmente debería ser algo integrado. La carga y el almacenamiento se pueden automatizar fácilmente, p. con auto-guardado-gancho como lo hice. Dejé de preocuparme por los buffers abiertos hace mucho tiempo. Limpio algunos de ellos cada pocos días, y el modo ido facilita el cambio. Tengo 91 búferes abiertos en este momento. – jpkotta

2

desktop.el será útil en su caso.

Puede (copiado de su página de introducción) del amortiguador de paquetes de emacs:

Guardar el escritorio, es decir, - algunas variables globales - la lista de los topes con los archivos asociados. Para cada búfer también - el modo mayor - el directorio predeterminado - el punto - la marca & marca-activa - búfer de sólo lectura - algunas variables locales

+1

No he probado con varios archivos de escritorio, funciona? Pensé que era más para guardar el estado en los reinicios de Emacs, lo cual funciona muy bien. – tripleee

+0

Sí, puede: podemos guardar un archivo de escritorio en un directorio determinado ('desktop-save-in-directory') y leerlo nuevamente (con un argumento para' desktop-read'). – Ehvince

5

Personalmente, he estado usando `persp-mode':

Perspectivas para emacs, en base a perspective-el por Nathan Weizenbaum. Pero las perspectivas se comparten entre los marcos + la capacidad de guardar/restaurar desde/hasta el archivo.

2

HIROSE Yuuji's revive.el funcionó muy bien para mí durante bastante tiempo. Utilizo la configuración estándar presentada en los comentarios en revive.el. La documentación está bien escrita y revivir es muy fácil de usar y configurar. En particular, revive.el tiene mejor soporte que algunos para reactivar configuraciones que son un poco más complejas. Es particularmente bueno si lo combina con el windows.el de HIROSE Yuuji. Están hechos para trabajar juntos. windows.el hace posible la recuperación de divisiones de ventanas, etc. revive.el está diseñado con vistas a la extensibilidad hacia una integración de modo más profunda para configuraciones particulares. Pero para mis usos, he encontrado que es bastante bueno de la caja, aunque creo que lo retocaré para revivir windows w3m que actualmente no tengo configurado (Actualización: lo hago ahora: ver abajo).

Aquí está mi configuración revivir. Incluyo algunos comentarios útiles, primero para windows.el y luego en línea 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 

Hay variantes de esto que otros como revive-plus.el y una slightly modified clone on github, pero yo prefiero el original.

Actualización Lunes, 12 de enero de 2015: Ahora puedo restaurar w3m en revivir (ver revivir.EL documentación para más detalles, y en particular, hacia ejemplos en revivir: major-mode-comando-a-lista-default):

(setq revive:major-mode-command-alist-private 
     '(("*w3m*" . w3m))) 

aviso le está diciendo a revivir el nombre del búfer w3m. Incluso si tiene varias pestañas, solo la primera debe enumerarse como se indicó anteriormente.

Aquí está la variable w3m he puesto para restaurar todas las pestañas de la sesión anterior:

(setq w3m-session-load-last-sessions t) 
Cuestiones relacionadas