为什么我的frame-title-format不起作用?

时间:2014-09-01 08:16:19

标签: emacs centos elisp fedora redhat

我的emacs版本:2014-05-21的GNU Emacs 24.3.1(x86_64-redhat-linux-gnu,GTK +版本3.10.9)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,我不知道为什么我必须手动评估它?

3 个答案:

答案 0 :(得分:1)

我受到同样问题的影响。在CentOS 7和Fedora 21系统上,我发现/usr/share/emacs/site-lisp/default.el会覆盖frame-title-format(没有别的)。据推测Fedora 20也有同样的问题。相同的文件包含禁用此功能的说明("在inhibit-default-init"中设置~/.emacs非零},这对我有用。

@ abelard20008引用的答案做同样的事情。

答案 1 :(得分:0)

您正在加载的其他一些代码正在设置框架名称。请注意frame-title-format的文档字符串:

  

仅用于框架   没有设置明确的名称(参见`modify-frame-parameters')。

要查找执行此操作的代码,请递归地对您的init文件进行二等分。

答案 2 :(得分:0)

我通过将其添加到我的.emacs:

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