我正在寻找可以识别数字及其基数的 Emacs 包。
我希望它是交互式的(给出所选数字或点的值)。
返回的值可以打印到迷你缓冲区(然后是消息缓冲区)或单独的缓冲区。
有人可以解释我如何才能访问这些值以及创建这样一个函数需要采取哪些步骤?
我正在寻找可以识别数字及其基数的 Emacs 包。
我希望它是交互式的(给出所选数字或点的值)。
返回的值可以打印到迷你缓冲区(然后是消息缓冲区)或单独的缓冲区。
有人可以解释我如何才能访问这些值以及创建这样一个函数需要采取哪些步骤?
我没有完整的、直接的答案给你,但这里有几个库,你可以看看你自己实现这一点的想法。有些问题取决于您希望如何显示/返回数字。
modeline-char.el
- 次要模式mlc-char-in-mode-line-mode
在模式行打火机中显示点后的字符,然后是=
,然后是字符的十六进制 Unicode 代码点。请参阅在模式行中显示字符。
thingatpt+.el
number-at-point-decimal
-和 等函数number-at-point-hex
。见事物加点。
如果要识别的文本使用标准 Emacs 格式作为基数和该基数中的数字,那么您可以定义一个radix-number-at-point
. 该表格记录在 Elisp 手册 node Integer Basics中。例如,#13r90B3
是与十进制整数相同的数字19919
。
这是一个快速定义。你可能想要调整它。
(defun radix-number-at-point ()
"Return the radix number at point, or nil if none is found."
(when (thing-at-point-looking-at "-?#[0-9][0-9]*r[a-zA-Z0-9]+\\.?[a-zA-Z0-9]*" 500)
(read (buffer-substring-no-properties (match-beginning 0) (match-end 0)))))
您还可以定义一个不需要显式#rRADIX
部分的函数,例如按顺序自动尝试不同的基数,例如,使用返回数字的最低基数。