&Anders.Lund; &Anders.Lund.mail;
Юрій
Чорноіван

    yurchor@ukr.net

Переклад українською

# Робота з додатками

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

## Додатки програми &kate;

Додатки &kate; призначено для виконання додаткових функцій у редакторі &kate;. За їх допомогою можна додавати нові меню і скорочення, а також розширювати список можливостей &kate;. Ви можете встановити будь-яку бажану кількість додатків за допомогою самої програми &kate;. Для цього скористайтеся діалоговим вікном налаштування &kate;, яке можна відкрити за допомогою пункту меню Параметри Налаштувати &kate;.... Щоб обрати потрібні додатки, перейдіть на сторінку Програма Додатки.

Серед можливих додатків до програми:

- Зовнішні інструменти — запуск зовнішніх інструментів і програм

- Переглядач зворотного трасування допоможе вам переглянути дані зворотного трасування C/C++

- Додаток збирання — компілює або збирає програми і обробляє повідомлення про помилки.

- Додаток закриття за критерієм — закрити групу документів на основі даних щодо спільного для них розташування у файловій системі або суфікса назви файла.

- Піпетка — показує панель попереднього перегляду для відомих назв кольорів

- Кольорові дужки — кольорові дужки для зручнішого читання

- Додаток CTags виконує пошук визначень або оголошень за допомогою CTags.

- Попередній перегляд документів — попередній перегляд документів у форматі призначення.

- Перемикач між документами — налаштовування швидкого перемикання документів за допомогою натискання комбінації клавіш &Alt;&Tab;.

- Переглядач файлової системи — панель засобу навігації файловою системою

- Ієрархія документів показує структуру відкритих файлів.

- &gdb; — надає доступ до простої графічної оболонки до &gdb;

- Додаток проєктів — інтеграція із Git та іншими системами керування кодом

- Replicode — конструктивістська мова програмування і середовище виконання для штучного інтелекту

- Клієнт LSP — клієнт LSP, який надає можливості навігації кодом та автоматичного доповнення коду для багатьох мов.

- Пошук з заміною — пошук з заміною у відкритих документах, теках або проєктах

- Панель скриптів і фрагментів — створення і отримання фрагментів коду та скриптів редактора

- Клавіатурні макроси — запис і відтворення клавіатурних макросів (тобто послідовностей дій з клавіатури)

- Додаток SQL — виконання запитів до баз даних SQL.

- Переглядач символів призначено для добування і показу символів з початкового коду.

- Панель термінала — термінал на основі віджета &konsole; &kde;

- Фільтр тексту — обробка тексту за допомогою команд з термінала

- Доповнення &XML; — показує список елементів, атрибутів, значень атрибутів та об’єктів &XML;, передбачених у DTD.

- Додаток Перевірка &XML; перевіряє коректність файлів &XML; за допомогою xmllint.

- Навігатор компілятора — інтерфейс до засобу навігації результатами збирання

- Форматування — додаток для форматування коду

## Зовнішні інструменти

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

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

### Налаштовування зовнішніх інструментів

У відповідь на вибір редагування запису програма відкриває діалогове вікно налаштовування, за допомогою якого можна виконати коригування поведінки інструмента:

Як можна бачити, ви можете визначити багато елементів поведінки інструмента, зокрема:

  `Назва` — назва інструмента, яку буде показано у меню.

  `Піктограма` — необов'язкова піктограма, яку буде показано у меню.

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

  `Аргументи` — необов'язкові аргументи, які передаються виконуваному файлу.

  `Вхідні дані` — необов'язкові вхідні дані, які буде передано процесу за допомогою стандартного потоку вхідних даних (stdin).

  `Робочий каталог` — робочий каталог, з якого буде запущено інструмент. Якщо значення буде порожнім, робочим каталогом буде каталог поточного документа.

  `Типи MIME` — якщо встановлено, інструмент ставатиме активним, лише якщо відповідним буде тип MIME поточного документа.

  `Збереження` — якщо задіяно, не зберігає нічого, зберігає поточний документ або зберігає усі документи.

  `Перемикач` — перемикач для виконання цього інструмента. Перемикач стосуватиметься лише поточного активного документа і застосовуватиме інструмент, лише якщо тип MIME поточного активного документа відповідає типу MIME, який обробляє зовнішній інструмент.

  Можна використовувати такі перемикачі:

    `Немає` — типове значення; означає, що інструмент не має перемикача.

    `До збереження` — цей перемикач призводитиме до виконання інструмента одразу перед збереженням документа.

    `Після збереження` — цей перемикач призводитиме до застосування інструмента після збереження документа.

  `Перезавантажити поточний документ після виконання` — корисно, якщо до поточного файла внесено зміни на диску.

  `Виведення` — визначає призначення даних стандартного виведення (stdout). Можна вибрати один з таких варіантів: `Ігнорувати`, `Вставити у позиції курсора`, `Замінити позначений фрагмент тексту`, `Замінити поточний документ`, `Дописати до поточного документа`, `Вставити до нового документа`, `Скопіювати до буфера` або `Показати на панелі`.

  `Команда редактора` — необов'язкова команда, яку буде використано для виклику зовнішнього інструмента за допомогою вбудованого командного рядка.

Кнопку Типові параметри буде показано лише для інструментів, які постачаються разом із &kate;. Якщо натиснути цю кнопку, усі параметри інструмента буде повернуто до типових (встановлених разом із програмою) значень.

### Розгортання змінних

У деяких з полів редагування, зокрема полях Виконуваний файл, Аргументи, Вхідні дані і Робочий каталог, передбачено підтримку змінних, які буде замінено на значення під час виклику інструмента. Це позначається піктограмою {}, яку програма показує, коли фокус передається на одне з цих полів введення (див. у червоному колі):

Крім того, при наведенні вказівника миші на одне з таких полів для введення тексту програма показує панель підказки із поточним розгорнутим текстом. Також, натискання кнопки {} відкриває діалогове вікно, у якому наведено список усіх доступних змінних:

Ця можливість додає гнучкості у визначенні зовнішнього інструмента, оскільки усіх змінні у формі `%{...}` розгортаються під час виклику інструмента. Передбачено підтримку двох типів змінних:

- `%{назва-змінної}`

- `%{назва-змінної:<значення>}`

Якщо використано першу форму, `%{назва-змінної}`, програма просто замінить змінну її вмістом. Наприклад, змінну `%{Document:FileName}` буде замінено на назву файла поточного документа без шляху до нього. Якщо використано другу форму, `%{назва-змінної:<значення>}`, отримаємо `<значення>` як вміст. Наприклад, цим можна скористатися для розгортання змінної середовища за допомогою `%{ENV:HOME}` або можна отримати поточну дату у бажаному форматі, ось так: `%{Date:yyyy-MM-dd}`.

Ось підтримувані змінні:

  `Document:FileBaseName`: базова назва файла поточного документа без шляху і суфікса назви.

  `Document:FileExtension`: суфікс назви файла поточного документа.

  `Document:FileName`: назва файла поточного документа без шляху.

  `Document:FilePath`: повний шлях до поточного документа, включно із назвою файла.

  `Document:Text`: вміст поточного документа.

  `Document:Path`: повний шлях до поточного документа без назви файла.

  `Document:NativeFilePath`: шлях до документа повністю, разом із назвою файла та роздільниками шляху операційної системи (зворотними похилими рисками у Windows).

  `Document:NativePath`: шлях до документа повністю, без назви файла та роздільниками шляху операційної системи (зворотними похилими рисками у Windows).

  `Document:Cursor:Line`: номер рядка поточної позиції текстового курсора у поточному документі (нумерація рядків починається з 0).

  `Document:Cursor:Column`: номер позиції у рядку текстового курсора у поточному документі (нумерація рядків починається з 0).

  `Document:Cursor:XPos`: компонент X загальної позиції курсора на екрані.

  `Document:Cursor:YPos`: компонент Y загальної позиції курсора на екрані.

  `Document:Selection:Text`: позначений текст у поточному документі.

  `Document:Selection:StartLine`: номер початкового рядка для позначеного фрагмента поточного документа.

  `Document:Selection:StartColumn`: номер позиції позиції у рядку для позначеного фрагмента поточного документа.

  `Document:Selection:EndLine`: номер кінцевого рядка для позначеного фрагмента поточного документа.

  `Document:Selection:EndColumn`: номер кінцевої позиції у рядку для позначеного фрагмента поточного документа.

  `Document:RowCount`: кількість рядків у поточному документі.

  `Document:Variable:<змінна>`: розгорнути довільні змінні документа.

  `Date:Locale`: поточна дата у форматі поточної локалі.

  `Date:ISO`: поточна дата (ISO).

  `Date:<значення>`: поточна дата (у форматі, вказаному рядком форматування QDate).

  `Time:Locale`: поточний час у форматі поточної локалі.

  `Time:ISO`: поточний час (ISO).

  `Time:<значення>`: поточний час (рядок у форматі QTime).

  `ENV:<значення>`: доступ до змінних середовища.

  `JS:<вираз>`: обробка простих інструкцій JavaScript.

  `PercentEncoded:<текст>`: текст у кодуванні з використанням кодів спеціальних символів із символом відсотків.

  `UUID`: створити UUID.

### Список типових інструментів

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

#### git-cola

git-cola — графічний клієнт git, за допомогою якого можна без проблем створювати записи змін і вносити зміни до сховища. Якщо програму встановлено, доступ до неї можна також отримати введенням команди `git-cola` у командному рядку.

  `Назва`: git-cola

  `Піктограма`: git-cola

  `Виконуваний файл`: git-cola

  `Аргументи`: -r %{Document:Path}

  `Команда редактора`: git-cola

#### gitk

gitk — також клієнтська програма git, за допомогою якої можна візуалізувати журнал змін у git.

  `Назва`: gitk

  `Піктограма`: git-gui

  `Виконуваний файл`: gitk

  `Робочий каталог`: %{Document:Path}

  `Команда редактора`: gitk

#### git blame

Запускає git blame для полегшення стеження за змінами у git для поточного файла.

  `Назва`: git blame

  `Виконуваний файл`: git

  `Аргументи`: gui blame %{Document:FileName}

  `Збереження`: поточний документ

  `Робочий каталог`: %{Document:Path}

  `Команда редактора`: git-blame

#### Виконати скрипт оболонки

Запускає зовнішню &konsole;, у якій виконує поточний документ. Скрипт має оголошувати у першому рядку свій інтерпретатор, ось так: `#!/шлях/інтерпретатор`.

  `Назва`: Run Shell Script

  `Піктограма`: system-run

  `Виконуваний файл`: konsole

  `Аргументи`: -e sh -c "cd %{Document:Path} && pwd && chmod -vc a+x %{Document:FileName} && ./%{Document:FileName} ; echo Press any key to continue. && read -n 1"

  `Збереження`: поточний документ

  `Робочий каталог`: %{Document:Path}

  `Команда редактора`: run-script

#### Пошук у Google позначеного тексту

Пошук позначеного фрагмента тексту за допомогою рушія пошуку Google.

  `Назва`: Google Selected Text

  `Піктограма`: globe

  `Виконуваний файл`: xdg-open

  `Аргументи`: "https://www.google.com/search?q=%{Document:Selection:Text}"

  `Команда редактора`: google

#### Вставити UUID

Вставляє новий UUID під час кожного виклику цієї дії.

  `Назва`: Insert UUID

  `Виконуваний файл`: echo

  `Аргументи`: %{UUID}

  `Виведення`: Вставити у позиції курсора

  `Команда редактора`: uuid

#### Форматування Clang усього файла

Виконує clang-format для поточного файла на диску. Після обробки програма повторно завантажує документ.

  `Назва`: Clang Format Full File

  `Виконуваний файл`: clang-format

  `Аргументи`: -i %{Document:FileName}

  `Робочий каталог`: %{Document:Path}

  `Збереження`: поточний документ

  `Перезавантажити`: Так

  `Команда редактора`: clang-format-file

#### Форматування Clang позначеного тексту

Запускає clang-format лише до позначеного тексту у поточному документі.

  `Назва`: позначений для форматування Clang текст

  `Виконуваний файл`: clang-format

  `Аргументи`: -assume-fileName: %{Document:FileName}

  `Робочий каталог`: %{Document:Path}

  `Вхідні дані`: %{Document:Selection:Text}

  `Виведення`: замінити позначений фрагмент тексту

  `Команда редактора`: clang-format-selection

#### Попередній перегляд Qt Quick 2 (qmlscene)

Попередній перегляд поточного файла QML у qmlscene.

  `Назва`: Qt Quick 2 Preview (qmlscene)

  `Виконуваний файл`: qmlscene

  `Аргументи`: %{Document:FileName}

  `Збереження`: поточний документ

  `Робочий каталог`: %{Document:Path}

  `Команда редактора`: qml-preview

#### Форматування JSON усього файла

Форматування усього файла коду JSON.

  `Назва`: JSON Format Full File

  `Піктограма`: application-json

  `Виконуваний файл`: jq

  `Аргументи`: %{Document:FileName}

  `Збереження`: поточний документ

  `Робочий каталог`: %{Document:Path}

  `Виведення`: Замінити поточний документ

  `Команда редактора`: json-format-file

#### Форматування XML усього файла

Форматування усього файла коду XML.

  `Назва`: XML Format Full File

  `Піктограма`: application-xml

  `Виконуваний файл`: xmllint

  `Аргументи`: --format %{Document:FileName}

  `Збереження`: поточний документ

  `Робочий каталог`: %{Document:Path}

  `Виведення`: Замінити поточний документ

  `Команда редактора`: xml-format-file

## Додаток перегляду зворотного трасування

### Користування додатком перегляду зворотного трасування

Цей додаток призначено в основному для розробників, а не для звичайних користувачів. За його допомогою можна переглянути дані зворотного трасування, які створено за допомогою gdb, у форматі списку у вікні інструмента &kate;. Наведенням вказівника миші на пункт у цьому списку із наступним клацанням лівою кнопкою миші можна відкрити відповідний файл і перейти у ньому до відповідного рядка коду. Такий спосіб навігації працює із даними зворотного трасування, які створено не лише на вашому комп’ютері: ви можете скористатися даними інших користувачів, якщо файли коду розташовано у однакових місцях. Для роботи інструментів додатка слід проіндексувати каталоги, у яких зберігаються файли із початковим кодом програми.

Іноді може існувати декілька файлів із однаковою назвою. Приклад:

- `kdegraphics/okular/generators/dvi/config.h`
- `kdepim-runtime/resources/gmail/saslplugin/config.h`

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

- `dvi/config.h`
- `saslplugin/config.h`

Зазвичай, додаток визначає належний файл автоматично.

