vsc создать свою подсветку синтаксиса для своего языка
Т.е. тебе надо написать своё расширение для VS Code и установить его.
Отслеживать
ответ дан 9 сен 2022 в 12:41
235 1 1 серебряный знак 16 16 бронзовых знаков
- visual-studio-code
- syntax
-
Важное на Мете
Похожие
Подписаться на ленту
Лента вопроса
Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.
Дизайн сайта / логотип © 2023 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2023.11.15.1019
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.
Как использовать оформление интерфейса из одной темы, а подсветку из другой темы в VS Code?
Нашел красивую тему для VSC, но она имеет ужасную подсветку синтаксиса. Как бы я мог использовать другую тему только для изменение подсветки синтаксиса, а остальное оформление оставив от первой темы?
Отслеживать
47.8k 17 17 золотых знаков 56 56 серебряных знаков 100 100 бронзовых знаков
задан 31 янв 2022 в 0:09
43 5 5 бронзовых знаков
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
Все достаточно просто. По порядку (на примере цвета шрифта для комментариев):
- Установите тему, где вам нравится подсветка.
- Нажмите F1
- В строке введите Developer: Generate Color Theme From Current Settings
- В открывшеся json-файле найдите «scope»: «comment» . У меня значение «foreground»: «#FF9900»
- Заберите все цвета/стили, которые вам нужны
- Переключитесь на другую тему
- Нажмите F1
- В строке введите Preferences: settings Open (JSON)
- В самый низ документа и добавляете нужные значения цветов для определенных «scope». В моем примере это comments
"editor.tokenColorCustomizations":
- Ctrl + s
- Радуетесь изменениям
- variables
- string
- constant.*
- keyword
это все можете переопределять в settings.json файле.
Про автоматические слияния тем, я, к сожалению, не слышал
Цвета и стили для Visual Studio
Область применения:
Visual Studio Visual Studio для Mac
Visual Studio Code ![]()
Использование цвета в Visual Studio
В Visual Studio цвет используется в первую очередь как средство коммуникации, а не как украшение. Используйте минимальный цвет и зарезервируете его в ситуациях, когда вы хотите:
- Обмен данными о значении или принадлежности (например, модификаторы платформы или языка)
- Обратите внимание (например, указывающее изменение состояния)
- Повышение удобочитаемости и предоставление ориентиров для навигации по пользовательскому интерфейсу
- Увеличение желательности
Существует несколько вариантов назначения цветов элементам пользовательского интерфейса в Visual Studio. Иногда может быть трудно выяснить, какой вариант вы хотите использовать, или как его правильно использовать. Этот раздел поможет вам:
- Общие сведения о различных службах и системах, используемых для определения цветов в Visual Studio.
- Выберите правильный параметр для заданного элемента.
- Правильно используйте выбранный вариант.
Никогда не жесткого шестнадцатеричного кода, RGB или системных цветов для элементов пользовательского интерфейса. Использование служб обеспечивает гибкость при настройке оттенка. Кроме того, без службы вы не сможете воспользоваться возможностями переключения тем службы VSColor.
Методы назначения цвета элементам интерфейса Visual Studio
Выберите метод, подходящий для элементов пользовательского интерфейса.
Темы Visual Studio
Visual Studio имеет три различных цветовых темы: светлые, темные и синий. Он также обнаруживает режим высокой контрастности, который является системной цветовой темой, предназначенной для специальных возможностей.
Пользователям предлагается выбрать тему во время первого использования Visual Studio и переключить темы позже, перейдя в раздел «Параметры > среды > инструментов>» и выбрав новую тему в раскрывающемся меню «Цветовая тема».
Пользователи также могут использовать панель управления для переключения всей системы в одну из нескольких тем высокой контрастности. Если пользователь выбирает тему высокой контрастности, то селектор цветов Visual Studio больше не влияет на цвета в Visual Studio, хотя все изменения темы сохраняются при выходе пользователя из режима высокой контрастности. Дополнительные сведения о режиме высокой контрастности см. в разделе «Выбор цветов высокой контрастности».
Служба VSColor
Visual Studio предоставляет службу цвета среды, известную как служба VSColor, которая позволяет привязать значения цветов элементов пользовательского интерфейса к именованной записи, содержащей значения цвета для каждой темы Visual Studio. Это гарантирует, что цвета будут автоматически изменяться, чтобы отразить текущую выбранную пользователем тему или системный режим высокой контрастности. Использование службы означает, что реализация всех изменений цвета, связанных с темой, обрабатывается в одном месте, и если вы используете общие цвета из службы, пользовательский интерфейс автоматически отражает новые темы в будущих версиях Visual Studio.
Внедрение
Исходный код Visual Studio содержит несколько файлов определения пакета, содержащих списки имен токенов и соответствующие значения цвета для каждой темы. Служба цветов считывает VSColors, определенную в этих файлах определения пакета. Эти цвета ссылаются в разметке XAML или коде, а затем загружаются с помощью IVsUIShell5.GetThemedColor метода или сопоставления DynamicResource.
Системные цвета
Общие элементы управления ссылались на системные цвета по умолчанию. Если вы хотите, чтобы пользовательский интерфейс использовал системные цвета, например при создании внедренного или автономного диалогового окна, вам не нужно ничего делать.
Общие цвета в службе VSColor
Элементы интерфейса должны отражать общую среду Visual Studio. Повторно используя общие цвета, подходящие для созданного компонента пользовательского интерфейса, вы гарантируете, что ваш интерфейс согласован с другими интерфейсами Visual Studio, и что ваши цвета будут обновляться автоматически при добавлении или обновлении тем.
Прежде чем использовать общие цвета, убедитесь, что вы понимаете, как правильно использовать их. Неправильное использование общих цветов может привести к несогласованности, разочарованию или запутанности пользователей.
Настраиваемые пользователем цвета
Иногда необходимо разрешить пользователю настраивать пользовательский интерфейс, например при создании редактора кода или области конструктора. Настраиваемые компоненты пользовательского интерфейса находятся в разделе «Шрифты и цвета» диалогового окна «Параметры инструментов>», где пользователи могут изменить цвет переднего плана, цвет фона или оба.

