Saya menggunakan sr-speedbar dengan emacs, dan saya sering memiliki frame yang dibagi menjadi 2-3 jendela yang berbeda, dan setiap kali saya mengklik file di sr-speedbar, selalu membuka buffer baru di jendela terendah. Saya mencoba untuk menjaga jendela paling kanan bawah sebagai istilah ansi yang relatif kecil, dan emacs tetap bersikeras untuk membuka buffer baru di jendela istilah kecil daripada di area yang jauh lebih besar yang ingin saya gunakan untuk mengedit buffer.
Apakah ada cara agar saya dapat mengkonfigurasi logika pembuatan buffer untuk memilih jendela yang lebih tinggi daripada jendela yang lebih rendah?
Saya sudah mencoba mengambil jendela terendah saya dan menandainya sebagai terproteksi, dan itu membuat emacs membaginya menjadi dua bagian kecil yang tidak masuk akal. Kemudian saya mencoba mengaktifkan ukuran jendela-tetap dan bukannya membuat emacs membuka buffer di atas jendela itu, itu hanya memberi saya kesalahan bahwa jendela itu terlalu kecil untuk dibagi. Bagus saya kira itu berhenti mengganggu jendela terendah saya, tetapi bodoh bahwa itu menghentikan saya dari membuka buffer baru sebagai gantinya.
Idealnya, saya ingin dapat memaksa emacs untuk memilih jendela paling kanan atas untuk menampilkan buffer yang baru dibuat, bukan mencoba untuk membagi jendela paling kanan bawah.
Jawaban:
Saya menganggap Anda menggunakan Emacs 24; Saya belum menguji jawaban ini dalam versi sebelumnya, dan tidak tahu kapan konsep jendela khusus ditambahkan ke Emacs. Saya telah melihat menyebutkan penggunaannya yang berasal dari 2011, jadi saya menganggap Emacs 23 (setidaknya) juga memiliki kemampuan.
Anda dapat mencegah Emacs dari membuka buffer baru di jendela yang diberikan dengan mendedikasikan jendela ke buffernya .
Dalam kasus paling sederhana, Anda dapat melakukan ini dengan memilih jendela yang ingin Anda dedikasikan, memastikannya saat ini menampilkan buffer yang ingin Anda dedikasikan, dan kemudian lakukan
M-: (set-window-dedicated-p (selected-window) t)
. Ini akan mencegah Emacs mempertimbangkan jendela yang dimodifikasi saat memutuskan di mana jendela akan menampilkan buffer. Untuk menghapus dedikasi, mengevaluasi ekspresi yang sama, menggantikan argumen kedua dengannil
.Anda dapat mencegah Emacs dari mencoba untuk membagi jendela yang menampilkan buffer yang diberikan pengaturan variabel-lokal variabel-ukuran jendela-tetap ke nilai nihil.
Dalam kasus paling sederhana, Anda dapat melakukan ini dengan memilih jendela dan melakukan
M-: (setq window-size-fixed t)
. Untuk memperbaiki hanya tinggi atau lebar jendela yang menampilkan buffer, evaluasi ekspresi yang sama, lewat'height
atau'width
sebagai argumen kedua; untuk menghapus batasan, ganti argumen kedua dengannil
.Dalam kasus umum, saya menemukan masalah Anda cukup menarik untuk meretas solusi , yang dapat Anda masukkan ke jalur muat Anda
(require)
,, dan gunakan:sumber
Dalam rilis terbaru Emacs opsi
display-buffer-alist
ditambahkan. Ini memberikan kontrol halus atas tampilan buffer, jendela yang digunakan, dll. Namun, karena memungkinkan Anda melakukan banyak hal, itu juga cukup rumit dan sulit untuk dijelaskan. Konsultasikan dokumentasi:C-h v display-buffer-alist
.sumber