emacs / elisp:什么是散列(英镑,数字符号,octothorp)符号用于?

这是做什么的?

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

…和它不同

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

没有区别:

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

产生t

#可以在lambdaexpression式前面使用,向字节编译器指示下列expression式可以被字节编译,参见匿名函数的文档。 但是在符号的情况下没有什么可以编译的。

一般来说,它在打印的表示中与左尖括号(<)一起用来指示打印的对象是描述(但不能被读取)。 例如:

 #<buffer foo.txt> 

读者也可以用它来表示圆形结构。 有关循环对象的读取语法,请参阅文档。

然后你可以用它来表示整数的基数 ,例如#x2c -> 44

再加上我确定。

我发现这个问题,同时search什么哈希意味着什么,而我发现黑客mode-line-format

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

这是用于string中的文本属性的格式,其中:

  • "-%-" ,要文本化的文本:一个破折号和一个%-construct ,导致“破折号足以填充模式行的其余部分”,导致着名的Emacs ------
  • 0 ,文本属性适用的第一个字符。
  • 3 ,文本属性应用的最后一个字符, 整个"-%-"
  • (help-echo "...") ,一个属性和一个string作为参数。

这可以通过propertize函数来创build:

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

(插入(定性“悬停在我身上!”'help-echo'“恭喜!”))

会和#("Hover over me!" 0 14 (help-echo "Congratulations!"))

小例子。

如果你使用的是字体locking模式,使用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)) 

所以你可以创build类似于:

为多个属性显示相应的属性函数。

应该是全面的列表可以在Emacs lisp参考索引的顶部find。

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

  • Mx info RET (打开信息浏览器)

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

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