Emacs/elisp: 散列符号(井号、数字符号、 octothorp)用来表示什么?

这是干什么的?

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

它和

(add-hook 'compilation-mode-hook 'my-setup-compile-mode)
17195 次浏览

这两者没有区别:

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

收益率为 t

#可以用在 lambda表达式的前面,指示字节编译器可以对以下表达式进行字节编译,请参阅 匿名函数的文档。但是在符号的情况下没有要编译的内容。

通常,在 印刷表示法中,它与左尖括号(<)一起用来表示打印的对象是一个描述(但无法读取)。例如:

#<buffer foo.txt>

读者也可以在构造中使用它来表示圆形结构。

然后你可以用它来表示 base for integers,例如 #x2c -> 44

我肯定还有更多。

应该全面的清单可以在 Emacs lisp reference index的顶部找到。

编辑 : 或者更方便地从 Emacs 本身:

  • M-x info RET (open the info browser)

  • d m elisp RET (open the elisp manual)

  • I # RET (list the entries for # in the index)

我发现这个问题时,搜索散列意味着什么,我发现的东西,而黑客 mode-line-format:

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

这是 字符串中的文本属性使用的格式,其中:

  • "-%-" ,文本要适当调整: 一个破折号和一个 %-构造,结果是“破折号足以填满模式行的其余部分”,从而产生了著名的 Emacs ------
  • 0 ,应用文本属性的第一个字符。
  • 3 ,文本属性应用于的最后一个字符,也就是说。是整个 "-%-"
  • (help-echo "...") ,一个属性和一个字符串作为它的参数。

This can be created with the propertize功能:

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

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

将与 #("Hover over me!" 0 14 (help-echo "Congratulations!"))相同:

Small example.

If you're using font lock mode, using the buffer-substring command might produce something like this:

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

所以你可以创建这样的东西:

Showing the corresponding propertize function for multiple properties.