Работа с цветовыми схемами

Обзор

Цветовые схемы определяют цвета области редактирования текста и подсветку синтаксиса. Цветовая схема включает следующее:

  • Стиль текста, используемый для подсветки синтаксиса через атрибуты типовых стилей. Например, цвет текста и цвет выделенного текста.

  • Фон области редактирования текста, включая выделение текста и текущую строку.

  • Полоса закладок области текста: их фон, разделительная линия, номера строк, маркеры переноса строк, маркеры изменённых строк и сворачивание кода.

  • Декораторы текста, такие как маркеры поиска, отступов и табуляции или пробелов, обозначение парных скобок и разметка при проверке правописания.

  • Закладки и фрагменты текста.

Это не касается следующих параметров интерфейса:

  • Тип шрифта и размер шрифта.

  • Цвета в программе редактирования текста, в частности на карте полосы прокрутки, в меню, на панели вкладок, цвет окна и так далее. В приложениях KDE, в частности Kate или KDevelop, эти цвета определяются глобальной схемой цветов KDE Plasma, которая указана в модуле «Цвета» программы «Параметры системы» или в самой программе, в меню НастройкаЦветовая схема.

Цветовые схемы «Breeze, светлый вариант» и «Breeze, тёмный вариант» с подсветкой синтаксиса «C++».

Цветовые схемы «Breeze, светлый вариант» и «Breeze, тёмный вариант» с подсветкой синтаксиса «C++».

Цветовые схемы KSyntaxHighlighting

KSyntaxHighlighting — это движок подсветки синтаксиса, библиотека, которая предоставляет доступ к цветовым схемам и позволяет управлять ими. Она является частью KDE Frameworks™, её используют текстовые редакторы KDE, такие как Kate, KWrite, Kile и KDevelop. Эта зависимость выглядит следующим образом:

Зависимость от библиотек KDE Frameworks™ 5 в текстовых редакторах.

Зависимость от библиотек KDE Frameworks™ в текстовых редакторах.

KSyntaxHighlighting включает ряд встроенных схем, которые показаны на странице «цветовых схем» веб-сайта редактора Kate.

Библиотека KTextEditor, которая представляет собой движок редактирования текста, предоставляет интерфейс пользователя для создания и редактирования цветовых схем, в том числе средство импорта и экспорта схем. С помощью этого интерфейса проще всего создавать и редактировать схемы; чтобы получить доступ к нему, следует открыть диалоговое окно «Настройка» текстового редактора. Подробнее: «Графический интерфейс цветовых схем».

Графический интерфейс для управления цветовыми схемами в параметрах Kate.

Графический интерфейс для управления цветовыми схемами в параметрах Kate.

Важно помнить, что в текстовых редакторах KDE, таких как Kate или KDevelop, цветовые схемы KSyntaxHighlighting используются с KDE Frameworks™ 5.75 (дата выхода — 10 октября 2020 года). Ранее использовались цветовые схемы Kate (настройка схемы на основеKConfig), которые теперь считаются устаревшими. Тем не менее, возможно преобразовать старые схемы Kate в цветовые схемы KSyntaxHighlighting. Репозиторий KSyntaxHighlighting содержит сценарий utils/kateschema_to_theme_converter.py и утилиту utils/schema-converter/, предназначенные для этого.

Формат JSON цветовых схем

Обзор

Цветовые схемы хранятся в файлах формата JSON с расширением .theme.

В хранилище исходного кода KSyntaxHighlighting файлы JSON встроенных схем располагаются в каталоге data/themes/. Обратите внимание, что в текстовых редакторах встроенные схемы скомпилированы в библиотеку KSyntaxHighlighting.Поэтому для доступа к ним требуется исходный код или выполнение экспорта из графического интерфейса управления схемами KTextEditor.

Также возможно легко добавлять дополнительные или пользовательские схемы, которые будут загружаться из файловой системы компьютера. Пользовательские файлы схем расположены в каталоге org.kde.syntax-highlighting/themes/ в папке пользователя (её расположение возможно определить с помощью команды qtpaths --paths GenericDataLocation, обычно это $HOME/.local/share/ и /usr/share/).