Одночасне індексування основної і бічних гілок розробки, звичайно ж, призведе до конфлікту.

### Налаштування

На сторінці налаштовування можна додати каталоги, у яких міститься початковий код програми.

Переглядач зворотного трасування
Налаштовування шляхів у вікні інструмента перегляду зворотного трасування

Натисканням кнопки Гаразд можна дозволити програмі розпочати індексування. Після завершення індексування можна відкрити вікно інструмента Перегляд зворотного трасування.

Після цього можна завантажити дані зворотного трасування з буфера обміну даними (наприклад, після натискання кнопки Копіювати до буфера у &drkonqi;) або з файла.

Salma
Sultana
&TC.Hollingsworth; &TC.Hollingsworth.mail;

## Додаток для збирання

### Вступ

За допомогою додатка збирання можна виконувати такі дії, як збирання, очищення та компіляція проєкту. Ви також можете автоматично запускати створені програми. По суті, додаток надає вам змогу налаштувати набори команд для запуску, він також може аналізувати вихідні дані у пошуку посилань на файли та певних рядків і стовпців у цих файлах. Отже, хоча додаток від початку було створено для компіляції C/C++ і здебільшого перевірено у цих мовах, додаток також може бути корисним для інших цілей і мов.

### Користування додатком збирання

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

Вивід збирання

На панелі Збирання передбачено дві статичні вкладки:

- Параметри цілі

- Вивід

#### Вкладка «Параметри цілі»

Вкладкою «Параметри цілі» можна скористатися для налаштовування різноманітних цілей збирання та визначення наборів збирання.

Набір цілей — це група команд, які можна виконувати у вказаному робочому каталозі. Набори цілей можна додати на панелі Проєкти або Сеанс. Налаштовані набори цілей, додані на панелі Проєкти, зберігаються у файлі .kateproject.build у кореневому каталозі проєкту та відновлюються під час повторного відкриття проєкту. Набори цілей, додані до Сеанс, зберігаються в поточних налаштуваннях сеансу Kate.

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

Робочий каталог

  Другий стовпець першого рядка набору цілей використовується для налаштовування робочого каталогу, що використовується для компіляції та виконання команд. Якщо додаток проєкту ввімкнено, рядок робочого каталогу також може містити замінники для шляху основного каталогу проєкту: %B та назви: %b

Команда збирання

  Другий стовпець у «не перших рядках» містить команду оболонки, яку слід запустити у робочому каталозі. Зверніть увагу на слово «оболонка». Підійде майже будь-яка команда оболонки. Команда збирання може містити замінники. %f для поточного файла, %d для каталогу поточного файла та %n для базової назви поточного файла (назви файла без суфікса).

Виконати команду

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

У верхній частині вкладки Параметри цілі розташовано панель інструментів із фільтром цілей та такими кнопками:

- — зібрати позначену ціль
- — зібрати і запустити позначену ціль
- — додати нову ціль збирання
- — Створити набір цілей збирання
- — копіювати команду або набір цілей
- — вилучити поточну команду або набір цілей

#### Вкладка «Вивід»

На вкладці Виведення буде показано виведені до консолі дані під час виконання команди (збирання). Якщо у рядку виведення буде вказано розташування файла, відповідне місце можна буде натиснути. Якщо у рядку виведених даних буде показано повідомлення про помилку або попередження, рядок матиме відмінний від інших колір.

Якщо позначено пункт Додати помилки і попередження до діагностики на сторінці параметрів додатка у вікні параметрів Kate, на панелі діагностики буде показано повідомлення про помилки і попередження. Щоб перейти до місця попередньої помилки, натисніть комбінацію клавіш &Alt;&Shift;←. Щоб перейти до наступної помилки, натисніть комбінацію клавіш &Alt;&Shift;→.

### Структура меню

Збирання Вибрати ціль…

  Фільтр вибору цілі фокусується на вкладці «Параметри цілі». Введення назви призведе до відфільтровування цілей, які не відповідають введеному рядку. Для навігації ієрархією цілей також можна скористатися клавішами зі стрілками. Якщо потрібну ціль вибрано, натискання Return або Enter виконає та запустить вибрану ціль.

Збирання Зібрати позначену ціль

  Зібрати останню позначену ціль. Якщо нічого не позначено, працює так само, як Вибрати ціль...

Збирання Зібрати і запустити позначену ціль

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

Збирання Компілювати поточний файл

  Спробувати скомпілювати поточний файл шляхом пошуку команди у можливому compile_commands.json.

Збирання Зупинити

  Припинити збирання цілі.

Збирання Фокус на наступну вкладку ліворуч

  Сфокусувати наступну вкладку додатка збирання ліворуч. Або відкрити панель додатка збирання, якщо її приховано.

Збирання Фокус на наступну вкладку праворуч

  Сфокусувати наступну вкладку додатка збирання праворуч. Або відкрити панель додатка збирання, якщо її приховано.

Збирання Завантажити цілі з каталогу збирання CMake

  Відкрити діалогове вікно вибору файла і надати користувачеві можливість вибрати CMakeCache.txt. Якщо файл вибрано, додаток створить команду збирання цілей cmake, яку може бути виконано у каталозі збирання для заснованого на CMake проєкту.

### Подяки

Додаток збирання &kate; створено Kåre Särs.

Особлива подяка учасниці Google Code-In 2011 Salma Sultana за написання більшої частини цього розділу.

## Додаток закриття за критерієм

### Вступ

За допомогою цього додатка можна закрити групу документів на основі вказаних даних щодо суфікса назви і шляху.

### Користування додатком закриття за критерієм

Нехай у &kate; відкрито такі документи:

- /tmp/subfolder/test.h
- /tmp/test.cpp
- /tmp/test.txt

Ви зможете скористатися такими варіантами закриття документів, показаними на знімку:

Закрити, окрім

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

### Структура меню

Файл Закрити, окрім

  Закрити усі відкриті документи, окрім тих, які за шляхом або суфіксом назви збігаються із варіантом, вибраним за допомогою підменю.

Файл Закрити подібні

  Закрити усі відкриті документи, які за шляхом або суфіксом назви збігаються із варіантом, вибраним за допомогою підменю.

## Додаток піпетки

### Вступ

За допомогою цього додатка можна скористатися вбудованою панеллю попереднього перегляду або піпеткою для кольорів у тексті (наприклад `#FFFFFF`, `white`).

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

### Налаштування

На сторінці параметрів додатка «Піпетка» у налаштуваннях &kate; ви можете налаштувати вказані нижче параметри роботи додатка.

Показ попереднього перегляду кольорів із відомими назвами

  Визначає, чи слід показувати панель піпетки для відомих назв кольорів (наприклад `skyblue`). Список назв кольорів наведено на цій сторінці.

Вставляти перегляд після текстового кольору

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

Шістнадцяткові коди кольорів

  Тут ви можете вибрати найвідповідніший варіант для кольорів у вашому коді.

## Кольорові дужки

### Вступ

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

### Налаштування

Налаштувань для цього додатка не передбачено.

## Додаток CTags

### Вступ

CTags створює файл покажчика (або файл міток) об’єктів мови, які буде знайдено у файлах початкового коду. Після створення такого файла об’єкти можна буде швидко і просто знайти за допомогою цього додатка до &kate;.

Мітка позначає об’єкт мови програмування, для якого існує запис у покажчику (або, інакше кажучи, запис покажчика для цього об’єкта).

Створення міток можливе для цих мов програмування.

### Налаштування

Додаток CTags використовує два різних файли баз даних для зберігання даних покажчика.

За допомогою сторінки налаштовування додатка CTags у вікні параметрів &kate; ви можете додавати або вилучати записи каталогів, у яких містяться файли із початковим кодом, а також повторно створювати загальну базу даних CTags.

#### Загальний покажчик

Параметри CTags
Налаштовування загальної бази даних CTags

За допомогою нижньої частини сторінки налаштовування ви можете вказати Команду CTags.

Щоб дізнатися більше про усі доступні параметри, будь ласка, ознайомтеся із сторінкою підручника (man) CTags. Прочитати цю сторінку можна у «Центрі довідки» (&khelpcenter;). Крім того, можна просто ввести адресу man:/ctags безпосередньо у поле для адреси вікна &konqueror;

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

#### Покажчик сеансу

Щоб налаштувати покажчик сеансу, відкрийте панель CTags.

Цілі індексування

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

База даних
  Параметри бази даних
  Налаштовування бази даних сеансів CTags

  Вибір іншого файла бази даних CTags, налаштовування команди CTags або повернення до типової команди.

### Користування додатком CTags

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

Типово, із пунктами меню CTags не пов’язано жодних клавіатурних скорочень. Якщо вам хочеться визначити такі скорочення, скористайтеся редактором клавіатурних скорочень.

Крім того, можна скористатися полем для пошуку на вкладці Пошук панелі CTags.

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

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

### Структура меню

CTags Повернутися на один крок

  Перейти назад за записом журналу щодо останньої відвіданої мітки.

CTags Шукати поточний текст

  Відкриває вкладку Пошук панелі CTags і показує список усіх об’єктів мови, що відповідають поточному позначеному фрагменту тексту.

CTags Перейти до оголошення

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

CTags Перейти до визначення

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

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

### Вступ

За допомогою цього додатка реалізовано інтерактивний попередній перегляд поточного редагованого документа у остаточному форматі на бічній панелі. Отже, редагуючи, наприклад, текст у форматі Markdown або зображення SVG, ви одразу бачитимете результати поряд із початковим текстом.

Для показу даних додаток використовує додаток KParts, який визначено як бажаний для типу &MIME; документа. Якщо додатка KParts для відповідного типу документа не буде знайдено, попередній перегляд не буде показано.

Щоб змінити бажаний додаток, відкрийте вікно модуля Прив'язка файлів програми «Системні параметри» і змініть значення Порядок пріоритету служб на вкладці Вмонтовані.

#### Деякі доступні додатки KParts

Тип &MIME; | Додаток KParts
Текст Markdown | KMarkdownWebViewPart або OkularPart
Зображення SVG | SVGPart
Файли інтерфейсу користувача &Qt; | KUIViewerPart
Файли графів Dot | KGraphviewerPart

### Структура меню

Перегляд Вікна інструментів Показати Попередній перегляд

  Увімкнути або вимкнути показ панелі попереднього перегляду документа &kate; на бічній панелі вікна програми.

### Інтерфейс

За допомогою кнопок у верхній частині панелі попереднього перегляду можна виконувати такі дії:

- Заблокувати попередній перегляд вказаного документа. Якщо ви скористаєтеся цим пунктом, при перемиканні фокуса перегляду на інший документ у тому самому вікні &kate; попередній перегляд не буде оновлено вмістом нового документа, — у ньому лишатиметься показаним попередній, заблокований документ.

- Увімкнути або вимкнути оновлення попереднього перегляду вмісту поточного документа

- Вручну оновити попередній перегляд вмісту поточного документа

- Спадне меню із пунктами дій додатка KParts

## Додаток перемикання документів

### Структура меню

&Ctrl;&Tab; Перегляд Попередні перегляди
&Ctrl;&Shift;&Tab; Перегляд Попередні перегляди (у зв. порядку)

  Відкриває список останніх переглянутих документів:

  Останні переглянуті документи

  Тримайте натиснутою клавішу &Ctrl; і натискайте клавішу &Tab;, щоб циклічно переходити пунктами списку вперед. Додаткове натискання клавіші &Shift; надає змогу пересуватися списком у зворотному напрямку.

  Якщо утримувати натиснутою комбінацію клавіш &Ctrl;&Tab;, можна скористатися клавішами ↑, ↓, Home та End для навігації списком. Натисканням клавіші з літерою можна циклічно переходити між усіма пунктами у списку із відповідною першою літерою. Після відпускання натиснутих клавіш програма негайно перемкнеться на поточний позначений документ зі списку.

## Навігатор файловою системою

Навігатор файлової системи — це переглядач тек, за допомогою якого ви зможете відкривати файли з показаної у навігаторі теки у поточному фреймі.

### Структура меню

Перегляд Вікна інструментів Показати Навігатор файлової системи

  Вмикає або вимикає показ переглядача файлової системи &kate;.

### Інтерфейс

Перелічимо всі елементи навігатора файлової системи, починаючи згори:

Панель інструментів

  На цій панелі містяться стандартні кнопки інструментів навігації:

  Назад

    За допомогою цієї кнопки можна повернути переглядач тек до перегляду попередньої теки з журналу перегляду. Якщо попередніх тек у журналі немає, цю кнопку буде вимкнено.

  Вперед

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

  Закладки

    Ця кнопка відкриває підменю, за допомогою якого ви змінити або додати закладку, а також створити нову теку закладок.

  Поточна тека документа

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

  Параметри
    Стислий вигляд

      За натискання цієї кнопки у переглядачі буде показано лише назви файлів.

    Детальний вигляд

      За натискання цієї кнопки у переглядачі буде показано дані про Назву, Дату створення і Розмір файлів.

    Ієрархічний вигляд

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

    Детальний ієрархічний вигляд

      У цьому режимі також можна розгортати теки, але буде показано додаткові стовпчики даних з детального вигляду.

    Показувати приховані файли

      Показує файли, які зазвичай приховуються вашою операційною системою.

    Автоматично синхронізувати з поточним документом

      Якщо позначено цей пункт, інструмент перегляду файлової системи автоматично переходитиме до теки поточного відкритого документа у разі зміни цього документа.

Запис розташування

  Показує панель послідовної навігації до поточної відкритої теки, подібно до &dolphin;. Для переходу до будь-якої з тек просто клацніть на її назві. Ви також можете натиснути кнопку зі стрілочкою поряд з назвою теки, щоб відкрити список підтек цієї теки. Натискання першого з пунктів навігації з зображенням піктограми певного місця у вашій системі відкриє список панелі «Місця».

  Ви можете клацнути лівою кнопкою миші праворуч від поля послідовної навігації і ввести шлях до теки, вміст якої слід показати у переглядачі тек. У рядку &URL;-адреси передбачено підказку у вигляді списку раніше введених адрес. Ви можете обрати одну з цих адрес за допомогою натискання кнопки зі стрілочкою, розташованої праворуч від рядка адреси.

  У рядку &URL;-адреси передбачено автоматичне доповнення назв тек. Спосіб доповнення можна обрати за допомогою контекстного меню поля адреси (викликати це меню можна за допомогою клацання правою кнопкою миші).

Перегляд тек

  Це стандартне вікно перегляду тек &kde;.

Поле фільтрування

  За допомогою поля фільтрування ви зможете ввести шаблон для файлів, які буде показано у переглядачі тек. У шаблоні можна використовувати стандартні замінники; декілька шаблонів слід відокремлювати один від одного пробілами. Приклад: `*.cpp *.h *.moc`

  Щоб було показано всі файли, просто введіть у поле фільтрування символ зірочки, `*`.

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