Архитектура службы цвета среды разработки
Доступ к службе
Существует несколько различных способов доступа к службе VSColor в зависимости от того, какой цвет маркеров вы используете и какой код у вас есть.
Стандартные цвета среды
Из машинного кода
Оболочка предоставляет службу, которая предоставляет доступ к COLORREF цветам. Служба или интерфейс:
IVsUIShell2::GetVSSysColorEx(VSSYSCOLOR dwSysColIndex, DWORD *pdwRGBval)
В файле VSShell80.idl перечисление __VSSYSCOLOREX имеет константы цвета оболочки. Чтобы использовать его, передайте в качестве значения индекса один из значений из enum __VSSYSCOLOREX документированного в MSDN или регулярного номера индекса, который принимает системный API GetSysColor Windows. Это возвращает значение RGB цвета, которое должно использоваться во втором параметре.
При сохранении пера или кисти с новым цветом необходимо AdviseBroadcastMessages (от оболочки Visual Studio) и прослушивать WM_SYSCOLORCHANGE сообщения WM_THEMECHANGED .
Чтобы получить доступ к цветовой службе в машинном коде, выполните вызов, похожий на следующее:
pUIShell2->GetVSSysColorEx(VSCOLOR_COLOR_NAME, &rgbLOCAL_COLOR);
Возвращаемые COLORREF GetVSSysColorEx() значения содержат только компоненты R,G,B цвета темы. Если запись темы использует прозрачность, значение альфа-канала отключено карта перед возвратом. Таким образом, если цвет среды должен использоваться в месте, где важен канал прозрачности, следует использовать IVsUIShell5.GetThemedColor вместо IVsUIShell2::GetVSSysColorEx этого, как описано далее в этом разделе.
Из управляемого кода
Доступ к службе VSColor с помощью машинного кода довольно прост. Однако если вы работаете с управляемым кодом, определить, как использовать службу, может оказаться сложной. Учитывая это, ниже приведен фрагмент кода C#, демонстрирующий этот процесс:
private void VSColorPaint(object sender, System.Windows.Forms.PaintEventArgs e) < //getIVSUIShell2 IVsUIShell2 uiShell2 = Package.GetService(typeof(SVsUIShell)) as IVsUIShell2; Debug.Assert (uiShell2 != null, "failed to get IVsUIShell2"); if (uiShell2 != null) < //get the COLORREF structure uint win32Color; uiShell2.GetVSSysColorEx((int)__VSSYSCOLOREX.VSCOLOR_SMARTTAG_HOVER_FILL, out win32Color); //translate it to a managed Color structure Color myColor = ColorTranslator.FromWin32((int)win32Color); //use it e.Graphics.FillRectangle(new SolidBrush(myColor), 0, 0, 100, 100); >>
Если вы работаете в Visual Basic, используйте:
Dim myColor As Color = ColorTranslator.FromWin32((Integer)win32Color)
Из пользовательского интерфейса WPF
Вы можете привязаться к цветам Visual Studio с помощью значений, экспортированных в приложение ResourceDictionary . Ниже приведен пример использования ресурсов из таблицы цветов, а также привязки к данным шрифта среды в XAML.
Вспомогательные классы и методы для управляемого кода
Для управляемого кода библиотека управляемой платформы пакетов оболочки ( Microsoft.VisualStudio.Shell.12.0.dll ) содержит несколько вспомогательных классов, упрощающих использование тематических цветов.
Вспомогательные методы в классе в Microsoft.VisualStudio.Shell.VsColors MPF включают GetThemedGDIColor() и GetThemedWPFColor() . Эти вспомогательные методы возвращают значение цвета записи темы как System.Drawing.Color или System.Windows.Media.Color , используемого в WinForms или пользовательском интерфейсе WPF.
IVsUIShell5 shell5; Button button = new Button(); button.BackColor = GetThemedGDIColor(shell5, SolutionExplorerColors.SelectedItemBrushKey); button.ForeColor = GetThemedGDIColor(shell5, SolutionExplorerColors.SelectedItemTextBrushKey); ////// Gets a System.Drawing.Color value from the current theme for the given color key. /// /// The IVsUIShell5 service, used to get the color's value. /// The key to find the color for. ///The current theme's value of the named color. public static System.Drawing.Color GetThemedGDIColor(this IVsUIShell5 vsUIShell, ThemeResourceKey themeResourceKey) < Validate.IsNotNull(vsUIShell, "vsUIShell"); Validate.IsNotNull(themeResourceKey, "themeResourceKey"); byte[] colorComponents = GetThemedColorRgba(vsUIShell, themeResourceKey); // Note: The Win32 color we get back from IVsUIShell5.GetThemedColor is ABGR return System.Drawing.Color.FromArgb(colorComponents[3], colorComponents[0], colorComponents[1], colorComponents[2]); >private static byte[] GetThemedColorRgba(IVsUIShell5 vsUIShell, ThemeResourceKey themeResourceKey) < Guid category = themeResourceKey.Category; __THEMEDCOLORTYPE colorType = __THEMEDCOLORTYPE.TCT_Foreground if (themeResourceKey.KeyType == ThemeResourceKeyType.BackgroundColor || themeResourceKey.KeyType == ThemeResourceKeyType.BackgroundBrush) < colorType = __THEMEDCOLORTYPE.TCT_Background; >// This call will throw an exception if the color is not found uint rgbaColor = vsUIShell.GetThemedColor(ref category, themeResourceKey.Name, (uint)colorType); return BitConverter.GetBytes(rgbaColor); > public static System.Windows.Media.Color GetThemedWPFColor(this IVsUIShell5 vsUIShell, ThemeResourceKey themeResourceKey)
Класс также можно использовать для получения идентификаторов VSCOLOR для заданного ключа цветового ресурса WPF или наоборот.
public static string GetColorBaseKey(int vsSysColor); public static bool TryGetColorIDFromBaseKey(string baseKey, out int vsSysColor);
Методы VsColors класса запрашивают службу VSColor для возврата значения цвета при каждом вызове. Для получения значения цвета в качестве System.Drawing.Color альтернативы лучшей производительности вместо этого следует использовать методы Microsoft.VisualStudio.PlatformUI.VSColorTheme класса, которые кэшируют значения цвета, полученные из службы VSColor. Класс подписывается внутренне на события трансляции сообщений оболочки и отменяется карта кэшированное значение при возникновении события изменения темы. Кроме того, класс предоставляет объект . Понятное событие NET для подписки на изменения темы. ThemeChanged Используйте событие, чтобы добавить новый обработчик и использовать GetThemedColor() метод для получения значений цвета для ThemeResourceKeys интересующих вас значений. Пример кода может выглядеть следующим образом:
public MyWindowPanel() < InitializeComponent(); // Subscribe to theme changes events so we can refresh the colors VSColorTheme.ThemeChanged += VSColorTheme_ThemeChanged; RefreshColors(); >private void VSColorTheme_ThemeChanged(ThemeChangedEventArgs e) < RefreshColors(); // Also post a message to all the children so they can apply the current theme appropriately foreach (System.Windows.Forms.Control child in this.Controls) < NativeMethods.SendMessage(child.Handle, e.Message, IntPtr.Zero, IntPtr.Zero); >> private void RefreshColors() < this.BackColor = VSColorTheme.GetThemedColor(EnvironmentColors.ToolWindowBackgroundColorKey); this.ForeColor = VSColorTheme.GetThemedColor(EnvironmentColors.ToolWindowTextColorKey); >protected override void Dispose(bool disposing) < if (disposing) < VSColorTheme.ThemeChanged -= this.VSColorTheme_ThemeChanged; base.Dispose(disposing);>>
Выбор цветов высокой контрастности
Windows использует несколько высококонтрастных системных тем, которые повышают цветовую контрастность текста, фона и изображений, что делает элементы более четкими на экране. По соображениям специальных возможностей важно правильно реагировать на элементы интерфейса Visual Studio, когда пользователи переключаются на тему высокой контрастности.
Для тем высокой контрастности можно использовать только горстку системных цветов. При выборе системных цветов помните следующие советы:
- Выберите системные цвета с тем же семантическим значением , что и элемент, который вы цветуете. Например, если вы выбираете цвет высокой контрастности для текста в окне, используйте WindowText и не ControlText.
- Выберите пары переднего плана или фона вместе или вы не будете уверены, что ваш выбор цвета будет работать во всех темах высокой контрастности.
- Определите, какие части пользовательского интерфейса являются наиболее важными и убедитесь, что области содержимого будут выделяться. Вы потеряете много деталей, что тонкие различия в цветовом оттенке обычно отличаются, поэтому использование сильных цветов границ распространено для определения областей содержимого, потому что нет вариантов цвета для разных областей контента.
Системный набор цветов
Таблица в блоге группы WPF: SystemColors Reference указывает полный набор системных цветов и соответствующие оттенки, отображаемые в каждой теме.
При применении этого ограниченного набора цветов к пользовательскому интерфейсу ожидается, что вы потеряете тонкие детали, которые присутствовали в обычных темах. Ниже приведен пример пользовательского интерфейса с тонкими серыми цветами, которые используются для различения областей в окне инструментов. При паре с тем же окном, которое отображается в режиме высокой контрастности, можно увидеть, что все фоны одинаковые оттенки и границы этих областей указываются только границами:

