source - emacs para mac
¿Guía de funciones de Emacs Lisp? (12)
He estado usando Emacs durante más de tres años, pero aún me lleva días escribir incluso pequeñas funciones en Lisp. He consultado el Manual de consulta de GNU Emacs Lisp, pero es enorme y estructurado completamente opuesto a JavaDoc, no de funciones a descripciones, sino al revés.
Lo que hará que mi vida sea mucho más fácil es una especie de pequeño documento similar a JavaDoc con las funciones internas más utilizadas de Emacs y su descripción rápida.
(point) - returns current position in buffer (save-excursion (p)) - saves current position in buffer before executing (p) and restores it afterward.
¿Alguien sabe dónde puedo encontrar algo así?
Buenas sugerencias de otros: el sistema de ayuda de Emacs es tu amigo. En adición:
¿Has probado <f1> f
? Está obligado a describe-function
. Ejemplo con point
:
point is a built-in function in C source code.
(point)
Return value of point, as an integer.
Beginning of buffer is position (point-min).
[back]
Como la mayoría del sistema Lisp, ¡Emacs tiene una herramienta de documentación integrada!
- Cualquier función o variable Lisp puede declarar una cadena de documentación opcional.
- Casi todos los comandos o funciones estándar declaran una cadena de documentación útil.
- Emacs (como la mayoría de los sistemas Lisp) le permite visualizar la cadena de documentación de cualquier función o variable (
<f1> f
y<f1> v
) en cualquier momento. - Cuando se muestra, la cadena de documentación es navegable, lo que significa que puede hacer clic en los símbolos para ver su cadena de documentación, o ir a la fuente de la función o variable correspondiente.
- Tan pronto como evalúe cualquier
defun
odefvar
, su cadena de documentación está disponible a través dedescribe-function
odescribe-variable
: ¡este documento está activo!
¿Has probado el manual de instalación en emacs? Abra cualquier buffer lisp (o cualquier buffer en modo lisp), mueva su punto a cualquier función o variable, y presione Ch f (para la función) o Ch v (para variable). Emacs le dará una descripción bastante concisa de la función / variable.
Por ejemplo, el contenido manual para (save-excursion) es
save-excursion is a special form in `C source code''.
(save-excursion &rest BODY)
Save point, mark, and current buffer; execute BODY; restore those things.
Executes BODY just like `progn''.
The values of point, mark and the current buffer are restored
even in case of abnormal exit (throw or error).
The state of activation of the mark is also restored.
This construct does not save `deactivate-mark'', and therefore
functions that change the buffer will still cause deactivation
of the mark at the end of the command. To prevent that, bind
`deactivate-mark'' with `let''.
Lo bueno también es que el manual incorporado le da "enlace" al código fuente de la función y a otras funciones que podrían estar relacionadas, lo que hace que sea agradable navegar por ahí.
Por supuesto, no se puede aprender el ceceo de esta manera, pero para buscar la documentación de la función, este es un buen comienzo. Cuando encuentre que el manual incorporado no es comprensible (lo que a veces sucede), entonces es hora de que google la función;)
Este sitio tiene información de resumen de emacs lisp que puede ser útil: http://xahlee.org/emacs/elisp.html .
En particular, consulte estos enlaces en esa página: Funciones básicas de edición de texto , Emacs Lisp Idioms y procesamiento de texto por lotes
La Introducción de GNU a emacs lisp es ciertamente más accesible que el manual de referencia.
Si estás dispuesto a gastar dinero en un árbol muerto, te recomendaría
Aprendiendo GNU Emacs http://oreilly.com/catalog/covers/0596006489_cat.gif
Yo agregaría un par de cosas:
Mx apropos
- busca funciones y variables para cualquier cadena que especifique (por ejemplo, directorio). Tenga en cuenta que esto es ligeramente diferente deCh a
, que solo encuentra funciones interactivasencuentre una pieza similar de código y cópiela: puede aprender muchísimo sobre cómo hacer las cosas al observar lo que ya se hizo. Si tiene una función en particular de la que desea ver ejemplos, una buena forma es visitar el directorio de origen de lisp principal en dired (p. Ej. D: / product / emacs / lisp o / usr / share / lib / emacs / lisp) y hacer
% g
que grep pasará por todos los archivos buscando cualquier cadena que escriba. Abra ese archivo y vea lo que otras personas han hecho con él.Ch f
yCh v
- como alguien más mencionó, puede abrir el origen, el punto de posición sobre una función o variable y luego obtener documentación sobre él.Echa un vistazo a la wiki de Emacs , que tiene una gran cantidad de módulos de ceceo de Emacs para que puedas leer detenidamente.
Creo que estás tomando el enfoque equivocado. Al aprender un lenguaje de programación y un conjunto de bibliotecas (colectivamente, "Emacs Lisp"), debe abordarlo tanto en la escala micro como en la macro. Antes de que pueda comenzar a escribir software, necesita saber qué herramientas tiene disponible. Eso es en lo que el manual de Emacs Lisp pretende educarlo. Realmente necesitas sentarte y leer todo. De esta forma, sabrá qué funciones ofrece Emacs.
Después de hacer eso, necesita información de "nivel micro". Hay varias fuentes que proporcionan esto. Si tiene una idea general de lo que debe hacer ("trabajar con memorias intermedias"), la referencia de Lisp es un buen lugar para descubrir lo que necesita saber. Si sabes que hay una función que hace lo que quieres, pero no recuerdas el nombre, entonces Mx apropos
( Cu Ch a
) te ayudará a buscar la documentación. Si sabe qué función desea usar, pero no recuerda exactamente cómo funciona, entonces Mx describe-function
( Ch f
) lo resolverá por usted.
De todos modos, la clave es aprender Emacs Lisp y luego dejar que Emacs lo ayude con los detalles. Una lista de funciones no te enseñará mucho.
(Ah, una cosa más: debe familiarizarse con Common Lisp. La mayoría de las bibliotecas de Emacs usan cl
, que son las útiles funciones CL implementadas en Emacs Lisp. loop
, destructuring-bind
, defun*
, etc. están todas allí, y son muy útiles.)
Para entender qué sucede, a menudo es útil echar un vistazo al código fuente.
http://repo.or.cz/w/elbb.git/blob/HEAD:/code/Go-to-Emacs-Lisp-Definition.el
En XEmacs, y también creo en Emacs, presionar Ch f, luego la tecla de tabulación para completar la tabulación, que en ese punto son todas las funciones, le dará una lista de funciones que el editor conoce.
Simplemente use las teclas del cursor y desplácese hasta la que desea conocer y presione enter para ver los detalles.
Si una lista de funciones, con más información disponible, es lo que desea, se la dará a usted.
Esta lista es todas las funciones disponibles actualmente, de modo que si tiene paquetes de lisp instalados, muestra las funciones que proporcionan esos paquetes así como las funciones nativas. En mi copia de XEmacs, hoy tengo 6,586 funciones en la lista. Emacs será similar.
El problema es que no todas las funciones tienen nombres que las hacen significativas para el contexto (es decir, no todas las variables / funciones del menú tienen el menú de palabras en ellas, por lo que extrañará algunas cosas si solo usa nombres).
Puede usar las páginas INFO (en el menú) para verlas más ordenadas de forma tópica y obtener la misma información de uso.
Descargue el código fuente de Emacs. Vaya a src / folder y escriba:
grep -r DEFUN *
Obtendrás una lista de todas las funciones primitivas de Lisp de Emacs.
Mx find-library RET <nombre de la biblioteca> es todo lo que necesitas