### Налаштування

Налаштувати цей додаток можна на сторінці Навігатор файлової системи діалогового вікна налаштування &kate;.

Панель інструментів

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

## Список документів

### Вступ

На панелі списку документів ви побачите список всіх документів, які зараз відкрито у &kate;. Поруч з позначками файлів з незбереженими змінами буде показано невеличку піктограму дискети, яка позначатиме їх стан.

Над списком документів розташовано панель інструментів із такими кнопками:

- — створити документ
- відкрити наявний документ
- — попередній документ
- — наступний документ
- — зберегти поточний документ
- — зберегти поточний документ із новою назвою

Типово список документів буде показано у Ієрархічному режимі, у якому програма показує структуру тек навколо поточних відкритих документів. Ним також можна скористатися у Режимі списку, у якому програма показує простий список всіх відкритих документів. Перемкнутися між режимами перегляду можна клацанням правою кнопкою на списку з наступним вибором режиму зі списку Режим перегляду.

Якщо буде відкрито декілька файлів з однаковою назвою (розташованих у різних теках) у Режимі списку, перед назвою другого з цих файлів ви побачите цифру «(2)», інші файли з тією ж назвою нумеруватимуться послідовно. У контекстній підказці файла буде показано назву файла повністю, разом зі шляхом до теки, де він знаходиться, отже вам буде просто обрати потрібний вам файл зі списку.

Щоб програма показала документ у поточному активному фреймі, натисніть позначку документа у списку.

У контекстному меню буде показано деякі з пунктів дій меню Файл.

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

Ви можете впорядковувати список у декілька різних способів за допомогою пункту Впорядкувати за контекстного меню, яке відкривається після клацання правою кнопкою миші, коли вказівник миші знаходитиметься у списку. Серед можливих варіантів впорядкування:

Назва документа

  Список буде побудовано в алфавітному порядку назв файлів.

Адреса документа

  Список буде побудовано в алфавітному порядку адрес файлів.

Порядок відкриття

  Список буде побудовано за порядком відкриття документів.

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

Типово, список документів у вікні &kate; розташовано у лівій частині області редагування.

### Структура меню

&Alt;↑ Перегляд Попередній документ

  Відкриває документ, показаний у списку документів перед поточним відкритим документом.

&Alt;↓ Перегляд Наступний документ

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

Перегляд Показати активні

  Показує поточний відкритий документ у списку документів.

### Налаштування

Затінення тла

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

Впорядкувати за

  Тут ви можете встановити спосіб впорядкування списку документів. Ви також можете встановити порядок за допомогою контекстного меню списку документів.

Режим перегляду

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

Показати повний шлях

  Якщо буде увімкнено режим ієрархічного перегляду, записи тек на панелі документів буде показано з повним шляхом у файловій системі у назві теки. Ці дані не буде показано у режимі перегляду списком.

Показати панель інструментів

  Якщо увімкнено ієрархічний перегляд і позначено цей пункт, над списком документів буде показано панель інструментів із кнопками, подібним до кнопки Зберегти. Зніміть позначку з цього пункту, якщо панель інструментів має бути приховано.

Показати кнопку закриття

  Якщо позначено цей пункт, &kate; при наведенні на пункти відкритих документів показуватиме кнопку закриття.

Martin
Gergov
&TC.Hollingsworth; &TC.Hollingsworth.mail;

## Додаток &gdb;

### Вступ

Додаток &gdb; до &kate; є простою оболонкою для будь-якого засобу діагностики, у якому передбачено підтримку Debugger Adapter Protocol. Це, зокрема, GNU Project Debugger або GDB, як це описано тут.

Користувачам додатка варто спочатку добре ознайомитися з самим &gdb;. Щоб дізнатися більше про те, як користуватися &gdb;, зверніться до сайта &gdb;.

Увімкнути додаток &gdb; можна за допомогою розділу «Додатки» діалогового вікна налаштувань &kate;.

Якщо виконуваний файл збирається за допомогою &gcc;/`g++`, варто скористатися під час збирання параметром командного рядка ``-ggdb``.

Після виконання всіх попередніх етапів збирання відкрийте файл коду у &kate;, виберіть «профіль засобу діагностики», вкажіть адресу виконуваного файла за допомогою вкладки Параметри панелі Панель налагоджування і виберіть у меню пункт Налагоджування Почати налагоджування, щоб розпочати сеанс налагоджування.

«Профіль засобу діагностики» визначає використаний DAP-сервер (наприклад, GDB) та спосіб запуску цього сервера. Типовим випадком є ​​запуск сервером процесу, як зазначено вище, але сервер також може встановлювати з'єднання із запущеним процесом (у цьому випадку слід вказати ідентифікатор процесу, а не виконуваний файл). Також можуть бути інші режими, специфічні для мови та DAP-сервера. Щоб дізнатися більше, див. далі додаткові відомості та подробиці щодо налаштовування.

### Структура меню і панелі інструментів

Доступ до всіх пунктів дій можна отримати за допомогою меню &kate;. Крім того, скористатися значною частиною цих пунктів можна за допомогою панелі інструментів налагоджування.

Перегляд Вікна інструментів Панель налагоджування

  Показує панель з даними, виведеними &gdb;, дані щодо використаного командного рядка &gdb; та інших параметрів.

Перегляд Вікна інструментів Показати Локальні і стек викликів

  Показує список всіх завантажених змінних та їхніх значень, а також зворотне трасування &gdb;.

Налагоджування Призначення

  Підменю зі списком призначень (виконуваних файлів).

Налагоджування Почати налагоджування

  Запускає &gdb; для обробки певного виконуваного файла.

Налагоджування Перервати або припинити налагоджування

  Зупиняє роботу &gdb;.

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

  Перезапускає &gdb;.

Налагоджування Встановити/Зняти точку зупинки

  Встановити або зняти точку зупинки у поточному розташуванні курсора.

Налагоджування Увійти

  Виконати поточну інструкцію (буде виконано діагностику виклику функції).

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

  Виконати поточну інструкцію (діагностику виклику функції не буде виконано).

Налагоджування Вийти

  Поновлює виконання, аж до моменту переривання програми, яка виконується.

Налагоджування Пересунути PC

  Пересунути лічильник програми (наступне виконання).

Налагоджування Виконати до курсора

  Запускає виконання програми до інструкції, у якій зараз перебуває курсор.

Налагоджування Продовжити

  Ігнорує всі точки зупинки і виконує програму аж до її переривання (у режимі успішного виконання або у режимі аварійної зупинки).

Налагоджування Вивести значення

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

Параметри Показані панелі Додаток &gdb;

  Показати панель налагоджування.

### Панель налагоджування

На панелі Панель налагоджування буде показано декілька вкладок:

Вивід &gdb;

  Містить дані, отримані від &gdb;, та командний рядок &gdb;.

  Вкладка «Вивід»
  Вкладка «Вивід».

  На вкладці Вивід буде показано повідомлення, виведені під час виконання сеансу налагоджування.

Параметри
  Виконуваний файл

    Шлях до призначення (виконуваного файла) для виконання діагностики.

  Робочий каталог

    Поточний робочий каталог, вказаний виконуваному файлу (призначенню).

  Аргументи

    Аргументи, передані програмі.

  Зберігати фокусування

    Зберігає фокусування на командному рядку &gdb;.

  Переспрямувати ввід-вивід

    Відкриває нову вкладку Ввід-вивід на панелі Панель налагоджування. За допомогою цієї вкладки ви зможете переглядати виведені дані та вводити дані, потрібні запущеній програмі.

  Діалогове вікно параметрів
  Діалогове вікно параметрів

  У діалоговому вікні Параметри буде показано налаштування сеансу налагоджування (діагностики).

Ввід-вивід

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

  Вкладка «Ввід-вивід»
  Вкладка «Ввід-вивід».

  На вкладці Ввід-вивід показано повідомлення, виведені простою тестовою програмою.

### Стек викликів і локальні змінні

На панелі Стек викликів буде показано форматовані дані зворотного трасування, отримані від &gdb;.

Панель інструмента стеку викликів &gdb;
Панель інструмента стеку викликів.

Панель інструмента Стек викликів додатка &gdb;.

На панелі інструмента Локальні змінні буде показано список всіх завантажених зараз змінних програми та їхніх значень.

Панель інструмента «Локальні змінні» &gdb;
Панель інструмента локальних змінних.

Панель інструмента Локальні змінні додатка &gdb;.

### Подяки

Особлива подяка учаснику Google Code-In 2011 Martin Gergov за написання більшої частини цього розділу.

### Налаштування

