emacs / elisp:用于的哈希(井号,数字符号,octothorp)符号是什么?

时间:2010-04-23 20:14:03

标签: emacs elisp

这是做什么的?

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

......与

不同
(add-hook 'compilation-mode-hook 'my-setup-compile-mode)

3 个答案:

答案 0 :(得分:84)

没有区别:

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

收益t

可以在#表达式前面使用lambda,向字节编译器指示以下表达式可以进行字节编译,请参阅Anonymous Functions的文档。但是在符号的情况下没有什么可编译的。

通常,它在printed representation中与左尖括号(<)一起使用,以指示打印的对象是描述(但不能读取)。例如:

#<buffer foo.txt>

它也被读者用于构造中以表示圆形结构。请参阅Read Syntax for Circular Objects的文档。

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

另外我更确定。

答案 1 :(得分:23)

我在搜索哈希mode-line-format时发现的哈希含义时发现了这个问题:

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

这是用于text properties in strings的格式,其中:

  • "-%-" ,有资格的文字:一个破折号和一个%-construct导致“破折号足以填充模式行的剩余部分”,从而产生了着名的Emacs ------
  • 0 ,文本属性适用的第一个字符。
  • 3 ,文本属性适用的最后一个字符,整个"-%-"
  • (help-echo "...") ,属性和字符串作为参数。

可以使用propertize function

创建
(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.

如果您使用字体锁定模式,使用buffer-substring命令可能会产生如下内容:

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

答案 2 :(得分:20)

可以在Emacs lisp reference index

的顶部找到应该是全面的列表

编辑:或者更方便,从Emacs内部开始:

  • M-x info RET (打开信息浏览器)

  • d m elisp RET (打开elisp手册)

  • I # RET (列出索引中#的条目)