Bagaimana cara mengatur warna pinggiran ke warna latar belakang apa pun?

12

Saya menggunakan mode bebas gangguan yang menggunakan pinggiran raksasa untuk memusatkan buffer yang disebut bzg-big-fringe-mode.

Masalahnya, pinggiran ini sering memiliki warna yang berbeda dari latar belakang yang memberikan efek visual yang jelek (lihat gambar di akhir).

Saya tidak punya masalah dengan memperbaiki ini secara manual, dengan mengatur warna pinggiran ke warna latar belakang, seperti:

(set-face-attribute 'fringe nil :background "#3F3F3F" :foreground "#3F3F3F")

Masalahnya adalah, ketika mengubah tema, warna pinggiran tetap abu-abu, meskipun itu tidak masuk akal untuk tema baru.

Apakah ada cara untuk secara terprogram mengatur pinggiran ke warna latar belakang?

Saya kira saya perlu dua hal:

  1. Kemampuan untuk mengatur warna latar belakang pinggiran ke warna latar belakang default.
  2. Fungsi yang dikaitkan dengan perubahan tema dan 1. yang dilakukan di atas.

Saya pikir saya harus bisa melakukan 2) walaupun saya tidak memiliki keterampilan emacs, tetapi bagaimana saya melakukannya 1)?

Atau apakah ini ide yang buruk karena alasan tertentu? Jika demikian, akan seperti apa pendekatan yang lebih baik?

masukkan deskripsi gambar di sini

Kucing Unfun
sumber

Jawaban:

11

Cara resmi akan menyesuaikan tema yang dimaksud untuk membuat wajah pinggiran terlihat sama dengan wajah latar belakang. Sebuah spec wajah sepanjang garis (fringe :inherit default)harus melakukan trik.

Atau, Anda dapat memodifikasinya dengan cepat menggunakan cuplikan kode:

(defun my-tone-down-fringes ()
  (set-face-attribute 'fringe nil
                      :foreground (face-foreground 'default)
                      :background (face-background 'default)))

Satu-satunya masalah yang tersisa adalah menerapkannya pada setiap perubahan tema. Saya tidak dapat menemukan pengait yang kelihatannya dapat melakukan pekerjaan yang agak menyedihkan, defadvicesepertinya juga tidak berhasil. Paling tidak di Emacs 24.4

wasamasa
sumber
Terima kasih. Saya akan menunggu sampai Senin dengan menerima jika sb memiliki solusi.
The Unfun Cat
1
Apakah ada alasan untuk tidak menggunakan face-backgrounddan face-foregrounddalam cuplikan kode ini?
Constantine
Tidak ada, diedit.
wasamasa
4

Anda dapat mengatur warna pinggiran menjadi nol, dalam hal ini Anda tidak perlu khawatir tentang perubahan tema. Saya punya yang berikut ini di konfigurasi saya:

(set-face-attribute 'fringe nil :background nil)

Dan pinggiran hanya menghilang .... :)

pandita
sumber
0

Entah bagaimana 'fringeberhenti bekerja untuk saya, dan sekarang ini berhasil:

(set-face-attribute 'linum nil :background "gray19")
yPhil
sumber