我正在寻找一个可以识别数字及其基数的Emacs软件包。
我希望它是交互式的(给出所选数字或点的值)。
返回的值可以打印到迷你缓冲区(然后是消息缓冲区)或单独的缓冲区中。
有人可以解释我如何获取这些值以及创建此类功能需要采取哪些步骤?
答案 0 :(得分:1)
对于您,我没有完整直接的答案,但是这里有几个库可供您参考,以获取有关自己实现此想法的想法。有些问题取决于您要如何显示/返回数字。
modeline-char.el
-次模式mlc-char-in-mode-line-mode
在模式行打火机中显示字符后一点,后跟=
,后跟该字符的十六进制Unicode代码点。参见Show Char In Mode Line。
thingatpt+.el
-诸如number-at-point-decimal
和number-at-point-hex
之类的功能。参见Thing At Point Plus。
如果要识别的文本使用标准Emacs格式表示基数和该基数中的数字,则可以定义radix-number-at-point
。该表格记录在Elisp手册的节点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
部分的函数,例如按顺序自动尝试使用不同的基数,例如使用返回数字的最低基数。