Emacs 26 flymake: настройка формата строки режима

Я подумываю вернуться с flycheck на flymake после перезаписи Emacs 26. Одна вещь, которая беспокоит меня в flymake, это то, сколько места он занимает в строке режимов. Он имеет строку Flymake плюс результаты. Вроде глупо, но это 10% строки режима на 80-символьном кадре, просто для имени! У меня есть много важной информации, которую я хотел бы видеть в своей строке режима, поэтому я пытаюсь удалить вещи, которые мне не нужны — я знаю, какие второстепенные режимы и т. д. включены в моих буферах, так как я их настроил! Лично я бы предпочел вообще не видеть имя, а только результаты или максимум F или FM.

Я мог бы использовать diminish, чтобы полностью избавиться от информации о строке режима, но, конечно, я этого не хочу: я хочу иметь возможность видеть состояние моего буфера.

Я взглянул на flymake.el и определение flymake--mode-line-format, и не похоже, что эту строку можно настроить или вообще легко изменить.

У кого какие мысли по этому поводу?


person MadScientist    schedule 19.12.2018    source источник


Ответы (1)


Вам нужно будет переопределить функцию flymake--mode-line-format. Вероятно, это должно быть более настраиваемым, но это не так. Возможно, наименее навязчивый способ сделать это — определить :filter-return совет по этой функции для преобразования вывода.

(defun flymake--transform-mode-line-format (ret)
  "Change the output of `flymake--mode-line-format'."
  (setf (seq-elt (car ret) 1) " FM")
  ret)
(advice-add #'flymake--mode-line-format
            :filter-return #'flymake--transform-mode-line-format)
person jpkotta    schedule 19.12.2018
comment
О, интересно. Давненько я не пользовался советом; в прошлый раз я не думаю, что у него была возможность filter-return. Спасибо! - person MadScientist; 20.12.2018
comment
Не могли бы вы объяснить магию (setf (seq-elt (car ret) 1) " FM")? Я не понимаю, почему это не похоже на простую замену «Flymake» на «FM», что еще здесь происходит? - person Andy; 02.05.2020
comment
flymake--mode-line-format — это функция, которая возвращает минусы, машина которых представляет собой список. Второй элемент этого списка — Flymake. setf устанавливает этот элемент в FM. Посмотрите на источник для flymake--mode-line-format. ((:propertize " Flymake" ... -> ((:propertize " FM".... - person jpkotta; 04.05.2020