我喜欢记录IDE功能的正确使用方式,这些功能在编码流程中具有微妙但重要的影响,例如自动补全选择和注释/取消代码注释等,你可能没有意识到自己正在利用它们,但最终你完成的工作量会更多。我这样做是希望其他我必须使用的语言服务可以包含这些功能,从而改善我的日常编码生活。"真正的"智能缩进,即Visual Studio 2008 C#编辑器,就是其中之一。
基本块代码缩进相当简单,可以在合理的时间内很好地拼凑在一起,以完成工作。另一方面,真正的智能缩进可能是我迄今为止实现IDE中最具挑战性的任务之一,而我已经实现了自己公平份额的任务。即使是全面的即时自动代码重新格式化也更容易; 它只是将其推迟到智能缩进来完成繁重的工作。
我正在寻找关于普适智能缩进算法的高级讨论。特别是,我正在寻找智能缩进策略的研究,或者可以测试以确保可重复、无错误结果的所有常规和“边缘”情况的客观描述。最终,我想提供功能的详细工作流程、实际实施该功能的具体基础,以及从中组装一种特定于语言的版本,并将其集成到我的语言服务中。
PS: Visual Studio 2010 的 C# 编辑器在这个功能中有一些小错误。自己实现之后,我对它所花费的工作有了全新的尊重。
编辑 (8/25): 我设法起草了智能缩进规则,说明当智能缩进位于代码注释内部时应该如何处理。我可能会从 C++/C# 规则的角度出发进行工作,但稍后它们应该能够为其他语言的方面进行参数化。