【发布时间】:2018-12-09 10:41:59
【问题描述】:
我正在寻找可以识别数字及其基数的 Emacs 包。
我希望它是交互式的(给出所选数字或点的值)。
返回的值可以打印到迷你缓冲区(然后是消息缓冲区)或单独的缓冲区。
谁能解释我如何才能访问这些值以及创建这样一个函数需要采取哪些步骤?
【问题讨论】:
标签: emacs numbers radix minor-mode
我正在寻找可以识别数字及其基数的 Emacs 包。
我希望它是交互式的(给出所选数字或点的值)。
返回的值可以打印到迷你缓冲区(然后是消息缓冲区)或单独的缓冲区。
谁能解释我如何才能访问这些值以及创建这样一个函数需要采取哪些步骤?
【问题讨论】:
标签: emacs numbers radix minor-mode
我没有为您提供完整、直接的答案,但您可以查看以下几个库,了解有关自己实现这一点的想法。有些问题取决于您希望如何显示/返回数字。
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 部分的函数,例如自动按顺序尝试不同的基数,例如,使用返回数字的最低基数。
【讨论】:
(minibuffer-window-active-p WINDOW)。