В случае пакетов Flatpak и Snap расположение данных различается в зависимости от конкретного приложения. В приложении Flatpak расположением пользовательских файлов схем обычно является $HOME/.var/app/название-пакета-flatpak/data/org.kde.syntax-highlighting/themes/, а в приложении Snap — $HOME/snap/название-пакета-snap/current/.local/share/org.kde.syntax-highlighting/themes/.

В Windows® эти файлы хранятся в %USERPROFILE%\AppData\Local\org.kde.syntax-highlighting\themes. %USERPROFILE% обычно имеет значение C:\Users\пользователь.

В целом, для большинства конфигураций каталогом пользовательских схем будет:

Для локального пользователя$HOME/.local/share/org.kde.syntax-highlighting/themes/
Для всех пользователей/usr/share/org.kde.syntax-highlighting/themes/
Для пакетов Flatpak$HOME/.var/app/название-пакета-flatpak/data/org.kde.syntax-highlighting/themes/
Для пакетов Snap$HOME/snap/название-пакета-snap/current/.local/share/org.kde.syntax-highlighting/themes/
В Windows®%USERPROFILE%\AppData\Local\org.kde.syntax-highlighting\themes

Если имеется несколько файлов схем с одним и тем же именем, будет загружен файл с наибольшим значением атрибута revision.

Структура JSON

Описание структуры файла JSON приводится на соответствующем веб-сайте. Как правило, файл формата JSON состоит из следующих компонентов:

  • Наборы разделённых запятыми пар «ключ/значение», заключённые в фигурные скобки{ }. Эти наборы называются «объектами».

  • Упорядоченные списки разделённых запятыми значений, заключённые в квадратные скобки [ ]. Эти списки называются «массивами».

В этом руководстве используются термины «ключ», «значение», «объект» и «массив». Если пользователь не работал с файлами JSON ранее, понять эту терминологию помогут приведённые далее примеры.

Основные разделы файлов JSON цветовых схем

Корневой объект файла JSON цветовой схемы содержит следующие ключи схемы:

  • metadata: является обязательным. Значение представляет собой объект с метаданными схемы, такими как её название, версия и условия лицензирования.

    Подробнее: «Метаданные».

  • editor-colors: является обязательным. Значение представляет собой объект с цветами области редактирования текста, такими как цвет фона, полосы закладок и обрамления текста.

    Подробнее: «Цвета редактора».

  • text-styles: является обязательным. Значение представляет собой объект с атрибутами типового стиля текста для подсветки синтаксиса. Каждый атрибут определяет свой цвет текста, цвет выделенного текста, а также будет ли шрифт, например, полужирным или курсивным. На стили текста возможно ссылаться из атрибутов файлов XML определения синтаксиса.

    Подробнее: «Стиль текста».

  • custom-styles: является необязательным. Определяет стили текста для атрибутов конкретных определений подсветки синтаксиса. Например, в определении подсветки для Python или Markdown возможно указать другой стиль текста, который будет иметь приоритет над стилем по умолчанию, заданным в text-styles.

    Подробнее: «Для отдельных форматов».

Язык JSON не поддерживает комментарии. Тем не менее, для записи комментариев возможно использовать необязательный ключ _comments в корневом объекте. Например, если выполняется адаптация существующей схемы, можно добавить URL-адрес исходного репозитория. Наиболее практичным способом комментирования является использование массива строк.

Далее приводится пример для схемы «Breeze, светлый вариант». Как можно заметить, объекты editor-colors и text-styles содержат не все необходимые ключи (чтобы пример не был слишком большим). Ознакомиться со всем кодом схемы «Breeze, светлый вариант» возможно в репозитории KSyntaxHighlighting.

