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: 设置窗口标题格式的更多相关文章

  1. SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式

    java日期格式大全 format SimpleDateFormat(转) SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH ...

  2. log_format为Nginx设置日志格式

    nginx服务器日志相关指令主要有两条,一条是log_format,用来设置日志格式, 另外一条是access_log,用来指定日志文件的存放路径.格式和缓存大小,一般在nginx的配置文件中日记配置 ...

  3. .Net如何在后台设置日期格式,并显示在前台页面上

    其实方法比较老咯,有比这个简单的朋友请留言哈,我的思路是先将数据库中的日期格式读出来,在后台转化成DatetTime类型,然后在使用DateTime的内部方法设置日期格式,代码如下: DateTime ...

  4. (转)MyEclipse设置注释格式

    原文:http://xinghaifeng2006.iteye.com/blog/1243565 MyEclipse设置注释格式(转载)          博客分类: Java基础知识   Windo ...

  5. Java json设置时间格式,Jackson设置时间格式,json设置单引号

    Java json设置时间格式,Jackson设置时间格式,json设置单引号 >>>>>>>>>>>>>>> ...

  6. Powershell 设置数值格式 1

    设置数值格式 1 6 6月, 2013  在 Powershell tagged 字符串 / 数字 / 文本 / 日期 / 格式化 by Mooser Lee 格式化操作符 -f 可以将数值插入到字符 ...

  7. 【SSRS】入门篇(五) -- 设置报表格式

    原文:[SSRS]入门篇(五) -- 设置报表格式 在上一节 [SSRS]入门篇(四) -- 向报表添加数据 我们设置好了报表,并可以预览到数据,如下图: 当报表完成后,有个重要的工作就是美化报表格式 ...

  8. (后端)excel设置日期格式的步骤

    在excel中设置日期格式,分直接设置和代码设置. 一.直接设置: 选取日期所在的单元格,单元格右键菜单中--设置单元格格式.在单元格格式窗口中选数字类型为“日期”在右边的列表框中选取相应的日期格式即 ...

  9. execl中设置的格式无法实现

    在一次项目中,需要导出execl表,并且要给表中的表格设置格式,因为每列的格式都不一样,需要单独设置设置这些格式,在后期使用中因为导入的数据过多,是的后面的单元格中设置的格式无法实现. 每次打开exe ...

随机推荐

  1. redis 之redis集群与集群配置

    一.为什么要用集群 redis3.0集群采用P2P模式,完全去中心化,将redis所有的key分成了16384个槽位,每个redis实例负责一部分slot,集群中的所有信息通过节点数据交换而更新. r ...

  2. Python连载60-Tkinter布局、按钮以及属性详解

    一.Tkinter​ 1.组件的大致使用步骤 (1)创建总面板 (2)创建面板上的各种组件: i.指定组件的父组件,即依附关系:ii.利用相应的属性对组件进行设置:iii.给组件安排布局. (3)同步 ...

  3. 百度云bae安装discuz论坛教程

    作者:孤风一剑   发布:2013-05-11 13:37   栏目:站长在线   点击:6,846次   41条评论 各位草根们有福啦,弄了几天,终于可以在bae上搭建discuz论坛了,下面我就简 ...

  4. 读取json文件

    //读取json文件 var obji = File.ReadAllText(@"E:\test.json"); var resultdata = JsonConvert.Dese ...

  5. C++中%d,%s,%x,%f,%.100f,%的意思

    C++中%d,%s,%x,%f,%.100f,%的意思 标准格式化输出:格式字符有d,o,x,u,c,s,f,e,g等. 格式说明:由“%”和格式字符组成,如%d.%f等. %c用来输出一个字符; % ...

  6. python-python基础7

    一.静态方法 通过@staticmethod装饰器即可把其装饰的方法变为一个静态方法,什么是静态方法呢?其实不难理解,普通的方法,可以在实例化后直接调用,并且在方法里可以通过self.调用实例变量或类 ...

  7. jQuery设置input的type属性

    $("#inputName").attr("type","text");

  8. 39数组中只出现一次的数字+判断的时候一定加上括号,&的优先级低于!=

    题目描述 一个整型数组里除了两个数字之外,其他的数字都出现了两次.请写程序找出这两个只出现一次的数字.     思路:记住位运算的基本操作,与或非,异或,异或是两个数相同则为0,不同为1,理解为加法运 ...

  9. Django3.0中向后不兼容的更改

    3.0中向后不兼容的更改 数据库后端API 本节描述了第三方数据库后端中可能需要的更改. 现在的第二个参数DatabaseIntrospection.get_geometry_type()是行描述,而 ...

  10. vue-i18n突然所有的都解析不出来了

    因为浏览器cookie缓存的语言标志与代码中不一致