输入 C-x r n a
, 将寄存器 a 赋值为0, 通过 M-x view-register
查看到,
但是,通过 M-:
执行 (get-register 'a)
得到的值确实 nil
, 为什么?
请教大家,谢谢!
输入 C-x r n a
, 将寄存器 a 赋值为0, 通过 M-x view-register
查看到,
但是,通过 M-:
执行 (get-register 'a)
得到的值确实 nil
, 为什么?
请教大家,谢谢!
因为 get-register
的参数是 字符码 而不是符号。
你要这样用
(get-register 97)
;; => 0
确实如此,哪里有文档说明类似的用法吗?
比如,这里的 reg 到底要提供什么样类型的值,character? symbol?
-- Function: get-register reg
This function returns the contents of the register REG, or ‘nil’ if
it has no contents.
view-register
从函数的源码里面可以看出它用了个专门的函数把字母转数字,这个函数比较复杂,而且不能直接调用,不过转换标准应该就是 ASCII 码。
用 C-h S get-register
(info-lookup-symbol
) 查看 (elisp) Registers:
Each register is named by a single character … The object NAME is a character (an integer) identifying the register.
为何我这里 用 C-h S get-register
找不到对应的解释,敲下回车提示 No match
需要设置什么文档路径吗?
C-h S
(info-lookup-symbol
) 是一个跟 Major Mode 有关的命令,只有在 emacs-lisp-mode
、lisp-interaction-mode
、help-mode
等跟 Emacs 有关的 Major mode 下,才会查阅的是跟 Emacs 有关的文档。在 c-mode
下查阅的是 GNU C Library Reference Manual。
学习了:grinning:,补充一个,使用 M-x info-apropos get-register
也能方便查到对应的文档。
忽然发现 ?
后面跟一个字符会返回字符的编码:
?只
;; => 21482
?a
;; =>97
?^@ ; 用 `C-q C-@' 输入
;; => 0
所以用 (get-register ?a)
就能得到符合预期的结果了。