emacs/elisp:哈希(磅,数字符号,八角形)符号用于啥?

Posted

技术标签:

【中文标题】emacs/elisp:哈希(磅,数字符号,八角形)符号用于啥?【英文标题】:emacs/elisp: What is the hash (pound, number sign, octothorp) symbol used for?emacs/elisp:哈希(磅,数字符号,八角形)符号用于什么? 【发布时间】:2011-02-11 16:51:08 【问题描述】:

这是做什么的?

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

...和它有什么不同

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

【问题讨论】:

【参考方案1】:

没有区别:

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

收益t

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

一般在printed representation 中与左尖括号(

#<buffer foo.txt>

它也被读者用在构造中来表示循环结构。请参阅Read Syntax for Circular Objects 的文档。

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

我相信还有更多。

【讨论】:

根据this article,将# 应用于单个符号的一个很好的理由是,如果该符号未定义,则在编译时进行诊断。 “在符号的情况下没有什么可编译的”并不完全正确。字节编译器将#'car 解释为“我总是指的是函数‘foo’,而不是符号foo。”然后它实际上可以在字节编译的输出中内联 foo 的定义。 (编辑:不,这实际上是错误的。#'symbol 不会与 'symbol 进行任何不同的字节编译——它只是一个意图标记。) 也许还提到'symbol在语法上代表(quote symbol)#'symbol代表(function symbol)【参考方案2】:

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

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

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

d m elisp RET(打开elisp手册)

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

【讨论】:

【参考方案3】:

我在搜索我在 hacking 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!")

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

如果您使用字体锁定模式,使用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))

所以你可以创建类似的东西:

【讨论】:

以上是关于emacs/elisp:哈希(磅,数字符号,八角形)符号用于啥?的主要内容,如果未能解决你的问题,请参考以下文章

Emacs日常 2021/4/30

14pt字体大小是啥意思啊?

三角形的优雅值(map和哈希表)

sql中的#是啥意思?

Franchise 字体中缺少磅符号导致其损坏

在 ColdFusion 中显示和/或使用无效的表单字段,如果您只是尝试用磅符号包装它们