{
    "_comments": [
        "This is a comment.",
        "If this theme is an adaptation of another, put the link to the original repository."
    ],
    "metadata": {
        "name" : "Breeze Light",
        "revision" : 5,
        "copyright": [
            "SPDX-FileCopyrightText: 2016 Volker Krause <vkrause@kde.org>",
            "SPDX-FileCopyrightText: 2016 Dominik Haumann <dhaumann@kde.org>"
        ],
        "license": "SPDX-License-Identifier: MIT"
    },
    "editor-colors": {
        "BackgroundColor" : "#ffffff",
        "CodeFolding" : "#94caef",
        "BracketMatching" : "#ffff00",
        "CurrentLine" : "#f8f7f6",
        "IconBorder" : "#f0f0f0",
        "IndentationLine" : "#d2d2d2",
        "LineNumbers" : "#a0a0a0",
        "CurrentLineNumber" : "#1e1e1e",
        Другие ключи цвета редактора...

    },
    "text-styles": {
        "Normal" : {
            "text-color" : "#1f1c1b",
            "selected-text-color" : "#ffffff",
            "bold" : false,
            "italic" : false,
            "underline" : false,
            "strike-through" : false
        },
        "Keyword" : {
            "text-color" : "#1f1c1b",
            "selected-text-color" : "#ffffff",
            "bold" : true
        },
        "Function" : {
            "text-color" : "#644a9b",
            "selected-text-color" : "#452886"
        },
        "Variable" : {
            "text-color" : "#0057ae",
            "selected-text-color" : "#00316e"
        },
        Другие ключи стиля текста...

    },
    "custom-styles": {
        "ISO C++": {
            "Data Type": {
                "bold": true,
                "selected-text-color": "#009183",
                "text-color": "#00b5cf"
            },
            "Keyword": {
                "text-color": "#6431b3"
            }
        },
        "YAML": {
            "Attribute": {
                "selected-text-color": "#00b5cf",
                "text-color": "#00b5cf"
            }
        }
    }
}

Метаданные

Объект JSON ключа metadata содержит соответствующую информацию о схеме. Этот объект имеет следующие ключи:

  • name: строка, определяющая название языка, которое затем будет отображаться в меню и диалоговых окнах. Этот ключ является обязательным.

  • revision: целое число, которое задаёт текущую версию файла схемы. Не забывайте увеличивать номер версии при каждом обновлении файла схемы. Этот ключ является обязательным.

  • license: это строка, которая определяет условия лицензирования схемы с помощью идентификатора SPDX-License-Identifier из стандартного формата обмена условиями лицензирования SPDX. Этот ключ является необязательным.

    Полный список идентификаторов условий лицензирования SPDX доступен здесь.

  • copyright: это массив строк, который определяет авторов схемы с помощью идентификатора SPDX-FileCopyrightText из стандартного формата обмена условиями лицензирования SPDX. Этот ключ является необязательным.

"metadata": {
    "name" : "Breeze Light",
    "revision" : 5,
    "copyright": [
        "SPDX-FileCopyrightText: 2016 Volker Krause <vkrause@kde.org>",
        "SPDX-FileCopyrightText: 2016 Dominik Haumann <dhaumann@kde.org>"
    ],
    "license": "SPDX-License-Identifier: MIT"
}

Подробные сведения о цветах

В этом разделе приводится описание всех доступных атрибутов цветов и доступных параметров цветов.

Цвета редактора

Соответствует цветам области редактирования текста.

В файле JSON схемы значением соответствующего ключа editor-colors являетсяобъект, в котором каждый ключ указывает цвет атрибута в текстовом редакторе. Здесь все доступные ключи являются обязательными. Их значения представляют собой строки шестнадцатеричных цветовых кодов, например «#00B5CF».

В графическом интерфейсе для управления схемами KTextEditor эти атрибуты возможно изменить на вкладке Цвета.

Доступны следующие ключи; ключи, используемые в файле JSON, выделены полужирным, названия, используемые в графическом интерфейсе, указаны в скобках.

Область редактирования
BackgroundColor (Фон)

Цвет фона всего окна редактора, он будет подложкой под другими цветами в области редактора.

TextSelection (Выделенный текст)

Фон выделенного текста.

CurrentLine (Текущая строка)

Фон текущей строки. Если выбрать цвет, немного отличный от цвета фона обычного текста, то это поможет визуально выделять текущую строку и не будет отвлекать от другого текста.

SearchHighlight (Найденный текст)

Цвет текста, соответствующего последнему поисковому запросу.

ReplaceHighlight (Заменённый текст)

Цвет текста, соответствующего последней операции замены.

Полоса закладок
IconBorder (Фон)

Этот цвет используется для закладок, номеров строк и блоков кода, которые показываются у левой границы окна редактирования.

LineNumbers (Номера строк)

