2014-09-01 51 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") 
))