跳到内容
新问题

对这个项目有疑问吗?注册一个免费的GitHub帐户以打开一个问题,并联系其维护者和社区。

单击“注册GitHub”,表示您同意我们的服务条款隐私声明。我们偶尔会向您发送与帐户相关的电子邮件。

已经在GitHub上了?登录到您的帐户

添加GDScript文件类型 #3012

已合并
将2个提交合并到
2022年1月15日
已合并

添加GDScript文件类型 #3012

将2个提交合并到
2022年1月15日

对话

戴维22
复制链接
贡献者

@戴维22 戴维22 评论2021年11月20日

戈多作为Unity的开源替代品,最近一直在进行一次反强制之旅。添加对增长项目的GDScript的支持。

由于GDScript的语法大量借用python,因此大量借用了python。需要注意的是,该语言正在经历一些突破性的更改,这些更改将在godot 4发布时生效,这已经考虑到了语法更改,并且我已经将一些当前关键字归类为内置关键字,即使godot四尚未发布。

我用一个小测试文件来确保在对python和gdscript之间不同的东西进行更改时不会完全破坏它:
形象

以及先决条件的上游拉动请求:
ScintillaOrg/lexilla 41号-已合并
通用-ctags/ctags#3194,被取代通用ctags/ctags#3199-已合并

@技术人员
复制链接
成员

只是简单地看了一下PR,原则上我觉得不错,在Geany申请之前,只需将闪烁部分和购物袋部分向上合并(根据upstram项目的要求进行相应的更改)。然后,也放下杰尼_来自解析器文件名的前缀-它只是指示那些尚未使用上游版本的解析器。

@戴维22
复制链接
贡献者 作者

当上游拉入时将更新,此拉入请求中的代码当前已相当过时,一分钟内没有将更改复制到此中

@戴维22
复制链接
贡献者 作者

好的,所有上游来源都已合并,将所有内容复制回这里。在ctags entry.c中添加了一个通用函数,该函数是为GDScript ctag创建的,它可能还没有出现在ctag版本中,因为它是全新的,但我将其放在了与上游相同的位置。也进行了重命名,尽管我注意到其他所有ctag解析器都以geany开头_

@elextr公司
复制链接
成员

最好等待#2990#2991以防引起冲突。

@戴维22
复制链接
贡献者 作者

好吧。我会在这段时间里使用这个分支,看看它是否会把我撞坏或者其他什么

@戴维22
复制链接
贡献者 作者

好了,收到了合并通知,去修复了一个合并冲突

库格尔-添加了提交到库格尔-/geany引用的这个拉请求 2021年12月7日
闪烁体:-SCI_GETTEXT、SCI_GOTSELTEXT和SCI_GATCURLINE行为变化-公路自动完工(参见杰尼#3009)Lexilla公司:-新的解析器:gdscript(请参阅吉亚尼#3012)和asciidoc(请参见geany号2986)但尚未导入
@戴维22
复制链接
贡献者 作者

更新并解决了合并冲突,因为之前的请购单已经合并

@技术人员
复制链接
成员

@戴维22你能在当前主机上做补丁吗?新Scintilla的更新出现了问题,导致了崩溃,您的分支也因此崩溃。

我只是简单地看了一下拉动请求。你能添加一些单元测试来生成解析器支持的所有类型吗?此外,我希望解析器生成完整的范围信息——在这种情况下,应该在tm_parser_has_full_context().

@戴维22
复制链接
贡献者 作者

哦,有新东西吗?再次重新设置,它在重新设置之前通过了CI,但是否也需要在测试中添加一些内容?

上游ctag中有几个测试用例是作为上游添加的一部分添加的,我可以将其中一些复制到test/ctag中。在tm_parser的行中也添加了一些行。

@技术人员
复制链接
成员

谢谢。然而,要使单元测试工作,需要做的工作不仅仅是将它们复制到测试目录中。您需要:

  1. 更新测试/ctags/Makefile.am
  2. 创建为空tests/ctags/<fname>.tags哪里<名称>是每个测试的文件名
  3. 重新运行配置
  4. 运行进行检查这将失败,但这将创造<fname>.log中的文件测试/ctag目录
  5. 内部测试/ctag运行补丁-p0<fname>.log对于每个文件
  6. 重新运行进行检查确保所有测试都通过
  7. 提交<fname>.tags文件和生成文件.am改变

@技术人员
复制链接
成员

我还建议编辑tm_parser_enable_role()并添加以下内容:

案例TM_PARSER_GDSCRIPT:return kind==“c”?错误:正确;

否则,基类和实类都显示在符号树中(检查例如。gdscript-inner-class.gd你不想看到参考标签)。

大量借用python,因为GDScript的语法大量借用python
@大卫22
复制链接
贡献者 作者

好的,完成了

@@-147,6+147,9@@test_sources=\
cxx11枚举.cpp\
cxxx11-最终.cpp\
cxx11-无例外.cpp\
gdscript-inner-class.gd\
gdscript-修改器.gd\
gdscript-no-隐式分类.gd\
复制链接
成员

选择隐藏此评论的原因

将显示原因,以便向其他人描述此评论。了解更多信息.

只是一个吹毛求疵的评论:最好按字母顺序对文件进行排序。

复制链接
贡献者 作者

选择隐藏此评论的原因

将显示原因,以便向其他人描述此评论。了解更多信息.

我想是hijklmn,所以这些已经按字母顺序排列了?

复制链接
贡献者 作者

选择隐藏此评论的原因

将显示原因,以便向其他人描述此评论。了解更多信息.

哦,等等,不知怎么的,我把这些放在了清单上的另一个地方,比我想象的要多,调整

@技术人员
复制链接
成员

公关看起来不错。我做了一点测试,似乎一切都正常。虽然我不是Scintilla突出显示专家,但闪烁部分看起来也不错。我相信公关可以合并。

@elextr公司你觉得怎么样?

@elextr公司
复制链接
成员

有几个星期没有在我的开发机器上进行测试,所以我无法进行测试,因此我对更改进行了完全不可靠的扫描。

我注意到中的文件发生了更改ctags/main公司。我以为所有这些都是从uctags一字不差地复制过来的,所以下次升级时会覆盖其中的任何更改吗?

@戴维22
复制链接
贡献者 作者

ctags/main中的更改是在执行最新ctags更新后不久在tutag中所做的更改。您应该能够在上游找到这些功能,并且在下次升级后它们应该仍然存在。

@技术人员
复制链接
成员

ctags/main中的更改是在执行最新ctags更新后不久在tutag中所做的更改。您应该能够在上游找到这些功能,并且在下次升级后它们应该仍然存在。

是的,我也注意到了,这些应该很好。

@elextr公司
复制链接
成员

好的,否则我没有发现任何S/B好的

@技术人员
复制链接
成员

@elextr公司如果我合并它,可以吗?

对不起,如果我听起来太不耐烦了,但我想稍微加快ctags解析器合并过程。我真的很感谢您对Geany稳定性的渴望,我是最后一个想向Geany介绍一些不稳定源的人,但还有很多解析器需要合并(我想在稍微改进符号树类别映射之后创建pull请求)。

实际上,我认为将代码保存在单独的pull请求中不利于Geany版本的稳定性,因为人们没有定期测试这些代码,而且更多的人会看到master中的更多东西(比如Scintilla,只有你一个人没有经历崩溃)。

并不是说我认为每个拉请求都应该立即合并(例如,我倾向于有一个2周的自我修正阶段)但如果这是一个普遍同意的东西,比如我们想使用上游解析器或Scintilla,并且不需要进行广泛的审查(当合并解析器的新实现时,它基本上是不可查看的),我建议尽快合并,而不是“很快”:-)。

