码迷,mamicode.com
首页 > 系统相关 > 详细

Emacs: 设置窗口标题格式

时间:2020-02-09 11:46:54      阅读:82      评论:0      收藏:0      [点我收藏+]

标签:信息   via   set   buffer   bbr   user   显示文件   bre   表示   

Emacs默认的窗口标题常常比较简单,例如我的默认标题是emacs@ubuntu。如果想要在标题中显示更多的信息,我们可以对它进行一些设置。由于Emacs的可扩展性,这种修改实际上非常容易。

显示文件名

设置Emacs的标题只需要设置变量frame-title-format就可以了[1]。例如

(setq frame-title-format "%b - Emacs")

将标题设置为"文件名 - Emacs"的形式,其中%b表示文件名。更多格式说明可以参考mode-line-format的文档。

显示当前目录

我们比较贪,想要titlebar做更多的事[2]。一个比较常见的做法是显示当前文件所在的目录。为了便于扩展我们将上述标题整理为等价的格式:

(setq frame-title-format
      '(:eval (concat
               (buffer-name)
               " - Emacs"))
      )

表示标题的格式由计算一个表达式得到,而这个表达式是(buffer-name)"- Emacs"连接得到的。这样,就容易加入当前目录的计算[3]:

(if buffer-file-name
    (concat " (" (directory-file-name (abbreviate-file-name default-directory)) ")"))

其中default-directory表示当前的目录,abbreviate-file-name将其转化为缩略的形式(例如"/home/user/path/"变为"~/path/"),directory-file-name去掉最后的斜杠。if语句表示只针对文件buffer执行这项操作。现在标题格式类似于init.el (~/.emacs.d) - Emacs

修改指示符

最后加入一个现代编辑器常见的功能,在已修改的文件前面加一个标志。如下所示:

(if (and buffer-file-name (buffer-modified-p)) "?")

最终成品如下,将该语句加入启动文件即可:

(setq frame-title-format
      '(:eval (concat
               (if (and buffer-file-name (buffer-modified-p)) "?")
               (buffer-name)
               (if buffer-file-name
                   (concat " (" (directory-file-name (abbreviate-file-name default-directory)) ")"))
               " - Emacs"))
      )

参考资料

  1. https://www.gnu.org/software/emacs/manual/html_node/efaq/Displaying-the-current-file-name-in-the-titlebar.html
  2. https://www.emacswiki.org/emacs/FrameTitle
  3. https://www.gnu.org/software/emacs/manual/html_node/elisp/Directory-Names.html

Emacs: 设置窗口标题格式

标签:信息   via   set   buffer   bbr   user   显示文件   bre   表示   

原文地址:https://www.cnblogs.com/cocode/p/12286293.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!