我认为两个emacs默认完成语义完成基于相同的标记文件完成它们的工作但现在我看到了其他的:
这是emacs通过ESC + TAB默认完成的结果:
这是语义完成的结果:
发生了什么事?!他们不使用相同的标签文件?如何找到用于它们的标记文件?
答案 0 :(得分:2)
有多个标记表,以及多种扫描标记表的方法。
我做了:C-h k M-TAB
并说:
Perform tags completion on the text around point.
If a tags table is loaded, call `complete-tag'.
Otherwise, if Semantic is active, call `semantic-ia-complete-symbol'.
Complete-tag使用etags中的标签表。它可能是一个名为TAGS
的文件,如果您以前使用M-.
跳转到标记,它将使用该文件。
然后尝试使用列出的语义功能。首先尝试使用“智能完成”。这基本上意味着它将分析本地上下文,并尝试找出一个简短的选项清单,按数据类型等进行筛选。如果失败,则会访问限制为当前文件的其余语义标记表,以防止符号过载。 Semantic的标签位于〜/ .semanticdb中,通过目录命名的文件保存。这些表也用于智能完成,并且其中包含的信息比TAGS
多得多,包括可用于提高智能完成过滤质量的数据类型和参数。