Линейка одного режима для всех окон

9

Можно ли иметь только одну строку режима (иногда называемую «строка состояния») для всех окон?

Я бы хотел, чтобы эта строка в одном режиме отображала информацию о текущем выбранном буфере.

rgtk
источник
2
Возможно, вы могли бы позаимствовать концепцию в прикрепленном потоке и создать отдельное окно в нижней части каждого кадра, которое показывает только пользовательскую строку режима? emacs.stackexchange.com/questions/7697/…
юрист
Конечно, вы имеете в виду окна, а не рамки?
abo-abo
Хороший улов. Да, я имею в виду окна.
rgtk

Ответы:

8

У меня нет решения для одной модельной линии, но вот два возможных альтернативных решения:

1. Отрисовать только строку режима в активном окне:

Если вы используете Powerline, вы можете обернуть ваш формат mode-line в:

((:eval (when (powerline-selected-window-active) ...)))

затем измените mode-line-inactiveлицо так, чтобы оно сочеталось с фоном, но по-прежнему разделяло буферы с помощью:

(set-face-attribute 'mode-line-inactive nil
                    :underline t
                    :background (face-background 'default))

Это будет выглядеть так:

введите описание изображения здесь

2. Используйте frame-title-format

Вы frame-title-formatопределяете, что будет отображаться в верхней части вашего кадра при запуске в графическом интерфейсе.

Установите frame-title-format' like you would yourmode-line-format`, а они задают для вашего mode-line-format значение что-то пустое.

Джордон Биондо
источник
4

Я наконец достиг этого, взломав emacs. демонстрация

Вы можете получить исходный код по адресу https://github.com/amosbird/emacs/tree/onemodeline . В основном он использует строку заголовка мини-окна для визуализации модельной строки текущего буфера.

амосс
источник
Это все еще работает / работает с Emacs 26.1?
rien333
@ rien333 Должен. Но этот метод действительно очень хрупкий. Есть все еще жестко закодированная логика, которая требует, чтобы мини-окно было одной строкой. Однако я не мог найти их всех.
Амос