挖掘Emacs Imenu的潜力
作者: Jolly Wing(jiqingwu@gmail.com) 日期: 2014-05-15 声明:转载请保留作者信息 Imenu介绍imenu是Emacs自带的一个工具,它能够分析当前缓冲区中的定义,并生成索引。 Imenu不仅能分析程序源文件,也能分析格式化的文档,比如HTML,Tex 以及轻量化标记语言 (rst, 对于程序源文件,它主要生成函数定义的索引。 对于结构化文档,它生成标题和章节的大纲。 使用Imenu我们打开一个C的源文件,里面定义了几个函数。 这样似乎不是很方便,我们可以 我们可以设置在编辑某种主模式的文件时,imenu的索引自动出现在菜单中。 (add-hook 'c-mode-hook 'imenu-add-menubar-index) 如果想要所有模式下都在菜单栏显示imenu的索引,可以用EmacsWiki上的技巧: (defun try-to-add-imenu () (condition-case nil (imenu-add-to-menubar "Imenu") (error nil))) (add-hook 'font-lock-mode-hook 'try-to-add-imenu) 我们发现Imenu菜单中有个 imenu的扩展
高级用法:自定义ImenuImenu能支持很多模式。 (setq sql-imenu-generic-expression '(("Comments" "^-- (.+)" 1) ("Function Definitions" "^s-*(function|procedure)[ nt]+([a-z0-9_]+) [ nt]*([a-z0-9 _,nt]*)[ nt]*(return[ nt]+[a-z0-9_]+[ nt]+)?[ai]sb" 2) ("Function Prototypes" "^s-*(function|procedure)[ nt]+([a-z0-9_]+) [ nt]*([a-z0-9 _,nt]*)[ nt]*(return[ nt]+[a-z0-9_]+[ nt]*)?;" 2) ("Indexes" "^s-*creates-+indexs-+(w+)" 1) ("Tables" "^s-*creates-+tables-+(w+)" 1))) (add-hook 'sql-mode-hook (lambda () (setq imenu-generic-expression sql-imenu-generic-expression))) 总的来说,当我们编写小的项目和结构化文档时,imenu是个很实用的小工具。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |