Buscar a través de los valores de todas las variables en Emacs

9

Me gustaría encontrar qué variables contienen un cierto valor.

¿Hay alguna manera de hacer una búsqueda de expresiones regulares a través de los valores de cada variable en Emacs?

izkon
fuente

Respuestas:

12

¿Hace apropos-valuelo que estás buscando?

(apropos-value PATTERN &optional DO-ALL)

Show all symbols whose value’s printed representation matches PATTERN.
PATTERN can be a word, a list of words (separated by spaces),
or a regexp (using some regexp special characters).  If it is a word,
search for matches for that word as a substring.  If it is a list of words,
search for matches for any two (or more) of those words.
genehack
fuente
3

El comando Iciclesicicle-apropos-value mejora el comando vanilla apropos-value, al permitirle hacer coincidir simultáneamente el nombre y el valor de la variable con expresiones regulares (o subcadenas u otros patrones). No necesitas unirlos a ambos, pero puedes unirlos a ambos.

Y (como con la finalización de todos los Icicles) puede hacer coincidir el nombre o el valor o ambos progresivamente , es decir, utilizando múltiples patrones de forma incremental. Esto es particularmente importante para un caso en el que, como usted dice, está haciendo coincidir con todas las variables en Emacs, para empezar. Es decir, no te importa hacer coincidir los nombres; solo quieres hacer coincidir los valores.

Para hacer coincidir tanto el nombre como el valor, simplemente use C-M-jpara finalizar el patrón de nombre y comenzar el patrón de valor. Entonces, para hacer coincidir solo los valores, comienza con C-M-jy luego escribe el patrón de valor, ya que el patrón de nombre está vacío.

Por ejemplo, para ver todas las variables cuyo valor actual coincide nil( S-TABmuestra coincidencias):

M-x icicle-apropos-value RET

SYMBOL C-M-j VALUE: C-M-j nil S-TAB

Para ver todas las variables cuyo valor actual coincide con regexp .*plist:

SYMBOL C-M-j VALUE: C-M-j .*plist S-TAB

Las variables coincidentes y sus valores se muestran en el búfer *Completions*, como candidatos de finalización. Puede desplazarse entre los candidatos, haciendo que cada uno actual, a su vez, con las teclas de flecha verticales-: <down> <down> <down>....

La primera línea de cadena de documentación para el candidato de finalización actual se muestra en la línea de modo de *Completions*.

Puede obtener una descripción completa (es decir, C-h v) del candidato actual utilizando una tecla de ayuda: C-M-mouse-2o C-M-RET. Para ver ayuda sobre cada candidato por turno, use las teclas de flecha con C-M-(por ejemplo, repetir C-M-<down>).

Ver Multi-Comandos Variable-A propósito de Value-Aware .

C-h f icicle-apropos-value dice esto:

icicle-apropos-valuees una función Lisp compilada interactiva en icicles-cmd1.el.

Se ve obligada a menu-bar help-menu apropos icicles icicle-apropos-value, menu-bar help-menu apropos apropos-var-value, menu-bar help-menu search-documentation find-option-by-value.

(icicle-apropos-value)

Elija una variable, función u otra descripción de símbolo.

Esto es similar al comando vanilla apropos-value, pero puede coincidir con el nombre de la variable y su valor impreso al mismo tiempo.

Por defecto, cada candidato de finalización está compuesto por múltiples finalizaciones compuesto por un nombre de variable más su valor. Están separados por icicle-list-join-string( "^G^J", por defecto).

Con un prefijo arg, los candidatos son diferentes tipos de símbolos:

  • <0: funciones y sus defs (pero se omiten las defs compiladas en bytes)
  • > 0: símbolos y sus listas
  • = 0: variables y sus valores, funciones y sus definiciones, y otros símbolos y sus listas

  • plain ( C-u): usa el último conjunto de candidatos (en caché ) calculado

Puede usar C-$durante la finalización para alternar el filtrado del dominio de los candidatos iniciales según el argumento del prefijo, de la siguiente manera:

  • ninguno: solo opciones de usuario (+ valores)
  • <0: solo comandos (+ definiciones)
  • > 0: solo caras (+ listas)
  • = 0: solo opciones (+ valores), comandos (+ defs), caras (+ listas)

Ver también:

  • icicle-apropos-vars-w-val-satisfying, icicle-describe-vars-w-val-satisfying- los valores satisfacen un predicado
  • icicle-plist - similar a este comando con prefijo positivo arg
  • icicle-vardoc, icicle-fundoc, icicle-doc- nombre de coincidencia y doc
  • icicle-apropos-options-of-type, icicle-describe-option-of-type- nombre del partido y tipo personalizado

Debido a que a menudo usará este comando en contextos que resultan en muchos, muchos candidatos de finalización, lo siguiente está desactivado de manera predeterminada para este comando:

  • Modo incompleto Puede alternar esto usando M-i M-#.
  • Carámbanos de terminación incremental. Puede realizar un ciclo con esto M-i #.

Lea la entrada, luego llame icicle-doc-actionpara actuar en consecuencia.

La entrada-candidato de finalización y ciclismo están disponibles. Durante el ciclismo, estas teclas con prefijo C-están activas:

C-mouse-2, C-return- Actuar solo con el candidato de finalización actual C-down, C-wheel-down- Pasar al siguiente candidato de finalización y actuar C-up, C-wheel-up- Pasar al candidato de finalización anterior y actuar C-next - Pasar al siguiente candidato y finalizar C-priora propósito anterior - Pasar al candidato y finalizar a propósito anterior C-end - Actuar a siguiente candidato y finalización de prefijo - Actuar C-home - Pasar al candidato y completar anterior de prefijo C-! - Actuar sobre todos los candidatos, sucesivamente (¡cuidado!)

Cuando se combinan la acción del candidato y el ciclismo (p C-next. Ej. ), La opción del usuario icicle-act-before-cycle-flagdetermina qué ocurre primero.

Con el prefijo C-M-en lugar de C-, las mismas teclas ( C-M-mouse-2, C-M-RET, C-M-down, etc.) proporcionan ayuda acerca de los candidatos.

Use mouse-2, RETo S-RETpara finalmente elegir un candidato, o C-gpara dejar de fumar.

Dibujó
fuente