centos 为什么我的帧标题格式不起作用?

klsxnrf1  于 2022-11-07  发布在  其他
关注(0)|答案(4)|浏览(145)

我emacs版本:GNU Emacs 24.3.1(x86_64-redhat-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,我不知道为什么我必须手动eval它?

zzlelutf

zzlelutf1#

我也遇到了同样的问题。在CentOS 7和Fedora 21系统上,我发现/usr/share/emacs/site-lisp/default.el覆盖了frame-title-format(没有其他内容)。可能Fedora 20也有同样的问题。同一个文件包含了禁用此功能的说明(“在~/.emacs中设置inhibit-default-init非零“),这对我很有效。
@abelard20008所指的答案也是如此。

i7uaboj4

i7uaboj42#

升级到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"))

贷方:https://stackoverflow.com/a/17532502/6000005

oewdyzsn

oewdyzsn3#

听起来您正在加载的其他代码正在设置框架名称。请注意来自doc字符串frame-title-format的注解:
它只用于没有设置明确名称的帧(参见'modify-frame-parameters')。
要找到执行此操作的代码,请递归地将init文件一分为二。

zqry0prt

zqry0prt4#

我通过将以下内容添加到我的.emacs中解决了这个问题:

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

相关问题