vscode 允许扩展更改 { ... } 完成为 { ... };

ih99xse1  于 2个月前  发布在  Vscode
关注(0)|答案(6)|浏览(36)

对于类似C语言的编程语言:
建议在类、结构体、枚举和联合体的定义后自动放置分号。因为我们已经有了括号的自动补全功能,当结构体A {| }补全为struct A{ | }时,为什么不在括号后放置一个分号来完成类、结构体等的定义,例如struct A{ | };。每次在定义末尾都放置分号真的让我很烦恼。
要重现这个问题
输入:struct A {|
自动补全功能会正常工作:struct A{ | }
观察错误波浪线 - 在结构体定义后缺少分号!
手动放置分号
预期行为
在类、结构体、枚举和联合体的定义末尾有分号的自动补全功能。
现在我知道C/C++扩展没有办法修改这个功能。扩展需要运行其词法分析器来检查{之前的标记是否属于结构体/类/等定义的开始,以确定{的“补全”应该是}还是};。
Visual Studio正确地实现了这个场景。

4sup72z8

4sup72z81#

挑战在于有太多情况下不需要 ;,例如 if(1) { | } 不应该有分号。编辑器知道并做的只是插入一个开放括号的闭合括号。要正确地做到这一点,需要一个解析树(或至少是令牌序列)。

据我所知,C/C++扩展没有修改这个的方法。

不确定这个特定情况,但通常可以通过插件格式化类型提供程序来完成

sr4lhrrt

sr4lhrrt2#

转发给@alexdima,看看编辑器是否能做我遗漏的事情。

kpbwa7wx

kpbwa7wx3#

如果能实现就太好了,但正如@jrieken所指出的,今天是以一种与语言无关的方式来实现的。

ktecyv1j

ktecyv1j4#

这个功能请求现在是我们待办事项列表的候选项目。社区有60天的时间对这个问题进行投票。如果它收到20个赞成票,我们将把它移到我们的待办事项列表中。如果没有,我们将关闭它。要了解更多关于我们如何处理功能请求的信息,请参阅我们的documentation
快乐编码!

sirbozc5

sirbozc56#

这个功能请求收到了足够多的社区投票,我们将其移动到了我们的待办事项列表中。要了解更多关于我们如何处理功能请求的信息,请参阅我们的documentation
快乐编码!

相关问题