【发布时间】:2010-11-22 01:59:45
【问题描述】:
我非常喜欢记录 IDE 功能的正确行为,这些功能对编码流程有微妙但重要的影响 - 例如自动完成选择和注释/取消注释代码 你可能没有意识到你利用了,但在一天结束时,你得到的只是比你可能做的多一点。我这样做是希望我必须使用的其他语言服务包含这些功能,从而改善我的日常编码生活。 “真正的”智能缩进,即 Visual Studio 2008 C# 编辑器,就是这些功能之一。
基本块代码缩进相当简单,可以在合理的时间内很好地完成工作。另一方面,真正的智能缩进很可能是迄今为止我必须在 IDE 中实现的最具技术挑战性的任务,而且我已经实现了我的公平份额。即使是成熟的即时自动代码重新格式化也更容易;它只是让 Smart Indent 完成繁重的工作。
我正在寻找有关通用智能缩进算法的高级讨论。 特别是,我正在寻找有关智能缩进策略的研究,或者对所有正常和“边缘”情况的客观描述,以确保可重复、无错误的结果。最终,我'想提供功能的详细工作流程,实际实现该功能的具体基础,并最终从中组装一个特定于语言的版本并将其集成到我的语言服务中。
PS:Visual Studio 2010 的 C# 编辑器在此功能中有几个小错误。我自己实现了它,我对完善它所需要的工作有了全新的尊重。
编辑 (8/25): 我设法write down a draft the rules 了解我认为当智能缩进位于代码注释中时应该如何处理。我可能会从 C++/C# 的角度研究规则,但稍后它们应该能够针对其他语言的各个方面进行参数化。
【问题讨论】:
-
@Chris:没有我放回的两个链接,你无法说出这两个功能的范围以及我是如何仔细考虑它们的。
-
带有超链接,恕我直言,这是垃圾邮件。
-
@Chris:这就是为什么我遗漏了一个,而不是我博客上只是代码流程图的两个
-
我读过它们。尽管它们对您来说似乎很相关,但它们与 IMO 无关,因为它们无法回答这个问题,即引用“通用智能缩进算法的学术讨论”。
-
我不明白为什么您更喜欢学术论文而不是实际解决方案。例如,您是否看过 Doxygen 是如何做到这一点的?
标签: algorithm ide indentation code-formatting