T: bagaimana saya bisa mengontrol jendela yang org-deadline
digunakan untuk menampilkan kalender?
org-deadline
untuk sementara memunculkan calendar
buffer di jendela ketika mengatur tenggat waktu, dan kemudian menutupnya lagi setelah selesai. Ketika hanya ada satu jendela, muncul jendela baru di bagian bawah bingkai yang ada. Ketika ada beberapa jendela, itu memilih satu - saya kira dengan sesuatu seperti get-lru-window
- dari jendela yang tersedia.
Yang terakhir bermasalah jika mengambil alih salah satu jendela lain yang memiliki informasi yang saya butuhkan untuk menetapkan tenggat waktu (tanggal, waktu, dll.) Ini biasanya merupakan masalah dalam pengaturan jendela seperti:
+--------------------+--------------------+
| | |
| | (B: mu4e header) |
| | |
| +--------------------+
| (A: agenda file) | |
| | |
| | |
| | (C: mu4e view) |
| | |
| | |
| | |
+--------------------+--------------------+
Ketika menambahkan tenggat waktu ke file agenda di (A), org-deadline
akan mengambil alih (B) atau (C), yang berisi email yang memiliki informasi tanggal / waktu yang saya butuhkan. Saya lebih suka itu, jika saya menelepon org-deadline
dari (A), itu akan memunculkan jendela sementara (D) untuk mengandung calendar
buffer seperti di bawah ini:
+--------------------+--------------------+
| | |
| | (B: mu4e header) |
| | |
| +--------------------+
| (A: agenda file) | |
| | |
| | |
+--------------------+ (C: mu4e view) |
| | |
| (D: calendar) | |
| | |
+--------------------+--------------------+
Jadi: bagaimana satu kekuatan org-deadline
(dan fungsi analog) untuk memunculkan jendela sementara yang baru di bagian bawah jendela yang aktif daripada mengambil alih salah satu yang lain?
PS: Saya sadar akan jendela khusus , tetapi mereka tidak menganggap saya pendekatan terbaik karena tidak terlalu banyak sehingga saya ingin mendedikasikan buffer untuk windows karena saya ingin menghindari fungsi mengambil alih salah satu "pendek" yang
display-buffer-alist
) Tapi saya pikir ada kerutan tambahan di sini karenaorg-deadline
penggunaancalendar
yang berjalan jauh dari cara untuk mengontrol jendela apa yang digunakan. lihat komentar dicalendar-basic-setup
.Jawaban:
Mengikuti harus melakukan apa yang Anda inginkan.
Kalender menggunakan fungsi
calendar-basic-setup
untuk menampilkan buffer kalender,calendar-basic-setup
pada gilirannya menggunakanpop-to-buffer
yang pada gilirannya digunakandisplay-buffer
untuk menampilkan buffer kalender. Sekarangdisplay-buffer
sangat dapat dikustomisasi dan memungkinkan kami untuk menyediakan fungsi untuk menampilkan buffer menggunakan variabel tertentu, kami menggunakan satu variabel seperti itu didisplay-buffer-alist
sini.Pada dasarnya kami mengatakan emacs untuk menggunakan fungsi
my-position-calendar-buffer
untuk menampilkan buffer yang cocok dengan regexp\*Calendar\*
. Fungsimy-position-calendar-buffer
mencari jendela yang menampilkan agenda org, jika tidak menemukan jendela seperti itu, ia tidak melakukan apa-apa dalam hal inidisplay-buffer
akan mencoba beberapa fungsi lain untuk menampilkan buffer. Dalam hal jendela menampilkan org-agenda ditemukan fungsi membagi jendela itu secara vertikal dan menampilkan buffer kalender.Saya belum menguji ini secara menyeluruh (hanya mencoba memulai kalender dengan tampilan agenda dan tanpa tampilan agenda), tampaknya berfungsi tetapi mungkin ada beberapa bug.
sumber
add-to-list
pada display-buffer-alist. Menggunakansetq
mengabaikan penyesuaian lainnya.