So heben Sie die Markierung des mit dem Markierungssymbol am Punkt markierten Symbols auf

13

highlight-symbol-at-point ist wirklich nützlich, aber ich konnte keine einfache Möglichkeit finden, Symbole zu deaktivieren.

Derzeit muss ich unhighlight-regexpfür jedes hervorgehobene Symbol wiederholt anrufen .

Gibt es einen besseren Weg, um:

  • heben Sie alle hervorgehobenen Symbole in einem Puffer hervor
  • ein Symbol an einer Stelle deaktivieren?
kostya
quelle
Müssen Sie alle Symbole auf einmal deaktivieren?
Kaushal Modi
Meistens - ja. Gelegentlich ist es auch nützlich, ein Symbol an einer Stelle zu deaktivieren.
Kostya
Die Antworten wären unterschiedlich, wenn Sie das Symbol unter Punkt oder alle Symbole deaktivieren möchten.
Kaushal Modi
Ich habe meine Frage aktualisiert
kostya
2
Sie können alle hervorgehobenen Symbole mitM-x hi-lock-mode
Amir Karimi

Antworten:

10

Gibt es eine bessere Möglichkeit, alle hervorgehobenen Symbole in einem Puffer zu deaktivieren?

Von C-h f unhighlight-regexpbekommen wir

(unhighlight-regexp REGEXP)

Entfernen Sie die Hervorhebungen der einzelnen Übereinstimmungen von REGEXP, die mit Hi-Lock festgelegt wurden. Interaktiv: Fordern Sie zur Eingabe von REGEXP auf und akzeptieren Sie nur reguläre Ausdrücke, die zuvor von interaktiven High-Lock-Funktionen eingefügt wurden. Wenn REGEXP t ist (oder wenn Cu interaktiv angegeben wurde), entfernen Sie alle High-Lock-Hervorhebungen.

Das bedeutet, dass wir einfach unhighlight-regexpmit tals Argument aufrufen müssen, um alle High-Lock-Hervorhebungen im Puffer zu entfernen.

Wenn es eine einmalige Sache wäre, könnte sie schnell von M-: (unhighlight-regexp t)oder erledigt werden C-u M-s h u. Aber es scheint, dass Sie dies ziemlich oft tun müssen. In diesem Fall ist es besser, sie in eine interactiveFunktion einzubinden und an eine Taste zu binden.

Nachfolgend finden Sie eine vorgeschlagene Lösung, bei der my/unhighlight-all-in-bufferes sich um die interaktive Wrapperfunktion handelt, an die hUin der gebunden ist search-map. Standardmäßig search-maplautet das Präfix M-s. So, jetzt, wie M-s h ustartet unhighlight-regexp, startet M-s h U(beachten Sie die Hauptstadt U) my/unhighlight-all-in-buffer.

(require 'hi-lock)        
(defun my/unhighlight-all-in-buffer ()
  "Remove all highlights made by `hi-lock' from the current buffer.
The same result can also be be achieved by \\[universal-argument] \\[unhighlight-regexp]."
  (interactive)
  (unhighlight-regexp t))
(define-key search-map "hU" #'my/unhighlight-all-in-buffer)

Gibt es eine bessere Möglichkeit, ein Symbol an einem Punkt hervorzuheben?

Das Gute ist, dass Sie den Punkt nicht auf einem Symbol platzieren müssen, das Sie deaktivieren möchten.

Sie rufen einfach M-x unhighlight-regexpoder M-s h u(die Standardbindung) auf und drücken M-p/, M-nbis Sie auf den regulären Ausdruck des Symbols stoßen, das Sie deaktivieren möchten, und drücken die Eingabetaste.

Kaushal Modi
quelle
4

Eine andere Möglichkeit ist die Verwendung der Bibliothek Highlight ( highlight.el), Befehle hlt-highlight-symbol-at-pointund hlt-unhighlight-symbol-at-point.

Sie sind standardmäßig an C-x X h sbzw. gebunden C-x X u s. Alle hervorgehobenen und nicht hervorgehobenen Befehle sind C-x Xstandardmäßig an den Präfixschlüssel gebunden . Befehle werden mit der Präfixtaste hervorgehoben C-x X h. Befehle, die nicht markiert sind, verwenden die Präfixtaste C-x X u. Sie können einen anderen Präfixschlüssel verwenden, als C-x Xindem Sie ihn nur an den Präfixbefehl binden hlt-map.

Hervorheben in der Bibliothek Hervorheben kann Überlagerungen oder Texteigenschaften (oder beides) verwenden. Das hervorgehobene Gesicht oder die hervorgehobene Farbe können automatisch ausgewählt werden (aus einer benutzerdefinierten Folge von Gesichtern und Farben) oder nicht.

Die Hervorhebung kann eine Eigenschaft verwenden font-lock-face, sodass sie vom Schriftsperrmodus gesteuert wird. Oder es kann Eigenschaft verwenden face, so dass es nicht von ihr gesteuert wird. (Sie können Eigenschaft verwenden face, um in Puffern hervorzuheben, die keine Schriftsperre verwenden, und die Hervorhebung bleibt in Puffern mit Schriftsperre erhalten, wenn Sie den Schriftsperrmodus deaktivieren.)

Drew
quelle
4

C-u C-x w r

(unhighlight-regexp REGEXP) (...) Wenn REGEXP t ist (oder wenn C-u interaktiv angegeben wurde), entfernen Sie alle High-Lock-Hervorhebungen.

Rofrol
quelle
0

Dies hebt ein einzelnes Symbol hervor:

(defun unhighlight-symbol-at-point ()
  "Remove highlight of symbol at point."
  (interactive)
  (unhighlight-regexp (concat "\\_<" (thing-at-point 'symbol) "\\_>")))
Kennzeichen
quelle