2014-09-01 48 views
1

我emacs的版本:GNU Emacs的24.3.1(x86_64的-红帽Linux的GNU的,GTK +版本3.10.9)的2014年5月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,它不起作用,我不知道为什么我必须手动评估它。

+0

不是你的问题相关,但你可以只用'缩写文件-name',而不是试图匹配的环境变量'HOME'等 – Drew 2014-09-01 14:30:26

+1

我还没有找到它为什么没有工作,但这[回答](http://stackoverflow.com/a/12009623/1054800)作品! – abelard2008 2014-09-01 14:58:15

+0

如果代码在您手动评估时运行,则问题很可能位于其他位置。当你启动Emacs时你有错误吗?您的init文件中是否有其他代码可能导致此问题?找到问题的一个好方法是尽量减少init文件。如果有效,那么将其扩展到问题再次出现,这样可以缩小问题的范围。 – Lindydancer 2014-09-01 11:36:53

回答

0

声音您正在加载的其他代码是设置帧名称。从frame-title-format doc字符串注:

它用于仅在那些没有明确的名称已定 框架(参见`修改帧参数)。

要找到这样做的代码,递归地平分你的init文件。

1

我受到同样的问题影响。在CentOS 7和Fedora 21系统上,我发现/usr/share/emacs/site-lisp/default.el覆盖了frame-title-format(而没有其他)。据推测,Fedora 20有同样的问题。同一个文件包含禁用此操作的说明(“设置inhibit-default-init非零在~/.emacs”),这对我来说很合适。

@ abelard20008指的答案也是一样的。

0

我解决它加入这个对我的.emacs:

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