emacs: второстепенный режим для отображения чисел во всех видах radix
Я ищу пакет Emacs, который может распознавать числа и их основание.
Я хотел бы, чтобы он был интерактивным (чтобы дать значение выбранного числа или в точке).
Возвращенные значения могут быть напечатаны в минибуфер (затем буфер сообщений) или в отдельный буфер.
Может кто-нибудь объяснить, как я могу получить доступ к этим значениям и какие шаги мне нужно предпринять, чтобы создать такую функцию?
1 ответ
У меня нет полного, прямого ответа для вас, но вот пара библиотек, на которые вы можете взглянуть на идеи о том, как реализовать это самостоятельно. Часть вопроса зависит только от того, как вы хотите отобразить / вернуть номер.
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, узел 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
частично, например, автоматически пробуя различные радиусы, последовательно и, скажем, используя самый низкий радикс, который возвращает число.