Поддержка EditorConfig для языковой службы

Файлы EditorConfig позволяют описать общие параметры текстового редактора, такие как размер отступа, на основе каждого проекта. Дополнительные сведения о поддержке Visual Studio для файлов EditorConfig см. в статье "Создание переносимых параметров редактора" с помощью EditorConfig.

В большинстве случаев при реализации языковой службы Visual Studio не требуется выполнять никаких дополнительных действий для поддержки универсальных свойств EditorConfig. Основной редактор автоматически обнаруживает и считывает .editorconfig файл, когда пользователи открывают файлы, и задает соответствующие параметры текстового буфера и представления. Однако для изменений, таких как вкладки и пробелы, некоторые языковые службы предпочитают использовать соответствующий параметр контекстного текстового представления, а не глобальные параметры. В этих случаях языковую службу нужно обновить для поддержки файлов EditorConfig.

Ниже приведены изменения, необходимые для обновления языковой службы для поддержки файлов EditorConfig, заменив глобальный параметр для конкретного языка контекстным параметром:

Стиль отступов

Параметры для конкретного языка Контекстные параметры
Microsoft.VisualStudio.TextManager.Interop.LANGPREFERENCES.fInsertTabs
Microsoft.VisualStudio.Package.LanguagePreferences.InsertTabs
!textBufferOptions.GetOptionValue(DefaultOptions.ConvertTabsToSpacesOptionId)
!textView.Options.GetOptionValue(DefaultOptions.ConvertTabsToSpacesOptionId)

Размер отступа

Параметры для конкретного языка Контекстные параметры
Microsoft.VisualStudio.TextManager.Interop.LANGPREFERENCES.uIndentSize
Microsoft.VisualStudio.Package.LanguagePreferences.InsertTabs.IndentSize
textBufferOptions.GetOptionValue(DefaultOptions.IndentSizeOptionId)
textView.Options.GetOptionValue(DefaultOptions.IndentSizeOptionId)

Размер интервала табуляции

Параметры для конкретного языка Контекстные параметры
Microsoft.VisualStudio.TextManager.Interop.LANGPREFERENCES.uTabSize
Microsoft.VisualStudio.Package.LanguagePreferences.InsertTabs.TabSize
textBufferOptions.GetOptionValue(DefaultOptions.TabSizeOptionId)
textView.Options.GetOptionValue(DefaultOptions.TabSizeOptionId)