Этот цвет используется для цифр номеров строк у левой границы окна редактирования.

CurrentLineNumber (Номер текущей строки)

Цвет номера текущей строки, отображается у левой границы окна редактирования. Если выбрать цвет, немного отличный от цвета номеров строк, то это поможет визуально выделять текущую строку и не будет отвлекать от другого текста.

Separator (Разделитель)

Этот цвет используется для вертикальной линии, отделяющей полосу закладок от фона области текста.

WordWrapMarker (Маркер переноса слов)

Этот цвет используется для маркера динамически перенесённых строк. Также он используется для маркера статического переноса строк.

CodeFolding (Сворачивание блоков кода)

Цвет для выделения части кода, которая будет свёрнута при нажатии стрелки сворачивания кода в левой части окна. Более подробные сведения доступны в разделе, посвящённом сворачиванию кода.

ModifiedLines (Изменённые строки)

Цвет для выделения в левой части окна тех строк, которые были изменены, но ещё не сохранены. Подробнее: «Маркеры изменённых строк».

SavedLines (Сохранённые строки)

Цвет для выделения в левой части окна тех строк, которые были изменены в этом сеансе и сохранены. Подробнее: «Маркеры изменённых строк».

Обрамление текста
SpellChecking (Подчёркивание орфографической ошибки)

Цвет для обозначения орфографических ошибок.

TabMarker (Маркеры табуляции и пробелов)

Цвет маркеров пробелов, когда они включены.

IndentationLine (Отступы)

Этот цвет используется для рисования линии слева от блоков сотступом, если включена соответствующаявозможность.

BracketMatching (Подсветка скобок)

Этот цвет используется для фона парных скобок.

Маркеры
MarkBookmark (Закладка)

Цвет для обозначения закладок. Обратите внимание, что непрозрачность этого цвета составляет 22% (и 33% для текущей строки) относительно фона. Подробнее: «Использование закладок».

MarkBreakpointActive (Активная точка останова)

Цвет, который используется модулем GDB для обозначения активной точки останова. Обратите внимание, что этот цвет обладает непрозрачностью относительно фона. Более подробные сведения доступны в документации модуля GDB.

MarkBreakpointReached (Текущая точка останова)

Цвет, который используется модулем GDB для обозначения точки останова, достигнутой при отладке. Обратите внимание, что этот цвет обладает непрозрачностью относительно фона. Более подробные сведения доступны в документации модуля GDB.

MarkBreakpointDisabled (Неактивная точка останова)

Цвет, который используется модулем GDB для обозначения неактивной точки останова. Обратите внимание, что этот цвет обладает непрозрачностью относительно фона. Более подробные сведения доступны в документации модуля GDB.

MarkExecution (Выполнение)

Цвет, который используется модулем GDB для текущей исполняемой строки. Обратите внимание, что этот цвет обладает непрозрачностью относительно фона. Более подробные сведения доступны в документации модуля GDB.

MarkWarning (Предупреждение)

Цвет, который используется модулем сборки для обозначения строки, в отношении которой от компилятора было получено предупреждение. Обратите внимание, что этот цвет обладает непрозрачностью относительно фона. Более подробные сведения доступны в документации модуля сборки.

MarkError (Ошибка)

Цвет, который используется модулем сборки для обозначения строки, в отношении которой от компилятора было получено сообщение об ошибке. Обратите внимание, что этот цвет обладает непрозрачностью относительно фона. Более подробные сведения доступны в документации модуля сборки.

Шаблоны и фрагменты текста
TemplateBackground (Фон)

Цвет, который используется модулем фрагментов Kate для фона фрагмента. Более подробные сведения доступны в документации модуля фрагментов Kate.

TemplatePlaceholder (Редактируемый местозаполнитель)

Цвет, который используется модулем фрагментов Kate для обозначения местозаполнителя, который возможно нажать для редактирования вручную. Более подробные сведения доступны в документации модуля фрагментов Kate.

TemplateFocusedPlaceholder (Текущий редактируемый местозаполнитель)

Цвет, который используется модулем фрагментов Kate для обозначения местозаполнителя, который редактируется в текущий момент. Более подробные сведения доступны в документации модуля фрагментов Kate.

