我的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,我不知道为什么我必须手动评估它?
答案 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")
))