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 частично, например, автоматически пробуя различные радиусы, последовательно и, скажем, используя самый низкий радикс, который возвращает число.

Другие вопросы по тегам