好吧,这可能是可能的,但取决于您愿意付出多少努力来编写 eLisp 代码以使其工作。仅通过一些配置选项是不可能的。我会考虑通过向其添加新源来扩展自动完成功能,例如:
(defvar tex-tag-ac-sources
'((init . tex-tag-ac-init)
(requires . 0)
(candidates . tex-tag-ac-candidates)
(document . tex-tag-ac-documentation)
(match . tex-tag-completion-filter)
(prefix . tex-tag-ac-prefix-matcher)
(symbol . "s"))
"The source generator for autocompletion needed for interaction
with auto-complete")
其中tex-tag-ac-candidates
、tex-tag-ac-documentation
和是执行自动补全的函数tex-tag-completion-filter
。tex-tag-ac-prefix-matcher
即,当自动完成过程针对指定前缀开始时调用一次 init 函数。它被称为无参数。候选者是负责显示过滤后的候选者列表的函数,它被称为无参数,您将在过滤器函数中过滤候选者,它使用到目前为止收集的前缀和到目前为止的候选者列表来调用。最后,在文件的文本上调用 matcher 函数以查看是否需要完成。因此,如果它返回t
,则调用 init ,然后在您键入时循环通过 filter-candidates。
虽然这有点涉及......你肯定会完成你想要的任何事情。显然,如果源代码中的这些函数是您定义的,那么,如果您愿意,您可以动态读取完成参数或以某种方式动态生成它们。
啊,您可以通过以下方式将源添加到自动完成:
(auto-complete (list tex-tag-ac-sources))
如果在每次通话的基础上进行,或者
(setq ac-sources (list tex-tag-ac-sources <other sources>))
您可以在此处找到更多信息:http: //cx4a.org/software/auto-complete/manual.html#Using_Source