Apakah ada wajah Emacs yang dapat digunakan untuk mengontrol warna nama buffer tidak aktif?
Biasanya ketika mengatur wajah mode-line-buffer-id
semua jendela terpengaruh.
Dalam contoh ini mode-line
memiliki latar belakang yang terang, jadi saya mengatur mode-line-buffer-id
ke yang lebih gelap #333
.
Idenya adalah untuk membalikkan kombinasi warna untuk untuk mode-line-inactive
.
Meskipun ini mungkin untuk sebagian besar teks dalam mode-line windows tidak aktif, nama buffer menjadi tidak dapat dibaca karena masih dikontrol oleh mode-line-buffer-id
wajah.
Saya percaya bahwa pengaturan mode-line-inactive
ke latar belakang yang lebih ringan akan mengatasi masalah, tapi itu bukan hasil yang ingin saya capai.
Jawaban:
Saya tidak yakin apakah Anda masih mencari jawaban atau tidak, tetapi ini adalah satu-satunya hasil yang saya dapatkan di Google saat mencoba melakukan ini sendiri.
Apa pun alasan Emacs menyebutnya,
distant-foreground
jadi satu-satunya hal yang benar-benar perlu Anda lakukan adalah menambahkan:distant-foreground $colour-of-choice
ke wajah Anda.sumber
Berikut variasi jawaban lain yang mungkin bisa membantu. Contoh ini
mode-line-buffer-id
dibuat kembali menjadi hijau di buffer tidak aktif.Pembaruan: Seperti disebutkan dalam komentar, ini tidak sepenuhnya menyelesaikan masalah. Ketika Anda memiliki beberapa jendela yang terlihat mengunjungi buffer yang sama, mereka semua akan berbagi wajah yang sama.
sumber
Ini adalah variasi dari jawaban lain, dengan yang ini membedakan antara windows aktif dan tidak aktif. Jika buffer terlihat di lebih dari satu jendela, hanya jendela aktif yang akan dimiliki
ml-active-window-face
dan semua jendela lainnya akan memilikinyaml-inactive-window-face
.sumber
Saya tidak yakin itu mungkin. Tampaknya garis mode diperbarui hanya ketika jendelanya dipilih (pengujian menggunakan panggilan untuk
message
menghapus ini). Dan kode yang melakukan ini adalah kode C, bukan Lisp.Anda dapat menggunakan ekspresi kondisional dalam definisi
mode-line-buffer-identification
, sehingga wajah yang digunakan dihitung secara dinamis. Tapi saya tidak tahu fungsi atau variabel apa pun yang dapat Anda gunakan untuk menguji apakah jendela yang diberikan memiliki mode-line tidak aktif.Anda tidak dapat menggunakan
selected-window
, misalnya, karena itu selalu menunjuk ke jendela dengan jalur mode aktif.Berikut adalah contoh pembaruan dinamis yang didasarkan pada nama buffer. Bukan apa yang Anda inginkan, tetapi setidaknya menunjukkan kepada Anda apa yang dapat Anda lakukan. Jika Anda dapat menemukan cara untuk menguji apakah jendela yang diperbarui dipilih maka Anda dapat menggantikannya dengan tes nama buffer. (Tapi kesan saya adalah hanya jendela yang dipilih yang memperbarui baris mode.)
Hal lain yang mungkin Anda coba adalah fungsi menasihati
format-mode-line
. Tampaknya memang membedakan sebuah jendela dengan jalur mode aktif dari satu dengan jalur mode tidak aktif. Tetapi kode juga dalam C, jadi saya ragu Anda akan sangat jauh dengan menasihati itu. Ini menguji variabel CQmode_line_inactive
, FWIW.Saya sarankan mengajukan pertanyaan ini di salah satu milis Emacs (mis.
[email protected]
), Jika Anda tidak mendapatkan jawaban yang memuaskan di sini. Sepertinya itu baik untuk dapat melakukan apa yang Anda minta. +1 untuk pertanyaan, dalam hal apa pun.sumber