Робота із темами кольорів

Огляд

Теми кольорів визначають кольори області редагування тексту і підсвічування синтаксису. До теми кольорів включено такі дані:

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

  • Тло області редагування тексту, включно із позначенням тексту та поточним рядком.

  • Рамка піктограм для текстової області: тло піктограм, лінія роздільника, номери рядків, позначки перенесення рядків, позначки змінених рядків та згортання коду.

  • Декорації тексту, зокрема позначки пошуку, позначки відступів та табуляцій або пробілів, позначення відповідних дужок та розмітка при перевірці правопису.

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

Щоб уникнути непорозумінь, це не стосується таких параметрів інтерфейсу:

  • Гарнітури і розміру символів шрифту.

  • Кольорів у програмі для редагування тексту, зокрема на карті смужки гортання, у меню, на панелі вкладок, кольору вікна тощо. У програмах KDE, зокрема Kate або KDevelop, ці кольори визначаються загальною схемою кольорів Плазми KDE, яка визначається у модулі «Кольори» програми «Системні параметри», або у самій програмі, у меню ПараметриСхема кольорів.

Схеми кольорів «Світла 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 у кореневому об'єкті для запису коментарів. Наприклад, якщо ви адаптуєте наявну тему, ви можете додати адресу сховища початкового матеріалу. Найпрактичнішим способом коментування є використання масиву рядків.

Нижче наведено приклад файла для теми «Світла 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",
        The other editor color keys...

    },
    "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 (Номер поточного рядка)

Цей колір буде використано для показу номера поточного рядка, якщо його показано у лівій частині області перегляду. Встановлення трохи іншого значення, порівняно із «LineNumbers», допоможе акцентувати поточний рядок.

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 — стиль тексту для рядків, подібних до «привіт, світе».

VerbatimString (Рядок буквально) — стиль тексту для буквальних або необроблених рядків, зокрема 'raw \backlash' у Perl, CoffeeScript та командних оболонках, а також r'\raw' у Python або рядків, подібних до документації HERE.

SpecialString (Спеціальний рядок) — стиль тексту для спеціальних рядків, зокрема формальних виразів у ECMAScript, коду у рівняннях LATEX, коду SQL тощо.

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

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

Comment — стиль тексту для звичайних коментарів.

