Реализовал табличное форматирование в интеграции для VS.
Нажатие таба внутри кода (не в начале строки) всегда вбивает пробелы, а не табы (даже если в настройках студии заданы табы).
При этом пробелы добполнятся до позиции бижайшего токена отделенного пробелами ниже или выше текущей строки.
Т.е. если имеет следующий код:
public enum MemberKind
{
| All = 0xbf
| Constructor = 1
| Custom = 0x40
курсор находится перед знаком "=" в строке с All или в строке с Custom
и нажимаем Tab, то курсор перемещается в позицию где находится "=" в строке с Constructor, а промежуток забивается пробелами.
Работа ведется на уровне пробельный символ или не пробельный. так что будет работать и в коментах, и встроках, но понятие токена будет понимать очень примитивно. Токеном является что-то отбитое пробельными символами.
Ниже приведет код после двух указанных нажатий на Tab.
public enum MemberKind
{
| All = 0xbf
| Constructor = 1
| Custom = 0x40