2013-05-27 19 views
6

Czy istnieje sposób na umieszczenie wartości na prawym końcu modeliny?Jak naprawić wartość po prawej stronie modeliny?

Z mojego rozumienia obecnie modelina "wypycha" jej wartości dalej w prawo, jeśli wartości są większe. Wolałbym, żeby niektóre wartości zaczęły się po prawej stronie i rozszerzyłyby do środka.

Próbowałem rozwiązań, takich jak powerline, ale wydają się raczej rozpraszające i bardziej skomplikowane w konfiguracji, aby wyświetlać taką samą ilość informacji jak standardowa modelina.

Odpowiedz

1

O ile mi wiadomo, nie można tego zrobić poprzez proste dostosowanie linii trybu zwykłego. Możesz zmodyfikować zmienną mode-line-format, aby zmienić jej wygląd i zawartość w pewnym stopniu, ale jeśli chodzi o wbudowane konstrukcje do wyrównania tekstu, jestem dość pewny, że ograniczasz się do kontrolowania szerokości komponentów linii trybu poprzez albo dopełnienie lub obcięcie. Może być możliwe zastosowanie sprytnego hakera w zmiennej mode-line-format (przy użyciu formularzy (:eval ...) i/lub (list ...)), aby osiągnąć pożądany wynik. Aby uzyskać szczegółowe informacje, zapoznaj się z Emacs Lisp Reference Manual page on the mode-line-format variable. Poza tym musisz użyć pakietów zewnętrznych.

4

Oto jeden sposób, aby to zrobić. Sztuką jest dodawanie spacji do końca linii minus miejsce potrzebne do wyświetlenia tekstu (wyodrębniony z kodu linii energetycznej na wiki emacsa):

(defun mode-line-fill (face reserve) 
    "Return empty space using FACE and leaving RESERVE space on the right." 
    (unless reserve 
    (setq reserve 20)) 
    (when (and window-system (eq 'right (get-scroll-bar-mode))) 
    (setq reserve (- reserve 3))) 
    (propertize " " 
       'display `((space :align-to (- (+ right right-fringe right-margin) ,reserve))) 
       'face face)) 


;; Set the modeline to tell me the filename, hostname, etc.. 
(setq-default mode-line-format (list 
    " " 
    mode-line-mule-info 
    'mode-line-modified 
    "- " 
    'mode-line-buffer-identification 
    " (%l, %c) " 
    'mode-line-modes 
    " -- " 
    `(vc-mode vc-mode) 

    ;; Fill until the end of line but 10 characters 
    (mode-line-fill 'mode-line 10) 
    "Some text" 
    ) 
) 
+0

Nie jest jasne, dlaczego chcesz wybrać twarz dla wypełniacz. Jeśli określisz opcję 'mode-line', zostanie ona użyta w liniach trybu aktywnego i nieaktywnego, co wygląda dziwnie, ponieważ linie trybu nieaktywnego używają linii' mode-line-inactive'. Zamiast tego nie określaj twarzy, a zostanie użyta prawidłowa domyślna twarz. –

Powiązane problemy