Ich möchte eine andere Hintergrundfarbe von einer Funktion bis zum Ende beginnen.
So was:
Ich bin mir bewusst, dass Sie Hintergrundfarben aus einigen Gesichtern wie Funktion und Funktionsnamen wie definieren können foobar
. Es wirkt sich jedoch nur auf die Hintergrundfarbe der Wörter function
und aus foobar
. Ich möchte die Hintergrundfarbe der gesamten Zeile ändern, in der die Funktion angezeigt wird, und damit enden.
Warum, würdest du fragen? Es würde mir viel leichter machen zu unterscheiden, welche Teile zu einer Funktion gehören.
Ich frage mich also, ob es in Emacs einen praktischen Weg gibt, dies zu verwalten. Gibt es ein Lisp-Paket, um so etwas zu erreichen?
isearch-highlight
undisearch-dehighlight
Antworten:
Sie können die Bibliothek Hervorheben verwenden , um einen Bereich mithilfe von Overlay- oder Texteigenschaften hervorzuheben, insbesondere mithilfe einer Eigenschaft
face
. Verwenden Sie zum Hervorheben des Hintergrunds ein Gesicht, das Attribute verwendet,background
jedoch nichtforeground
.Wenn Sie die Texteigenschaft verwenden
face
, können Sie auch Eigenschaften aus einem Text kopieren und in einen anderen Text einfügen. Wenn sich Ihre Definition ändert und größer wird, können Sie einfach einen Teil des hervorgehobenen Teils kopieren und dann seine Eigenschaftface
in den nicht hervorgehobenen Teil einfügen.Sie können auch die in der Bibliothek definierten Funktionen verwenden, um die Hervorhebung eines Defuns automatisch zu erweitern (z. B. als Pufferwechsel-Hook oder regelmäßig auf einem Timer), um Änderungen daran zu berücksichtigen.
Wenn Sie eine Überlagerung verwenden, können Sie mit den Befehlen zum Löschen von Markierungen (z. B.
hlt-eraser
) nur das zuletzt hervorgehobene Gesicht entfernen. Ziehen Sie die Maus über den Text, an dem Sie die Hervorhebung entfernen möchten.Sie können die normale Schriftsperre verwenden. Fügen Sie ein Muster hinzu
font-lock-keywords
, das eine Funktion verwendet, die den Anfang und das Ende Ihrer Definition erkennt. Weitere Informationen finden Sie im Elisp-Handbuch, im Knoten Anpassen von Schlüsselwörtern sowie im übergeordneten Knoten, im Schriftsperrmodus und in den anderen untergeordneten Knoten .UPDATE nach deinem Kommentar
Ich denke, Sie möchten vielleicht nicht die Region, sondern die von der Region berührten Linien hervorheben und die Hervorhebung über das Ende des Textes hinaus erweitern (einschließlich über Leerzeichen hinaus). Ist es das? Wenn ja, versuchen Sie Folgendes:
quelle
highlight
Bibliothek hat für mich jedoch nicht funktioniert. Es wird nur ein Hintergrund darauf angewendet, wo sich der Text befindet. Wenn der Text endet, hört er mit der Hintergrundfarbe auf. Irgendein Vorschlag?highlight.el
. Wenn es dir hilft, gut.