Wie kann das Gesicht der Region Vorrang vor dem Gesicht des Show-Paren-Modus haben?

7

Ich verwende show-paren-modedie Hervorhebung von Ausdrücken und ändere die Hintergrundfläche auf einen Farbton, der heller als der Standardhintergrund ist. Ich mag es sehr.

Das Problem ist, dass wenn ich eine Markierung habe, die Hintergrundfläche aus dem Paren-Ausdruck die Hintergrundfläche für die markierte Region überschreibt, sodass sie seltsam und inkonsistent aussieht und es schwierig ist, auf einen Blick visuell zu erkennen, was die gesamte Region ist.

Gibt es eine Möglichkeit, das Gesicht der Region so zu konfigurieren, dass es eine höhere "Priorität" als das Gesicht "Show-Paren-Match" hat?

Levand
quelle
Dies ist aus mehreren Gründen schwieriger als es aussieht. Würden Sie in Ordnung sein show-paren-mode, niemals etwas anzuzeigen, wenn die Region stattdessen aktiv ist?
Wasamasa
@wasamasa - Wie wäre es mit einer niedrigeren Priorität für das Overlay, das vertuscht werden soll? Der Prioritätswert der in definierten Region simple.elist '(nil . 100)- sieheredisplay-highlight-region-function
Gesetzliste
@wasamasa sicher, das wäre eine akzeptable Notlösung, nehme ich an.
Levand
@lawlist In der Dokumentation wird angegeben, dass Prioritäten möglicherweise nur Zahlen sind und alles andere nur für den internen Gebrauch bestimmt ist. Die Region verwendet jedoch eine scheinbar sekundäre Priorität, die nicht dokumentiert ist. Ich habe Werte unter 100 ausprobiert, aber sie hatten keine Auswirkung, es sei denn, Sie haben die Priorität von show-paren festgelegt, nildie einen weiteren Nebeneffekt hatte: Anzeigen des hervorgehobenen Ausdrucks in umgekehrter Darstellung.
Wasamasa
@lawlist Dies könnte natürlich mein Thema sein, das etwas anderes als das umgekehrte Video für das Gesicht der Region spezifiziert, aber dennoch sollte diese Art von Panne überhaupt nicht auftreten. Deshalb schlage ich einen alternativen Ansatz vor.
Wasamasa

Antworten:

9

Passen Sie die Option show-paren-priorityan, um einen negativen Wert zu haben, z . B. -50 .

Nein, das ist nirgendwo dokumentiert. Ja, darüber wurde ein Fehler gemeldet. Nein, der Fehlerbericht wurde nie beantwortet.

Siehe Emacs-Fehler Nr. 20253 , Nr. 15899 und Nr. 16192 .

Drew
quelle
Cool. Das funktioniert genau so, wie man es sich erhoffen würde. Hurra für undokumentierte Funktionen.
Levand
2

Da ich keinen zuverlässigen und dokumentierten Weg gefunden habe, um die jeweiligen Überlagerungsprioritäten zu ändern, ohne unerwünschte visuelle Störungen einzuführen, habe ich Folgendes empfohlen show-paren-function:

(defadvice show-paren-function (around inhibit-in-region activate)
  (if (region-active-p)
      (progn
        (delete-overlay show-paren--overlay)
        (delete-overlay show-paren--overlay-1))
    ad-do-it))

Dies deaktiviert lediglich die Hervorhebung, wenn die Region gerade aktiv ist.

Wasamasa
quelle