Cómo resaltar el símbolo resaltado con el símbolo de resaltado en el punto


13

highlight-symbol-at-point es realmente útil, sin embargo, no pude encontrar una manera fácil de desmarcar símbolos.

Actualmente tengo que llamar unhighlight-regexprepetidamente por cada símbolo resaltado.

¿Hay una mejor manera de:

  • resalte todos los símbolos resaltados en un búfer
  • ¿Destacar un símbolo en el punto?

¿Necesita desmarcar todos los símbolos de una vez?
— Kaushal Modi

La mayoría de las veces, sí. Ocasionalmente, desmarcar un símbolo en el punto también es útil.
— kostya

Las respuestas serían diferentes si desea desmarcar el símbolo debajo del punto o desmarcar todos los símbolos.
— Kaushal Modi

He actualizado mi pregunta
— kostya

2
Puede eliminar todos los símbolos resaltados utilizandoM-x hi-lock-mode
— Amir Karimi

Respuestas:


10

¿Hay una mejor manera de resaltar todos los símbolos resaltados en un búfer?

De C-h f unhighlight-regexp, obtenemos

(unhighlight-regexp REGEXP)

Elimine el resaltado de cada coincidencia a REGEXP establecido por hi-lock. Interactivamente, solicite REGEXP, aceptando solo expresiones regulares previamente insertadas por funciones interactivas de bloqueo alto. Si REGEXP es t (o si Cu se especificó de forma interactiva), elimine todo el resaltado de bloqueo alto.

Eso significa que simplemente necesidad de llamar unhighlight-regexpcon tcomo argumento para eliminar todo el hi-lock destacando en el búfer.

Si fuera una cosa de una sola vez, podría hacerse rápidamente por M-: (unhighlight-regexp t)o C-u M-s h u. Pero parece que esto es algo que debe hacer con bastante frecuencia. En ese caso, es mejor envolverlo en una interactivefunción y vincularlo a alguna tecla.

A continuación se muestra una solución propuesta donde my/unhighlight-all-in-bufferestá la función interactiva del contenedor y está vinculada hUen el search-map. Por defecto el search-mapprefijo es M-s. Así que ahora, al igual que los M-s h ulanzamientos unhighlight-regexp, M-s h U(nota la U mayúscula) se lanza 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)

¿Hay una mejor manera de resaltar un símbolo en el punto?

Lo bueno es que no necesita colocar el punto en un símbolo que necesita resaltar.

Simplemente llame M-x unhighlight-regexpo M-s h u(su enlace predeterminado) y presione M-p/ M-nhasta que encuentre la expresión regular del símbolo que necesita para resaltar, y presione Entrar.


4

Otra forma es usar la biblioteca Highlight ( highlight.el), comandos hlt-highlight-symbol-at-pointy hlt-unhighlight-symbol-at-point.

Están vinculados por defecto a C-x X h sy C-x X u s, respectivamente. Todos los comandos de resaltado y resaltado están vinculados en la tecla de prefijo C-x Xde forma predeterminada. Los comandos de resaltado usan la tecla de prefijo C-x X h. Unhighlighting comandos utilizan tecla prefijo C-x X u. Puede usar una clave de prefijo diferente que C-x Xsimplemente vinculándola al comando de prefijo hlt-map.

Resaltado en la biblioteca Highlight puede usar superposiciones o propiedades de texto (o ambas). La cara o el color de resaltado se puede elegir automáticamente (de una secuencia personalizada de caras y colores) o no.

El resaltado puede usar la propiedad font-lock-face, de modo que se controla mediante el modo de bloqueo de fuente. O puede usar la propiedad face, para que no sea controlada por ella. (Puede usar la propiedad facepara resaltar en buffers que no usan bloqueo de fuente, y el resaltado permanece en buffers de bloqueo de fuente cuando desactiva el modo de bloqueo de fuente).


4

C-u C-x w r

(unhighlight-regexp REGEXP) (...) Si REGEXP es t (o si C-u se especificó de forma interactiva), elimine todo el resaltado de bloqueo alto.


0

Esto resaltará un solo símbolo:

(defun unhighlight-symbol-at-point ()
  "Remove highlight of symbol at point."
  (interactive)
  (unhighlight-regexp (concat "\\_<" (thing-at-point 'symbol) "\\_>")))
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.