Documentation (Документація) — стиль тексту для коментарів, які відповідають за документацію з програмного інтерфейсу, зокрема /** коментарів 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++» містить спеціальний стиль тексту для атрибутів «Модифікатори типу» і «Стандартні класи». У відповідному файлі XML, «isocpp.xml», визначений атрибут «Стандартні класи» використовує типовий стиль 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 для редагування тексту. Зазвичай, вибір здійснюється між «Світлою Breeze» і «Темною Breeze». Вибір залежить від того, світлою чи темною є схема кольорів середовища.

Підказка

Ви можете змінити загальну схему кольорів KDE за допомогою модуля «Кольори» програми «Системні параметри». Ви також можете змінити її у деяких програмах, зокрема Kate та KDevelop, окремо. Для цього скористатися пунктом меню ПараметриСхема кольорів.

Створити тему

Щоб створити тему, спочатку слід скопіювати наявну тему. Виберіть наявну тему, якою ви хочете скористатися як основою, наприклад «Світу Breeze» або «Темну Breeze», і натисніть кнопку Копіювати. Потім впишіть у показане поле назви назву нової теми.

Якщо ви хочете внести зміни до вбудованої теми або теми, призначеної лише для читання, вам слід спочатку скопіювати тему, вказавши для копії іншу назву.

Імпортування або експортування файлів JSON тем

Ви можете експортувати вибрану тему (включно із вбудованими) до файла JSON із суфіксом назви .theme за допомогою кнопки Експортувати. У відповідь на натискання кнопки програма відкриє діалогове вікно для збереження файла. Щоб додати тему кольорів із зовнішнього файла JSON, просто натисніть кнопку Імпортувати і виберіть за допомогою діалогового вікна навігації файловою системою файл .theme.

Підказка

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

  • Якщо ви хочете оприлюднити створену вами тему, важливо перевірити коректність об'єкта metadata у файлі JSON, додавши до нього відповідні умови ліцензування та вказавши відповідний номер модифікації.

Редагування тем кольорів

Кольори

Тут можна коригувати кольори області редагування тексту. Докладніший опис параметрів наведено у розділі «Кольори редактора».

Стилі звичайного тексту

Стилі звичайного тексту успадковують свої властивості від стилів підсвіченого тексту, що надає редактору можливість показувати текст без великої різниці у шрифтах, наприклад, для тексту коментарів використовується той же стиль у майже всіх форматах тексту, які може підсвічувати KSyntaxHighlighting.

Під час підготовки до показу назви стилю у списку стилів буде використано стиль, назву якого ви бачитимете, отже під час налаштування стилю вам легше буде знайти потрібний пункт у списку.

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

Докладний опис атрибутів цієї області наведено у розділі «Стилі звичайного тексту».

Стилі підсвіченого тексту

Тут ви можете змінити стилі тексту, які використовуватимуться певним типом підсвічування. У редакторі буде попередньо обрано колір, який використовується у вашому поточному документі. Щоб працювати з іншим стилем підсвічування, виберіть якого зі спадного списку Підсвічування, розташованому над списком стилів.

Під час підготовки до показу назви стилю у списку стилів буде використано стиль, назву якого ви бачитимете, отже під час налаштування стилю вам легше буде знайти потрібний пункт у списку.

У кожному стилі ви можете обрати загальні атрибути, а також кольори тексту та тла. Щоб повернути колір тла до початкового значення, наведіть на цього вказівник миші і клацніть правою кнопкою миші, щоб викликати відповідне контекстне меню. Крім того, ви зможете порівнювати стиль з типовим стилем, що використовується для елемента, і встановлювати його або не робити цього.

Ви побачите, що багато стилів підсвічування містять інші стилі підсвічування, які у списку стилів зібрано у групи. Наприклад, більшість стилів підсвічування імпортують стиль підсвічування «Увага», а багато з форматів підсвічування коду — підсвічування «Doxygen». Зміна кольорів у таких групах, впливатиме на стилі, лише якщо її було використано у форматі підсвічування, який ви редагуєте.

Підказки та поради

Контрастність кольорів тексту

Важливим аспектом роботи із темами кольорів є вибір контрастного кольору тексту, який зробить простішим читання, особливо у поєднанні із кольором тла.

Для пошук контрастних кольорів можна скористатися програмою Kontrast. Ця програма повідомить вам, чи є комбінації кольорів тексту і тла придатними до читання і доступними для користувачів. Тому ця програма є чудовим інструментом для створення тем кольорів.

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

Подібні функціональні можливості реалізовано у програмі GNOME Contrast. Встановити цю програму можна за допомогою пакунка Flatpak з Flathub (лише у GNU/Linux).

Пропозиції щодо однорідності підсвічування синтаксису

До KSyntaxHighlighting включено понад 300 визначень підсвічування синтаксичних конструкцій, тому було б дуже добре, аби ви переконалися, що нова тема виглядає добре для усіх визначень підсвічувань синтаксичних конструкцій. У вбудованих темах кольорів використано наведені нижче принципи, якими ми рекомендуємо (не обов'язково) користуватися для досягнення належного показу для усіх визначень підсвічувань синтаксичних конструкцій:

  • Користуйтеся напівжирним шрифтом для стилів тексту «Keyword» і «ControlFlow».

  • Не використовуйте кольору тла у стилі тексту, окрім «Alert» і «RegionMarker».

Більшість визначень підсвічувань синтаксичних конструкцій добре виглядають у типових темах «Світла Breeze» та «Темна Breeze». Тому іншим способом забезпечення сумісності із визначеннями є використання подібних кольорів у стилях тексту, зокрема зеленого для «Preprocessor» та «Others», синього для «DataType» і «Attribute» або пурпурового для «Function».

Зауважте, що ці рекомендації не є обов'язковими для створення і оприлюднення теми.