分享

Emacs/自定义Emacs工具栏...

 不打酱油 2010-11-05

Emacs/自定义Emacs工具栏

【AD】:最快的美国主机,不限空间,不限流量! | 注册域名到世界最大的注册商Godaddy,中文.com域名50元!

出自站长百科

跳转到: 导航, 搜索

emacs | Emacs使用 | Emacs插件


介绍下如何在Emacs上加上自定义的工具栏(如下图所示)

Image:Emacs-custom-toolbar.png

详细步骤

Emacs的工具栏配置都存放在tool-bar-map这个keymap里,这个keymap跟我们平时用于键绑定的keymap是一样的,emacs会根据tool-bar-map的内容自动生成工具栏,如果执行一下下面这段代码,工具栏就没了:

(setq tool-bar-map (make-sparse-keymap))

要自定义工具栏,只需要修改tool-bar-map这个变量就可以了,一般我们可以用tool-bar-add-item这个函数来往tool-bar-map里添加工具项。

tool-bar-add-item的原型是这样的:

(tool-bar-add-item icon def key &rest props)

参数icon设置工具图标,emacs的工具栏可以使用XPM和PBM格式的图标,当emacs有libxmp支持时会使用XPM格式,没有libxmp库时会寻找PBM格式的图标。

在etc/images目录下可以看到emacs自带的图标一般都同时有XPM和PBM两种格式,就是为了在没有libxmp库时也能显示 工具栏,因为如果我们只有xpm格式的图标而没有libxmp库时,emacs就不在工具栏上显示这个项了。所以我们自己做图标时最好XPM和PBM都准 备一份。

icon参数的类型是字符串,只需要传主文件名就可以,扩展名emacs会自己加,比如对图标文件semantic.xpm写成”semantic”。

emacs会在image-load-path下查找图标文件,这个变量的值默认为(“…/etc/images/” data-directory load-path),就是说它除了查找image目录外还会查找所有的load-path,所以如果我们有自己的图标目录,把它加到image- load-path或者load-path都可以。

图标的大小好像没有限制,emacs本身使用的图标是24×24像素的,如果使用了比它大的图标,整个工具栏会自动扩大。

参数def设置这个工具项被按下的执行什么命令,它的格式跟global-set-key里的command格式是一样的。

参数key用来给这个工具项指定一个key,这个key用于唯一标识这个工具项,所以在同一个keymap里key不能重复。

剩下的参数可以设置一些属性项,具体可以设置哪些属性可以看Info > elisp > Keymaps > Menu Keymaps > Defining Menus > Extended Menu Items。常用的几个属性有:

  • enable 这个属性的值是一个表达式,emacs对这个表达式求值,如果值为nil时,这个工具项会被禁用。
  • visible 这个属性控制这个工具项是否显示,它的类型与:enable是一样的。
  • help 这个属性类型是字符串,当鼠标在工具项上停留时会显示这个字符串。

举例来说,如果要添加一个工具项用来执行gdb命令,并且只有在c-mode或者c++-mode时才让它有效,可以这样:

(tool-bar-add-item "gud/run" 'gdb 'gdb
 :enable '(memq major-mode '(c++-mode c-mode)))

这样会把gdb这个工具项添加到默认工具栏的最后,如果不想要emacs默认的工具栏,可以先执行(setq tool-bar-map (make-sparse-keymap))把默认的工具栏清空。

参考来源

参考来源

Emacs使用手册导航

Emacs安装

Emacs安装

Emacs使用

Emacs快捷键 | Windows下设置Emacs的HOME目录 | 自定义Emacs工具栏 | 在Emacs下用C、C++编程 | Emacs中的TeX排版系统 | 智能的启动Emacs

Emacs插件

EDIFF | Eshell | Color-theme | Tabbar | ECB | VisEmacs | Ange-FTP

Emacs其他

Emac定制 | 国际化以及版权

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多