TemplateReadOnlyPlaceholder (Нередактируемый местозаполнитель)

Цвет, который используется модулем фрагментов Kate для обозначения местозаполнителя, который недоступен для редактирования вручную (например, местозаполнителя, который заполняется автоматически). Более подробные сведения доступны в документации модуля фрагментов Kate.

Стиль текста

Типовые стили текста наследуют свои свойства от стилейподсвеченного текста, что дает редактору возможность показывать текст согласованным образом. Например, для текста комментариев используется один и тот же стиль почти во всех форматах текста, которые может подсвечиватьKSyntaxHighlighting.

Примечание

На эти стили можно ссылаться в типовых стилях,которые используются в файлах XML определений подсветки синтаксиса. Например, атрибут «Normal»является эквивалентным атрибуту «dsNormal» в файлах XML, а«DataType» является эквивалентным «dsDataType». Смотритераздел «Доступные стили по умолчанию» в документации поподсветке синтаксиса.

Подсказка

Следует выбирать хорошо читаемые цвета с достаточной контрастностью, особеннов сочетании с цветами редактора. Смотрите раздел «Контраст цветов текста».

В файле JSON значением соответствующего ключаtext-styles является объект, каждый ключ которого соответствует названию типового стилятекста. Ключи являются эквивалентами ключей, которые используются вопределениях подсветки синтаксиса. Здесь все доступные ключистиля текста обязательны. Список ключей приведён далее.

"text-styles": {
    "Normal" : {
        "text-color" : "#1f1c1b",
        "selected-text-color" : "#ffffff",
        "bold" : false,
        "italic" : false,
        "underline" : false,
        "strike-through" : false
    },
    "Keyword" : {
        "text-color" : "#1f1c1b",
        "selected-text-color" : "#ffffff",
        "bold" : true
    },
    "Function" : {
        "text-color" : "#644a9b",
        "selected-text-color" : "#452886"
    },
    Другие ключи стиля текста...
}
Значением каждого ключа типового стиля текста является объект JSON, в котором указаны такие значения, как color, bold, italic и так далее. Вот эти ключи:

text-color: строка с шестнадцатеричным цветовым кодом. Эта пара «ключ/значение» обязательна.

selected-text-color: цвет выбранного текста. Обычно то же значение, что и «text-color». Еслитекст выбран, фон определяется значением TextSelection в цветах редактора, поэтому следует обеспечить хорошуюконтрастность текста и его читаемость на фоне. Значением является строка с шестнадцатеричным цветовым кодом. Эта пара «ключ/значение» являетсяобязательной.

bold: логическое значение, которое определяет, является ли текст полужирным. Это необязательный ключ, значение по умолчанию — false.

italic: логическое значение, которое определяет, является ли текст курсивным. Это необязательный ключ, значение по умолчанию — false.

underline: логическое значение, которое определяет, является ли текст подчёркнутым. Это необязательный ключ, значение по умолчанию — false.

strike-through: логическое значение, которое определяет, является ли текст перечёркнутым. Это необязательный ключ, значение по умолчанию — false.

background-color: определяет фон текста, используемый, например, в комментариях. Значением является строка с шестнадцатеричным цветовым кодом. Это необязательный ключ, по умолчанию фона нет.

selected-background-color: определяет фон выбранного текста. Значением является строка с шестнадцатеричным цветовым кодом. Это необязательный ключ, по умолчанию фона нет.

В графическом интерфейсе управления схемами цветов KTextEditor эти атрибуты можно изменить на вкладке Стиль текста. Для названия в списке стилей используется стиль для соответствующей записи. Это позволяет сразу увидеть результат применения стиля. В каждом стиле возможно выбрать общие атрибуты, а также цвета текста и фона. Чтобы сбросить цвет фона, щёлкните правой кнопкой мыши и воспользуйтесь контекстным меню.

Доступны следующие ключи стиля текста; ключи, используемые в файле JSON, выделены полужирным, названия, используемые в графическом интерфейсе, указаны в скобках, если они отличаются.

Обычный текст и исходный код

Normal (Обычный текст): типовой стиль текста для обычного текста и исходного кода без специальной подсветки.

Keyword (Ключевое слово): стиль текста для встроенных ключевых слов языка.

Function (Функция): стиль текста для определений функций и вызовов функций.

Variable (Переменая): стиль текста для переменных, если таковой применим. Например, переменные в PHP/Perl обычно начинаются с символа $, поэтому все идентификаторы, которые соответствуют шаблону $foo, подсвечиваются как переменные.

ControlFlow (Управляющая конструкция): стиль текста для ключевых слов управляющей конструкции, таких как if, then, else, return, switch, break, yield, continue и так далее.

Operator (Операция): стиль текста для операторов, таких как +, -, *, /, % и так далее.

BuiltIn (Встроенная функция): стиль текста для встроенных классов, функций и объектов языка.

Extension (Расширение языка): стиль текста для известных расширений, таких как классы Qt™, функции и макросы в C++ и Python или boost.

Preprocessor (Команды препроцессора):стиль текста для инструкций препроцессора и определений макросов.

Attribute (Атрибут): стиль текста для аннотаций или атрибутов функций или объектов (например, @override в Java или__declspec(...) и __attribute__((...)) в C++).

Числа, типы и константы

DataType (Тип данных): стиль текста для встроенных типов данных, таких как int, char, float, void, u64 и так далее.

DecVal (Десятичное число): стиль текста для десятичных значений.

BaseN (Целое по основанию N): стиль текста для чисел с основанием, отличным от 10.

Float (Число с плавающей точкой): стиль текста для чисел с плавающей точкой.

Constant (Константа): стиль текста для констант языка программирования и заданных пользователем констант (например, True, False, None в Python или nullptr в C/C++, или математические константы наподобие PI).

Строки и символы

Char (Символ): стиль текста для отдельных символов, таких как 'x'.

SpecialChar (Специальный символ): стиль текста для экранированных символов в строках, например«hello\n» и других символов со специальным значением в строках, в том числе символов-заменителей и операторов регулярных выражений.

String (Строка): стиль текста для строк наподобие «hello world».

VerbatimString (Текстовая строка): стиль текста для буквальных или необработанных строк, в частности 'raw \backlash' в Perl, CoffeeScript и командных оболочках, а также r'\raw' в Python или строк, подобных here-документам.

SpecialString (Специальная строка): стиль текста для специальных строк, таких как регулярные выражения в ECMAScript, код в уравнениях LATEX, код SQL и так далее.

Import (Импорт, подключение модуля, включение): стиль текста для включений, импорта, модулей или пакетов LATEX.

Комментарии и документация

Comment (Комментарий): стиль текста для обычных комментариев.

Documentation (Документация): стиль текста для комментариев, которые отражают документацию API (например, /** комментариев doxygen */ или """строк_документации""").

Annotation (Аннотация): стиль текста для аннотаций в комментариях или командах документации (например, @param в Doxygen или JavaDoc).

CommentVar (Переменная в комментарии): стиль текста для названий переменных в приведённых выше командах в комментарии (например, foobar в «@param foobar» для кода Doxygen или JavaDoc).

RegionMarker (Маркер блока): стиль текста для маркеров блока, который обычно определяется //BEGIN и //END в комментариях.

Information (Информационное сообщение): стиль текста для информационных сообщений, заметок и советов (например, ключевого слова @note в Doxygen).

Warning (Предупреждение): стиль текста для предупреждений (например, ключевого слова @warning в Doxygen).

Alert (Серьёзное предупреждение): стиль текста для специальных слов в комментариях, таких как TODO, FIXME, XXXX и WARNING.

Разное

Error (Ошибка): стиль текста для обозначения подсветки ошибок и неверного синтаксиса.

Others (Другое): стиль текста для атрибутов, которые не соответствуют ни одному из других типовых стилей.

Для отдельных форматов

Здесь возможно установить стили текста для конкретного определения синтаксиса, переопределив типовой стиль текста, который описан в предыдущемразделе.

В файле JSON схемы этот ключ соответствует ключу custom-styles, значением которого является объект, каждый ключ подчинённой схемы которого соответствует названию определения подсветки синтаксиса. Его значением является объект, каждый ключ которого соответствуетназванию атрибутов стиля, определённому в элементах itemDataфайла XML подсветки синтаксиса, и соответствующее значение является подчинённым объектом с ключами text-color, selected-text-color, bold, italic,underline, strike-through,background-color и selected-background-color, определённым в предыдущем разделе. Все эти значения необязательны, поскольку, если они не указаны, будет использован стиль, определённый в text-styles.