Пример того, как тонкие детали теряются в высокой контрастности
Выбор цветов текста в редакторе
Цветной текст используется в редакторе или на поверхности конструктора, чтобы указать значение, например, чтобы упростить идентификацию групп похожих элементов. Однако в теме высокой контрастности у вас нет возможности различать более трех цветов текста. WindowText, GrayText и HotTrackText являются единственными цветами, доступными на поверхностях WindowBackground. Так как вы не можете использовать более трех цветов, тщательно выберите наиболее важные различия, которые вы хотите отобразить в режиме высокой контрастности.
Оттенки для каждого из имен маркеров, разрешенных на поверхности редактора, так как они отображаются в каждой теме высокой контрастности:

Сравнение редактора высокой контрастности
Примеры поверхности редактора в синей теме:

Редактор в «Голубой» теме

Редактор в теме Высокой контрастности #1
Варианты использования
Многие распространенные элементы пользовательского интерфейса уже имеют определенные цвета высокой контрастности. Вы можете ссылаться на эти шаблоны использования при выборе собственных системных цветов, чтобы элементы пользовательского интерфейса соответствовали аналогичным компонентам.
| Системный цвет | Использование |
|---|---|
| ActiveCaption | — Активные IDE и кнопки с рафтированным окном глифы на наведении указателя мыши и нажатие клавиши — фон строки заголовка для интегрированной среды разработки и рафтированных окон — Фон строки состояния по умолчанию |
| ActiveCaptionText | — активные окна интегрированной среды разработки и рафтированные окна для переднего плана строки заголовка (текст и глифы) — Фон и граница активных кнопок окна при наведении указателя мыши и нажатия клавиши |
| Элемент управления | — Поле со списком, раскрывающийся список и элемент управления поиском по умолчанию и отключенный фон, включая кнопку раскрывающегося списка — Фон целевой кнопки «Закрепить» — фон панели команд — фон окна инструментов |
| ControlDark | — фон интегрированной среды разработки — Разделители строк меню и команд — граница панели команд — Тени меню — вкладка окна инструментов по умолчанию и наведите указатель мыши на границу и разделитель — Фон кнопки переполнения документа — граница глифа целевого объекта док-станции |
| ControlDarkDarkDark | — Нефокусировано, выбранное окно вкладки документа |
| ControlLight | — граница вкладки «Автоматическое скрытие» — поле со списком и граница раскрывающегося списка — фон и граница целевого целевого объекта док-станции |
| ControlLightLight | — Выбранная, ориентированная временная граница |
| ControlText | — поле со списком и раскрывающийся список глифов — Текст вкладки «Окно инструментов» без выбора |
| Серый текст | — Поле со списком и раскрывающийся список отключенные границы, раскрывающийся список глиф, текст и текст элемента меню — Отключенный текст меню — Текст заголовка элемента управления «Параметры поиска» — разделитель разделов элемента управления поиском |
| Выделить | — Все наведите указатель мыши и нажатые фоны и границы, кроме фона раскрывающегося списка со списком, а также границы кнопки переполнения документа — Фоны выбранных элементов |
| HighlightText | — все наведите указатель мыши и нажатые на переднем плане (текст и глифы) — Окно «Фокус» и элемент управления окном вкладки документа — Граница строки заголовка окна с выделенным инструментом — Фокус, выбранная временная вкладка переднего плана — Граница кнопки переполнения документа при наведении указателя мыши и нажатии клавиши — Выбранная граница значка |
| HotTrack | — фон полосы прокрутки и граница при нажатии клавиши — глиф стрелки со стрелкой прокрутки при нажатии |
| InactiveCaption | — Неактивная интегрированная среда разработки и глифы окна с рафированными глифами при наведении указателя мыши — фон строки заголовка для интегрированной среды разработки и рафтированных окон — отключенный фон элемента управления поиском |
| InactiveCaptionText | — неактивная интегрированная среда разработки и строка заголовков окон для переднего плана (текст и глифы) — Неактивные кнопки окна фона и границы при наведении указателя мыши — фон и граница окна нефокусированного окна инструментов — отключенный элемент управления поиска переднего плана |
| Меню | — фон раскрывающегося меню — установлен и отключен фон проверка метки |
| MenuText | — граница раскрывающегося меню — флажки — глифы меню — текст раскрывающегося меню — Выбранная граница значка |
| Полоса прокрутки | — Полоса прокрутки и фон со стрелкой прокрутки, все состояния |
| Окно | — Фон вкладки «Автоматическое скрытие» — фон строки меню и полки команд — фон и граница окна документа без фокусировки или отмены выбора, а также для открытых и временных вкладок — Фон строки заголовка окна без фокусировки инструментов — Фон вкладки окна инструментов, выбранный и не выбранный |
| Окно кадра | — граница интегрированной среды разработки |
| WindowText | — автоматическое скрытие вкладки переднего плана — вкладка «Выбранное окно инструментов» на переднем плане — вкладка «Нефокусированные» окна документа и нефокусированные или не выбранные временные вкладки переднего плана — представление дерева по умолчанию переднего плана и наведите указатель мыши на неизбираемый глиф — выбранная граница вкладки окна инструментов — фон полосы прокрутки, граница и глиф |
Отображение цветов для конечных пользователей
Иногда необходимо разрешить пользователю настраивать пользовательский интерфейс, например при создании редактора кода или области конструктора. Наиболее распространенным способом этого является диалоговое окно «Параметры инструментов>». Если у вас нет специализированного пользовательского интерфейса, требующего специальных элементов управления, проще всего представить настройку на странице «Шрифты и цвета » в разделе «Среда» диалогового окна. Для каждого элемента, который предоставляется для настройки, пользователь может изменить цвет переднего плана, цвет фона или оба элемента.
Создание VSPackage для настраиваемых цветов
VSPackage может управлять шрифтами и цветами с помощью пользовательских категорий и отображения элементов на странице свойств Fonts и Colors. При использовании этого механизма VSPackages должны реализовать интерфейс IVsFontAndColorDefaultsProvider и связанные с ним интерфейсы.
В принципе этот механизм можно использовать для изменения всех существующих элементов отображения и категорий, содержащих их. Однако его не следует использовать для изменения категории текстового редактора или его отображаемых элементов. Дополнительные сведения о категории «Текстовый редактор» см. в разделе «Обзор шрифта и цвета».
Чтобы реализовать пользовательские категории или отображаемые элементы, необходимо выполнить следующее:
- Создайте или определите категории в реестре. Реализация IDE на странице свойств Fonts and Colors использует эти сведения для правильного запроса к службе, поддерживающей определенную категорию.
- Создайте или определите группы в реестре (необязательно). Может быть полезно определить группу, представляющую объединение двух или более категорий. Если определена группа, интегрированная среда разработки автоматически объединяет подкатегории и распределяет отображаемые элементы в группе.
- Реализуйте поддержку интегрированной среды разработки.
- Обработка изменений шрифта и цвета.
Создание или определение категорий
Создайте специальный тип записи реестра категорий, в которой [HKLM\SOFTWARE\Microsoft \Visual Studio\\\FontAndColors\\] не локализованное имя категории.
Заполните реестр двумя значениями:
| Имя. | Тип | Data | Description |
|---|---|---|---|
| Категория | REG_SZ | GUID | Идентификатор GUID, созданный для идентификации категории |
| Пакет | REG_SZ | GUID | GUID службы VSPackage, поддерживающей категорию |
Служба, указанная в реестре, должна предоставлять реализацию IVsFontAndColorDefaults для соответствующей категории.
Создание или идентификация групп
Создайте специальный тип записи реестра категорий, в которой [HKLM\SOFTWARE\Microsoft \Visual Studio\\\FontAndColors\\] не локализованное имя группы.
Заполните реестр двумя значениями:
| Имя. | Тип | Data | Description |
|---|---|---|---|
| Категория | REG_SZ | GUID | Идентификатор GUID, созданный для идентификации категории |
| Пакет | REG_SZ | GUID | GUID службы VSPackage, поддерживающей категорию |
Служба, указанная в реестре, должна предоставлять реализацию IVsFontAndColorGroup соответствующей группы.

