在 c-mode 的buffer中, 定义了 Display_Setting() 函数;
1、图1中, 只开启 imenu-mode 后, mini-buffer仅显示1个匹配的 Display_Setting(); (如图1, 即该函数的定义)
2、图2中, 开启 Semantic-mode后, Semantic对 imenu-mode 扩展, 显示了2个匹配的 Display_Setting()
a. Display_Setting() 的函数声明;
b. Display_Setting() 的函数定义;
请教各位Emacser大神, 开启 Semantic-mode后, 能否修改成第 1 种方式,只显示函数的定义,不显示函数的引用或声明。 Tks!
你用的 imenu 的前端是什么?M-x imenu
在 semantic-mode 下是会有个二级菜单的,你的不是。或许可以看看你的 imenu 的前端的实现,它能显示
Functions: Display_Setting()
Functions: Display_Setting()
的话,也能显示成
Prototype: Display_Setting ()
Function: Display_Setting ()
或者不显示函数声明,因为 semantic-mode 可以区分声明和定义(参考 (semantic-fetch-tags)
的结果)。
Customize Group → imenu、Semantic两个定制组,都找不到semantic-fetch-tag相关的定义, 只找到以下。但不论怎么修改还是显示两个 functions
哦!我没有说有什么选项可以定制。另外我说的函数 semantic-fetch-tags
(注意最后面有个 s
)。
semantic-fetch-tags 是 semantic.el 默认的参数, elisp 不会写,没有修改。
我没有说有需要修改什么。
这句话的意思是:semantic-mode 有能力的区分函数声明和定义,不信的话,在 c-mode 的 buffer 中,运行 M-: (semantic-fetch-tags) RET 看看结果。