Biorąc pod uwagę następującą konfigurację modeliny:
(setq-default mode-line-format
(list
;; Current buffer name
"%b "
;; Major mode
"[%m] "
;; Modified status
"[%*] "
;; Cursor position
"Line: %l/%i Column: %c"))
Chciałbym, aby ostatni element pojawił się w wyrównaniu do prawej.
mode-line-format
nie jest to poprawna odpowiedź, ale domyślniesmart-mode-line
wyrównuje domode-line-misc-info
prawej i może wyrównać listę drobnych trybów, ustawiającsml/mode-width
na'right
.Odpowiedzi:
Podobnie jak odpowiedź w komentarzach, możesz to zrobić sam, pisząc kod, aby zwrócić dobrze rozmieszczony ciąg znaków.
Oto prosty sposób, który obsługuje tylko wyrównany do lewej i prawej tekst zastosowany do specyfikacji.
wygląda to tak:
Zauważ też, że użyłem twoich argumentów tryb-linia-format, jak określiłeś, ale uważam, że używasz% i niepoprawnie, co drukuje rozmiar bajtu bufora, a nie liczbę linii. Możesz użyć czegoś takiego,
(line-number-at-pos (point-max))
aby uzyskać liczbę wierszy w buforze.źródło
window-total-width
aby obliczyć również linum i frędzle dodatkowe wypełnienia.%
Znaki znaczące będą próbować sformatować dwukrotnie. Uwzględniłem to w mojej odpowiedzi, emacs.stackexchange.com/a/37270/2418 - również użyjwindow-total-width
(dziękuję!)Aby rozwinąć odpowiedź @ jordon-biondo i rozwiązać problem z wyświetlaniem błędu
%
.Ten przykład pokazuje, jak zmienne liniowe trybu trybu mogą być używane z wyrównaniem - co zajęło mi trochę czasu.
Przykładowe dane wyjściowe:
init.el 1 : 0 <N> [-] Top -F1 (Emacs-Lisp WK ivy drag AC GitGutter)
źródło
Nie jest to obsługiwane od razu po wyjęciu z pudełka, ale
smart-mode-line
pakiet to obsługuje. Możesz użyć tego pakietu lub jeśli robi więcej, niż chcesz, wyodrębnij tylko te bity, które implementują żądaną funkcję.źródło
smart-mode-line
i dodając ją do moich dotemac. Wymaga to zastanowienia się, ile miejsca chcę po prawej stronie, ale to lepsze niż nic. Chyba że ktoś opublikuje sposób na pozbycie się ręcznego liczenia znaków, ale nie przyjmuję odpowiedzi.Podczas gdy możliwe jest „poprawne” wyrównanie do lewej / prawej strony, dodanie alternatywnej metody, ponieważ pełna ocena lewej i prawej tylko dla wyrównania jest nieco ciężka, gdy istnieje prostsza alternatywa.
Jeśli wiesz, że potrzebujesz tylko stałej ilości miejsca po prawej stronie, możesz wypełnić wszystkie znaki oprócz N , działa to tak długo, jak odpowiedni rozmiar ma stałą długość.
%12s
Można użyć formatowania łańcucha i tym podobnych, aby mieć pewność, że rozmiar łańcucha się nie zmieni.Na przykład:
CMakeLists.txt [-] 1590, 0, 94%
Zauważ, że działa to dobrze tylko wtedy, gdy chcesz wyświetlić kilka elementów po prawej stronie, jak w tym przykładzie - linia / kolumna / procent. Wyświetlanie wszystkich mniejszych trybów np. Nie działałoby dobrze.
źródło