Bagaimana cara mengatur windows default saat startup?

18

Setiap kali saya membuka Emacs saya cenderung mengatur 3 windows dengan melakukan C-x 3( split-window-right) dan kemudian C-x2( split-window-below). Setelah itu saya harus beralih ke setiap jendela untuk membuka file yang ingin saya edit.

Bagaimana saya bisa mengatur ini agar dilakukan secara otomatis?

Apakah ada cara agar Emacs memulihkan organisasi layar yang sama (windows dan file) dari penggunaan terakhir?

El Diego Efe
sumber

Jawaban:

13

Karena Emacs 24.4, Anda dapat menggunakan mode penyimpanan-desktop . Sudah menjadi bagian dari Emacs sejak lama, tetapi tata letak jendela hanya disimpan dan dipulihkan sejak versi 24.4.

Cukup tambahkan baris ini di file init Anda:

(desktop-save-mode 1)
Sviridov Alexander
sumber
3
Ini akan memulihkan file dari sesi sebelumnya, tetapi tidak akan mengembalikan tata letak jendela.
itsjeyd
1
Tidak, saya sudah mengujinya. Manual Emacs : Setelah Anda menyimpan desktop Emacs - buffer, nama file mereka, mode utama, posisi buffer , dan sebagainya - kemudian sesi Emacs berikutnya memuat ulang desktop yang disimpan.
Sviridov Alexander
3
"Posisi penyangga" mengacu pada posisi titik (kursor) dalam buffer yang diberikan. Ya, ini akan dipulihkan dengan desktop-save-mode. Tata letak jendela mengacu pada berapa banyak jendela yang saat ini ditampilkan dan bagaimana posisinya. desktop-save-modetidak mempertahankan tata letak ini.
itsjeyd
3
Ya, "tata letak jendela" dan "posisi penyangga" adalah hal yang berbeda, Anda benar. Tapi tata letak jendela saya dipulihkan. Sepertinya penghematan tata letak jendela ditambahkan dalam emacs-snapshot.
Sviridov Alexander
1
@pors, sepertinya tidak demikian jika Anda menggunakan Emacs (24,4 atau lebih tinggi) dalam mode terminal. Tidak ada konfigurasi jendela yang disimpan / dipulihkan.
skyork
7

tulis fungsi yang dekat dengan yang ada di file init Anda, Anda mungkin harus memodifikasinya sedikit agar sesuai dengan kebutuhan Anda:

;; 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 )

Adakah cara agar Emacs memulihkan organisasi layar yang sama (windows dan file) dari penggunaan terakhir?

Anda harus melihat pada paket tata letak

Nsukami _
sumber
6

Anda dapat menggunakannya workgroups2untuk mengelola desktop Anda. Dari README di GitHub:

Workgroups adalah manajer sesi untuk Emacs.

  • Ini menyimpan semua buffer yang Anda buka, lokasi dan ukurannya pada disk untuk memulihkannya nanti
  • Anda dapat membuat beberapa ruang kerja

Anda juga dapat mengembalikan buffer seperti: org-agenda, shell, status magit, bantuan.

Jika Anda memiliki repositori MELPA diaktifkan, Anda dapat menginstal paket ini melalui M-x package-install RET workgroups2 RET.

Pengaturan dasar adalah:

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

Ketika Anda me-restart Emacs untuk pertama kalinya setelah menambahkan kode ini ke file init Anda, workgroups2secara otomatis akan membuat workgroup untuk Anda. Anda dapat memverifikasi bahwa ini berhasil dengan memeriksa *Messages*buffer untuk informasi berikut:

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

Mulai saat ini, Emacs akan menyimpan konfigurasi windows dan file saat ini secara otomatis saat keluar, dan mengembalikannya saat berikutnya dimulai.

itu hanya
sumber
2

Saya telah menggunakan sesuatu yang dimodelkan setelah sanityinc's .emacs.d . Ini menggunakan desktop-save-mode, dan juga cukup pintar untuk digunakan frame-restorepada emacs versi yang lebih lama. Dari readme for frame-restorefrom package-list-packages:

Simpan dan pulihkan parameter frame Emacs.

Panggil saja frame-restore' in yourinit.el ':

(frame-restore-mode)

Perhatikan bahwa sejak r113242 mode Desktop Save bawaan akan mengembalikan bingkai. Jika Anda menggunakan build snapshot Emacs lebih lambat dari revisi ini, Anda sangat disarankan untuk menggunakan mode Desktop Save:

(desktop-save-mode)

Mode Frame Restore akan menampilkan peringatan tebal jika diaktifkan di build Emacs yang mode Desktop Save-nya dapat mengembalikan frame.

Pak Wacky
sumber