Come deselezionare il simbolo evidenziato con l'evidenziazione-simbolo-punto


13

highlight-symbol-at-point è davvero utile, tuttavia non sono riuscito a trovare un modo semplice per deselezionare i simboli.

Attualmente devo chiamare unhighlight-regexppiù volte per ogni simbolo evidenziato.

Esiste un modo migliore per:

  • deselezionare tutti i simboli evidenziati in un buffer
  • non evidenziare un simbolo nel punto?

Devi deselezionare tutti i simboli in una volta sola?
Kaushal Modi,

La maggior parte delle volte, si. Occasionalmente è utile anche evidenziare un simbolo in un punto.
kostya,

Le risposte sarebbero diverse se si desidera deselezionare il simbolo sotto il punto o deselezionare tutti i simboli.
Kaushal Modi,

Ho aggiornato la mia domanda
kostya,

2
Puoi rimuovere tutti i simboli evidenziati usandoM-x hi-lock-mode
Amir Karimi il

Risposte:


10

Esiste un modo migliore per evidenziare tutti i simboli evidenziati in un buffer?

Da C-h f unhighlight-regexp, otteniamo

(unhighlight-regexp REGEXP)

Rimuovi l'evidenziazione di ogni partita su REGEXP impostato da hi-lock. Interattivo, richiede REGEXP, accettando solo regexps precedentemente inseriti da funzioni interattive hi-lock. Se REGEXP è t (o se Cu è stato specificato in modo interattivo), quindi rimuovere l'evidenziazione di hi-lock.

Ciò significa che si devono semplicemente chiamata unhighlight-regexpcon tcome argomento per rimuovere tutti hi-lock evidenziando nel buffer.

Se fosse una cosa una tantum, potrebbe essere fatto rapidamente da M-: (unhighlight-regexp t)o C-u M-s h u. Ma sembra che questo sia qualcosa che devi fare abbastanza spesso. In tal caso, è meglio racchiuderlo in una interactivefunzione e associarlo a un tasto.

Qui di seguito è una soluzione proposta in cui my/unhighlight-all-in-bufferè la funzione interattiva involucro ed è destinato a hUnel search-map. Di default il search-mapprefisso è M-s. Quindi ora, proprio come i M-s h ulanci unhighlight-regexp, M-s h U(nota la U maiuscola) 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)

Esiste un modo migliore per evidenziare un simbolo nel punto?

La cosa buona è che non è necessario posizionare il punto su un simbolo che è necessario evidenziare.

Basta chiamare M-x unhighlight-regexpo M-s h u(il suo binding predefinito) e premere M-p/ M-nfino a quando non si incontra la regexp del simbolo che è necessario deselezionare e premere Invio.


4

Un altro modo è usare la libreria Highlight ( highlight.el), i comandi hlt-highlight-symbol-at-pointe hlt-unhighlight-symbol-at-point.

Sono associati per impostazione predefinita a C-x X h se C-x X u s, rispettivamente. Tutti i comandi di evidenziazione e non evidenziazione sono associati al tasto prefisso C-x Xper impostazione predefinita. I comandi di evidenziazione utilizzano il tasto prefisso C-x X h. I comandi non evidenziati utilizzano il tasto prefisso C-x X u. È possibile utilizzare una chiave di prefisso diversa C-x Xda quella semplicemente associandola al comando prefisso hlt-map.

Evidenziazione nella libreria L'evidenziazione può utilizzare overlay o proprietà del testo (o entrambi). La faccia o il colore di evidenziazione può essere scelto automaticamente (da una sequenza personalizzata di facce e colori) oppure no.

L'evidenziazione può utilizzare la proprietà font-lock-face, in modo che sia controllata dalla modalità Blocco caratteri. Oppure può usare la proprietà face, in modo che non sia controllata da essa. (È possibile utilizzare la proprietà faceper evidenziare nei buffer che non utilizzano il blocco dei caratteri e l'evidenziazione rimane nei buffer con blocco dei caratteri quando si disattiva la modalità Blocco caratteri.)


4

C-u C-x w r

(unhighlight-regexp REGEXP) (...) Se REGEXP è t (o se è C-u stato specificato in modo interattivo), quindi rimuovere l'evidenziazione di hi-lock.


0

Ciò evidenzierà un singolo simbolo:

(defun unhighlight-symbol-at-point ()
  "Remove highlight of symbol at point."
  (interactive)
  (unhighlight-regexp (concat "\\_<" (thing-at-point 'symbol) "\\_>")))
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.