Z pogranicza » Emacs

Konfiguracja belki z tytułem

Domyślnie Emacs wyświetla na belce z tytułem (mówię o Emacsie z GUI) [email protected]_systemu. Można to prosto zmienić korzystając ze zmiennej frame-title-format:

(setq frame-title-format "mój tytuł")

Dostępne są też predefiniowane wartości, m.in. %b - nazwa bufora, %f - ścieżka do pliku, %m - nazwa trybu, np. c++-mode. Czyli jeśli chcemy zmienić tytuł na emacs wersja: ścieżka (np. emacs 22.1.1: /home/user/dir/file), robimy:

(setq frame-title-format (concat invocation-name " " emacs-version ": %f"))

A co, jeśli chcielibyśmy mieć postać np. [email protected]: ~/dir/file bądź nazwę bufora, jeśli plik nie jest otwarty (np. *scratch*) - innymi słowy nazwę bufora z odpowiednio zamienioną ścieżką lub samą nazwę bufora? Niestety predefiniowanych wartości, o których wyżej wspomniałem, nie da się do tego celu wykorzystać. Trzeba założyć odpowiedniego hooka i wykorzystać buffer-file-name:

(add-hook 'window-configuration-change-hook
          (lambda ()
            (setq frame-title-format
                  (concat
                   invocation-name "@" system-name ": "
                   (replace-regexp-in-string
                    (concat "/home/" user-login-name) "~"
                    (or buffer-file-name "%b"))))))