2012-06-29 8 views
14

Przez przestrzeń roboczą mam na myśli - muszę zapisać stan moich otwartych buforów (ewentualnie w pliku roboczym użytkownika) i szybko przełączyć się na inny zestaw otwartych buforów, np. aby kontynuować pracę nad plikami związanymi z innym projektem.Co to jest najlepsza wtyczka Emacs do workspaces?

Czy jest wtyczka Emacs, która pozwala na to? Który z nich poleciłbyś?

Odpowiedz

10

używam kombinacji save-visited-files i workgroups . W rzeczywistości grupy robocze prawdopodobnie wykonają większość tego, co chcesz.

Mój 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

Chciałbym przejść do innej grupy roboczej, aby zamknąć wszystkie bufory powiązane ze starą grupą roboczą i otworzyć nowe, zamiast _just_, otwierając nowe. – axel22

+1

'grupa robocza' nie ma właściwego przełączania między zestawami buforów, a ładowanie/zapisywanie jest uciążliwe. Doceniam odpowiedź, ale nie sądzę, że to dobre rozwiązanie. – axel22

+0

Zgadzam się, że przywracanie (wg-restore-workgroup) i aktualizowanie (wg-update-workgroup) może być uciążliwe, ponieważ wymaga dyscypliny. Możesz zautomatyzować to, ale to powinno być coś, co jest wbudowane. Ładowanie i zapisywanie może być łatwo zautomatyzowane, np. z auto-save-hook, tak jak ja. Przestałem dbać o otwarte bufory dawno temu. Usuwam niektóre z nich co kilka dni, a tryb ido ułatwia przełączanie. Mam teraz 91 buforów. – jpkotta

2

desktop.el będzie pomocny w twojej sytuacji.

Może (skopiowany z jego strony wprowadzenie) z bufora Emacs pakiety:

Zapisz Desktop, tj - niektóre zmienne globalne - lista buforów z powiązanymi plikami. Dla każdego bufora również - tryb głównym - domyślny katalog - miejsce - znak & znak czynne - bufor-read-only - niektóre zmienne lokalne

+1

nie próbowałem z wieloma plikami stacjonarnych to działa? Pomyślałem, że to bardziej na ratowanie stanu przez restart Emacsa, który działa bardzo dobrze. – tripleee

+0

Tak, można: możemy zapisać plik pulpitu w danym katalogu ('desktop-save-in-directory') i odczytać go (z argumentem dla' desktop-read'). – Ehvince

5

Osobiście używam `persp-mode':

Perspektywy emacs, w oparciu o perspective-el Nathan Weizenbaum. Ale perspektywy dzielone między klatkami + możliwość zapisywania/przywracania z/do pliku.

2

HIROSE Yuuji's revive.el od dłuższego czasu działa miło. Używam standardowej konfiguracji przedstawionej w komentarzach w revive.el. Dokumentacja jest dobrze napisana, a ożywienie jest bardzo łatwe w użyciu i konfiguracji. W szczególności revive.el ma lepsze wsparcie niż niektóre do rewitalizacji konfiguracji, które są nieco bardziej skomplikowane. Szczególnie przyjemnie jest je połączyć z HIROSE Yuuji's windows.el. Są stworzone do wspólnej pracy. windows.el umożliwia przywoływanie podziałów okna, itp. revive.el jest zbudowany z myślą o rozszerzeniu w kierunku głębszej integracji trybów dla poszczególnych konfiguracji. Ale dla moich zastosowań, stwierdziłem, że jest całkiem przyjemny po wyjęciu z pudełka, chociaż myślę, że będę go później modyfikował, aby ożywić okna w3m, których aktualnie nie mam w konfiguracji (Aktualizacja: teraz robię: patrz na dole).

Oto moja konfiguracja reaktywacji. I to kilka pomocnych uwag, najpierw dla windows.el a następnie revive.el inline:

(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 

Istnieją warianty tego, że inni jak revive-plus.el i slightly modified clone on github, ale wolę oryginał.

Update Poniedziałek, 12 stycznia 2015: Teraz mogę przywrócić w3m w ożywieniu (zobacz ożywienie.el docs do informacji, aw szczególności spojrzeć na przykłady w ożywić: major-mode-command-alist-default):

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

Wskazówka mówisz ożywić nazwę bufora w3m. Nawet jeśli masz wiele kart, tylko pierwsza musi być wyliczona jak wyżej.

Oto zmienna w3m mam ustawić, aby przywrócić wszystkie karty z poprzedniej sesji:

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