¿Cómo puedo encontrar la función zsh asociada con un widget zle?

¿Cómo puedo encontrar la función zsh asociada con un widget zle?

Estoy jugando con el accept-linewidget y no obtengo los resultados que quiero. Quiero inspeccionar (y registrar) lo que está sucediendo con la línea de aceptación al encontrar la función zsh subyacente.

Según tengo entendido, los widgets zle existen en su propio espacio de nombres separado con las zle -Nclaves de asignación de operación al valor en este espacio de nombres y la operación zle -Aduplica las asignaciones.

Hice una búsqueda bastante detallada dezshzlepágina del manual y busqué un poco en Google, pero lo mejor que se me ocurrió es lo siguiente que utiliza la zle -loperación.

zle -l  | grep '^accept-line ' | grep -Eo '\(.*\)' | tr -d '()'

¿Hay algo que no dependa tan directamente del formato de salida de zle -l.

Respuesta1

Hay una matriz especial llamada widgetsque contiene los nombres de todos los widgets y funciones asociadas a ellos, así que intente

echo $widgets[accept-line]

Sin embargo, tenga en cuenta que algunos widgets se definen internamente y todo lo que obtendrá es una palabra.incorporado, pero a juzgar por tugrepordenar algún script obtenido en.zshrcsobrescribió ese widget, por lo que debería obtener un resultado significativo.

Por cierto, si desea enumerar todos los widgets disponibles y sus funciones, utilice (kv)la bandera:

echo ${(kv)widgets}

información relacionada