Реализация интерфейса IVsFontAndColorGroup
Реализация поддержки интегрированной среды разработки
Реализуйте GetObject, который возвращает интерфейс IVsFontAndColorDefaults или IVsFontAndColorGroup интерфейс интегрированной среды разработки для каждой категории или guid группы.
Методы, реализованные с помощью IVsFontAndColorDefaults , должны предоставить интегрированную среду разработки следующим способом:
- Списки отображаемых элементов в категории
- Локализуемые имена для отображаемых элементов
- Отображение сведений для каждого члена категории
Каждая категория должна содержать по крайней мере один отображаемый элемент.
Интегрированная среда разработки использует IVsFontAndColorGroup интерфейс для определения объединения нескольких категорий.
Его реализация предоставляет интегрированную среду разработки:
- Список категорий, составляющих определенную группу
- Доступ к экземплярам IVsFontAndColorDefaults , поддерживающим каждую категорию в группе
- Локализованные имена групп
Обновление интегрированной среды разработки
Интегрированная среда разработки кэширует сведения о параметрах шрифта и цвета. Таким образом, после любых изменений конфигурации шрифта и цвета интегрированной среды разработки, чтобы обеспечить актуальность кэша, рекомендуется.
Обновление кэша выполняется через интерфейс IvsFontAndColorCacheManager и может выполняться глобально или только для выбранных элементов.
Обработка изменений шрифта и цвета
Для правильной поддержки цвета текста, отображаемого VSPackage, служба цветов, поддерживающая VSPackage, должна реагировать на изменения, инициированные пользователем, на странице свойств шрифтов и цветов.
Для этого пакет VSPackage должен:
- обработайте события , созданные IDE, реализуя интерфейс IVsFontAndColorEvents . Интегрированная среда разработки вызывает соответствующий метод после изменений пользователей страницы шрифтов и цветов. Например, он вызывает метод OnFontChanged , если выбран новый шрифт. ИЛИ
- опрос интегрированной среды разработки для изменений. Это можно сделать с помощью интерфейса IVsFontAndColor, реализованного системой служба хранилища. Хотя в основном для поддержки сохраняемости метод GetItem может получить сведения о шрифте и цвете для отображаемых элементов. Дополнительные сведения о параметрах шрифта и цвета см. в статье MSDN по доступу к хранимым шрифтам и цвету Параметры.
Чтобы убедиться, что результаты опроса правильны, используйте интерфейс IVsFontAndColorCacheManager, чтобы определить, требуется ли очистка кэша и обновление перед вызовом методов извлечения интерфейса IVsFontAndColor служба хранилища.
Регистрация пользовательского шрифта и цветовой категории без реализации интерфейсов
В следующем примере кода показано, как зарегистрировать настраиваемый шрифт и цветовую категорию без реализации интерфейсов:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\8.0Exp\FontAndColors\CSharp Tool Window] "Package"="" "Category"="" "ToolWindowPackage"="" "NameID"=dword:00000064
В этом примере кода:
- «NameID» = идентификатор ресурса локализованного имени категории в пакете
- «ToolWindowPackage» = GUID пакета
- «Category»=»» это просто пример, и фактическое значение может быть новым GUID, предоставляемым реализутелем.
Настройка GUID категории свойств «Шрифт» и «Цвет»
В приведенном ниже примере кода показано, как задать идентификаторы GUID категории.
// m_pView is your IVsTextView IVsTextEditorPropertyCategoryContainer spPropCatContainer = (IVsTextEditorPropertyCategoryContainer)m_pView; if (spPropCatContainer != null) < IVsTextEditorPropertyContainer spPropContainer; Guid GUID_EditPropCategory_View_MasterSettings = new Guid(""); hr = spPropCatContainer.GetPropertyCategory( ref GUID_EditPropCategory_View_MasterSettings, out spPropContainer); if(hr == 0) < hr = spPropContainer.SetProperty( VSEDITPROPID.VSEDITPROPID_ViewGeneral_FontCategory, catGUID); hr = spPropContainer.SetProperty( VSEDITPROPID.VSEDITPROPID_ViewGeneral_ColorCategory, catGUID); >>
Установить язык для подсветки синтаксиса в Visual Studio Code
I у вас есть текстовый файл (.txt) с CSS, и вы хотите получить подсветку синтаксиса. Вы можете открыть палитру команд с помощью ctrl + shift + p . Но там вы не можете установить синтаксис, как в Sublime.
Есть ли другой способ получить раскраску CSS из моего текстового файла?
В В самом правом нижнем углу, слева от смайлика, был значок «Обычный текст». Когда вы щелкаете по нему, появляется меню со всеми языками, где вы можете выбрать нужный язык.

