这是什么作用?
(add-hook 'compilation-mode-hook #'my-setup-compile-mode)
...它与...有何不同?
(add-hook 'compilation-mode-hook 'my-setup-compile-mode)
M-x info
RET (打开信息浏览器)
d m elisp
RET (打开Elisp手册)
I #
RET(列出索引中#
的条目)
#("-%-" 0 3
(help-echo "Display as tooltip when mouse hovers or with display-local-help."))
这是一种用于字符串中的文本属性格式,其中:
"-%-"
,要应用属性的文本:一个破折号和一个%-construct,结果为"足以填充模式行的破折号",即著名的Emacs ------
。0
,应用文本属性的第一个字符。3
,应用文本属性的最后一个字符,即整个"-%-"
。(help-echo "...")
,一个属性和一个字符串作为其参数。可以使用propertize
函数创建此格式。
(propertize "Hover over me!" 'help-echo '"congratulations!")
就像是 #("将鼠标悬停在我上面!" 0 14 (help-echo "恭喜你!"))
一样:
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))
propertize
的链接似乎已经失效了。请查看这个链接代替:https://www.gnu.org/software/emacs/manual/html_node/elisp/Text-Props-and-Strings.html - Valer(setq lexical-binding t)
(defun foo () (message "outer"))
(let ((x 5))
(cl-flet ((foo () (message "inner: %d" (+ x x))))
(setq y 'foo)
(setq z #'foo)))
(funcall y)
(funcall z)
outer
inner: 10
cl-flet
宏对#'
,也就是(function ...)
有特殊处理。当你展开它时,你会得到:(let*
((--cl-foo--
(cl-function
(lambda nil
(message "inner: %d"
(+ x x))))))
(progn
(message "%S" #''foo)
(setq y 'foo)
(setq z --cl-foo--)))
#
应用于单个符号的一个好处是,如果该符号未定义,则可以在编译时获得诊断信息。 - ajk'symbol
代表引用(quote symbol)
,而#'symbol
则代表函数(function symbol)
的语法结构。 - tripleee