Dormir en una macro kbd

7

Estaba completando los koans de Python en emacs, y estaba usando una macro kdb para probar mis cambios en un búfer de shell y volver al código de Python. Quería tomar el número de línea del siguiente error del búfer de shell para poder saltar directamente a él, pero debido a que la ejecución tomó un momento, eliminó el resultado anterior.

¿Cómo puedo insertar una pausa en una macro mientras la estoy grabando?

Matthew Piziak
fuente

Respuestas:

5

Puede intentar evaluar (sleep-for n)mientras ejecuta su macro, usando M-:. Esto hace que el subproceso principal de Emacs se suspenda, por lo que retrasará el resto de sus acciones de macro, pero no debería afectar la obtención de la salida de otros procesos como Python.

Tenga en cuenta que esto puede causar un comportamiento extraño con el cursor si obtiene un resultado de impresión (como el resultado de un proceso de Python). Aún debe obtener toda su salida, pero el cursor puede dejar de seguir el final. Por lo menos, eso me ha sucedido a veces al probarlo ahora.

Tikhon Jelvis
fuente
1

Supongo que por la descripción, ¿estás ejecutando python en el búfer de shell? Puede tener más sentido ejecutar python como un comando síncrono, o al menos usarlo compilepara ejecutar python.

Si usa compile, creo que es más fácil vincular una clave a eso y luego usar C-x `( command-next-error) o M-g n, M-g p( next-error, previous-error) para saltar a través de los errores con el análisis de errores incorporado.

Acabo de probar usando el incorporado python-mode, y C-c C-cejecuta lo python-shell-send-bufferque inicia Python y le envía el búfer. El shell de Python parece ser consciente de errores, por lo que las llamadas repetidas C-x `saltarán a cada línea con un error.

¿No estoy entendiendo lo que quieres decir con "matar la salida anterior"? ¿Estás tratando de superar los errores mientras ejecutas el programa simultáneamente?

dgtized
fuente
Gracias por su respuesta. Como la otra respuesta aborda la pregunta general en el título, estoy obligado a aceptarla. Sin embargo, abordaron con mayor precisión mi problema individual y estoy muy agradecido por eso.
Matthew Piziak