Я большой поклонник документирования правильного поведения функций IDE, которые оказывают незначительное, но значительное влияние на поток кодирования - такие, как выбор автозаполнения и комментируя/раскомментируя код, вы можете не понимать, что используете но в конце дня вы получили немного больше, чем могли бы сделать. Я делаю это в надежде, что другие языковые услуги, которые я должен использовать, включают функцию (-ы), впоследствии улучшая мою повседневную жизнь кодирования. «Настоящий» Smart Indent, т. Е. Редактор Visual Studio 2008 C#, является одной из этих функций.Документация по алгоритму Smart Indent?
Отступ в основном блочном коде достаточно прост и может быть взломан вместе в разумные сроки достаточно хорошо, чтобы выполнить работу. С другой стороны, True Smart Indent - это, пожалуй, самая технически сложная задача, которую мне пришлось реализовать в IDE на сегодняшний день, и я реализовал свою справедливую долю. Даже полномасштабное автоматическое форматирование кода на лету проще; он просто отдает предпочтение Smart Indent для тяжелого подъема.
Я ищу обсуждения на высоком уровне алгоритмов Smart Indent общего назначения. В частности, я ищу либо исследование стратегий интеллектуальных отступов, либо объективное описание всех нормальных и «крайних» случаев, которые можно было протестировать для обеспечения повторяемости, отсутствия ошибок. В конце концов, я хотел бы предоставить как подробный рабочий процесс функциональности, конкретную основу для фактической реализации этой функции, так и, наконец, сборку языковой версии и интеграцию ее в мои языковые службы.
PS: Редактор C# Visual Studio 2010 имеет несколько небольших ошибок в этой функции. Внедрив его сам, я полностью уважаю работу, которую нужно выполнить, чтобы отполировать его.
Редактировать (8/25): У меня получилось write down a draft the rules, поскольку, как я думаю, вещи должны обрабатываться, когда интеллектуальный отступ находится внутри комментария кода. Я, вероятно, буду работать с точки зрения C++/C# в правилах, но позже они должны быть параметризованы для аспектов других языков.
@Chris: Без двух ссылок, которые я вернул, вы не можете рассказать об объеме двух функций и о том, насколько тщательно я их выдумал. –
С гиперссылками это спам imho. – ChrisW
@Chris: Вот почему я оставил один, но не те, которые являются только схемами кода на моем блоге. –