Например, в этом фрагменте кода определение подсветки синтаксиса «ISO C++» содержит специальный стиль текста для атрибутов «Type Modifiers» и «Standard Classes». В соответствующем файле XML «isocpp.xml» для определённого атрибута «Standard Classes» используется типовой стиль BuiltIn (или dsBuiltIn). В этом атрибуте будет перезаписано только значение text-color — новым цветом «#6431b3».

"custom-styles": {
    "ISO C++": {
        "Standard Classes": {
            "text-color": "#6431b3"
        },
        "Type Modifiers": {
            "bold": true,
            "selected-text-color": "#009183",
            "text-color": "#00b5cf"
        }
    }
}

Примечание

  • Следует учитывать, что эти стили текста связаны с названиями атрибутов в файлах XML подсветки синтаксиса. Если файл XML будет обновлён и некоторые атрибуты будут переименованы или удалены, нестандартный стиль, определённый в этой схеме, станет неприменимым.

  • Определения подсветки синтаксических конструкций часто включают другие определения. Например, определение подсветки «QML» включает определение подсветки «JavaScript», поскольку они содержатобщие функциональные возможности подсветки.

В графическом интерфейсе управления схемами KTextEditor эти атрибуты можно изменить на вкладкеДля отдельных форматов. Обычно редактор предварительно выбирает подсветку для текущего документа. Многие определения подсветок содержат другие определения подсветок, обозначаемые группами в списке стилей. Например, большинство определений подсветок импортируют подсветку «Alert», а многие форматы исходного кода импортируютподсветку «Doxygen».

Графический интерфейс цветовых схем

Проще всего создавать и редактировать цветовые схемы с помощью графического интерфейса — диалогового окна «Настройка» KTextEditor. Чтобы открыть это окно, выберите в меню текстового редактора пункт НастройкаНастроить имя_программы.... В открывшемся окне Настройка следует выбрать расположенный на боковой панели пункт Цветовые схемы.

Диалог настройки Kate с параметрами цветовой схемы.

Диалог настройки Kate с параметрами цветовой схемы.

В этом диалоге возможно настроить все цвета любой схемы, а также создать или скопировать схему, удалить её, экспортировать в файл .theme в формате JSON или импортировать из внешнего файла .theme. В каждой схеме предусмотрены параметры для цветов и стилей текста.

Встроенные схемы нельзя изменить напрямую. Чтобы внести изменения, следует скопировать их и сохранить под новым именем.

Чтобы установить схему для постоянного использования в текстовом редакторе, необходимо выбрать её с помощью расположенного в нижней части окна раскрывающегося списка Схема по умолчанию для имя_программы и нажать кнопку Применить или ОК. По умолчанию активен вариантАвтоматический выбор. Использование этого варианта приводит к выбору цветовой схемы, которая лучше подходит к цветовой схеме KDE Plasma для редактирования текста.Обычно выбор осуществляется между «Breeze, светлый вариант» и «Breeze, тёмный вариант». Выбор зависит от того, какой является схема среды — светлой или тёмной.

Подсказка

Глобальную цветовую схему KDE возможно настроить в модуле «Цвета» приложения «Параметры системы». Также возможно сменить её в некоторых программах, таких как Kate или KDevelop, с помощью пункта меню НастройкаЦветовая схема.

Создание новой схемы

Чтобы создать новую схему, необходимо сначала скопировать существующую. Выберите существующую схему, которую следует использовать в качестве основы (например, «Breeze, светлый вариант» или «Breeze, тёмный вариант»), и нажмите кнопку Копировать…. Затем укажите название новой схемы.

Чтобы изменить встроенную или доступную только для чтения схему, необходимо сначала скопировать её, указав для копии другое название.

Импорт или экспорт файлов схем JSON

Выбранную тему (включая встроенные) возможно экспортировать в файл JSON с расширением .theme путём нажатия кнопки Экспорт. Будет открыт диалог сохранения файла. Чтобы добавить цветовую схему из внешнего файла JSON, просто нажмите кнопку Импорт и выберите в диалоге файл .theme.

