Как настроить стандартные окна при запуске?


18

Каждый раз, когда я открываю Emacs, я стараюсь настроить 3 окна, выполняя C-x 3( split-window-right) и затем C-x2( split-window-below). После этого мне нужно переключиться на каждое окно, чтобы открыть файлы, которые я хочу редактировать.

Как я могу сделать так, чтобы это делалось автоматически?

Есть ли способ заставить Emacs восстановить ту же самую организацию экрана (окна и файлы) после последнего использования?

Ответы:


13

Начиная с Emacs 24.4, вы можете использовать desktop-save-mode . Он был частью Emacs целую вечность, но макет окна сохраняется и восстанавливается только с версии 24.4.

Просто добавьте эту строку в ваш файл инициализации:

(desktop-save-mode 1)

3
Это восстановит файлы из предыдущего сеанса, но не восстановит расположение окон.
itjeyd

1
Нет, я проверял это. Руководство по Emacs : Как только вы сохраните рабочий стол Emacs - буферы, имена их файлов, основные режимы, позиции буфера и т. Д. - затем последующие сеансы Emacs перезагрузят сохраненный рабочий стол.
Свиридов Александр

3
«Положение буфера» относится к положению точки (курсора) в данном буфере. Да, это будет восстановлено с desktop-save-mode. Расположение окон относится к тому, сколько окон отображается в данный момент и как они расположены. desktop-save-modeне сохраняет этот макет.
isjeyd

3
Да, «расположение окон» и «позиция буфера» - разные вещи, вы правы. Но мое расположение окон было восстановлено. Похоже, сохранение разметки окна было добавлено в emacs-snapshot.
Свиридов Александр

1
@pors, похоже, это не тот случай, если вы используете Emacs (24.4 или выше) в режиме терминала. Конфигурация окна не сохраняется / восстанавливается.
Скайорк

7

напишите функцию, близкую к этой, в вашем файле инициализации, вам, вероятно, придется немного ее изменить, чтобы она соответствовала вашим потребностям:

;; layout definition
(defun my-startup-layout ()
 (interactive)
 (delete-other-windows)
 (split-window-horizontally) ;; -> |
 (next-multiframe-window)
 (find-file "~/.emacs.d/init.el")
 (split-window-vertically) ;;  -> --
 (next-multiframe-window)
 (find-file "~/.emacs.d/init_settings.el")
 (next-multiframe-window)
 (dired "~")
)

;; execute the layout
(my-startup-layout )

Есть ли способ заставить Emacs восстановить ту же организацию экрана (окна и файлы) с момента последнего использования?

Вы должны взглянуть на макет пакета


6

Вы можете использовать workgroups2для управления своим рабочим столом. Из README на GitHub:

Рабочие группы - это менеджер сессий для Emacs.

  • Сохраняет все открытые буферы, их расположение и размеры на диске для последующего восстановления.
  • Вы можете создать несколько рабочих пространств

Вы также можете восстановить такие буферы как: org-повестки дня, shell, magit-status, help.

Если у вас включен репозиторий MELPA , вы можете установить этот пакет через M-x package-install RET workgroups2 RET.

Базовая настройка:

(require 'workgroups2)
(workgroups-mode 1) ; This should go at the end of your init file

Когда вы в первый раз перезапустите Emacs после добавления этого кода в файл инициализации, workgroups2он автоматически создаст для вас рабочую группу. Вы можете убедиться, что это было успешно, проверив в *Messages*буфере следующую информацию:

Workgroups Mode: on
Switched: First workgroup
Created: First workgroup  ( -<{ 0: First workgroup }>- )

С этого момента Emacs автоматически сохранит текущую конфигурацию окон и файлов при выходе и восстановит ее при следующем запуске.


2

Я использовал что-то по образцу .emacs.d от sanityinc . Он использует desktop-save-mode, а также достаточно умен, чтобы использовать его frame-restoreв старых версиях Emacs. Из readme для frame-restoreот package-list-packages:

Сохраните и восстановите параметры фреймов Emacs.

Просто позвоните frame-restore' in yourinit.el ':

(Кадр восстановления-режим)

Обратите внимание, что начиная с r113242 встроенный режим сохранения рабочего стола будет восстанавливать кадры. Если вы используете сборку моментального снимка Emacs позже, чем эта ревизия, вам настоятельно рекомендуется использовать вместо этого режим сохранения рабочего стола:

(Настольных копи-режиме)

Режим восстановления кадра будет отображать смелое предупреждение, если он включен в сборке Emacs, в которой режим сохранения рабочего стола может восстанавливать кадры.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.