小编kat*_*rmr的帖子

通用代码完成库/工具

我正在尝试在我最喜欢的编辑器中设置正确的代码完成,让我们称之为AnEditor,以避免互联网充满的程序特定的答案.(而且语言是ALanguage,你知道.)编辑器有两个我喜欢的功能:它在控制台和GUI中一样好,所以我可以通过网络使用它,并且它具有很大的可扩展性.所以我不愿意使用一个完整的IDE.但编辑器没有可靠的代码完成,但如果我找到一个像样的解决方案,它可以插入.

我已经在[编辑器/ IDE Y]中搜索了一大堆关于" [语言X]完成"的问题和解决方案.似乎每个新IDE都从头开始为每种语言实现代码完成,解析器和所有语言.每个更简单的编辑器(包括AnEditor)都会执行以下操作之一:

  • 仅完成标准库函数名称,
  • 或者使用ctags提供基于正则表达式的延迟"解析"(对于非C程序)并且不应该告诉你刚才输入的变量的类型,这对于实际代码完成不是很有用,
  • 如果编辑器可以使用插件扩展,还有其他方法,但它们通常可以归结为上面的或多或少的变态组合,以及大量的自定义正则表达式.

现在,问题是,为什么我们不能有一个声音代码完成库,我可以插入AnEditor和其他人到ABigIDE?据我所知(解读C指针丛林不是我的目标),答案应该看起来像这样:

  • 一个yacc/lex/bison(或静态分析器)风格的通用解析器,在编写过程中以某种方式放宽了容忍代码,能够理解JavaDoc风格的注释.并且最好快速,因此它可以在飞行中使用
  • 一个索引可以告诉类的成员,方法'签名及其在文件中的位置(ctags现在这样做),从JavaDoc注释中返回值和其他文档
  • 另一个知道变量类型的索引,以及一个根据当前写入的文件或代码中的位置来告诉类型的函数

因此,为了完成某些语言的工作,您可以为语言构建解析器规则,在标准库和项目上构建索引,召唤类型识别函数并查找类的成员和文档.或者只是列出类和成员,如果您正在处理对象构造或静态调用.

如果Eclipse,Netbeans和JetBrains已经用Java成功完成了它(因此我应该将Eclipse插入到AnEditor中),为什么没有人能够以更少的臃肿和更普遍的方式来做它?或者我错过了什么,未来已经潜伏在某个地方?

autocomplete code-completion

8
推荐指数
1
解决办法
512
查看次数

标签 统计

autocomplete ×1

code-completion ×1