Подсказка

  • Как уже упоминалось выше, настроенные пользователями схемы хранятся в каталоге org.kde.syntax-highlighting/themes/. Когда тема копируется или создаётся, она автоматически появляется там.Кроме того, импорт или добавление темы эквивалентны копированию внешнего файла .theme в этот каталог. KSyntaxHighlighting автоматически выбирает файлы цветовых схем из указанного каталога.

  • Перед публикацией созданной темы необходимо проверить корректность объектаmetadata в файле JSON, добавив в него соответствующие условия лицензирования и указав номер версии.

Редактирование цветовых схем

Цвета

Здесь настраиваются цвета области редактирования текста. Подробное описание параметров приводится в разделе «Цвета редактора».

Стиль текста

Типовые стили текста наследуют свои свойства от стилейподсвеченного текста, что дает редактору возможность показывать текст согласованным образом. Например, для текста комментариев используется один и тот же стиль почти во всех форматах текста, которые может подсвечиватьKSyntaxHighlighting.

Для названия в списке стилей используется стиль для соответствующей записи. Это позволяет сразу увидеть результат применения стиля.

Для каждого стиля возможно выбрать общие атрибуты, а также цвета текста и фона. Чтобы сбросить цвет фона, щёлкните правой кнопкой мыши и воспользуйтесь контекстным меню.

Подробное описание атрибутов этой области приводится в разделе «Стиль текста».

Для отдельных форматов

Здесь возможно изменить стили текста, которые будут использоваться конкретным определением подсветки. В редакторе будет предварительно выбрана подсветка, котораяиспользуется в текущем документе. Чтобы работать с другой подсветкой, выберите её в раскрывающемся списке Подсветка, расположенном над списком стилей.

Для названия в списке стилей используется стиль для соответствующей записи. Это позволяет сразу увидеть результат применения стиля.

Для каждого стиля возможно выбрать общие атрибуты, а также цвета текста и фона. Чтобы отменить установку цвета фона, щёлкните правой кнопкой мыши для вызова контекстного меню. Кроме того, можно посмотреть, совпадает стиль с типовым стилем, который используется для элемента, и установить его в случае несовпадения.

Обратите внимание, многие подсветки содержат другие подсветки, представленные группами в списке стилей. Например, многие подсветки импортируют подсветку «Alert», а многие форматы исходного кода — подсветку «Doxygen». Изменение цветов в таких группах влияет на стили только при использовании в редактируемом формате подсветки.

Советы и рекомендации

Контраст цветов текста

Важным аспектом работы с цветовыми схемами является выбор контрастного цветатекста, который упростит чтение, особенно в сочетании с цветом фона.

Приложение Kontrast предназначено для проверки контрастности цветов. Эта программа позволяет проверить, является ли сочетание цвета текста и цвета фона хорошо читаемым, что облегчает создание цветовых схем.

Программу Kontrast возможно загрузить на веб-сайте приложений KDE или установить из пакета Flatpak на Flathub (только в GNU/Linux).

Приложение GNOME Contrast работает аналогичным образом. Возможно загрузить пакет Flatpak на Flathub (только в GNU/Linux).

Предложения по согласованности подсветки синтаксиса

KSyntaxHighlighting включает более 300 определений подсветки синтаксиса; желательно убедиться, что новая схема выглядит хорошо во всех определениях подсветки синтаксиса. Во встроенных цветовых темах использованы следующие принципы, которыми рекомендуется (но не обязательно) пользоваться для корректного отображения всех определений подсветки синтаксиса:

  • Использовать полужирный шрифт для стилей текста «Keyword» and «ControlFlow».

  • Не использовать цвет фона в стилях текста, за исключением «Alert» и «RegionMarker».

Большинство подсветок синтаксиса хорошо выглядят в типовых схемах «Breeze, светлый вариант» и «Breeze, тёмный вариант». Следовательно, ещё одним способом обеспечения согласованности является использование похожих цветов в стилях текста. Например, зелёного для «Preprocessor» и «Others», синего для «DataType» и «Attribute» или фиолетового для «Function».

Обратите внимание, что эти рекомендации не обязательно соблюдать при создании и публикации схемы.