Часть вашего вопроса с отступом выполняется сегодня в реальном продукте, хотя, возможно, даже с большей степенью автоматизации, чем вы себе представляли, продукт, о котором я упоминаю, представляет собой XSLT IDE , но с тем же форматированием принципы будут работать с большинством (но не со всеми) синтаксисами обычного кода.
Это действительно нужно увидеть в видео , чтобы понять все это (извините за музыкальный трек). Есть также легкий дополнительный редактор XML, XMLQuire , который служит демонстратором технологий.
На снимке экрана ниже показан XML, отформатированный с довольно сложными правилами форматирования в этой среде XSLT IDE, где все отступы выполняются в стиле текстового процессора с использованием левого поля, а не пробелов или символов табуляции.
Чтобы подчеркнуть эту концепцию форматирования, все символы были выделены, чтобы показать, где левый край простирается для сохранения отступа. Я использую термин Виртуальное форматирование , чтобы описать это - это не упругие остановки табуляции, потому что просто нет вкладок, просто информация о полях, которая является частью форматирования «абзаца» (здесь используются коды RTF). Синтаксический анализатор переформатирует непрерывно, в один проход с окраской синтаксиса.
Пропорциональный шрифт здесь не использовался, но это могло бы быть довольно легко - потому что отступ задается в TWIPS. Опыт редактирования довольно убедителен, потому что, когда вы реорганизуете код (в данном случае XML), возможно, с помощью перетаскивания или увеличения длины значения атрибута, отступ просто перетекает сам, чтобы соответствовать - нет табуляции кнопку или кнопку «переформатировать», чтобы нажать.
Итак, отступ есть, но работа со шрифтами - более сложная проблема. Я экспериментировал с этим, но обнаружил, что если шрифты переизбираются при вводе текста, горизонтальное смещение кода слишком отвлекает - вероятно, потребуется команда инициированного пользователем «форматирования шрифтов». Продукт также имеет встроенную технологию рукописного ввода для аннотирования кода, но мне еще предстоит использовать это в живом выпуске.