Какой лучший плагин для рабочих областей Emacs?
По рабочей области, я имею в виду - мне нужно сохранить состояние моих открытых буферов (возможно, в указанном пользователем файле рабочей области) и быстро переключиться на другой набор открытых буферов, например. продолжить работу над файлами, связанными с другим проектом.
Есть ли плагин Emacs, который позволяет это? Какой из них вы бы порекомендовали?
Ответы
Ответ 1
Я использую комбинацию save-visited-files и workgroups. Фактически, рабочие группы, вероятно, будут делать большую часть того, что вы хотите сами по себе.
Моя конфигурация:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; 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
Лично я использовал ` persp-mode ':
Перспективы для emacs, основанные на perspective-el
Натана Вайзенбаума. Но перспективы были разделены между кадрами + возможность сохранения/восстановления из/в файл.
Ответ 3
desktop.el будет полезен в вашей ситуации.
Он может (скопирован со страницы введения) из буфера пакетов emacs:
Сохраните рабочий стол, т. - некоторые глобальные переменные - список буферов со связанными файлами. Для каждого буфера также - основной режим - каталог по умолчанию - смысл - знак и знак-актив - только для чтения буфера - некоторые локальные переменные
Ответ 4
Если вы используете Linux/Gnome3, вы можете попробовать это расширение: https://extensions.gnome.org/extension/361/emacs-manager/
Это расширение позволит вам работать с разными проектами одновременно, управляя несколькими демонами emacs и сохранять/восстанавливать состояние буферов.
Ответ 5
HIROSE Yuuji revive.el неплохо поработал у меня в течение некоторого времени. Я использую стандартную конфигурацию, представленную в комментариях в revive.el. Документация хорошо написана, и оживление очень простое в использовании и настройке. В частности, revive.el имеет лучшую поддержку, чем некоторые для возрождения конфигураций, которые немного сложнее. Особенно приятно, если вы объедините его с HIROSE Yuuji windows.el. Они созданы для совместной работы. windows.el позволяет вспомнить разбиение окон и т.д. revive.el строится с прицелом на расширяемость в сторону интеграции более глубокого режима для конкретных настроек. Но для моих целей я обнаружил, что это довольно неплохо из коробки, хотя я думаю, что буду потом настраивать его, чтобы оживить w3m-окна, которые у меня сейчас нет. (Обновление: теперь я: см. Снизу).
Вот мой обновляющий конфиг. Я включаю некоторые полезные комментарии, сначала для windows.el, а затем 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
Есть варианты этого, которые другие вроде revive-plus.el и слегка модифицированный клон на github, но я предпочитаю оригинал.
Обновление в понедельник, 12 января 2015 г. Теперь я могу восстановить w3m в обновлении (подробности см. в документах revive.el и, в частности, посмотрите на примеры в revive: major-mode-command-alist-default):
(setq revive:major-mode-command-alist-private
'(("*w3m*" . w3m)))
Обратите внимание, что вы говорите, как оживить имя буфера w3m. Даже если у вас есть несколько вкладок, нужно перечислять только первый, как указано выше.
Вот переменная w3m, которую я установил для восстановления всех вкладок из предыдущего сеанса:
(setq w3m-session-load-last-sessions t)