【问题标题】: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)

【问题讨论】:

    标签: emacs elisp


    【解决方案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))
      

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-07-26
        • 1970-01-01
        • 2013-08-09
        • 1970-01-01
        • 2011-08-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多