Почему мой 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"))

Кредит: /questions/36378077/emacs-frame-title-format-ne-sohranyaet-imya-fajla-v-paneli-zadach/36378084#36378084

Я решил это, добавив это в мой.emacs:

(add-hook 'after-init-hook (lambda ()
                 (setq frame-title-format "%b")
))

Похоже, какой-то другой код, который вы загружаете, устанавливает имя фрейма. Примечание из строки документа frame-title-format:

Он используется только для фреймов, для которых не было задано явное имя (см. "Modify-frame-parameters").

Чтобы найти код, который делает это, рекурсивно разделите ваш файл инициализации.

Другие вопросы по тегам