gpt4 book ai didi

c - 在 emacs 中设置自动完成模式以与 C 结构配合使用

转载 作者:行者123 更新时间:2023-12-04 11:30:30 25 4
gpt4 key购买 nike

我试图让 emacs 在处理结构时只列出有效的自动完成选项。例如,考虑以下结构:

typedef struct      
{
int length, width, area;
} SquareType;

SquareType *square;

当我键入 square-> 时,我希望弹出一个菜单, 显示有效的结构成员。

目前,对于我的 .emacs 文件中的以下内容,仅当我在 -> 之后键入另一个字符时,才会显示弹出菜单。此外,当前菜单列出了不是我的结构的有效成员的完成选项。

(require 'yasnippet)  
(require 'auto-complete-config)
(add-to-list 'ac-dictionary-directories "~/.emacs.d/ac-dict")
(ac-config-default)

最佳答案

看来你需要的是CEDET/semantic。它已经内置在新的 Emacs 版本中。它会进行代码分析,因此会向您显示结构的有效成员。

  1. 使用(semantic-mode 1)启用语义
  2. 调用semantic-analyze-possible-completions来显示补全
  3. 我用 Emacs 24.3.1 的 emacs -q 测试了这个 - 它有效。

还有 semantic-ia-complete-symbol 和很多其他功能您可能会感兴趣。

尽管 auto-complete-mode 确实具有 ac-source-semantic 功能,它有点像你要求的那样,我不推荐它。它的一个问题是 ac-source-semantic 只是其中之一来源,所以你会得到比 3 个更多的候选人。第二个问题是语义有点慢,尤其是当 auto-complete在每次击键后不断轮询它,所以你真的会感觉到下降在响应能力方面。

我只为我的 ac-sources 保留基础知识:

(ac-source-abbrev ac-source-dictionary ac-source-words-in-same-mode-buffers)

当我需要语义补全时,我只需用 C-o 调用它只获得有效的候选人。

我还在维护一个存储库,其中包含我对语义的补充 github如果您想尝试一下,完成函数称为 moo-complete。只需将它绑定(bind)到 C-o 并试一试。

关于c - 在 emacs 中设置自动完成模式以与 C 结构配合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17763214/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com