2010-04-23 6 views

Respuesta

67

No hay diferencia:

(eq 'my-add #'my-add) 

produce t

El # se puede utilizar en frente de un lambda expresión que indica al compilador de bytes que el siguiente exp la ression puede ser compilada por byte, vea los documentos para Anonymous Functions. Pero no hay nada que compilar en el caso de un símbolo.

En general, se usa en el printed representation junto con el corchete angular izquierdo (<) para indicar que el objeto impreso es una descripción (pero no se puede leer). Por ejemplo:

#<buffer foo.txt> 

También se utiliza en construcciones por el lector para representar estructuras circulares. Consulte los documentos para Read Syntax for Circular Objects.

Y luego tiene su uso para denotar el base for integers, p. Ej. #x2c -> 44.

Más, estoy seguro.

+2

Whoa, impresionante. La enciclopedia emacs/elisp. – Cheeso

+9

Según [este artículo] (http://endlessparentheses.com/get-in-the-habit-of-using-sharp-quote.html), una buena razón para aplicar '#' a un símbolo solitario es obtener el diagnóstico en tiempo de compilación si ese símbolo no está definido. – ajk

+2

No es del todo cierto que "no hay nada que compilar en el caso de un símbolo". El compilador de bytes interpreta que # 'car significa' Siempre me estoy refiriendo a la función 'foo', no al símbolo foo ". En realidad, puede alinear la definición de foo en la salida compilada en byte. (Editar: no, eso está realmente mal. # 'El símbolo no se compilará en bytes de forma diferente que' símbolo - es solo un marcador de intención.) –

16

La lista debería ser exhaustiva se puede encontrar en la parte superior de Emacs lisp reference index.

Editar: O incluso más convenientemente, desde dentro de Emacs en sí:

  • MxinfoRET (abrir el navegador de información)

  • dmelispRET (abrir el manual elisp)

  • I#RET (listar las entradas para # en el índice)

16

me encontré con esta pregunta durante la búsqueda de lo que el hash entiende en algo que encontrado, mientras que la piratería mode-line-format:

#("-%-" 0 3 
    (help-echo "Display as tooltip when mouse hovers or with display-local-help.")) 

que es un formato utilizado para text properties in strings whe Re:

  • "-%-", texto que se propertized: un guión y un %-construct que se traduce en "rayas suficiente para llenar el resto de la línea de modo", lo que resulta en la famosa Emacs ------.
  • 0, el primer carácter sobre el que se aplican las propiedades del texto.
  • 3, el último carácter sobre el que se aplican las propiedades del texto, es decir, todo el "-%-".
  • (help-echo "..."), una propiedad y una cadena como argumento.

Esto puede ser creado con el propertize function:

(propertize "Hover over me!" 'help-echo '"congratulations!") 

(insert (propertize "Hover over me!" 'help-echo '"Congratulations!"))

sería el mismo que #("Hover over me!" 0 14 (help-echo "Congratulations!")): modo de bloqueo de fuente

Small example.

Si está utilizando , usando el comandante buffer-substring d podría producir algo como esto:

(buffer-substring 1 28) ; First 27 characters in the current buffer 
⇒ #(";; This buffer is for notes" 
    0 3 
    (fontified t face font-lock-comment-delimiter-face) 
    3 27 
    (fontified t face font-lock-comment-face)) 

por lo que podría crear algo así como:

Showing the corresponding propertize function for multiple properties.

Cuestiones relacionadas