Estoy desarrollando un modo principal para Emacs. ¿Hay alguna forma en que pueda establecer un punto de interrupción en el código fuente cuando ocurre la creación de fuentes, por ejemplo?Depurar Emacs Lisp modo principal
Respuesta
Encuentra la fuente Lisp de la función por la que deseas pasar y escribe M-x edebug-defun
allí. Luego, cada vez que se ejecute esa función, se te colocará automáticamente en Edebug, donde puedes pasar si lo deseas.
Las funciones de fuentes pueden ser un poco complicadas, ya que se pueden invocar en momentos impares. Puede usar la función message
para escribir mensajes en el buffer *Messages*
. Otro truco es desactivar Font Lock (para que su función no se invoque automáticamente), luego prepare la función que está depurando con edebug-defun
y la invoque manualmente. (Tenga en cuenta que puede usar M-:
(a.k.a. eval-expression
) para invocar una función no interactiva.)
El manual para depurar elisp puede ser found here.
Puede utilizado edebug
como se ha mencionado, también hay M-x debug-on-entry y se puede establecer (setq debug-on-quit t)
. Echa un vistazo a todas las opciones en el enlace, todo depende de cómo quieras despellejar al gato.
Y al igual que en cualquier otro lenguaje de programación, puede depurar con instrucciones de impresión. (message "here, foo=%d" foo)
es tu amigo. (Probablemente sepa que estos mensajes se acumulan en el búfer *Messages*
, por lo que si pasan demasiado rápido, eso no es un problema.) trace-function
también es útil.
He escrito muchos modos de emacs y rara vez he necesitado el depurador. Por lo general, el problema se expone a sí mismo con unas pocas declaraciones impresas bien colocadas.
En principio, un depurador es simplemente una máquina glorificada de 'insertar-imprimir-declaración' pero automatiza la tarea para usted, sin estropear el código mismo . Y encontraría esa funcionalidad útil para depurar la función elisp que estoy escribiendo, especialmente porque soy bastante nuevo en elisp – Alex
Por otro lado, si desea depurar rápidamente algunos fragmentos de lisp, quizás quiera usar el modo ielm también, que funciona como, por ejemplo, el modo interactivo de python.
En lugar de edebug
puede usar debug
. Para abrir el depurador al ingresar a una función, use M-x debug-on-entry THE-FUNCTION
. O inserte llamadas a la función debug
en el código fuente para servir como puntos de interrupción (vuelva a evaluar el código).
Sin embargo, la creación de fuentes en realidad tiene lugar en momentos extraños, que implica la redisposición, etc. Si realmente necesita depurar el proceso de la fuente, puede usar funciones, no solo expresiones regulares, en font-lock-keywords
.
Pero realmente tendrá que ser más específico sobre los problemas de depuración de font-lock. Por lo general, los problemas que tienen las personas son (a) comprender font-lock-keywords
(la estructura) y (b) expresiones regulares que no coinciden con lo que desean.
De todos modos, para responder a su pregunta sobre * puntos de ruptura ": Sí, basta con insertar (debug)
en cualquier punto que se desee en el código fuente Lisp El depurador se introducirá en ese punto
- 1. emacs - autocompletado en modo Emacs Lisp
- 2. emacs lisp, ¿cómo obtener el modo principal de búfer?
- 3. Modo principal GLSL para Emacs?
- 4. Modo principal de Javascript en Emacs
- 5. cómo anular funciones en emacs lisp para modo específico?
- 6. Cómo depurar Emacs lisp que hace que Emacs se bloquee/use 100% de CPU?
- 7. ¿Uso correcto de aplicar en Emacs Lisp?
- 8. modo palangres en Emacs
- 9. Emacs pitón modo
- 10. ¿Cómo volver a cargar un modo principal de emacs?
- 11. PINTURA en Emacs Lisp?
- 12. Emacs sin Lisp
- 13. Análisis en Emacs Lisp
- 14. biblioteca emacs lisp para formularios de entrada?
- 15. ¿Qué significa [...] # en emacs-lisp?
- 16. intérprete Lisp/Scheme sin Emacs?
- 17. Emacs Lisp resaltado de sintaxis
- 18. ¿Puedo usar fácilmente Lisp sin Emacs?
- 19. GNU Emacs: modo esqueleto, ¿todavía se usa?
- 20. Emacs: métodos para depurar python
- 21. Emacs: métodos para depurar python
- 22. Ocaml - Modo tuareg Emacs
- 23. Pregunta del modo Emacs
- 24. Modo Emacs para R?
- 25. Diferencia de estructura entre lisp común y emacs lisp
- 26. Emacs Lisp: ¿Cómo, un búfer interactivo con REPL?
- 27. ¿Qué tan viable es emacs LISP además de editar emacs?
- 28. Ayuda escribiendo emacs lisp para emacs etags search
- 29. Técnicas de solución de problemas para Emacs y Emacs Lisp
- 30. ¿Cómo agrego las fechas en Emacs usando Emacs Lisp?
Sí, esto funciona para mi guión.. -región, pero, como advierte, ¡no para la función de la fuente! Gracias. – Alex