Нажмите Ctrl + K M , а затем введите (или щелкните) нужный язык.
В качестве альтернативы, чтобы получить доступ к нему из палитры команд, найдите ” Измените языковой режим », как показано ниже:

Поделиться
Улучшить этот ответ
отредактировал 8 августа 2016 в 13:55
69k2222 золотых знака140140 серебряных знаков172172 бронзовых знака
ответил 13 ноября ’15 в 16:12

Если вы видите панель расширений, вы можете нажимать Ctrl + K, Ctrl + M вместо Ctrl + K, M, что было моей ошибкой. – Крис, 13 марта ’17 в 17:56
cmd + KM на Mac. – Адам Паркин, 16 окт. 2017 г., в 16:03
@gitsitgo, в чем смысл KM? – Pacerier 16 фев., 18:04
macOS: shift + cmd + P – gderaco, 12 июня ’18 в 15:53
Это должно быть переименовано в «Изменить выделение синтаксиса» – Саймон Сомлай, 18 июля 2018, 9:04
| показать 6 дополнительных комментариев
Нажмите Ctrl + K M , а затем введите (или щелкните) нужный язык.
В качестве альтернативы, чтобы получить доступ к нему из палитры команд, найдите «Изменить режим языка», как показано ниже :

Еще одна причина, по которой люди может затруднить работу подсветки синтаксиса, потому что у них не установлен соответствующий пакет синтаксиса. Хотя некоторые пакеты синтаксиса по умолчанию поставляются предустановленными (например, Swift, C, JS, CSS), другие могут быть недоступны.
Чтобы решить эту проблему, вы можете Cmd + Shift + P → «установить расширения» и найти язык, который вы хотите добавить, скажем «Scala».

