Quiero ver la definición de una función existente en Emacs. es posible?
Lo intenté C-h d function-name RET, pero solo devuelve la cadena de documentación para la función, no la función en sí misma.
Estoy pensando en algo similar al typecomando de bash , que devolverá la definición completa de una función.
(Historia de fondo vergonzosa: accidentalmente escribí sobre una función que funcionaba en mi .emacsarchivo con una versión que no funcionaba. ¡La función original todavía está en la memoria! ¡Y funciona! Pero por mi vida no puedo recordar cómo lo hice).

.emacsabierto en un búfer, intente deshacerlo como loco.Respuestas:
Si escribe
C-h f function-name RET, obtendrá la documentación de la función, con un enlace a la fuente de la función si está disponible.No creo que haya una función Lisp fácil a la que pueda llamar para recuperar la ubicación de la fuente de una función; la búsqueda está bastante entrelazada con el resto del sistema de ayuda.
find-lisp-object-file-namees la función principal que intenta averiguar dónde está la fuente de una función.A menos que
function-namesea una primitiva (definida en la fuente C de Emacs), puede ver su código con(symbol-function 'function-name), o más generalmente (nombre-función-función-indirecta). Sin embargo, si la función fue compilada por bytes, todo lo que verá es su código de bytes.fuente
(symbol-function 'function-name)es exactamente lo que estaba buscando! Además, parece que si realmente necesita la fuente para las funciones C, puede obtenerla utilizando la información de la respuesta de Oleg.M-x find-functiondevuelve la definición de la función cerca del punto.De la documentación:
Si desea incluir también funciones implementadas en C, debe agregar lo siguiente a su archivo .emacs:
fuente