@elextr公司
复制链接
成员

如果我合并它,可以吗?

这就是我上面的“Ok”的意思,4个小时前,它还没有合并,延迟了什么😁

@技术人员
复制链接
成员

还有一点需要注意的是,一旦所有新的解析器和相关的标记管理器更改都完成了,我想对所有的文件类型进行一次非常广泛的测试,并检查符号树中的显示是否正确,以及是否一切都按预期运行。但现在还没有把所有东西都放在标签管理器中,这是浪费时间。

@技术人员
复制链接
成员

这就是我上面的“Ok”的意思,4个小时前,它还没有合并,延迟了什么😁

:-)

@技术人员 技术人员合并提交266c96e号进入之内 杰尼:主人 2022年1月15日
@技术人员
复制链接
成员

@戴维22谢谢!

@戴维22
复制链接
贡献者 作者

求爱

@戴维22 戴维22删除了 gdscript(gdscript) 分支 2022年1月15日12:30
@elextr公司
复制链接
成员

elextr公司 评论2022年1月15日

@戴维22谢谢你的耐心和毅力

@技术人员我不反对你说的大多数话在上面除了不稳定的Geany意味着任何测试人员都不能将其用作生产工具之外,这意味着它不会比个人PR得到更多的测试。如果我们这样做了,那就太糟了,如果我们不这样做,那就糟了,唉。

@技术人员
复制链接
成员

@技术人员我不同意你上面所说的大部分内容,除了不稳定的Geany意味着任何测试人员都不必将其用作生产工具,这意味着它不会比个人PR得到更多的测试。如果我们这样做了,那就太糟了,如果我们不这样做,那就糟了,唉。

没错。但是,对于解析器pull请求,除了映射之外,几乎没有任何Geany代码受到影响,解析器本身应该在上游进行合理的测试(单元测试使用fuzzing和valgrind)。我们在未来的版本中也会遇到这种情况——我们只会复制所有解析器的上游版本,我认为我们中没有人有足够的时间手动测试每个文件类型的各种输入。因此,对于解析器,我们必须或多或少地信任上游代码的质量。

@elextr公司
复制链接
成员

因此,对于解析器,我们必须或多或少地信任上游代码的质量。

是的,我以为我们已经同意了,甚至总督察也同意了@b4n型:-),任何扫描都会发现明显的PR错误,比如PR更改无关的Geany代码(就像我上面关于更改ctags/main的问题)。

@滑出
复制链接
贡献者

闪烁/lexilla/src/lexilla.cxx#L191:

		&lmFreeBasic软件,+		&lmGDScript脚本,&勒姆哈斯克尔,

“+”看起来是错误的。还是我错了?

@戴维22
复制链接
贡献者 作者

哦,天哪,这看起来像是某个地方搞砸了。这是怎么发生的?做公关的时候,我怎么没有因此而崩溃?

@elextr公司
复制链接
成员

@戴维22没有任何损坏,因为应用于有效类型(算术、指针等)的一元加号运算符返回原始值不变,并且&lmGDScript脚本是一个指针,所以它是无害的。

但一定要修复它。

@戴维22
复制链接
贡献者 作者

哦,很好,由c特质拯救(?)

库格尔-添加了提交引用的这个拉请求 2022年2月12日
匿名枚举现在被标记为这样(最后一个数字==1)。GDScript支持(#3012)和匿名标签PR(#3059)不知道所以直到现在才被CI抓住。
@b4n型 b4n型将此添加到1.39/2.0里程碑2023年2月20日
免费注册 在GitHub上加入此对话.已经有账户了吗?登录以发表评论
项目
还没有
开发

成功合并此请求可能会解决这些问题。

5名参与者