Cómo depurar Helm


7

Tengo algunos problemas con el timón, por lo que me he debug-on-erroresforzado por localizar el problema. Ahora, cuando se produce el problema, el *Backtrace*búfer aparece como se esperaba, pero todavía estoy en uno de los modos principales de timón y no puedo navegar por el búfer de seguimiento y depurar normalmente.

El modo principal todavía está usando el minibúfer, y también parece estar "robando" mis secuencias clave y evitando que me depure. Cuando salgo de helm-mulit-occuren progreso, el búfer de traza inversa se borra y no puedo continuar con la depuración.

¿Hay alguna manera de "pausar" un modo principal mientras se mantiene el depurador elisp en funcionamiento para que pueda depurarlo normalmente?


¿Qué función está activando la traza inversa? Solía debug-on-entryen helm(debug-on-error no se activaría ya que no había errores) y todavía puedo depurar.
Vamsi

@Vamsi: estoy usando helm-multi-occury el error específico que está ocurriendo algún tiempo después de que el timón se ejecuta correctamente es helm-interpret-value: Symbol must be a function or a variable.
nispio

En el mapa de teclas de este modo principal, vincule la tecla f5 a otra ventana. Entonces deberías poder alejarte de él. Además, establezca enable-recursive-minibuffers en t.
Malabarba

@Malabarba: el comando other-windowno hace nada en este modo, y el minibúfer parece tener siempre el foco. C-h mestá asignado al comando, helm-helppero la ejecución manual describe-modeme dice que estoy dentro minibuffer-inactive-mode.
nispio

1
Al observar la traza inversa, debería poder saber qué función está llamando a helm-interpret-value. Entonces puedes Edebug y descubrir qué está sucediendo.
Malabarba

Respuestas:


3

El comando helm-toggle-suspend-updateestá vinculado C-!por defecto. No cierra el timón ni finaliza la actualización recursiva, pero temporalmente hace que el modo de timón sea mucho menos "invasivo". Suspender las actualizaciones evitará que el timón "robe" toda la entrada del teclado y el mouse, lo que puede permitirle depurar el proceso del timón en otra ventana.


2

No es posible "pausar" un modo principal, pero como se sugiere en los comentarios a sus preguntas, debería ser posible alejarse del búfer que activó el error y al búfer de retroceso. Si el modo del búfer donde ocurrió el error anula los enlaces globales normales para moverse a otro búfer, entonces agregar la clave explícitamente a su mapa de teclas podría devolverle la capacidad de seleccionar otro búfer.

Sin embargo, también es posible que el modo lea la entrada del usuario de una manera más elegante, lo que hace que sea imposible alejarse. En el caso de un modo / búfer de finalización como helmese podría tener sentido.

Sin embargo, es posible que pueda simplemente abandonar helmy luego ir a *Backtrace*. El búfer ya no se mostrará en una ventana, pero aún debe existir y contener la última traza inversa. Usted menciona que el "búfer de traza inversa se borra"; ¿El búfer simplemente desaparece o su contenido se borra realmente? En el último caso, es posible que desee abrir un problema en el helmrepositorio, ya que esto podría considerarse un error.


Mientras el timón todavía está activo, he intentado hacer clic en el búfer de traza inversa, volver a vincular las secuencias de teclas y llamar M-x other-windowdirectamente, pero ninguno de estos me permitirá desviar la atención del minibúfer de finalización del timón. Cuando aparece por primera vez el búfer de rastreo, es la ventana activa, pero casi cualquier pulsación de tecla es "robada" por el timón y me devuelve al modo de finalización. Cuando salgo de timón con C-gel búfer de retroceso se borra, sin información de deshacer.
nispio

1
Parece que Helm usa la edición recursiva (ver (elisp)Recursive Editing. Tiene sentido para un paquete como helmpero también significa que dejar de fumar helm(al invocar regularmente un comando o abortar en su caso) volverá al nivel anterior, lo que hace que se retroceda para perder el nivel actual Así que estabas completamente en el camino correcto. Quizás Helm ya ofrece una solución a esto, revisa sus preguntas frecuentes, de lo contrario, abre un problema. M-x fundamental-modeTambién podría funcionar, aunque también es posible que esto cambie el modo en el búfer incorrecto.
Tarsius

1
error al analizar el comentario anterior: paréntesis incomparable. ;-)
nispio

Realmente no sé a qué te refieres con eso.
tarsius

Por favor cambia el título. En la mayoría de los casos, "depurar modos principales" no causa ningún problema; Este problema es muy específico de Helm.
tarsius
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.