Справочная информация:
Я создаю второстепенный режим, который дает пользователю «подсказки» о том, использует ли просматриваемый буфер вкладки или пробелы для отступа (просто проверяя первый символ каждой строки в буфере). Некоторые функции, которые я планирую добавить, включают информационное отображение в строке режима и несколько функций для переключения между использованием табуляции или пробелов, ширины табуляции и т. Д.
Меня не особо беспокоит полезность этого второстепенного режима. На самом деле, я был бы удивлен, если бы уже не было чего-то такого, что делает то же самое. В основном это упражнение в написании второстепенных режимов.
Вопрос:
Каким будет чистый, ненавязчивый способ вставки / удаления текста из строки режима при включении / отключении моего второстепенного режима? Я не хочу, чтобы пользователю приходилось изменять свои mode-line-format
, я просто хочу неразрушающим образом вставить и удалить текст. Сейчас я использую функцию, которая выглядит примерно так:
(defun update-indent-hints-mode-line (what-this-buffer-loves)
(let ((indent-hints-mode-line-text (concat " " "[" what-this-buffer-loves "-loving" "]"))
(my-mode-line-buffer-identification
(remq " [Tab-loving]" (remq " [Space-loving]" mode-line-buffer-identification))))
(setq mode-line-buffer-identification
(add-to-list 'my-mode-line-buffer-identification
indent-hints-mode-line-text
t))
(force-mode-line-update)))
Работает нормально, но поиск и удаление "[Tab-loving]" и "[Space-loving]" кажется довольно хакерским и уродливым ... Есть ли более чистый способ сделать это?
Бонусные баллы:
Любые комментарии о скромных началах моей столь же скромной минорной моды:
https://github.com/mgalgs/indent-hints-mode/blob/master/indent-hints.el
Я, очевидно, elisp n00b, но я здесь, чтобы учиться.