На сторінці налаштовування додатка визначаються «профілі засобу діагностики», які можна вибрати. Там буде показано типові налаштування (JSON), їх можна «перезаписати» наданими користувачем у подібній формі. Приклад:

    {
        "dap": {
            "debugpy": {
                "url": "https://github.com/microsoft/debugpy",
                "run": {
                    "command": ["python", "-m", "debugpy", "--listen", "${#run.port}", "--wait-for-client"],
                    "port": 0,
                    "supportsSourceRequest": false
                },
                "configurations": {
                    "launch": {
                        "commandArgs": ["${file}", "${args|list}"],
                        "request": {
                            "command": "attach",
                            "stopOnEntry": true,
                            "redirectOutput": true
                        }
                    },
                    "attach": {
                        "commandArgs": ["--pid", "${pid}"],
                        "request": {
                            "command": "attach",
                            "stopOnEntry": true,
                            "redirectOutput": true
                        }
                    },
            },
            "gdb": {
                "url": "gdb",
                "run": {
                    "command": [
                        "gdb",
                        "-i",
                        "dap"
                    ],
                    "redirectStderr": true,
                    "redirectStdout": true,
                    "supportsSourceRequest": true
                },
                "configurations": {
                    "launch (debug)": {
                        "request": {
                            "command": "launch",
                            "mode": "debug",
                            "program": "${file}",
                            "args": "${args|list}",
                            "cwd": "${workdir}"
                        }
                    }
                }
            }
        }
    }

Кожен запис у `configurations` буде поєднано із даними `run` і сформовано «профіль». У цьому випадку визначається сервер DAP із аргументами, де аргументи є специфічними для профілю (`commandArgs`). Інші частини визначають запит до протоколу DAP (`launch` або `attach`) із специфічними для DAP розширеннями.

Звичайно ж, вказаний сервер має бути встановлено (і типово, це має бути зроблено до одного з каталогів у `PATH`, щоб його можна було належним чином запускати).

Буде застосовано різні етапи перевизначення і об'єднання; налаштування користувача (буде завантажено з файла) перевизначають (внутрішні) типові налаштування і перезаписуються даними запису у налаштуваннях проєкту `.kateproject`.

#### Налаштовування середовища виконання

Базові відомості та специфіку можна знайти у розділі Середовище виконання клієнта LSP нижче. Але варто зауважити, що можливо виникне потреба у запуску процесу для діагностики (і сервера DAP) у «спеціальному середовищі», визначеному або змінними середовища або певним контейнером (що надає потрібні залежності та обставини для належного виконання).

Подібно до прикладу у відповідному розділі, такі налаштування може бути задано у `.kateproject`.

    {
        // це також може бути масив об'єктів
        "exec": {
            "hostname": "foobar"
            // команда також може бути масивом рядків
            "prefix": "podman exec -i foobarcontainer",
            "mapRemoteRoot": true,
            "pathMappings": [
                // можлива будь-яка з вказаних нижче форм
                // також існує більш автоматизована альтернатива, див. нижче
                [ "/dir/on/host", "/mounted/in/container" ]
                { "localRoot": "/local/dir", "remoteRoot": "/remote/dir" }
            ]
        },
        "lspclient": {
            "servers": {
                "python": {
                    // встановлюватиме відповідність або об'єднує з вищим об'єктом
                    "exec": { "hostname": "foobar" },
                    // обмежити цей сервер коренем цього проєкту,
                    // щоб його не було використано для інших проєктів, які може бути відкрито
                    // (інші сервери можуть вже використовувати певні кореневі проєкти, але, загалом, для python це не справджується)
                    "root": "."
                },
                "c": {
                    // як вище
                    "exec": { "hostname": "foobar" },
                    "root": "."
                }
            }
        }
    }

Докладніші відомості наведено у згаданому розділі, але по суті префікс `prefix` буде додано перед командним рядком сервера DAP, вказаним в іншому місці. Результат полягає у тому, що сервер запускається у вказаному контейнері, а потім, у свою чергу, також і запущений процес. `pathMapping` забезпечує перетворення шляхів до файлів між панеллю перегляду редактора та панеллю сервера DAP (контейнера), наприклад, під час роботи з встановленням точок зупинки або обробкою наданого зворотного трасування. Зауважте, що таке зіставлення є необов'язковим і може бути корисним або ні. Під час роботи з кодом C/C++, який компілюється в основній системі, символьна інформація посилається на вихідні файли в основній системі, яких взагалі не існує в іншому середовищі. Однак, в інших обставинах (наприклад, python) посилання виконується на фактичні файли середовища виконання (в іншому середовищі).

Слід пам'ятати про наведене нижче:

- У середовищі або контейнері має бути сервер DAP, який має бути налаштовано для підтримки належних дій з діагностики (отже, якщо потрібно, привілейовано, з потрібними можливостями).

- Має бути можливим обмін даними між редактором і DAP. У випадку контейнера останній має має або використовувати з'єднання з мережею основної системи, або надавати придатний прив'язаний або оприлюднений порт разом із відповідним фрагментом налаштувань, як у наведеному вище прикладі (оскільки вибраний автоматично у випадку порту 0 не працюватиме).

- Вказаний виконуваний файл або ідентифікатор процесу має бути у перспективі «контейнера», а також будь-які аргументи (діагностованого виконуваного файла).

Також, як у випадку LSP, буде встановлено певні змінні середовища; `KATE_EXEC_PLUGIN` буде встановлено у значення `dap`, `KATE_EXEC_SERVER` буде встановлено у значення типу засобу діагностики або мови (наприклад, `python`), а `KATE_EXEC_PROFILE` буде встановлено у значення запису налаштувань (наприклад, `launch`)."

## Додаток проєктів

### Вступ

Основне призначення додатка роботи з проєктами — створення структурованого списку файлів, які належать до проєкту. Реалізовано такі можливості:

1. Надання структурованого перегляду файлів проєкту

2. Спрощення і пришвидшення відкриття проєктів і перемикання між проєктами

3. Підтримка пошуку із заміною у межах проєкту

4. Підтримка простого механізму автоматичного доповнення коду

5. Спрощення швидкого відкриття файлів у проєкті

6. Підтримка збирання проєкту

### Структурований перегляд файлів

Після вмикання додатка роботи з проєктами за допомогою вікна налаштовування &kate; відкрийте файл з проєкту. У відповідь на бічній панелі буде показано список усіх проєктів та файлів у цих проєктах:

Панель проєкту

Як можна бачити у нашому прикладі, поточним активним проєктом є Kate, а його вміст показано у форматі ієрархічного списку. Якщо натиснути пункт файла у такому списку, програма відкриє його для редагування. Крім того, передбачено контекстне меню, за допомогою якого можна відкривати файли у інших програмах, зокрема можна відкривати файли `.ui` за допомогою Qt Designer.

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

### Перемикання проєктів

Ідея роботи додатка полягає у тому, що вам ніколи не доведеться відкривати проєкт вручну (таку можливість, зрештою, взагалі не передбачено). Якщо ви відкриєте якийсь файл, додаток роботи з проєктами швидко виконає сканування теки, де він зберігається, і усіх її батьківських тек, і спробує знайти файл `.kateproject`. Якщо такий файл буде знайдено, програма автоматично завантажить відповідний проєкт.

Крім того, якщо ви відкриєте якийсь інший документ, що належить до іншого проєкту, у &kate;, додаток роботи з проєктами автоматично змінить поточний проєкт на проєкт нововідкритого файла. Отже, без потреби у додаткових діях, завжди буде відкрито відповідний проєкт. Звичайно ж, ви також можете перемкнути поточний активний проєкт за допомогою спадного списку.

### Пошук і заміна у проєктах

У &kate; передбачено додаток пошуку із заміною, сторінку якого буде показано на нижній панелі. Якщо відкрито проєкт, ви можете розгорнути панель пошуку із заміною і перемкнути додаток на режим пошуку із заміною у поточному проєкті:

Пошук у проєктах

### Просте автоматичне доповнення

Маючи дані щодо усіх файлів, які належать до проєкту, додаток роботи з проєктами надає можливості з автоматичного доповнення коду, реалізовані на основі CTags. Під час першого відкриття проєкту CTags виконує обробку усіх файлів проєкту у фоновому режимі і зберігає усі дані CTags до каталогу `/tmp`. Отримані дані потім використовуються для заповнення списку контекстної панелі автоматичного доповнення у &kate;.

Якщо ж відповідні можливості автоматичного доповнення виявляться недоступними, &kate; зможе показувати у списку автоматичного доповнення лише пункти, отримані на основі даних слів з поточного файла. Таким чином, можливості автоматичного доповнення, реалізовані у додатку роботи з проєктами є набагато потужнішими за стандартні.

Доповнення коду у проєктах

Якщо у системі не буде виявлено програм CTags, &kate; повідомить вам про це панеллю нагадування. Крім того, варто зауважити, що файл CTags у `/tmp` спорожнюється кожного разу, коли ви завершуєте роботу &kate;. Отже, додаток не засмічуватиме теку зайвими застарілими файлами.

### Підтримка збирання проєкту

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

### Створення проєктів

#### Автоматичне завантаження проєктів

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

Налаштовування додатка роботи з проєктами

#### Створення проєктів вручну

Вам достатньо створити файл `.kateproject` у кореневій теці проєкту. Наприклад, для Kate файл `.kateproject` містить такі дані:

    {
      "name": "Kate",
      "files": [
        {
          "git": 1
        }
      ]
    }

Вміст файла записується із використанням синтаксису JSON. Проєкт називається Kate, а список файлів, які у ньому містяться, отримується з даних git.

Окрім підтримки `git`, передбачено підтримку subversion (`svn`) та mercurial (`hg`). Якщо ви не хочете, щоб додаток читав файли із системи керування версіями, ви можете викликати kate з командного рядка так:

    kate /шлях/до/теки

або наказати додатку рекурсивно завантажити файли з каталогів так:

    {
      "name": "Kate",
      "files": [
        {
          "directory": "kate",
          "filters": [
            "*.cpp",
            "*.h",
            "*.ui",
            "CMakeLists.txt",
            "Find*.cmake"
          ],
          "recursive": 1,
          "hidden": 1
        }
      ],
      "exclude_patterns" : [
        "^build/.*"
      ]
    }

Тут підтеки та фільтри визначають частину проєкту. Ви також можете поєднувати керування версіями та керування на основі файлів у фільтрах. Приховані файли не буде отримати, якщо для параметра `"hidden"` встановлено значення 0. Параметр `"exclude_patterns"` є списком взірців у формі формальних виразів, яким можна скористатися для виключення тек і файлів з ієрархії проєкту. У нашому прикладі буде виключено усі файли і теки у каталозі `build` кореневого каталогу.

Якщо вам потрібно додати підтримку збирання, ви можете вписати до файла `.kateproject` такі рядки:

    {
      "name": "Kate",
      "files": [
        {
          "git": 1
        }
      ],
      "build": {
        "directory": "build",
        "build": "make all",
        "clean": "make clean",
        "install": "make install",
        "targets": [
          {
            "name": "all",
            "build_cmd": "ninja"
            "run_cmd": "./bin/kate"
          },
          {
            "name": "kate",
            "build_cmd": "ninja kate-bin"
          }
        ]
      }
    }

Визначені вище цілі збирання потім буде показано у додатку збирання, розділ «Цілі додатка проєкту». Якщо визначено масив `targets`, `build`, `clean` і `install` буде проігноровано. Кожен елемент у цьому масиві визначає ціль. `name` є назвою цілі, `build_cmd` буде використано для збирання цілі, `run_cmd` буде використано для запуску цілі. Найважливішим записом є `directory`, — це місце, де буде виконано команди.

Якщо у вашому проєкті є файл `.kateproject`, за яким стежить система керування версіями, але вам потрібно скоригувати налаштування певного робочого простору, ви можете зберегти ці зміни до окремого файла із назвою `.kateproject.local`. Вміст цього файла матиме вищий пріоритет за вміст `.kateproject`.

### Поточний проєкт

За допомогою пункту меню &Alt;1 Проєкти Перейти ви можете відкрити панель Поточний проєкт у нижній частині вікна редактора із такими чотирма вкладками:

Поточний проєкт

Панель термінала

  Запуск емулятора термінала у кореневій теці проєкту.

Покажчик коду

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

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

Аналіз коду

  Натисніть пункт Розпочати аналіз, щоб запустити статичний аналіз коду мовами програмування C та C++ за допомогою `cppcheck` і отримати звіт із показаними назвами файлів, номерами рядків та рівнем критичності помилки (стильова, попередження тощо) та даними щодо знайденої вади.

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

Нотатки

  Текст, введений на цій вкладці, буде збережено у файлі `.kateproject.notes`.

### Меню «Проєкти»

За допомогою меню Проєкти ви зможете перемикатися між поточними відкритими проєктами. Відповідальним за цей пункт меню є додаток «Проєкти».

&Ctrl;&Alt;← Проєкти Назад

  Перемкнутися на попередній проєкт.

&Ctrl;&Alt;→ Проєкти Вперед

  Перемкнутися на наступний проєкт.

&Alt;1 Проєкти Перейти до

  Відкрити панель Поточний проєкт у нижній частині вікна редактора.

## Додаток клієнта LSP

За допомогою додатка клієнта LSP можна отримати доступ до багатьох можливостей, зокрема автоматичного доповнення коду, навігації кодом та пошуку довідкової інформації на основі протоколу сервера мов (Language Server Protocol).

Після позначення пункту додатка клієнта LSP на сторінці додатків, у діалоговому вікні налаштовування &kate; з’явиться нова сторінка із назвою «Клієнт LSP».

### Структура меню

Нижче, у пояснення щодо пунктів меню, наведено відповідні команди LSP (якщо такі існують). У документації з цих команд можна знайти додаткові відомості та пояснення, які можуть залежати від мови програмування, яку використано. Термін «поточний символ» використано на позначення символу, який відповідає поточній позиції курсора і визначається на основі мови програмування та з використанням відповідної реалізації сервера обробки.

Клієнт LSP Перейти до визначення

  [textDocument/definition] Перейти до визначення поточного символу.

Клієнт LSP Перейти до оголошення

  [textDocument/declaration] Перейти до оголошення поточного символу.

Клієнт LSP Перейти до визначення типу

  [textDocument/typeDefinition] Перейти до визначення типу поточного символу.

Клієнт LSP Знайти посилання

  [textDocument/references] Знайти посилання на поточний символ.

Клієнт LSP Знайти реалізації

  [textDocument/implementation] Знайти реалізації поточного символу.

Клієнт LSP Підсвітити

  [textDocument/documentHighlight] Підсвітити посилання на поточний символ у поточному документі.

Клієнт LSP Наведення

  [textDocument/hover] Показати при наведенні дані щодо поточного символу.

Клієнт LSP Форматувати

  [textDocument/formatting] [textDocument/rangeFormatting] Форматувати поточний документ або поточний позначений фрагмент документа.

Клієнт LSP Перейменувати

  [textDocument/rename] Перейменувати поточний символ.

Клієнт LSP Швидке виправлення

  [textDocument/codeAction, workspace/executeCommand] Обчислює і застосовує швидке виправлення для діагностики у поточній позиції (або рядку).

Клієнт LSP Показувати документацію щодо доповнення позначеного

  Показати документацію щодо позначеного елемента у списку автоматичного доповнення.

Клієнт LSP Увімкнути довідку щодо підписів із автодоповненням

  Крім того, показувати довідку щодо підписів у списку автозавершення.

Клієнт LSP Включати оголошення до посилань

  Надіслати запит щодо включення оголошення поточного символу при запиті щодо посилань.

Клієнт LSP Додавати дужки при доповненні функцій

  Автоматично додати пару дужок після автоматично доповненої назви функції.

Клієнт LSP Показувати відомості при наведенні

  Показати дані, які програма показує при наведенні вказівника миші. Незалежно від значення цього параметра, запит щодо цих даних можна завжди ініціювати вручну.

Клієнт LSP Форматувати при введенні

  [document/onTypeFormatting] Форматувати частини документа, коли користувач вводитиме певні контрольні символи. Прикладом може бути застосування відступів рядків при введенні символу розриву рядка або іншого форматування, яке визначено на сервері LSP. Зауважте, що скрипти встановлення відступів текстового редактора можуть намагатися виконати те саме завдання (залежно від режиму роботу), тому не радимо одночасно використовувати обидва ці засоби форматування.

Клієнт LSP Нарощувальна синхронізація документів

  Надсилати для обробки сервером окремі частини документа під час редагування, а не цілий документ (якщо підтримку такого режиму обробки передбачено на сервері).

Клієнт LSP Підсвітити місце переходу

  Надати тимчасовий візуальний сигнал після виконання переходу до місця (визначення, оголошення тощо).

Клієнт LSP Показувати діагностичні сповіщення

  [textDocument/publishDiagnostics] Обробити і показати діагностичні сповіщення, які було надіслано сервером.

Клієнт LSP Показувати підсвічування діагностики

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

Клієнт LSP Показувати позначки діагностики

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

Клієнт LSP Перемкнутися на вкладку діагностики

  Перемкнутися на вкладку діагностики на панелі інструментів додатків.

Клієнт LSP Закрити усі вкладки, які не є діагностичними

  Закрити усі вкладки (наприклад, вкладки посилань) на панелі інструментів додатків, які не пов'язано із діагностикою.

Клієнт LSP Перезапустити сервер LSP

  Перезапустити сервер LSP документа.

Клієнт LSP Перезапустити усі сервери LSP

  Зупинити роботу усіх серверів LSP, які згодом, якщо потрібно, буде запущено або перезапущено.

### Підтримка переходу до символів

Клієнт LSP може допомогти вам у переході до будь-якого символу у вашому проєкті або поточному файлі. Щоб перейти до будь-якого символу у файлі, скористайтеся кнопками панелі «Схема символів клієнта LSP» у правій частині вікна &kate;. На цій панелі ви побачите списки усіх символів, які було знайдено сервером у поточному документі.

#### Налаштовування схеми символів клієнта LSP

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

Типово, на панелі символи буде показано у форматі ієрархічної структури. Втім, ви можете змінити формат на звичайний для списків за допомогою контекстного меню.

#### Підтримка переходу до загальних символів

Щоб перейти до будь-якого символу у вашому проєкті, ви можете відкрити вікно переходу до символу за допомогою комбінації клавіш &Ctrl;&Alt;P. Одразу після відкриття вікно буде порожнім, але щойно ви щось введете з клавіатури, програма почне показувати у вікні відповідні символи. Якість відповідності, а також можливості з фільтрування залежать від використаного вами сервера. Наприклад, для clangd передбачено можливість нечіткого фільтрування, але у деяких інших серверів такої можливості не передбачено.

### Інші можливості

Передбачено підтримку перемикання заголовка початкового коду Clangd. Щоб перемкнути заголовок початкового коду у проєкті C або C++, скористайтеся пунктом «Перемкнути файл заголовка/коду» у контекстному меню або натисніть клавішу F12.

Ви можете швидко перейти до символу, навівши на нього вказівник миші і натиснувши комбінації &Ctrl; + ліва кнопка миші.

### Налаштування

За допомогою сторінки налаштовування додатка ви можете визначити типові значення для описаних вище пунктів меню. Втім, на цій сторінці є один додатковий пункт, за допомогою якого можна вказати файл налаштувань сервера. Цей файл є файлом &JSON;, яким можна наказати серверу LSP запускатися (і потім вести обмін даними за допомогою stdin/stdout). Для зручності, до типового пакунка включено типовий файл налаштувань, який можна вивчати на сторінці налаштування додатка. Щоб полегшити розуміння наведених нижче пояснень, ось витяг з налаштувань:

    {
        "servers": {
            "bibtex": {
                "use": "latex",
                "highlightingModeRegex": "^BibTeX$"
            },
            "c": {
                "command": ["clangd", "-log=error", "--background-index"],
                "commandDebug": ["clangd", "-log=verbose", "--background-index"],
                "url": "https://clang.llvm.org/extra/clangd/",
                "highlightingModeRegex": "^(C|ANSI C89|Objective-C)$"
            },
            "cpp": {
                "use": "c",
                "highlightingModeRegex": "^(C\\+\\+|ISO C\\+\\+|Objective-C\\+\\+)$"
            },
            "d": {
                "command": ["dls", "--stdio"],
                "url": "https://github.com/d-language-server/dls",
                "highlightingModeRegex": "^D$"
            },
            "fortran": {
                "command": ["fortls"],
                "rootIndicationFileNames": [".fortls"],
                "url": "https://github.com/hansec/fortran-language-server",
                "highlightingModeRegex": "^Fortran.*$"
            },
            "javascript": {
                "command": ["typescript-language-server", "--stdio"],
                "rootIndicationFileNames": ["package.json", "package-lock.json"],
                "url": "https://github.com/theia-ide/typescript-language-server",
                "highlightingModeRegex": "^JavaScript.*$",
                "documentLanguageId": false
            },
            "latex": {
                "command": ["texlab"],
                "url": "https://texlab.netlify.com/",
                "highlightingModeRegex": "^LaTeX$"
            },
            "go": {
                "command": ["go-langserver"],
                "commandDebug": ["go-langserver", "-trace"],
                "url": "https://github.com/sourcegraph/go-langserver",
                "highlightingModeRegex": "^Go$"
            },
            "python": {
                "command": ["python3", "-m", "pyls", "--check-parent-process"],
                "url": "https://github.com/palantir/python-language-server",
                "highlightingModeRegex": "^Python$"
            },
            "rust": {
                "command": ["rls"],
                "path": ["%{ENV:HOME}/.cargo/bin", "%{ENV:USERPROFILE}/.cargo/bin"],
                "rootIndicationFileNames": ["Cargo.lock", "Cargo.toml"],
                "url": "https://github.com/rust-lang/rls",
                "highlightingModeRegex": "^Rust$"
            },
            "ocaml": {
                "command": ["ocamlmerlin-lsp"],
                "url": "https://github.com/ocaml/merlin",
                "highlightingModeRegex": "^Objective Caml.*$"
            }
        }
    }

Зауважте, що кожен запис команди («command») може масивом або рядком (який буде поділено на записи масиву). Крім того, буде взято до уваги запис верхнього рівня «global» (поряд із «server»)(докладніший опис наведено нижче). Пошук вказаного виконуваного файла відбуватиметься у звичний спосіб, наприклад, з використанням `PATH`. Якщо виконуваний файл встановлено у якомусь нетиповому місці, шлях до цього місця може бути згодом розгорнуто. Крім того, можна скористатися у записі місця (символічним) посиланням або скриптом-обгорткою, який зберігається у звичайному `PATH`. Як проілюстровано вище, можна також вказати «path», місце, в якому буде виконано пошук після стандартних місць.

В усіх записах «command», «root» та «path» буде виконано розгортання змінних.

Інструкцією «highlightingModeRegex» можна скористатися для прив'язування режиму підсвічування, який використовує &kate;, до ідентифікатора мови сервера. Якщо не буде надано формального виразу, буде використано сам ідентифікатор мови. Якщо для запису «documentLanguageId» встановлено значення false, при відкритті документа серверу не буде передано ідентифікатора мови. Це може дати кращі результати для деяких серверів, які є точнішими у визначенні типу документа, ніж засоби на основі режиму &kate;.

З наведеного вище прикладу можна зрозуміти суть. Крім того, кожен об'єкт запису сервера може мати запис "initializationOptions", який містить дані, які передаються серверу як частина методу «initialize». Якщо такий запис буде знайдено, параметр «settings» буде передано серверу за допомогою сповіщення «workspace/didChangeConfiguration». Як об'єкт JSON можна вказати «completionTriggerCharacters» або «signatureTriggerCharacters» із рядковими учасниками «exclude» і/або «include». Ці учасники буде використано для, відповідно, виключення або додавання певних символів для відповідного набору перемикачів, який надається сервером.

Застосовуються різні етапи перевизначення та об'єднання.

- Налаштування користувача (завантажені з файла) мають пріоритет над типовими (вбудованими) налаштуваннями.

- Запис «lspclient» у налаштуваннях проєкту `.kateproject` має пріоритет над усіма попередніми записами.

- Отриманий у результаті обробки запис «global» використовується як доповнення (не перевизначення) будь-якого із записів сервера.

Для кожної комбінації (root, servertype) використовується один екземпляр сервера. Якщо значення "root" вказано як абсолютний шлях, його буде використано без обробки. Якщо ж це не так, значення вважатиметься вказаним відносно каталогу projectBase (як його визначено у додатку проєктів), якщо такий існує, або відносно каталогу документа, якщо цього каталогу не існує. Якщо значення не вказано, і "rootIndicationFileNames" є масивом назв файлів, буде використано батьківський каталог поточного документа, який містить такий файл. Крім того, якщо "root" не вказано і rootIndicationFilePatterns є масивом взірців назв файлів, буде вибрано батьківський каталог поточного документа, що відповідає взірцю назви файла. Останнім резервним варіантом для "root" є домашній каталог користувача. Для будь-якого документа отриманий у результаті описаної обробки "root" визначає, чи потрібен окремий екземпляр сервера. Якщо такий екземпляр потрібен, значення "root" буде передано як rootUri/rootPath.

Загалом, рекомендуємо не визначати "root", оскільки він не є важливим для роботи сервера (хоча, ви можете визначити його у вашому конкретному випадку). Якщо екземплярів сервера буде небагато, вони працюватимуть ефективніше і матимуть, очевидно, «ширше» поле зору, ніж у випадку використання багатьох окремих екземплярів сервера.

Як вже згадували вище, у деяких записах буде використано розгортання змінних. Належне використання цієї можливості у поєднанні із підходом із використанням «скрипту-обгортки» забезпечує належні можливості налаштовування для широкого спектра застосувань. Наприклад, розглянемо сценарій із мовою розробки python. Нехай маємо декілька проєктів (наприклад, у сховищах git), у кожного з яких є власна конфігурація віртуального середовища. Якщо скористатися типовими налаштуваннями, сервер мови python не отримає даних щодо віртуального середовища. Втім, цю проблему можна розв'язати за допомогою викладеного нижче підходу. По-перше, до «Параметрів сервера користувача» додатка LSPClient слід ввести вказаний нижче фрагмент коду:

    {
            "servers":
            {
                    "python":
                    {
                            "command": ["pylsp_in_env", "%{Project:NativePath}"],
                            "root": "."
                    }
            }
    }

Запис «root» вище є відносним щодо каталогу проєкту. Його призначено для запуску окремого сервера мов для кожного з проєктів. У цьому випадку такий поділ є необхідним, оскільки кожен проєкт має своє віртуальне середовище.

`pylsp_in_env` — невеличкий «скрипт-обгортка», який має бути збережено до одного з каталогів зі змінної `PATH` із таким вмістом (вміст слід скоригувати за вашими потребами):

    #!/bin/bash
    cd $1
    # запустити сервер (python-lsp-server) у віртуальному середовищі
    # (тобто із заданими змінними віртуального середовища)
    # тому командуємо source для віртуального середовища
    source XYZ
    # сервер і аргументи можуть бути різними
    exec myserver

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

#### Налаштування сервера LSP

У кожного окремо взятого сервера LSP є власний спосіб налаштовування. У ньому можуть використовуватися специфічні засоби для мови або інструменти, наприклад `tox.ini` (для python), `.clang-format` для форматування у стилі C++. Такі налаштування може бути потім використано іншими (не пов'язаними із LSP) інструментами (зокрема tox або clang-format). Крім того, деякі сервери LSP завантажують налаштування з нетипових файлів (наприклад, `.ccls`). Далі, нетипові налаштування сервера можна передавати за допомогою LSP (протоколу), див. згадані раніше записи «initializationOptions» і «settings» у налаштуваннях сервера.

Оскільки застосовуються різні рівні перевизначення і об'єднання налаштувань, у наведеному нижче прикладі визначені користувачем специфічні налаштування клієнта коригують деякі з налаштувань python-language-server.

    {
        "servers": {
            "python": {
                "settings": {
                    "pyls": {
                        "plugins": {
                            "pylint": {
                                "enable": true
                            }
                        }
                    }
                }
            }
        }
    }

На жаль, засоби налаштовування серверів LSP часто не мають належної докладної документації. Лише вивчення коду сервера надає змогу ознайомитися із підходами до налаштовування та переліком доступних параметрів. Зокрема, у наведеному вище прикладі у сервері передбачено підтримку ширшого спектра параметрів у «settings». У документації до іншого клієнта LSP можна знайти приклади для серверів інших мов та відповіді параметри, які доволі просто перетворити на налаштування &JSON;, які використовуються у нашому клієнті, і які у загальних рисах описано вище.

#### Форматування при збереженні для сервера LSP

Ви можете увімкнути «форматування при збереженні» у параметрах LSP діалогового вікна налаштовування програми.

#### Придушення діагностики на сервері LSP

Може так статися, що діагностичні дані не є аж надто корисними. Діагностика може бути зайвою, особливо, якщо діагностичних повідомлень надто багато (а також вони належать до одного типу). У деяких випадках, потік повідомлень можна скоригувати за мовою програмування (на сервері). Наприклад, механізм налаштовування clangd уможливлює коригування деяких аспектів діагностики. Втім, загалом, спосіб коригування не завжди очевидний, або коригування взагалі неможливе у бажаний спосіб через обмеження роботи сервера або вади.

Через це, у додатку передбачено підтримку придушення діагностичних повідомлень, подібне до, наприклад, придушення у valgrind. Можна виконати найточніше налаштовування за допомогою ключа «suppressions» у (об'єднаних) налаштуваннях &JSON;.

    {
        "servers": {
            "c": {
                "suppressions": {
                    "rulename": ["filename", "foo"],
                    "clang_pointer": ["", "clang-tidy", "clear_pointer"],
                }
            }
        }
    }

Кожен (коректне) правило може мати довільну назву і бути визначеним масивом довжини 2 або 3, у якому вказано формальний вираз для встановлення відповідності (повній) назві файла, формальний вираз для встановлення відповідності діагностичному тексту та необов'язковий формальний вираз для встановлення відповідності (діапазону початкового коду) тексту, до якого застосовується діагностика.

Окрім вказаних вище точних налаштувань, у контекстному меню вкладки діагностики також передбачено підтримку додавання та вилучення придушень. При цьому відповідність діагностичному тексту встановлюється точно на загальному рівні (будь-який файл) або на локальному рівні (певний вказаний файл). Дані придушень зберігаються у налаштуваннях сеансу і завантажуються з них же.

#### Діагностика сервера LSP

Одна річ описати як налаштувати (нетиповий) сервер LSP для будь-якої окремої мови програмування, інша ж — зробити так, щоб сервер працював без будь-яких проблем. На щастя, зазвичай, маємо безпроблемну роботу сервера. Втім, іноді можуть виникати проблеми або із певними «тупими» помилками у налаштуваннях або фундаментальні проблеми із самим сервером. Другий варіант може проявляти себе як повідомлення про невдалі спроби запустити сервер, які з'являються на вкладці виведення даних &kate;. Втім, такі повідомлення є лише повідомленнями верхнього рівня або повідомленням поступу обробки, а не докладними діагностичними повідомленнями, і навіть можуть не містити даних щодо того, що є, фактично, іншим процесом (сервером LSP).

Звичайним способом діагностики є додавання певних прапорців до команди запуску (сервера мови), які увімкнуть (додаткове) журналювання (до якогось файла або стандартного виведення помилок), якщо цього не зроблено типово. Якщо потім запустити &kate; з термінала, можна отримати додаткові дані щодо джерела помилки.

Також дані можна отримати вивченням обміну даними між клієнтом LSP &kate; і сервером LSP. Знову ж таки, на останньому, зазвичай, є засоби трасування. Крім того, клієнт LSP надає додаткове діагностичне трасування (до stderr), якщо викликати &kate; із належним чином експортованою змінною середовища `LSPCLIENT_DEBUG=1`.

#### Налаштовування середовища виконання

Наведений вище приклад virtualenv python — це лише один із прикладів «середовища виконання», яке працює окремо від звичайного середовища основної системи. Цього можна досягти за допомогою різних налаштувань змінних (наприклад, virtualenv), або налаштування (s)chroot (перемикання на інший каталог як новий кореневий каталог), контейнера (наприклад, podman, docker) або ssh-сеансу на іншу основну систему. У кожному випадку «інше середовище» визначається «префіксом виконання». Тобто, деяку програму можна викликати/запустити в іншому середовищі за допомогою «префікса» (програми та аргументів), доданого до передбачуваного виклику. Наприклад, `podman exec -i назва_контейнера` або `ssh користувач@вузол`.

Зокрема, як і в попередньому прикладі virtualenv, можна вибрати/потрібно запустити LSP-сервер в окремому середовищі (наприклад, контейнері з усіма залежностями, необхідними для певного проєкту). «Ручний» підхід, описаний вище, має недолік у тому, що він замінює стандартний командний рядок LSP, який потім доводиться вказувати та дублювати знову в скрипті-обгортці. Також у деяких інших згаданих вище прикладах «простір назв шляху» вузла (як його бачить редактор) може відрізнятися від простору назв середовища. Щоб вирішити ці питання більш систематичним способом (ніж «нетиповим» підходом), можна вказати деякі додаткові налаштування.

Наприклад, наведений нижче код можна вказати у налаштуваннях `.kateproject`. Очевидно, «фіктивні» коментарі включати не слід.

    {
        // це також може бути масив об'єктів
        "exec": {
            "hostname": "foobar"
            // the command could also be an array of string
            "prefix": "podman exec -i foobarcontainer",
            "mapRemoteRoot": true,
            "pathMappings": [
                // either of the following forms are possible
                // a more automagic alternative exists as well, see later/below
                [ "/dir/on/host", "/mounted/in/container" ]
                { "localRoot": "/local/dir", "remoteRoot": "/remote/dir" }
            ]
        },
        "lspclient": {
            "servers": {
                "python": {
                    // встановлюватиме відповідність або об'єднує з вищим об'єктом
                    "exec": { "hostname": "foobar" },
                    // обмежити цей сервер коренем цього проєкту,
                    // щоб його не було використано для інших проєктів, які може бути відкрито
                    // (інші сервери можуть вже використовувати певні кореневі проєкти, але, загалом, для python це не справджується)
                    "root": "."
                },
                "c": {
                    // as above
                    "exec": { "hostname": "foobar" },
                    "root": "."
                }
            }
        }
    }

Отже, що відбувається в результаті вищезазначеного? Як згадувалося, частина `lspclient` вищезгаданого об'єднується із загальними налаштуваннями, отже, буде знайдено розділ `exec` (для вказаних мов). Буде виконано пошук іншого об'єкта (який вказує на відповідну `hostname`) у розділі `exec` або `lspclient`, і відповідний об'єкт слугуватиме основою для об'єднання. В результаті, командний рядок LSP-сервера (для C та python) буде додано до вказаного (з підставлянням змінних) префікса, і тому він буде виконаний у заданому контейнері. Звичайно, контейнер має бути створено, він має перебувати у належному запущеному стані та бути обладнаним належними LSP-серверами. Можливо, у вас виникла спокуса використати розділ `global` (у межах `lspclient`). Це також могло б спрацювати, але тоді всі LSP-сервери запускалися б з цим префіксом, включаючи ті, що використовуються, наприклад, для Markdown, Bash-скриптів або JSON. Більш імовірно, що на звичайній основній системі це усе є (якщо ним користуються). Тож, як завжди, це залежить від ваших конкретних налаштувань.

Однак, LSP-сервер тепер може стежити за (віддаленими) шляхами, відмінні від (локальних), які бачить та використовує редактор. Вказані `pathMappings` використовуються для перетворення між ними в межах зв'язку із LSP-сервером. Це, звичайно, відбувається у межах можливого. Зрозуміло, що не всі локальні шляхи мають віддалене представлення, але шляхи, яких немає, не будуть видимі (сервером) і не призведуть до проблем. І навпаки, (віддалений) сервер тепер може бачити та надавати посилання у «віддаленому кореневому каталозі», які не є очевидно/легко представленими у локальній системі. Якщо увімкнено `mapRemoteRoot`, віддалений кореневий каталог буде неявним чином відображено на «локальну адресу» `exec://щось/`, яку потім буде оброблено простим протоколом KIO. Для останнього, по суті, буде використано (наприклад) `podman exec -i якийсь_контейнер cat якийсь_файл"` для копіювання з віддаленого на локальний комп'ютер (та інші подібні варіації з використанням інструментів з набору `coreutils`). Достатньо сказати, що його не призначено для загального використання, і він не претендує на жодну продуктивність, але його достатньо, щоб швидко та легко завантажити файл, на який посилаються, до редактора.

Тепер, як легко бачити, можна скористатися спрощеною версією наведених вище налаштувань (без `hostname` або `pathMappings`) для обробки virtualenv без дублювання командного рядка сервера (у скрипті-обгортці).

Наступне побачити не просто, тому ми нагадуємо про це явним чином.

- Як `hostname`, так і власне `prefix` визначають середовище виконання (перше — за назвою, друге — за вмістом). У екземплярі процесу редактора одне й те саме `hostname` не повинно бути пов'язане з різними `prefix`, оскільки це призводить до невизначеної поведінки (без потреби у діагностиці).

- Обидва значення, `prefix` і `pathMappings`, підлягають розгортанню змінних (у редакторі) (але з урахуванням попереднього запису).

- Під час виконання також встановлюються деякі змінні середовища, які можна використовувати для (тонкого) налаштовування поведінки «засобу запуску з префіксом» (хоча знову ж таки, зверніть увагу на перший пункт). Зокрема, `KATE_EXEC_PLUGIN` встановлюється у значення `lspclient`, а `KATE_EXEC_SERVER` встановлюється у значення ідентифікатора сервера (наприклад, `python`).

- Зокрема, для параметра `KATE_EXEC_INSPECT` також буде встановлено значення `1`. Це повідомляє «засобу запуску з префіксом», що отримувач даних (додаток Kate) приймає деякі дані поза діапазоном/протоколом. Це надає змогу засобу запуску використовувати деякі засоби для визначення прив'язки шляхів (наприклад, `podman inspect`) та передавати їх у відповідному форматі. Потім це буде вилучено з потоку, який в іншому випадку відповідає протоколу LSP, та використано для розширення будь-якої визначеної прив'язки шляхів. Це може слугувати альтернативою явному визначенню, наприклад, прив'язки монтувань (знову ж таки, дублювання визначення контейнера). Конкретніше, замість цього можна було б використовувати наведений вище фрагмент коду;

      {
          // ...
          "exec": {
              "hostname": "foobar"
              // небажаний повтор назви, але допоміжний скрипт зрозумілий і простий
              "prefix": "exec_inspect.sh foobarcontainer podman exec -i foobarcontainer",
              "mapRemoteRoot": true,
              "pathMappings": []
          }
          // ...
      }

І останнє, але не менш важливе: що робити, якщо підхід «резервного KIO» не є адекватним? На практиці часто можна «монтувати» віддалений кореневий каталог до локальної файлової системи, а потім вказати останній у `pathMappings`. Для початку, добре відома файлова система `sshfs` (fuse) може монтувати (справді) віддалену систему до локальної. Для контейнера (podman/docker) у більшості налаштувань (драйвера файлової системи) передбачено підтримку наступного трюку;

    $ rootdir=/proc/`podman inspect --format '{{.State.Pid}}' назва_контейнера`/root
    # з деякими символічними посиланнями можуть бути проблеми, нижче наведено альтернативу
    $ sudo mount --bind $rootdir /somewhere/containername

Якщо цей підхід виявиться невдалим, можна звернутися до `sshfs` або його підмножини для монтування кореневого каталогу віддаленої файлової системи або контейнера;

    # див. відповідні сторінки підручника; для справжніх (незашифрованих) протоколу обробки файлів достатньо sftp-server
    $ socat 'exec:podman exec -i containername /usr/lib/openssh/sftp-server'
       'exec:sshfs -o transform_symlinks -o passive \:/ /десь/назва_контейнера'
    # ...
    $ fusermount -u /десь/назва_контейнера

Зауважте, що таке монтування кореневого каталогу віддаленої системи до файлової системи основної системи, ймовірно, слід вказувати вручну і явно у розділі `pathMappings` (за винятком дуже інтелектуальних засобів запуску з префіксом, який впорядковує усе це автоматично).

&TC.Hollingsworth; &TC.Hollingsworth.mail;

## Пошук з заміною

### Вступ

За допомогою додатка «Пошук з заміною» &kate; ви зможете шукати фрагмент тексту або текст за формальним виразом у декількох файлах одночасно. Пошук може виконуватися у всіх відкритих файлах або всіх файлах у одному каталозі і, якщо потрібно, у всіх його підкаталогах чи у активному файлі. Шукати можна з фільтруванням за назвою файлів, наприклад шукати лише файли з певним суфіксом назви.

### Інтерфейс

#### Запит з пошуку

У верхній частині панелі інструмента пошуку у файлах завжди буде показано такі пункти:

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

  За допомогою кнопки, розташованої у правому верхньому куті панелі пошуку у файлах, ви можете перемикати нижню половину панелі між режимом показу додаткових параметрів пошуку у теці та режимом показу результатів пошуку.

Знайти

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

Замінити (поле для введення тексту)

  Текст рядка заміни буде додано замість тексту у полі Знайти.

Шукати

  Після того, як параметри пошуку буде налаштовано, достатньо натиснути кнопку Шукати, щоб пошук було розпочато. Щоб розпочати пошук у новій вкладці, натисніть і утримуйте клавішу &Ctrl; перед натисканням кнопки Шукати. Ви також можете просто натиснути клавішу &Enter; після введення тексту до поля Знайти (так само, натискання комбінації клавіш &Ctrl;&Enter; призведе до виконання пошуку у новій вкладці).

Замінити

  Після того, як параметри пошуку буде налаштовано, достатньо натиснути кнопку Замінити, щоб програма замінила текст, вказаний у полі Знайти, текстом, вказаним у полі Замінити. Ви також можете просто натиснути клавішу &Enter; після введення тексту-замінника у полі Замінити.

Далі

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

Замінити у позначених

  Те саме, що і Замінити, але заміну буде виконано лише у файлах, які було позначено на розташованій нижче панелі.

#### Параметри пошуку у теці

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

Шукати у

  Тут ви можете вибрати один з трьох варіантів. Позначте пункт Відкриті файли, щоб пошук було виконано у файлах, які відкрито у &kate;. За допомогою позначення пункту у теці можна наказати програмі виконати пошук у теці і, якщо потрібно, її підтеках. Пунктом Поточний файл можна скористатися для пошуку у поточному активному файлі.

  Якщо завантажено додаток Проєкти, ви зможете вибрати область пошуку: Поточний проєкт або Усі відкриті проєкти.

Враховувати регістр

  Виконувати пошук лише точних відповідників комбінації великих та малих літер, вказаної у полі запиту пошуку.

Формальні вирази

  Надає вам змогу використовувати формальні вирази замість звичайного тексту у запитах.

Розгорнути результати

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

Тека

  Ви можете вказати адресу теки, у якій слід виконати пошук. Наприклад, ви можете ввести `~/development/kde/kate/`, якщо пошук слід виконати у початковому коді &kate;. Цим пунктом можна буде скористатися лише у режимі у теці.

Діалогове вікно відкриття файлів

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

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

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

Фільтр

  За допомогою цього поля можна наказати програмі виконувати пошук лише у тих файлах, назви яких відповідають певному шаблону. Наприклад, якщо потрібно виконати пошук лише у файлах початкових кодів мовою C++, вкажіть `*.cpp`. Щоб пошук було виконано лише у файлах, назви яких починаються на `kate`, вкажіть `kate*`. Можна вказувати декілька фільтрів, відокремлених комами (`,`). Щоб виключити деякі результати з пошуку додайте символ мінус (`-`) перед записом у списку. Цим пунктом не можна буде скористатися у режимі відкритих файлів.

Виключити

  Варіант, який є протилежним до Фільтр. Забороняє &kate; шукати у файлах, назви яких відповідають певному зразку. Так само, як і у полі Фільтр, ви можете вказати декілька зразків, відокремлених комою (`,`). Цим пунктом можна буде скористатися, якщо пошук виконується у режимі у відкритих файлах.

Рекурсивний

  Якщо буде позначено цей пункт, &kate; виконуватиме пошук у всіх підтеках вказаної вами теки. Цим пунктом можна буде скористатися лише у режимі теки.

Шукати у прихованих

  Якщо буде позначено цей пункт, &kate; виконуватиме пошук у файлах та теках, які позначено як приховані у вашій операційній системі. Цим пунктом можна буде скористатися лише у режимі теки.

Переходити за символічними посиланнями

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

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

Включати двійкові файли

  Якщо буде позначено цей пункт, &kate; не виконуватиме пошук у файлах, які не є текстовими файлами.

#### Результати пошуку

Результати пошуку буде показано під параметрами пошуку. Якщо замість них показано параметри пошуку у теці, просто натисніть кнопку , щоб програма їх показала. Їх також буде автоматично показано після завершення пошуку.

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

Щоб переглянути список відповідників у файлі, просто натисніть кнопку розгортання (стрілку), розташовану ліворуч від пункту з назвою файла. Якщо вами було позначено пункт Розгорнути результати, список буде показано вже розгорнутим. У списку буде показано дані щодо номера рядка та частину вмісту рядка, у якій знайдений фрагмент буде позначено напівжирним шрифтом.

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

### Структура меню

&Ctrl;&Alt;F Зміни Пошук у файлах

  Відкриває панель засобу «Пошук з заміною».

Зміни Перейти до наступного відповідника

  Перейти до наступного відповідника під час пошуку за допомогою додатку «Пошук з заміною».

Зміни Перейти до попереднього відповідника

  Перейти до попереднього відповідника під час пошуку за допомогою додатку «Пошук з заміною».

Перегляд Вікна інструментів Показати панель пошуку із заміною

  Вмикає або вимикає показ інструмента Пошук з заміною &kate;.

Martin
Gergov
&TC.Hollingsworth; &TC.Hollingsworth.mail;

## Скрипти і фрагменти тексту &kate;

### Вступ

За допомогою додатка скриптів і фрагментів &kate; ви можете додавати власні елементами автоматизації та керувати ними. Це може варіюватися від статичних багаторазових фрагментів звичайного тексту до складних шаблонів з нетиповими автоматизованими та скриптованими полями, а також повністю нетиповими скриптами &javascript; для зміни вмісту вашого документа.

Здебільшого, ці типи вмісту обробляються однаково. Тому для зручності читання в наступному обговоренні не розрізняються статичні фрагменти коду, фрагменти зі скриптами та скрипти. Натомість термін фрагмент використовується для позначення всіх цих елементів тексту.

У додатку також передбачено підтримку призначення клавіатурних скорочень та вставлення фрагментів шляхом автодоповнення коду. Крім того, ви можете отримати з інтернету збірку фрагментів (так звані сховища).

### Структура меню

Перегляд Вікна інструментів Показати Фрагменти тексту

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

Інструменти Створити фрагмент

  Створити фрагмент, тобто придатний до повторного використання фрагмент тексту, який можна буде потім вставити у довільну частину будь-якого документа, або невеличкий скрипт.

### Панель фрагментів

Панель фрагментів тексту &kate;
Панель фрагментів тексту &kate;.

Панель для фрагментів тексту &kate;.

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

#### Завантаження файлів сховища фрагментів

Ви можете отримати сховища фрагментів з інтернету. Просто натисніть кнопку Отримати нові фрагменти і програма покаже вікно зі списком сховищ фрагментів. Після отримання потрібного вам сховища не забудьте позначити його пункт, щоб згодом скористатися вмістом сховища.

#### Створення і редагування сховищ фрагментів

Щоб створити нове сховище фрагментів, натисніть кнопку Додати сховище. У відповідь має бути відкрито діалогове вікно, у якому програма попросить вас вказати назву файла фрагментів, умови ліцензування цього файла та його автора. Після визначення бажаних параметрів натисніть кнопку Гаразд, щоб відкрити вікно редактора фрагментів.

Редактор фрагментів
Редактор даних сховища.

Інтерфейс редактора сховища.

У редакторі даних сховища фрагментів можна визначити такі поля:

Name

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

Простір назв

  Префікс, що використовується під час доповнення коду.

Ліцензія

  Виберіть умови ліцензування даних вашого сховища фрагментів.

Автори

  Вкажіть імена авторів файла фрагментів.

Типи файлів

  Виберіть типи файлів, до яких будуть застосовуватися дані зі сховища. Типово встановлено значення *, тобто сховище застосовуватиметься до всіх файлів. Ви можете змінити тип, наприклад визначити `C++`, або вибрати значення зі списку, який відкривається натисканням кнопки пунктів. Ви можете вказати декілька типів файлів, якщо натиснете клавішу &Shift; під час їхнього додавання.

#### Створення і редагування фрагментів

Редактор фрагментів
Редактор фрагментів.

Інтерфейс редактора фрагментів.

Name

  Назву буде показано у списку фрагментів і у списку автозавершення (вона є обов'язковою).

Тип

  Фрагменти коду можуть бути визначені як текстові шаблони або скрипти. Обидва типи надають змогу використовувати функції &javascript; (докладніше див. нижче), і тому можуть бути використані для досягнення однакових результатів. Однак, як правило, текстові шаблони більше пасують, якщо ви здебільшого хочете вставляти текст, тоді як скрипти часто є простішим рішенням, якщо ви хочете змінити текст).

  Kate має бути зібрано з KTextEditor версії 6.15.0 або новішої, щоб можна було скористатися цією можливістю. У попередніх версіях можна користуватися лише текстовими шаблонами.

Скорочення

  Натискання цієї комбінації клавіш призведе до вставлення (або запуску) фрагмента до поточного документа.

Фрагмент (тип `Шаблон тексту`)

  Текст, який ваш фрагмент вставлятиме до документа.

  Фрагмент може містити придатні до редагування поля. Циклічний перехід цими полями можна здійснювати натисканням клавіші &Tab;. У тексті шаблона можна використовувати такі вирази для створення полів:

  `${назва_поля}` створює просте придатне до редагування поле. Під час редагування усі наступні вставки тієї самої назви_поля будуть дзеркальними копіями вмісту першого поля.

  У полях можуть міститися будь-які символи, окрім символу завершальної фігурної дужки (`}`).

  Щоб вставити `${текст}` без змін до фрагмента, екрануйте символ `$` зворотною похилою рискою: `\${текст}`. Після цього текст не перетвориться у поле. Щоб вставити сам символ зворотної похилої риски перед полем, екрануйте його: `\\${поле}`, `\\\\${поле}` тощо.

  `${функція(інше_поле1, інше_поле2, ...)}` — цим можна скористатися для створення поля, яке міститиме результат виконання функції &javascript; під час кожного редагування, і яке буде замінено на повернуте функцією значення. Докладнішу інформацію можна знайти на вкладці Скрипти.

  `${назва_поля=типове значення}` встановлює типове значення поля. Вмістом фрагмента типове значення може бути будь-який вираз JavaScript. Скористайтеся лапками (`${назва_поля="текст"}`) для визначення фіксованого рядка як типового значення.

  Використовуючи типове значення (`${назва_поля=типове}`), пам’ятайте, що типове значення обчислюється негайно, коли фрагмент коду вставляється в документ, і воно не оновлюється пізніше, коли поля змінюються.

  Ви можете посилатися на інші поля у типових значеннях, якщо їх визначено до типового значення, яке буде обчислено. Однак це надасть вам доступ лише до типових значень цих полів.

  Якщо не визначено нестандартного типового значення, типовим значенням буде назва поля.

  `${cursor}` позначає кінцеву позицію курсора після того, як усі інші поля будуть заповнені. Вставлення тексту у цю позицію завершить редагування. Крім того, після натискання &Esc; для завершення редагування курсор перейде у цю позицію.

Фрагмент (тип `Скрипт`)

  Код &javascript; для обробки цього фрагмента

  Якщо цей код містить оператор `return`, повернутий рядок буде вставлено у поточну позицію курсора. Ви також можете скористатися програмним інтерфейсом для скриптів &kate; для безпосереднього внесення змін до документа.

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

Бібліотека скриптів

  Допоміжні функції JavaScript, якими можна скористатися у ваших фрагментах. Ці функції є спільними для усіх фрагментів у сховищі.

  Ви можете скористатися програмним інтерфейсом роботи зі скриптами &kate; для отримання позначеного фрагмента тексту, усього тексту документа, назви файла та інших даних за допомогою відповідних методів об’єктів `document` та `view`. Щоб дізнатися більше, зверніться до документації із програмного інтерфейсу для роботи зі скриптами.

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

  Використання функцій у фрагмента `Текстовий шаблон`:

  - Функції можуть отримати доступ до актуального вмісту усіх полів через об'єкт `fields`: скористайтеся `fields.my_field` або `fields["my_field"]`. Під час використання функції як типового значення для поля доступні лише поля, визначені у попередньому тексті.

  - Поля можна передавати як аргументи функціям. Назву поля можна використовувати безпосередньо, якщо воно є дійсним ідентифікатором &javascript; і не існує змінної з такою назвою. Якщо це не так, використовуйте об'єкт `fields`: `${func(field)}`, `${func(fields.document)}`, `${func(fields["my field"])}`

  - Поля функцій (наприклад, `${func()}`) переобчислюється щоразу, коли змінюється вміст будь-якого поля. Однак це не стосується викликів функцій із типовими значеннями: вони обчислюються лише один раз, коли фрагмент коду вставляється в документ.

  - Якщо ви користуватиметеся складнішими скриптами, важливо розуміти, що спочатку програма вставляє фрагмент коду до документа, а вже потім обробляє функції. Наприклад, якщо функція отримує текст у рядку, де було вставлено фрагмент, цей текст також міститиме `${викликФункції()}`. Там, де це призводить до ускладнень, варто скористатися типом фрагмента `Скрипт`.

  - Для спрощення загортання поточного позначеного тексту у теґи скористайтеся такою інструкцією: `<strong>${view.selectedText()}</strong>`

  - Пам'ятайте, що у поле буде вставлено лише повернуте значення функції.

Description

  Необов'язковий опис призначення фрагмента. Його буде показано на панелях підказок. Опис може містити базове форматування HTML.

Приклад використання

  У наступному прикладі ми викликаємо скрипт, який вставляє позначений текст або, якщо нічого не позначено, типовий текст у теґи (тип фрагмента `Скрипт`):

      let range = view.hasSelection() ? view.selection() : new Range(view.cursorPosition(), view.cursorPosition());
      let innertext = range.isEmpty() ? "Bold" : document.text(range);
      document.removeText(range);
      document.insertText(range.start, "<strong>" + innertext + "</strong>");

### Користування фрагментами

Робота з фрагментами у &kate;
Доступ до фрагментів &kate; з панелі інструментів або спадного меню.

Вибір зі списку фрагментів.

Викликати фрагменти можна у декілька способів способи:

- Натисканням пункту фрагмента на панелі інструментів.

- За допомогою клавіатурного скорочення, якщо ви призначили таке.

- Під час написання тексту чи коду ви можете натиснути комбінацію клавіш &Ctrl; Пробіл і програма покаже зручне вікно зі списком всіх фрагментів, за допомогою якого ви зможете вибрати потрібний вам фрагмент. Натискання цієї комбінації клавіш надає доступ до функціональних можливостей, подібних до автоматичного доповнення коду.

Якщо у фрагменті містяться змінні (окрім змінної `${cursor}`) курсор буде автоматично пересунуто до першого екземпляра таких змінних, після чого програма перейде у стан очікування на введення тексту. Після введення відповідного значення натисніть клавішу &Tab;, щоб перейти до наступної змінної.

### Подяки

Розділ щодо роботи з фрагментами у &kate; було написано Джозефом Веніґером (Joseph Wenninger).

Особлива подяка учаснику Google Code-In 2011 Martin Gergov за написання більшої частини цього розділу.

Pablo
Rauzy
r .at. uzy.me

## Додаток клавіатурних макросів

### Вступ

Запис і відтворення клавіатурних макросів (тобто послідовностей дій з клавіатури).

### Основні прийоми користування

#### Розпочати записування клавіатурного макроса:

Інструменти Клавіатурні макроси Записати макрос... (&Ctrl;&Shift;K).

Додаток записуватиме усі натискання клавіш, аж доки ви не завершите записування.

#### Щоб завершити записування, скористайтеся пунктом меню:

Інструменти Клавіатурні макроси Завершити записування макроса (&Ctrl;&Shift;K).

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

#### Щоб скасувати записування, скористайтеся пунктом меню:

Інструменти Клавіатурні макроси Скасувати записування макроса (&Ctrl;&Alt;&Shift;K).

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

#### Щоб відтворити поточний макрос, скористайтеся пунктом меню:

Інструменти Клавіатурні макроси Відтворити макрос (&Ctrl;&Alt;K).

Додаток відтворити поточний макрос.

Команда `kmplay` без аргументів також відтворює поточний макрос.

### Іменовані макроси

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

Іменовані макроси зберігаються між сеансами Kate. Сховищем макросів є файл `keyboardmacros.json` у каталозі даних користувача Kate (зазвичай, цим каталогом є `~/.local/share/kate/`).

#### Щоб зберегти поточний макрос, скористайтеся пунктом меню:

Інструменти Клавіатурні макроси Зберегти поточний макрос (&Alt;&Shift;K).

Додаток попросить вас ввести назву і збереже макрос із відповідною назвою.

Команда `kmsave назва` зберігає поточний макрос із використанням назви `назва`.

#### Щоб завантажити збережений макрос як поточний, скористайтеся пунктом меню:

Інструменти Клавіатурні макроси Завантажити іменований макрос…

Додаток показуватиме список збережених макросів у підменю. Вибір пункту призведе до завантаження відповідного макроса як поточного.

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

#### Щоб відтворити збережений макрос без його завантаження, скористайтеся пунктом меню:

Інструменти Клавіатурні макроси Відтворити іменований макрос…

Додаток показуватиме список збережених макросів у підменю. Вибір пункту призведе до відтворення відповідного макроса без його завантаження.

Зауважте, що кожен збережений макрос є дією, яка є частиною поточної збірки дій, отже з макросом можна пов'язати клавіатурне скорочення за допомогою інтерфейсу пункту меню Параметри Налаштувати клавіатурні скорочення....

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

#### Щоб витерти (тобто вилучити) збережений макрос, скористайтеся пунктом меню:

Інструменти Клавіатурні макроси Витерти іменований макрос…

Додаток показуватиме список збережених макросів у підменю. Вибір пункту призведе до витирання (тобто вилучення) відповідного макроса.

Команда `kmwipe назва` витре макрос, який було збережено під назвою `назва`.

#### Підказки щодо команд:

Зауважте, що після префікса `km` усі ці команди мають різні літери, тому ви можете ефективно викликати їх за допомогою системи доповнення команд у відповідь на натискання клавіші Tab!

### Обмеження

У поточній версії клавіатурні макроси не відтворюються належним чином, якщо використано певні типи віджетів графічного інтерфейсу: наприклад, QMenu, QuickOpenLineEdit або TabSwitcherTreeView. Автор не певен щодо причини, але здогадка наступна: ці віджети працюють із подіями клавіатури нестандартно.

Ömer
Faruk
ORUÇ
&TC.Hollingsworth; &TC.Hollingsworth.mail;

## Додаток SQL

### Вступ

Структурована мова запитів (SQL) — спеціалізована мова, призначена для оновлення, вилучення та отримання даних з баз даних.

За допомогою додатка SQL &kate; ви зможете виконувати такі дії:

- створювати бази даних;

- встановлювати з’єднання з уже створеною базою даних;

- вставляти дані у базу даних і вилучати дані з бази даних;

- надсилати запити до бази даних;

- переглядати результати у форматі таблиці.

### Встановлення з’єднання з базою даних

Виберіть пункт Додати з’єднання з меню SQL або відповідний пункт на панелі інструментів, а потім виберіть драйвер бази даних &Qt;, який слід використовувати (ви можете вибрати QSQLITE, QMYSQL3, QMYSQL, QODBC3, QODBC, QPSQL7 або QPSQL). Якщо потрібного вам драйвера немає у списку, вам слід встановити його. Після визначення драйвера натисніть кнопку Далі.

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

Нарешті, надайте вашому з’єднанню назву і натисніть кнопку Завершити.

### Виконання запитів

#### INSERT/DELETE/UPDATE

За допомогою додатка SQL ви можете вставляти, вилучати і оновлювати дані так само, як це можна робити із командного рядка чи програми-скрипту. Просто введіть запит на панелі інструментів і натисніть кнопку Виконати запит або скористайтеся пунктом меню SQL Виконати запит (&Ctrl;E).

##### Декілька прикладів запитів

`INSERT`

      INSERT INTO назва_таблиці ("запис1", "запис2", "запис3", "запис4", "запис5")
      VALUES ("значення1", "значення2", "значення3", "значення4", "значення5" )

`DELETE`

      DELETE FROM назва_таблиці WHERE name = "текст"

`UPDATE`

      UPDATE назва_таблиці SET "запис1" = "текст", "запис2" = "текст", "запис3" = "текст", "запис4" = "текст", "запис5" = "текст"

#### SELECT

Після виконання запиту `SELECT` ви зможете переглянути результати у таблиці, яку буде показано на панелі Вивід даних SQL у нижній частині вікна &kate; або у текстовому форматі на панелі Текстовий вивід SQL. Якщо під час виконання запиту станеться помилка, ви зможете переглянути відповідне повідомлення на панелі текстового виводу.

##### Приклад запиту `SELECT`

    SELECT * FROM назва_таблиці

На панелі інструментів Вивід даних SQL розташовано декілька кнопок:

Ширина стовпчиків за вмістом

  Змінити ширину стовпчиків відповідно до вмісту цих стовпчиків.

Висота рядків за вмістом

  Змінити висоту рядків відповідно до вмісту цих рядків.

Копіювати

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

Експортувати

  Експортувати весь вміст таблиці до файла, буфера обміну даними або поточного документа у форматі тексту, розділеного комами (CSV).

Спорожнити

  Вилучає всі дані з перегляду таблиці.

Змінити кольори, які буде використано під час показу таблиці, можна за допомогою розділу SQL вікна, яке відкривається за допомогою пункту меню Параметри Налаштувати &kate;... .

### Навігація

Навігацію вашою базою даних можна здійснювати за допомогою панелі інструментів Схеми бази даних, розташованої у вікні ліворуч. Перелік показаних на цій панелі даних залежатиме від використаного вами драйвера бази даних.

Щоб оновити вміст списку, наведіть вказівник миші на вільне місце панелі інструментів і клацніть правою кнопкою миші, потім виберіть у контекстному меню пункт Оновити. Щоб створити запит щодо якогось з записів у списку, наведіть вказівник миші на цей запис, клацніть правою кнопкою миші і виберіть у контекстному меню пункт Створити, а потім виберіть тип запиту (SELECT, UPDATE, INSERT або DELETE) з підменю.

### Структура меню

SQL Додати з’єднання...

  Додає нове з’єднання за допомогою одного з драйверів баз даних.

SQL Вилучити з’єднання

  Вилучає позначене з’єднання.

SQL Змінити параметри з’єднання...

  Змінити параметри поточного з’єднання.

З'єднання

  Всі створені вами з’єднання з базами даних буде показано у списку між пунктами меню Змінити параметри з’єднання та Виконати запит. Щоб надіслати запити до відповідної бази даних або внести зміни до цієї бази даних, просто виберіть один з цих пунктів.

&Ctrl;E SQL Виконати запит

  Виконати ваш запит.

### Подяки

Додаток SQL було створено Marco Mentasti.

Особлива подяка учаснику Google Code-In 2011 Ömer Faruk ORUÇ за написання більшої частини цього розділу.

## Додаток перегляду символів

### Користування додатком закриття за критерієм

Цей додаток надає змогу розробникам переглядати символи (функції, макроси і структури) під час редагування початкового коду.

Клацанням на пунктах обробленої інформації ви можете без проблем здійснювати навігацію кодом.

У поточній версії передбачено підтримку таких мов:

C/C++, Java, Perl, PHP, Python, Ruby, XSLT, Tcl/Tk, Fortran

Список можливостей:

- Режим списку/дерева
- Вмикання або вимикання упорядковування
- Приховування або показ параметрів функцій
- Розгортання або згортання ієрархічних списків
- Автоматичне оновлення у відповідь на зміну у документах
- Обробку коду засновано на засобах підсвічування синтаксичних конструкцій з &kde-frameworks;.

### Структура меню

&Ctrl;\ Перегляд Вікна інструментів Показати список символів

  Увімкнути або вимкнути показ панелі списку символів &kate;. На цій панелі буде показано список функцій, макросів і структур у початковому коді активного документа.

### Налаштування

Переглядач символів

Вибір параметрів типового обробника

## Додаток перегляду інструмента термінала

Вбудований емулятор термінала є копією термінала з програми &konsole;, його додано для зручності. Доступ до емулятора можна отримати за допомогою пункту меню Перегляд Вікна інструментів Показати панель термінала, це вікно завжди отримуватиме фокус після увімкнення його показу. Крім того, якщо буде позначено пункт Автоматично синхронізувати термінал з поточним документом, за можливості, поточний каталог у терміналі буде за можливості змінено на каталог поточного документа після показу або внесення змін у поточний документ.

Типовим розташуванням емулятора термінала у вікні &kate;, є нижня частина вікна, під областю редагування.

Ви можете налаштувати &konsole; за допомогою контекстного меню, яке можна викликати клацанням правою кнопкою миші. Докладніші відомості можна знайти у підручнику з &konsole;.

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

### Структура меню

Перегляд Вікна інструментів Показати панель термінала

  Вмикає або вимикає показ вбудованого емулятора термінала.

  Після першого активування буде створено термінал.

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

Інструменти Спрямувати через канал у консоль

  Передає поточний виділений текст у рядок введення вбудованого емулятора термінала. Символ нового рядка у кінець рядка додано не буде.

Інструменти Синхронізувати термінал з поточним документом

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

  Крім того, ви можете налаштувати &kate; так, щоб термінал було завжди синхронізовано з поточним документом. Докладніше про це у розділі .

Інструменти Запустити поточний документ

  Запустити поточний документ у &konsole;. Можна запускати лише локальні документи. &kate; покаже попередження до запуску документа, оскільки ця дія може бути серйозною загрозою безпеки.

Інструменти Фокус на панель термінала/Зняти фокус з панелі термінала

  Перемикає фокус з поточного документа на термінал, і навпаки.

### Налаштування

Налаштувати додаток панелі термінала можна за допомогою сторінки Термінал діалогового вікна налаштовування програми.

Можна вибрати один з таких варіантів:

Автоматично синхронізувати термінал з поточним документом, за можливості

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

Змінити значення змінної середовища EDITOR на «kate -b»

  За допомогою цього пункту можна визначити змінну середовища `EDITOR` так, щоб програми, що працюють у вбудованому терміналі і автоматично відкривають файл у редакторі, відкривали його у &kate; замість типового текстового редактора командної оболонки. Ви не зможете продовжувати користування таким терміналом, аж доки редагований файл не буде закрито у &kate; з надсиланням програмі, якій потрібно було редагування, повідомлення про завершення редагування файла.

Приховувати &konsole; у відповідь на натискання «Esc»

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

## Додаток для фільтрування тексту

### Користування додатком фільтрування тексту

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

#### Приклади:

- `less /etc/fstab` — вставити вміст цього файла або скопіювати вміст до буфера обміну даними

- `wc` — порахувати кількість рядків, слів і символів у позначеному фрагменті тексту і вставити ці дані до документа або скопіювати їх до буфера обміну даними

- `sort` — упорядкувати рядки у позначеному фрагменті тексту і вставити результат до документа або скопіювати його до буфера обміну даними

### Структура меню

&Ctrl;\ Інструменти Фільтрувати текст

  Відкриває діалогове вікно фільтрування тексту:

  Діалогове вікно фільтрування тексту

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

  Копіювати результат замість його вставлення

    Копіювати результат до буфера обміну даними без внесення змін до документа.

  Об’єднати STDOUT і STDERR

    Якщо позначити цей пункт, виведення до каналів STDOUT та STDERR буде об’єднано і програма не повідомлятиме про помилки. Якщо пункт не буде позначено, програма показуватиме дані, виведені до STDERR, за допомогою панелі пасивного повідомлення.

&Daniel.Naber; &Daniel.Naber.mail;

## Перевірка &XML;

За допомогою цього додатка можна перевірити належний формат і коректність файлів &XML;.

За допомогою цього додатка можна перевірити коректність поточного файла. Список попереджень і помилок буде показано у нижній частині головного вікна &kate;. Ви можете натиснути повідомлення про помилку, щоб перевести фокус програми на відповідне місце у тексті документа. Якщо у тексті документа є теґ DOCTYPE для перевірки документа на коректність буде використано саме вказаний цим теґом DTD. Пошук файла DTD буде проводитися відносно розташування файла поточного документа, тобто, якщо тим документа вказано як DTD/xhtml1-transitional.dtd, а файл документа знаходиться за адресою `/home/peter/test.xml`, програма очікуватиме, що файл DTD знаходиться за адресою `/home/peter/DTD/xhtml1-transitional.dtd`. Додатком підтримується і зовнішні DTD, вказані за допомогою http-адреси.

Якщо у файлі не встановлено параметр doctype, файл буде перевірено на належне форматування.

Щоб дізнатися більше про перевірку &XML;, відвідайте офіційні сторінки W3C, присвячені &XML;.

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

Щоб завантажити цей додаток, відкрийте діалогове вікно налаштування &kate; за допомогою пункту меню Параметри Налаштувати &kate;.... Після цього позначте пункт Перевірка XML на сторінці Програма/Додатки і закрийте діалогове вікно.

### Структура меню

XML Перевірити XML

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

### Подяки

Авторські права на додаток до &kate; Перевірка XML належать &Daniel.Naber; &Daniel.Naber.mail;, ©2002

Авторські права на документацію до додатка належать &Daniel.Naber;, ©2002

&Daniel.Naber; &Daniel.Naber.mail;

## Доповнення &XML;

Цей додаток надаватиме вам підказки щодо того, які з елементів є дозволеними на певній позиції у файлі &XML;, відповідно до обмежень DTD цього файла. Програма покаже вам список можливих елементі, атрибутів, значень атрибутів або об’єктів, залежно від позиції курсора (наприклад, якщо символом, що знаходиться ліворуч від курсора, є &, буде показано список всіх об’єктів). Додаток також може завершувати найближчий незакритий теґ, розташований ліворуч.

Для роботи додатка потрібен файл DTD у форматі &XML;, створений програмою на Perl `dtdparse`. DTD у такому форматі називається мета-DTD. Деякі з мета-DTD встановлюються разом з програмою. Їх можна знайти у підкаталозі `katexmltools/` каталогу ``qtpaths` `--paths GenericDataLocation`` , який також є типовим під час використання функції додатка Призначити мета-DTD.... Щоб мати змогу створювати ваші власні мета-DTD, вам слід отримати програму `dtdparse` за адресою http://dtdparse.sourceforge.net.

### Як користуватися

Щоб завантажити цей додаток, відкрийте діалогове вікно налаштування &kate; за допомогою пункту меню Параметри Налаштувати &kate;.... Після цього позначте пункт Перевірка XML на сторінці Програма/Додатки і закрийте діалогове вікно. Після цього скористайтеся пунктом меню &XML;Призначити мета-DTD.... Якщо у документі не міститься означення DOCTYPE або тип документа є невідомим, вам доведеться вказати файл мета-DTD у файловій системі. Якщо ж усе гаразд, буде автоматично завантажено мета-DTD, який відповідає DOCTYPE поточного документа.

Тепер ви зможете скористатися додатком, після набору таких символів у тексті:

< (клавіша знак «менше»)

  Натискання цієї клавіші відкриє список можливих елементів, якщо курсор ще не знаходиться усередині теґу. Зауважте, що у поточній версії ви ще не можете скористатися цією можливістю для вставки елемента найвищого рівня (наприклад <html>).

</ (клавіша знак «менше» + клавіша похилої риски)

  Введення цих символів призведе до виводу панелі з пропозицією завершення поточного елемента (найближчого елемента ліворуч від курсора). Натисніть &Enter;, щоб прийняти пропозицію. На відміну від пункту меню Завершити елемент, комбінація символів працюватиме лише у разі призначення DTD.

" (клавіша лапок)

  Після введення лапок буде відкрито список можливих значень атрибута (якщо такий існує), якщо курсор знаходиться всередині теґу.

(клавіша пробілу)

  Після введення цього символу додаток відкриє список можливих атрибутів для поточного елемента, якщо курсор знаходиться всередині теґу.

& (клавіша амперсанда)

  За допомогою цієї клавіші можна викликати список іменованих об’єктів.

### Можливості і обмеження

Ви можете перевірити всі функціональні можливості і обмеження завантаженням файла `katexmltools/testcases.xml` у каталозі ``qtpaths` `--paths GenericDataLocation`` до &kate; з наступним виконанням настанов з цього файла.

### Структура меню

&Ctrl;&Enter; XML Вставити елемент...

  Відкриє діалогове вікно, за допомогою якого ви зможете вставити елемент &XML;. Символи < та >, а також завершальний теґ буде вставлено автоматично. Якщо ви під час вибору цього пункту меню було позначено фрагмент тексту, позначений текст буде вставлено між початковим та завершальним теґами. За допомогою цього діалогового вікна також можна буде завершувати запис всіх елементів, які вставляються у поточній позиції курсора, якщо ви призначили загальний DTD за допомогою пункту меню Призначити мета-DTD....

&Ctrl;< XML Завершити елемент

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

XML Призначити мета-DTD...

  За допомогою цього пункту меню ви зможете повідомити додатку, який з файлів мета-DTD слід використовувати для поточного документа. Зауважте, що додаток не зберігатиме даних вашого вибору. Вам доведеться повторити процедуру визначення після наступного запуску &kate;.

### Подяки

Авторські права на додаток до &kate; Доповнення &XML; належать &Daniel.Naber; &Daniel.Naber.mail;, 2001, 2002.

Версія для &kde; SC 4, © Tomáš Trnka, 2010

Авторські права на документацію до додатка належать &Daniel.Naber;, 2001, 2002.

## Додаток навігації результатами збирання

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

### Користування

Спочатку вам треба відкрити вкладку навігатора компілятора. Натисніть комбінацію клавіш &Ctrl;&Alt;I, щоб відкрити панель команд і пошукайте пункт «Відкрити поточний файл у навігаторі компілятора», позначте його і натисніть клавішу &Enter;. Ви можете додати відповідну кнопку на панель інструментів або пов'язати з цією дією клавіатурне скорочення, щоб спрости доступ до інструмента.

Потім вам потрібно налаштувати локальний екземпляр навігатора компілятора або скористатися загальнодоступним екземпляром https://godbolt.org/. Див. https://github.com/compiler-explorer/compiler-explorer. Щойно у вас з'явиться екземпляр, клацніть на спадному списку Варіант на вкладці навігатора компілятора, яку ви раніше відкрили, і виберіть Змінити адресу..., а потім введіть адресу сервера навігатора компілятора.

Далі вам знадобиться compile_commands.json, якщо вам потрібно переглянути codegen для файла у вашому проєкті. В іншому випадку ви можете пропустити цю частину. Потрібного результату можна легко досягти, якщо ви використовуєте сучасну систему збирання, як-от CMake або Meson. Для CMake достатньо передати `-DCMAKE_EXPORT_COMPILE_COMMANDS=ON` під час виклику cmake. `compile_commands.json` слід розмістити в корені вашого проєкту. Закрийте та знову відкрийте вкладку навігатора компілятора у Kate. Після повторного відкриття вкладки має бути показано команди компіляції, необхідні для збирання файла

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

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

## Додаток форматування

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

### Користування

Надає змогу користувачеві форматувати код у два способи:

- Вручну за допомогою пункту «Форматувати документ»

- Автоматично при збереженні

Ви можете пошукати відповідний пункт на панелі команд і пов'язати з ним клавіатурне скорочення для спрощення доступу до інструмента

### Підтримувані мови і засоби форматування

Поточний список підтримуваних мов і засобів форматування:

- C/C++/ObjectiveC/ObjectiveC++/Protobuf/GLSL/Java – `clang-format`

- Javascript/Typescript/JSX/TSX - `prettier`

- JSON

  - `prettier`

  - `clang-format`

  - `jq`

- Dart - `dartfmt`

- Rust - `rustfmt`

- Go - `gofmt`

- XML - `xmllint`

- Zig - `zigfmt`

- CMake - `cmake-format`

- D - `dfmt`

- Fish Shell - `fish_indent`

- Bash – `shfmt`

- Nix – `nixfmt`

- QML – `qmlformat`

- HTML – `prettier`

- Swift – `swiftformat`

- Erlang – `erlfmt`

- Godot Script – `gdformat`

- Python

  - `autopep8`

  - `ruff`

- YAML

  - `yamlfmt`

  - `prettier`

### Налаштовування

Додаток можна налаштувати у два способи:

- На загальному рівні за допомогою вікна налаштувань програми

- На рівні проєкту за допомогою файла `.kateproject`

При читанні налаштувань додаток спочатку намагається прочитати дані з файла `.kateproject`, а потім виконує читання загальних налаштувань. Приклад:

    {
        "formatOnSave": true,
        "formatterForJson": "jq",
        "cmake-format": {
            "formatOnSave": false
        },
        "autopep8": {
            "formatOnSave": false
        }
    }

Код вище:

- вмикає «форматування при збереженні» на загальному рівні

- визначає «jq», як засіб форматування для JSON

- вимикає «форматування при збереженні» для cmake-format і autopep8

Щоб налаштувати форматування проєкту, спочатку створіть файл `.kateproject`, а потім додайте до нього об'єкт `"formatting"`. В об'єкті `"formatting"` ви можете вказати параметри, як це показано у попередньому прикладі. Приклад:

Для того, щоб додаток працював, вам треба увімкнути додаток проєктів

    {
        "name": "My Cool Project",
        "files": [
            {
                "git": 1
            }
        ],
        "formatting": {
            "formatterForJson": "clang-format",
            "autopep8": {
                "formatOnSave": false
            }
        }
    }

### Тимчасове вимикання форматування при збереженні

При роботі часто виникатиме потреба у тимчасовому вимиканні форматування з певної причини. Зробити це можна за допомогою меню — Інструменти Форматувати при збереженні. Також відповідну дію можна виконати за допомогою Панелі команд.