Найдите подходящий Пакет Syntax, установите его и перезагрузите. Это подберет правильный синтаксис для ваших файлов с предопределенным расширением, то есть в данном случае .scala .
Наверх из этого вы можете захотеть, чтобы VS Code обрабатывал все файлы с определенными расширениями как предпочтительный язык. Допустим, вы хотите выделить все *. e s как JavaScript, затем просто откройте «Пользовательские настройки» ( Cmd + Shift + P → «Пользовательские настройки») и настройте свои пользовательские ассоциации файлов следующим образом:
"files.associations": ,
Поделиться
Улучшить этот ответ
ответил 22 мая ’17 в 11:37
Спасибо – files.associations было то, что я искал – statler 9 сентября ’17 в 6:14
Вы получите от меня cookie с лакомым кусочком ассоциации файлов, спасибо! – user188757 01 фев, в 21:11
добавить комментарий |
Другая причина, по которой люди могут столкнуться с трудностями при работе с подсветкой синтаксиса, заключается в том, что у них не установлен соответствующий пакет синтаксиса. Хотя некоторые пакеты синтаксиса по умолчанию поставляются предустановленными (например, Swift, C, JS, CSS), другие могут быть недоступны.
Чтобы решить эту проблему, вы можете Cmd + Shift + P → «установить расширения» и найдите язык, который вы хотите добавить, скажем «Scala».

