在使用Emacs做C/C++编辑器进行开发的过程中,想使用类似Eclipse中类似Ctrl+o的显示当前源文件中函数列表的功能。在网上搜了好长时间也没有找到满意的解决方案。但是,Emacs是无所不能的,自己动手,丰衣足食,网上找不到,就自己搞定,用list-matching-lines命令+正则表达式可以实现我想要的功能。
(defun list-funcs (arg)
"List functions in buffer."
(interactive "p")
(message "functions")
;;; (list-matching-lines "^\\bstatic\\b*\\binline\\b*[ ]*[A-Za-z_<>]+[ ]+[A-Za-z0-9_:]+[\(]"))
(list-matching-lines "^[A-Za-z0-9_]+[ ]+[A-Za-z0-9_<>: ]*[\(]"))
使用方法:M-x list-funcs
效果如图
ps. 这是自己实现的第一个emacs功能,还有很大的改进空间,对emacs lisp函数的写法都是网上现查的,有时间一定要好好研究一下lisp语言 :)