Почему мой frame-title-format не работает?
Версия моего emacs: GNU Emacs 24.3.1 (x86_64-redhat-linux-gnu, GTK+ версия 3.10.9) 2014-05-21 на buildvm-07.phx2.fedoraproject.org
Я надеюсь, что заголовок Emacs отображает абсолютный путь к текущему файлу. Я написал следующее содержание (из интернета):
;;;Emacs title bar to reflect file name
(defun frame-title-string ()
"Return the file name of current buffer, using ~ if under home directory"
(let
((fname (or
(buffer-file-name (current-buffer))
(buffer-name))))
;;let body
(when (string-match (getenv "HOME") fname)
(setq fname (replace-match "~" t t fname)) )
fname))
;;; Title = 'system-name File: foo.bar'
(setq frame-title-format '("" system-name " File: "(:eval (frame-title-string))))
до переустановки FC20 + Emacs вышеупомянутое содержимое могло работать правильно. Теперь это не работает, за исключением того, что я открываю.emacs и eval frame-title-format вручную, я не знаю, почему я должен вручную проверить это?
4 ответа
На меня повлияла та же проблема. В системах CentOS 7 и Fedora 21 я обнаружил, что /usr/share/emacs/site-lisp/default.el
Переопределение frame-title-format
(и ничего больше). Предположительно Fedora 20 имеет ту же проблему. Этот же файл содержит инструкции по отключению этого ("Настройка inhibit-default-init
не ноль в ~/.emacs
") который работал для меня.
Ответ, на который ссылается @abelard20008, делает то же самое.
Такая же проблема после обновления до
GNU Emacs 29.0.50 (build 3, x86_64-pc-linux-gnu, GTK+ Version 3.24.24, cairo version 1.16.0) of 2021-12-07
Решение состояло в том, чтобы установить
icon-title-format
слишком.
;; No hostname in frame title
;; Without setting the `icon-title-format`. The window title will revert
;; back to its original value after loosing its focus.
(setq frame-title-format '("" invocation-name " - " "%b"))
(setq icon-title-format '("" invocation-name " - " "%b"))
Я решил это, добавив это в мой.emacs:
(add-hook 'after-init-hook (lambda ()
(setq frame-title-format "%b")
))
Похоже, какой-то другой код, который вы загружаете, устанавливает имя фрейма. Примечание из строки документа frame-title-format
:
Он используется только для фреймов, для которых не было задано явное имя (см. "Modify-frame-parameters").
Чтобы найти код, который делает это, рекурсивно разделите ваш файл инициализации.