Найдите подходящий пакет Syntax, установите его и перезагрузите. Это подберет правильный синтаксис для ваших файлов с предопределенным расширением, в данном случае .scala .
Кроме того, вы можете захотеть, чтобы VS Code был рассматривать все файлы с определенными расширениями как предпочтительный язык. Допустим, вы хотите выделить все *. es как JavaScript, затем просто откройте «Пользовательские настройки» ( Cmd + Shift + P → «Пользовательские настройки») и настройте свои пользовательские ассоциации файлов следующим образом:
"files.associations": ,
Подсветка синтаксиса для настраиваемого расширения файла
Любое настраиваемое расширение файла может быть связано со стандартным синтаксисом выделение с помощью пользовательской ассоциации файлов в пользовательских настройках следующим образом.
Обратите внимание, что это будет постоянная настройка. Чтобы установить только для текущего сеанса, введите предпочтительный язык в поле Выбрать языковой режим (без изменения настроек ассоциации файлов )
Установка нового пакета синтаксиса
Если требуемый пакет синтаксиса недоступен по умолчанию, вы можете добавить его через Extension Marketplace ( Ctrl + Shift + X ) и найдите языковой пакет.
Вы можете дополнительно воспроизвести описанные выше шаги для сопоставления расширений файлов с новым пакетом синтаксиса.
Поделиться
Улучшить этот ответ
ответил 25 апр. ’19 в 13:21
добавить комментарий |
Подсветка синтаксиса для настраиваемого расширения файла
Любое настраиваемое расширение файла может быть связано со стандартной подсветкой синтаксиса с помощью пользовательская ассоциация файлов в пользовательских настройках следующим образом.
Обратите внимание, что это будет постоянная настройка. Чтобы установить только для текущего сеанса, введите предпочтительный язык в поле Выбрать языковой режим (без изменения настроек ассоциации файлов )
Установка нового пакета синтаксиса
Если требуемый пакет синтаксиса недоступен по умолчанию, вы можете добавить его через Extension Marketplace ( Ctrl + Shift + X ) и найдите языковой пакет.
Вы можете дополнительно воспроизвести описанные выше шаги, чтобы сопоставить расширения файлов с новым пакетом синтаксиса.
Чтобы навсегда установить синтаксис языка:
откройте файл settings.json
*) отформатируйте все текстовые файлы в формате javascript
"files.associations":
*) форматировать все несохраненные файлы (без названия-1 и т. д.) в javascript:
"files.associations":
Поделиться
Улучшите этот ответ
ответил 14 дек. ’19 в 11:37

