Учитывая следующую конфигурацию моделин:
(setq-default mode-line-format
(list
;; Current buffer name
"%b "
;; Major mode
"[%m] "
;; Modified status
"[%*] "
;; Cursor position
"Line: %l/%i Column: %c"))
Я хотел бы, чтобы последний элемент отображался по правому краю.
mode-line-format
это не правильный ответ, но по умолчаниюsmart-mode-line
выравниваетmode-line-misc-info
по правому краю , и он может выравнивать по правому краю список второстепенных режимов, устанавливаяsml/mode-width
в'right
.Ответы:
Как и ответ в комментариях, вы можете сделать это самостоятельно, написав код для возврата красиво разнесенной строки.
Вот простой способ, который поддерживает только выровненный по левому и правому краю текст, примененный к вашим спецификациям.
в итоге это выглядит так:
Также обратите внимание, что я использовал ваши аргументы mode-line-format, как вы указали, но я полагаю, что вы используете% i неправильно, что печатает размер буфера в буфере, а не количество строк. Вы можете использовать что-то вроде,
(line-number-at-pos (point-max))
чтобы получить количество строк в вашем буфере.источник
window-total-width
для расчета дополнительных отступов.%
символов будет пытаться отформатировать дважды. Это учтено в моем ответе emacs.stackexchange.com/a/37270/2418 - также используйтеwindow-total-width
(спасибо!)Чтобы расширить ответ @ jordon-biondo и устранить ошибку, показываемую
%
.В этом примере показано, как можно использовать линейные переменные режима mode с выравниванием, что потребовало времени на то, чтобы разобраться.
Пример вывода:
init.el 1 : 0 <N> [-] Top -F1 (Emacs-Lisp WK ivy drag AC GitGutter)
источник
Это не поддерживается "из коробки", но
smart-mode-line
пакет поддерживает это. Вы можете использовать этот пакет или, если он делает больше, чем вы хотите, извлечь только те биты, которые реализуют запрашиваемую вами функцию.источник
smart-mode-line
и добавляя их в мои dotemacs. Это требует, чтобы я выяснил, сколько места я хочу направо, но это лучше, чем ничего. Если кто-то не опубликует способ избавиться от ручного подсчета символов, я не приму ответ.Хотя можно выполнить «правильное» выравнивание влево / вправо, добавив альтернативный метод, потому что полная оценка левого и правого только для выравнивания немного сложна, когда есть более простая альтернатива.
Если вы знаете, что вам нужен только фиксированный объем справа, вы можете заполнить все символы, кроме N , это работает, если правильный размер имеет фиксированную длину.
Форматирование строки
%12s
и тому подобное можно использовать, чтобы строка не менялась.Например:
CMakeLists.txt [-] 1590, 0, 94%
Обратите внимание, что это хорошо работает, только если вы хотите отобразить несколько элементов справа, как в этом примере - строка / столбец / процент. Показывать все второстепенные режимы, например, не очень хорошо.
источник