web-dev-qa-db-fra.com

emacs / elisp: à quoi sert le symbole de hachage (livre, signe numérique, octothorphe)?

Qu'est-ce que cela fait?

(add-hook 'compilation-mode-hook #'my-setup-compile-mode)

... et est-ce différent de

(add-hook 'compilation-mode-hook 'my-setup-compile-mode)
95
Cheeso

Il n'y a pas de différence:

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

donne t

Le # peut être utilisé devant une expression lambda indiquant au compilateur d'octets que l'expression suivante peut être compilée en octets, voir les documents pour Fonctions anonymes . Mais il n'y a rien à compiler dans le cas d'un symbole.

En général, il est utilisé dans le représentation imprimée avec le crochet angulaire gauche (<) pour indiquer que l'objet imprimé est une description (mais ne peut pas être lu). Par exemple:

#<buffer foo.txt>

Il est également utilisé dans les constructions par le lecteur pour représenter des structures circulaires. Voir les documents pour Lire la syntaxe des objets circulaires .

Et puis vous avez son utilisation pour désigner la base pour les entiers , par exemple #x2c -> 44.

Et plus j'en suis sûr.

93
Trey Jackson

La liste devrait être exhaustive se trouve en haut de index de référence Emacs LISP .

Edit : Ou encore plus commodément, depuis Emacs lui-même:

  • M-xinfo RET (ouvrez le navigateur d'informations)

  • dmelisp RET (ouvrez le manuel elisp)

  • I# RET (répertoriez les entrées pour # dans l'index)

25
phils

J'ai trouvé cette question en cherchant ce que le hachage signifiait dans quelque chose que j'ai trouvé en piratant mode-line-format:

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

qui est un format utilisé pour propriétés de texte dans les chaînes où:

  • "-%-", texte à propertiser: un tiret et un % - construction qui se traduit par "des tirets suffisants pour remplir le reste de la ligne de mode ", ce qui donne les fameux Emacs ------.
  • 0, le premier caractère auquel s'appliquent les propriétés du texte.
  • 3, le dernier caractère auquel s'appliquent les propriétés du texte, ie le tout "-%-".
  • (help-echo "..."), une propriété et une chaîne comme argument.

Cela peut être créé avec la fonction propertize :

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

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

serait identique à #("Hover over me!" 0 14 (help-echo "Congratulations!")):

Small example.

Si vous utilisez le mode de verrouillage des polices, l'utilisation de la commande buffer-substring Peut produire quelque chose comme ceci:

(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))

Vous pouvez donc créer quelque chose comme:

Showing the corresponding propertize function for multiple properties.

23
Iceland_jack