добавить комментарий |
Чтобы навсегда установить синтаксис языка:
откройте файл settings.json
*) форматировать все текстовые файлы с форматированием javascript
"files.associations":
*) отформатируйте все несохраненные файлы (без названия-1 и т. д.) в javascript:
"files.associations":
Обратите внимание, что для редактора «Без названия» (« Untitled-1 », « Untitled-2 ») теперь вы можете установить язык в настройки.
Предыдущий параметр был:
"files.associations":
Это не всегда будет работать, потому что с VSCode 1.42 (Q1 2020) будут изменены заголовки этих безымянных редакторов.
title теперь будет первой строкой документ для заголовка редактора , рядом с общим названием как часть описания.
Он больше не запускается с “ untitled- ”
См. “Улучшения редактора без названия”
Относительно соответствующий язык для этих редакторов “Без названия”:
По умолчанию для файлов без названия не настроен определенный языковой режим.
VS Code имеет параметр files.defaultLanguage для настройки языка по умолчанию для файлов без названия.
В этом выпуске параметр может принимать новое значение , который будет динамически использовать языковой режим текущего активного редактора вместо фиксированного по умолчанию .
Кроме того, при копировании и вставить текст в безымянный редактор, VS Code теперь автоматически изменит языковой режим безымянного редактора, если текст был скопирован из редактора VS Code:
И см. workbench.editor.untitled.labelFormat в VSCode 1.43.
Поделиться
Улучшить этот ответ
отредактировано 20 июня ’20 в 9:12
Сообщество ♦
111 серебряных значков
ответил 29 января ’20 в 17:18
добавить комментарий |
Обратите внимание, что для редактора «Без названия» (« Untitled-1 », « Untitled-2 “), теперь вы можете установить язык в настройках.
Предыдущий параметр был:
"files.associations":
Это не всегда будет работать, потому что с VSCode 1.42 (Q1 2020) будут изменены заголовки этих безымянных редакторов.
Теперь title будет быть первой строкой документа для заголовка редактора вместе с общим именем как частью описания.
Он больше не будет начинаться с “ без названия — “
См.« Улучшения редактора без названия »
Относительно связанного языка для этих редакторов без названия:
По умолчанию для файлов без названия не настроен определенный языковой режим.
VS Code имеет параметр files.defaultLanguage для настройки язык по умолчанию для файлов без названия.
В этом выпуске параметр может принимать новое значение , которое будет динамически использовать языковой режим текущего активного редактора вместо фиксированный по умолчанию .
Кроме того, когда вы копируете и вставляете текст в безымянный редактор, VS Code теперь автоматически изменяет языковой режим безымянного редактора, если текст был скопирован из редактора VS Code:
И см. workbench.editor .untitled.labelFormat в VSCode 1.43
