Come posso impostare i colori delle frange su qualunque sia il colore di sfondo?


12

Sto usando una modalità senza distrazioni che utilizza frange giganti per centrare il buffer chiamato bzg-big-fringe-mode.

Il problema è che queste frange hanno spesso un colore diverso rispetto allo sfondo che danno un brutto effetto visivo (vedi l'immagine alla fine).

Non ho problemi a risolvere questo problema manualmente, impostando il colore della frangia sul colore di sfondo, in questo modo:

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

Il problema è che quando si cambiano i temi i colori delle frange rimangono grigi, anche se non ha senso per il nuovo tema.

C'è un modo per impostare programmaticamente la frangia sul colore di sfondo?

Immagino di aver bisogno di due cose:

  1. La possibilità di impostare il colore di sfondo della frangia sul colore di sfondo predefinito.
  2. Una funzione che è agganciata al cambiamento di temi e che fa 1. sopra.

Penso che dovrei essere in grado di fare 2) anche se non ho abilità emacs, ma come faccio 1)?

O è una cattiva idea per qualche motivo? In tal caso, come sarebbe un approccio migliore?

inserisci qui la descrizione dell'immagine

Risposte:


11

Il modo ufficiale sarebbe quello di personalizzare il tema in questione per rendere la faccia della frangia uguale alla faccia di sfondo. Una specifica del viso sulla falsariga di (fringe :inherit default)dovrebbe fare il trucco.

In alternativa, puoi modificarlo al volo usando uno snippet di codice:

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

L'unico problema rimasto sarebbe applicarlo ad ogni cambio di tema. Non riesco a trovare alcun gancio che sembra che potrebbe fare il lavoro che è un po 'triste, defadvicenon sembra funzionare correttamente neanche. Almeno non in Emacs 24.4


Grazie. Aspetterò fino a lunedì con l'accettazione nel caso in cui sb abbia una soluzione.
The Unfun Cat,

1
C'è un motivo per non usare face-backgrounde face-foregroundin questo frammento di codice?
Costantino,

Non c'è, modificato.
Wasamasa,

4

È possibile impostare il colore della frangia su zero, nel qual caso non è necessario preoccuparsi di eventuali cambiamenti del tema. Ho il seguente nella mia configurazione:

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

E la frangia scompare ... :)


0

In qualche modo ha 'fringesmesso di funzionare per me, e ora questo fa:

(set-face-attribute 'linum nil :background "gray19")
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.