Pregunta ¿Qué significan estos símbolos en Emacs Lisp?


Cuando leí un código elisp, encontré algo como:

(\,(* 2 \#1)) 

\,(format "%s %s id%d %s" \1 \2 (+1 \#) \3)

#'(bla bla)

¿Qué significa el símbolo como "\,", "#", "# '"? ¿Qué sesión debo examinar para ese tipo de cosas?


5
2018-05-02 10:52


origen


Respuestas:


\, Es especial en reemplazos al usar query-replace-regexp. Significa "evaluar la siguiente expresión elisp y usar el valor resultante en el reemplazo".

nótese bien. No es especial en ningún otro lugar (que yo sepa), así que ese debería ser el uso que hayas visto.

\# también es especial en la cadena de reemplazo, y se sustituye con el número de reemplazos realizados hasta el momento. (es decir, un contador incremental).

\#N (donde N es un número) es una variante de \N que trata al grupo en cuestión como un número en lugar de una cadena, lo cual es útil cuando la expresión que estás evaluando requiere un número.

Asi que (\,(* 2 \#1)) Sería un reemplazo que evalúa la expresión. (* 2 \#1), multiplicando el número que coincide con el primer grupo de la expresión regular por 2 para producir algún valor N, de modo que el reemplazo final sea (N).

Puede encontrar estos detallados en el manual.

C-hyogramo  (emacs)  RETIRADO seguido de una búsqueda de la sintaxis en cuestión. p.ej. C-s  \, con una repetida C-s si la búsqueda falla (como lo hará) para encontrar una coincidencia en los nodos posteriores.

#'... es de corta duración para (function ...) que es una variante de '... / (quote...) que indica que el objeto citado es una función.

Como esta es una sintaxis elisp, la encontrará en el manual de elisp:

C-hyogramo  (elisp)  RETIRADO

Puedes usar C-s  #' o en este caso está indexado, por lo que yo  #'  RETIRADO también funciona

(En general, compruebe primero el índice y luego use isearch).


10
2018-05-02 11:14



Para obtener información sobre las comillas invertidas, consulte http://www.gnu.org/software/emacs/manual/html_node/elisp/Backquote.html.

# inicia la sintaxis del lector, por ejemplo # 'es un alias de lector para function. Para más información, ver http://definitelyaplug.b0.cx/post/emacs-reader/ 


-1
2018-05-02 11:12



El # 'es una mano corta para usar funciones, para más detalles vea aquí: http://www.gnu.org/software/emacs/manual/html_node/elisp/Anonymous-Functions.html

La barra invertida \ tiene dos funciones: cita los caracteres especiales (incluido ‘\ ') e introduce construcciones especiales adicionales. Más aquí: https://www.gnu.org/software/emacs/manual/html_node/emacs/Regexps.html#Regexps


-1
2018-05-02 11:15