Linia jednomodowa dla wszystkich okien

9

Czy można mieć tylko jedną linię trybu (czasami nazywaną „paskiem stanu”) dla wszystkich okien?

Chciałbym, aby ta linia trybu pojedynczego wyświetlała informacje o aktualnie wybranym buforze.

rgtk
źródło
2
Być może mógłbyś pożyczyć tę koncepcję w dołączonym wątku i utworzyć dedykowane okno u dołu każdej ramki, które pokazuje tylko niestandardową linię trybu? emacs.stackexchange.com/questions/7697/…
lista prawników
Z pewnością masz na myśli okna, a nie ramy?
abo-abo
Dobry chwyt Tak, mam na myśli okna.
rgtk

Odpowiedzi:

8

Nie mam rozwiązania dla pojedynczej modeliny, ale oto dwa możliwe alternatywne rozwiązania:

1. Renderuj linię trybu tylko w aktywnym oknie:

Jeśli używasz powerline, możesz zawinąć swój format trybu-linii w:

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

następnie zmień mode-line-inactivetwarz, aby wtapiała się w tło, ale nadal oddziela bufory:

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

Będzie to wyglądać tak:

wprowadź opis zdjęcia tutaj

2. Użyj frame-title-format

Twoje frame-title-formatokreśla, co jest wyświetlony na górze ramy, gdy uruchomiony w GUI.

Ustaw frame-title-format' like you would yourtryb-line-format`, a ustaw tryb-line-format na coś pustego.

Jordon Biondo
źródło
4

W końcu udało mi się to zhakować emacsa. Próbny

Możesz pobrać kod źródłowy z https://github.com/amosbird/emacs/tree/onemodeline . Zasadniczo używa linii nagłówka mini-okna do renderowania modeliny bieżącego bufora.

Amos
źródło
Czy to nadal działa / działa z emacsem 26.1?
rien333
@ rien333 Powinno. Ale ta metoda jest rzeczywiście bardzo delikatna. Wciąż istnieje zakodowana logika, która wymaga, aby mini okno było jedną linią. Jednak nie mogłem ich wszystkich znaleźć.
Amos,