Можливості компонента редактора KatePart можна дуже просто розширити за допомогою написання скриптів. Для написання скриптів слід використовувати мову ECMAScript (широко відому як JavaScript). У KatePart передбачено підтримку двох типів скриптів: скрипти встановлення відступів та скрипти командного рядка. Функціональні можливості, подібні до скриптів командного рядка, також є частиною додатка фрагментів.
Скрипти встановлення відступів, які також будемо називати інструментами відступів, автоматично встановлюють відступи у тексті під час його введення. Наприклад, після натискання клавіші Enter програма зазвичай збільшує відступ у наступному рядку.
У наступних розділах наведено покрокові настанови щодо створення основи простого інструменту відступів. На першому кроці вам слід створити файл *.js з назвою, наприклад, javascript.js у локальній домашній теці $. Тут змінна середовища XDG_DATA_HOME/katepart5/script/indentationXDG_DATA_HOME типово має значення ~/.local або ~/.local/share.
У Windows® ці файли зберігаються у %USERPROFILE%\AppData\Local\katepart5\script\indentation. %USERPROFILE% зазвичай є скороченням для C:\\Users\\.користувач
Заголовок файла javascript.js подається у межах закоментованого блоку і має таку форму
var katescript = {
"name": "JavaScript",
"author": "Example Name <example.name@some.address.org>",
"license": "BSD License",
"revision": 1,
"kate-version": "5.1",
"required-syntax-style": "javascript",
"indent-languages": ["javascript"],
"priority": 0,
}; // kate-script-header, must be at the start of the file without comments
Нижче ми зупинимося докладніше на кожному з записів заголовка.
name[обов’язковий запис]: це назва інструменту відступів, яку буде показано у меню → і діалогових вікнах налаштування.author[необов’язковий запис]: ім’я автора та дані щодо способу встановлення з ним зв’язку.license[необов’язковий запис]: скорочена форма умов ліцензування, зокрема BSD або LGPLv3.revision[обов’язковий запис]: версія скрипту. Внесення змін до коду скрипту має призводити до збільшення його версії.kate-version[обов’язковий запис]: мінімальне значення версії KatePart, у якій працюватиме скрипт.required-syntax-style[необов’язковий запис]: потрібний вам стиль синтаксису, який відповідає вказаному значеннямstyleу файлах визначення підсвічування синтаксичних конструкцій. Цей запис є важливим для інструментів відступів, які працюють на основі певних даних щодо підсвічування у документі. Якщо буде вказано стиль синтаксичних конструкцій, інструментом відступів можна буде скористатися, лише якщо буде задіяно відповідний інструмент підсвічування тексту. Таким чином можна запобігти «невизначеній поведінці», спричиненій використанням інструменту відступів без потрібної для його роботи схеми підсвічування. Наприклад, у такий спосіб налаштовано інструмент відступів Ruby у файлахruby.jsіruby.xml.indent-languages[необов’язковий запис]: масив JSON стилів синтаксичних конструкцій, які може обробляти інструмент відступів, наприклад["c++", "java".priority[необов’язковий запис]: якщо якомусь файлу з визначеним підсвічуванням синтаксичних конструкцій відповідає декілька інструментів відступів, за допомогою цього запису буде встановлено пріоритет застосування інструменту відступів.
Тепер, озброєні знаннями про формат заголовка, ви можете перейти до вивчення того, як же працює сам скрипт встановлення відступів. Основа подібного скрипту виглядає так:
// вимагаємо бібліотек JS katepart, наприклад range.js, якщо використовується Range
require ("range.js");
triggerCharacters = "{}/:;";
function indent(line, indentWidth, ch)
{
//скрипт буде викликано під час обробки символу нового рядка (ch == '\n') і всіх символів, вказаних у
// загальній змінній triggerCharacters. Під час використання пункту меню →
// змінна ch матиме порожнє значення, тобто ch == ''.
//
// див. також розділ «Інтерфейс (API) роботи зі скриптами»
return -2;
}
У функції indent() передбачено три параметри:
line: рядок, у якому слід встановити відступindentWidth: ширина відступу у пробілахch: символ нового рядка (ch == '\n'), символ перемикання, вказаний за допомогоюtriggerCharactersабо порожній рядок, якщо користувачем було обрано пункт меню → .
Значення, повернуте функцією indent(), визначатиме спосіб встановлення відступу у рядку. Якщо буде повернуто ціле число, його обробку буде виконано за такими варіантами:
повернуто значення
-2: нічого не робитиповернуто значення
-1: зберегти відступ (його буде визначено на основі попереднього непорожнього рядка)повернуто значення
0: числа >= 0 визначають глибину відступу у пробілах
Крім того, може бути повернуто масив з двох елементів:
повернуто [ відступ, вирівнювання ];
Першим елементом такого масиву є глибина відступу, подібна на значення, про яке ми говорили раніше. Інший же елемент є абсолютним значенням, що відповідає стовпчику «вирівнювання». Якщо це значення буде більшим за значення відступу, до відступу після додавання відступу, визначеного першим параметром, буде додано різницю між цими значенням. Якщо ж значення другого параметра буде меншим за відступ, його буде проігноровано. Одночасне використання для встановлення відступів пробілів і символів табуляції часто називають «мішаним режимом».
Розглянемо такий приклад: для встановлення відступів використовується символ табуляції, а ширину відступу визначено як 4 пробіли. У нашому прикладі, <таб> — це символ табуляції, а «.» — пробіл:
1: <таб><таб>foobar("привіт",
2: <таб><таб>......."світе");
Під час встановлення відступу для рядка 2 функція indent() повертає значення [8, 15]. У результаті буде додано два символи табуляції для встановлення відступу до стовпчика 8, а потім буде додано 7 пробілів для вирівнювання за другим параметром, більшим за перший, отже рядок залишатиметься вирівняним під час перегляду файла за будь-якої встановленої ширити відступу табуляції.
У типовому пакунку KDE для KatePart передбачено декілька інструментів відступів. Код цих інструментів мовою JavaScript зберігається у каталозі $.XDG_DATA_DIRS/katepart5/script/indentation
У Windows® ці файли зберігаються у %USERPROFILE%\AppData\Local\katepart5\script\indentation. %USERPROFILE% зазвичай є скороченням для C:\\Users\\. користувач
Під час розробки скрипту встановлення відступів корисним буває перезавантаження скриптів для перевірки коректності поведінки під час встановлення відступів. Замість перезапуску програми достатньо просто перейти до командного рядка і виконати команду reload-scripts.
Якщо вами було створено якийсь корисний скрипт, вам варто зробити його вашим власним внеском до проєкту розробки KatePart на сторінці нашого проєкту на GitLab.
Примітка
Функціональні можливості, подібні до скриптів командного рядка, також є частиною додатка фрагментів. Скрипти додатка можуть бути початковою позицією для розробки, особливо невеликих нетипових скриптів.
Оскільки всі користувачі мають різні потреби, у KatePart передбачено підтримку невеличких допоміжних інструментів для пришвидшення роботи з фрагментами тексту за допомогою вбудованого командного рядка. Наприклад, команду sort (впорядкувати) реалізовано саме за допомогою такого інструменту або скрипту. У цьому розділі ви знайдете пояснення щодо способу створення файлів *.js, які допоможуть вам розширити можливості KatePart додаванням допоміжних скриптів.
Скрипти командного рядка зберігаються у одній теці зі скриптами встановлення відступів. Отже на першому кроці вам слід створити файл *.js з назвою myutils.js у локальній домашній теці $. Тут змінна середовища XDG_DATA_HOME/katepart5/script/commandsXDG_DATA_HOME типово має значення ~/.local або ~/.local/share.
У Windows® ці файли зберігаються у %USERPROFILE%\AppData\Local\katepart5\script\commands. %USERPROFILE% зазвичай є скороченням для C:\\Users\\. користувач
Заголовок кожного скрипту командної оболонки має бути вбудовано до JSON на початку скрипту так:
var katescript = {
"author": "Example Name <example.name@some.address.org>",
"license": "LGPLv2+",
"revision": 1,
"kate-version": "5.1",
"functions": ["sort", "moveLinesDown"],
"actions": [
{ "function": "sort",
"name": "Sort Selected Text",
"category": "Editing",
"interactive": "false"
},
{ "function": "moveLinesDown",
"name": "Move Lines Down",
"category": "Editing",
"shortcut": "Ctrl+Shift+Down",
"interactive": "false"
}
]
}; // kate-script-header, must be at the start of the file without comments
Тепер про кожен із записів докладніше:
author[необов’язковий запис]: ім’я автора та дані щодо способу встановлення з ним зв’язку.license[необов’язковий запис]: скорочена форма умов ліцензування, зокрема BSD або LGPLv2.revision[обов’язковий запис]: версія скрипту. Внесення змін до коду скрипту має призводити до збільшення його версії.kate-version[обов’язковий запис]: мінімальне значення версії KatePart, у якій працюватиме скрипт.functions[обов’язковий запис]: масив JSON команд скрипту.actions[необов’язковий запис]: масив JSON об’єктів JSON, який визначає пункти дій, які буде показано у меню програми. Докладніший опис наведено у розділі щодо призначення клавіатурних скорочень.
Оскільки значення functions є масивом JSON, окремий скрипт може містити довільну кількість команд для командного рядка. Доступ до кожної із функцій можна оримати за допомогою вбудованого командного рядка KatePart.
Всі оголошені у заголовку функції має бути реалізовано у тілі скрипту. Наприклад, у файлі скрипту з наведеного вище прикладу слід реалізувати дві функції, sort і moveLinesDown. Всі функції має бути записано відповідно до таких синтаксичних правил:
// вимагаємо бібліотек JS katepart, наприклад range.js, якщо використовується Range
require ("range.js");
function <назва>(параметр1, параметр2, ...)
{
// ...реалізація, див. також: Інтерфейс (API) роботи зі скриптами
}
Параметри у командному рядку передаються функції як параметр1, параметр2 тощо. Щоб надати користувачам можливість ознайомлюватися з документацією щодо команди, просто реалізуйте функцію 'help' у такий спосіб:
function help(cmd)
{
if (cmd == "sort") {
return i18n("Sort the selected text.");
} else if (cmd == "...") {
// ...
}
}
Після цього виконання команди help sort у командному рядку призведе до виклику відповідної функції довідки (help) з параметром cmd встановленим у назву вказаної команди, тобто, у нашому прикладі, cmd == "sort". У відповідь на команду KatePart покаже користувачеві визначений вами текст довідки.
Під час розробки скрипту командного рядка корисним буває перезавантаження скриптів для перевірки коректності поведінки під час встановлення відступів. Замість перезапуску програми достатньо просто перейти до командного рядка і виконати команду reload-scripts.
Для створення скриптів, доступ до яких можна буде отримувати з меню програми та за допомогою клавіатурних скорочень, скрипт повинен мати надавати відповідний заголовок. У наведеному вище прикладі, обидві функції sort та moveLinesDown показують відповідні пункти меню через таку частину заголовка скрипту:
var katescript = {
...
"actions": [
{ "function": "sort",
"name": "Sort Selected Text",
"icon": "",
"category": "Editing",
"interactive": "false"
},
{ "function": "moveLinesDown",
"name": "Move Lines Down",
"icon": "",
"category": "Editing",
"shortcut": "Ctrl+Shift+Down",
"interactive": "false"
}
]
};
Поля для однієї дії є такими:
function[обов’язкове поле]: пункт функції, який має бути показано у меню → .name[необов’язковий запис]: текст пункту, який буде показано у меню скриптів.icon[необов’язковий запис]: піктограма, яку буде показано поряд з текстом пункту меню. Можна використовувати назву будь-якої з піктограм KDE.category[необов’язковий запис]: якщо буде вказано категорію, пункт скрипту буде додано у підменю.shortcut[необов’язковий запис]: клавіатурне скорочення, вказане за допомогою цього значення буде типовим. Приклад:Ctrl+Alt+t. Докладніше про можливі скорочення можна дізнатися з документації до Qt™.interactive[необов’язковий]: якщо для роботи скрипту потрібні дані, введені користувачем, встановіть значенняtrue.
Якщо вами було створено якийсь корисний скрипт, вам варто зробити його вашим власним внеском до проєкту розробки KatePart на сторінці нашого проєкту на GitLab.
Програмним інтерфейсом роботи зі скриптами, основи якого викладено тут, можна користуватися у будь-яких скриптах, зокрема скриптах роботи з відступами та командному рядку програми. Класи Cursor і Range визначаються бібліотечними файлами у $. Якщо вам потрібно ними скористатися у певному скрипті для використання якихось із функцій XDG_DATA_DIRS/katepart5/librariesDocument або View, будь ласка, включіть до скрипту потрібну вам бібліотеку такою командою:
// вимагаємо бібліотек JS katepart, наприклад range.js, якщо використовується Range
require ("range.js");
Щоб розширити стандартний програмний інтерфейс (API) для роботи зі скриптами власними функціями і прототипами просто створіть файл у локальній теці файлів налаштування KDE, $, і включіть його до вашого скрипту за допомогою такого коду: XDG_DATA_HOME/katepart5/libraries
require ("vashscript.js");
У Windows® ці файли зберігаються у %USERPROFILE%\AppData\Local\katepart5\libraries. %USERPROFILE% зазвичай є скороченням для C:\\Users\\.користувач
Рекомендованим способом розширення можливостей прототипів, зокрема Cursor або Range, не є внесення змін до загальних файлів *.js. Для цього вам краще внести зміи до прототипу Cursor у JavaScript після команди включення cursor.js до вашого скрипту за допомогою require.
Оскільки KatePart є текстовим редактором, весь програмний інтерфейс (API) за можливості засновано на курсорах та діапазонах тексту. Об’єкт Cursor (курсор) є простим кортежем (line, column) (рядок, стовпчик), що визначає позицію у тексті документа. Об’єкт Range (діапазон) це фрагмент тексту від початкової позиції курсора до кінцевої позиції курсора. Докладніше про програмний інтерфейс (API) ми поговоримо у наступних розділах.
Cursor();
Конструктор. Повертає об’єкт Cursor (курсор) у позиції
(0, 0).Приклад:
var cursor = new Cursor();Cursor(
int,рядокint);стовпчикКонструктор. Повертає об’єкт Cursor (курсор) у позиції (рядок, стовпчик).
Приклад:
var cursor = new Cursor(3, 42);Cursor(Cursor);іншийКонструктор копіювання. Повертає копію курсора
інший.Приклад:
var copy = new Cursor(other);Cursor Cursor.clone();
Повертає клон курсора.
Приклад:
var clone = cursor.clone();Cursor.setPosition(
int,рядокint);позиціяВстановлює курсор у місце вказане параметрами
рядокіпозиція.Актуальна версія: KDE 4.11
bool Cursor.isValid();
Перевіряє, чи є курсор коректним. Курсор вважається некоректним, якщо значення його позицій у рядку і/або стовпчику дорівнюють
-1.Приклад:
var valid = cursor.isValid();Cursor Cursor.invalid();
Повертає новий некоректний курсор, розташований у позиції
(-1, -1).Приклад:
var invalidCursor = cursor.invalid();int Cursor.compareTo(Cursor);іншийПорівнює поточний курсор з курсором
інший. Повертає-1, якщо поточний курсор розташовано перед курсоромінший,0, якщо курсори у однакових позиціях і+1, якщо поточний курсор розташовано після курсораінший.
bool Cursor.equals(Cursor);іншийПовертає
true, якщо цей курсор і курсоріншийє однаковими. Якщо це не так, повертаєfalse.String Cursor.toString();
Повертає об’єкт курсора як рядок у формі «
Cursor(line, column)».
Range();
Конструктор. Виклик
new Range()повертає Range (діапазон) у (0, 0) - (0, 0).Range(
Cursor,початокCursor);кінецьКонструктор. Виклик функції
new Range(повертає Range (діапазон)(початок,кінець)початок,кінець).Range(
int,початковийРядокint,початковийСтовпчикint,кінцевийРядокint);кінцевийСтовпчикКонструктор. Виклик функції
new Range(повертає Range (діапазон) від позиції (початковийРядок,початковийСтовпчик,кінцевийРядок,кінцевийСтовпчик)початковийРядок,початковийСтовпчик) до позиції (кінцевийРядок,кінцевийСтовпчик).Range(Range);іншийКонструктор копіювання. Повертає копію Range
інший.Range Range.clone();
Повертає клон діапазону.
Приклад:
var clone = range.clone();bool Range.isEmpty();
Повертає
true, якщо початкова і кінцева позиції курсора є рівними.Приклад:
var empty = range.isEmpty();Актуальна версія: KDE 4.11
bool Range.isValid();
Повертає
true, якщо початкова і кінцева позиції курсора є коректними. Якщо це не так, повертаєfalse.Приклад:
var valid = range.isValid();Range Range.invalid();
Повертає Range (діапазон) від (-1, -1) до (-1, -1).
bool Range.contains(Cursor);курсорПовертає
true, якщо позиція курсора міститься у діапазоні, у іншому випадку повертаєfalse.bool Range.contains(Range);іншийПовертає
true, якщо поточний діапазон містить діапазонінший. Якщо це не так, повертаєfalse.bool Range.containsColumn(int);стовпчикПовертає
true, якщостовпчикналежить напіввідкритому інтервалу[start.column, end.column). Якщо це не так, повертаєfalse.bool Range.containsLine(int);рядокПовертає
true, якщорядокналежить до напіввідкритого інтервалу[start.line, end.line). Якщо це не так, повертаєfalse.bool Range.overlaps(Range);іншийПовертає
true, якщо поточний діапазон і діапазоніншиймають ненульовий перетин. Якщо це не так, повертаєfalse.bool Range.overlapsLine(int);рядокПовертає
true, якщорядокналежить до інтервалу[start.line, end.line]. Якщо це не так, повертаєfalse.bool Range.overlapsColumn(int);стовпчикПовертає
true, якщостовпчикналежить інтервалу[start.column, end.column]. Якщо це не так, повертаєfalse.bool Range.onSingleLine();
Повертає
true, якщо діапазон починається і завершується на тому самому рядку, тобто якщоRange.start.line == Range.end.line.Актуальна версія: KDE 4.9
bool Range.equals(Range);іншийПовертає
true, якщо поточний діапазон і діапазоніншийтотожні. Якщо це не так, повертаєfalse.String Range.toString();
Повертає діапазон у форматі «
Range(Cursor(line, column), Cursor(line, column))».
У цьому розділі наведено всі загальні функції.
String read(String);назва файлаВиконає пошук файла з назвою
назва файлау каталозіkatepart5/script/filesі поверне його вміст як рядок.
void require(String);назва файлаВиконає пошук файла з назвою
назва файлау каталозіkatepart5/script/librariesі обробить його код. Уrequireпередбачено вбудований захист від повторного включення одного і того самого файла.Актуальна версія: KDE 4.10
void debug(String);текстВиводить
текстдоstdoutу консоль, з якої запущено програму.
Повноцінна локалізація стане можливою лише за використання декількох функцій, призначених для перекладу рядків у скриптах, а саме i18n, i18nc, i18np і i18ncp. Робота цих функцій подібна до роботи функцій перекладу рядків у KDE.
За допомогою функцій перекладу і системи перекладу KDE вбудовані у скрипт рядки повідомлень може бути перекладено мовою інтерфейсу програми. Рядки у скриптах, які є частиною офіційної збірки KatePart буде автоматично видобуто і подано для перекладу командами перекладачів KDE. Іншими словами, якщо ви є розробником основної гілки KatePart, ви не маєте перейматися видобуванням повідомлень і їхнім перекладом. Втім, слід зауважити, що переклад працюватиме лише у межах інфраструктури KDE, тобто переклад нових рядків скриптів, розроблених поза межами KDE, неможливий. Тому вам варто надіслати вашу роботу до основної гілки розробки Kate, щоб уможливити належний переклад.
void i18n(
String,текстпараметр1, ...);Перекладає
текстмовою, використаною у інтерфейсі програми. Параметрипараметр1, ... є необов’язковими. Вони є замінниками рядків%1,%2тощо.void i18nc(
String,контекстString,текстпараметр1, ...);Перекладає
текстмовою, використаною у інтерфейсі програми. Крім того, перекладачі зможуть побачити рядокконтекст. За допомогою контексту перекладачам буде простіше правильно перекласти рядок. Параметрипараметр1, ... є необов’язковими. Вони є замінниками рядків%1,%2тощо.void i18np(
String,однинаString,множинаint,кількістьпараметр1, ...);Перекладає
однинуабомножинуповідомлення мовою, використаною у інтерфейсі програми залежно від вказаного значеннякількість. Параметрипараметр1, ... є необов’язковими. Вони є замінниками рядків%1,%2тощо.void i18ncp(
String,контекстString,однинаString,множинаint,кількістьпараметр1, ...);Перекладає
однинуабомножинуповідомлення мовою, використаною у інтерфейсі програми залежно від вказаного значеннякількість. Крім того, перекладачі зможуть побачити рядокконтекст. За допомогою контексту перекладачам буде простіше правильно перекласти рядок. Параметрипараметр1, ... є необов’язковими. Вони є замінниками рядків%1,%2тощо.
Яким би чином не було запущено скрипт, він завжди користуватиметься загальною змінною «view», що відповідає поточній активній панелі перегляду. Нижче наведено список всіх типових функцій об’єкта View.
void view.copy()Копіювати позначений фрагмент, якщо щось позначено. Якщо нічого не позначено, копіювати поточний рядок, якщо позначено пункт налаштувань
[ ] Копіювати/Вирізати поточний рядок, якщо нічого не позначено.Актуальна версія: KDE Frameworks™ 5.79
void view.cut()Вирізати позначений фрагмент, якщо щось позначено. Якщо нічого не позначено, вирізати поточний рядок, якщо позначено пункт налаштувань
[ ] Копіювати/Вирізати поточний рядок, якщо нічого не позначено.Актуальна версія: KDE Frameworks™ 5.79
void view.paste()Вставити вміст буфера обміну даними.
Актуальна версія: KDE Frameworks™ 5.79
Cursor view.cursorPosition()Повертає поточну позицію курсора у області перегляду.
void view.setCursorPosition(
int,рядокint); void view.setCursorPosition(стовпчикCursor);курсорВстановлює для поточного курсора позицію, вказану напряму (рядок, стовпчик), або позицію вказаного курсора.
Cursor view.virtualCursorPosition();
Повертає позицію віртуального курсора. Всі символи табуляцій буде враховано за допомогою відповідної кількості пробілів, яка залежатиме від поточної ширини табуляції.
void view.setVirtualCursorPosition(
int,рядокint); void view.setVirtualCursorPosition(стовпчикCursor);курсорВстановлює для віртуального курсора позицію, вказану напряму (рядок, стовпчик), або позицію вказаного курсора.
String view.selectedText();
Повертає позначений фрагмент тексту. Якщо жодного фрагменту не позначено, повертає порожній рядок.
bool view.hasSelection();
Повертає
true, якщо у області перегляду позначено фрагмент тексту, інакше повертаєfalse.Range view.selection();
Повертає діапазон позначеного фрагменту тексту. Якщо жодного фрагменту не позначено, буде повернуто некоректний діапазон.
void view.setSelection(Range);діапазонВстановлює позначення тексту за вказаним діапазоном.
void view.removeSelectedText();
Вилучає позначений текст. Якщо у області перегляду не було позначено жодного тексту, ніяких дій виконано не буде.
void view.selectAll();
Позначає весь текст у документі.
void view.clearSelection();
Знімає позначення фрагменту тексту, не вилучаючи сам текст.
void view.setBlockSelection(bool on);
Вмикає або вимикає режим позначення блоку.
bool view.blockSelection();
Повертає
true, якщо увімкнено режим позначення блоку, інакше повертаєfalse.void view.align(Range);діапазонНалежним чином повторно встановити відступи рядків у вказаному діапазоні
діапазонза поточними параметрами відступів.void view.alignOn(
Range,діапазонString);взірець= ""Вирівнює рядки у діапазоні
діапазону позиції, яку задано формальним виразомвзірець. Якщо буде вказано порожнійвзірець, вирівнювання типово відбудеться за першим непорожнім символом. Якщо у взірці буде вказано блок захоплення, вирівнювання відбудеться за захопленим блоком.Приклади:
view.alignOn(document.documentRange(), '-');вставить пробіли до першого-у кожному з рядків для вирівнювання усіх дефісів за вказаною позицією.view.alignOn(document.documentRange(), ':\\s+(.)');вставить пробіли до першого непорожнього символу, який стоїть після двокрапки, для вирівнювання усіх таких символів за однаковою позицією.object view.executeCommand(
String,командаString,аргументиRange);діапазонВиконує команду
командаіз додатковими аргументамиаргументиі необов'язковим діапазономдіапазон. Повернутий об'єктobjectє булевою властивістюobject.ok, яка вказує на те, чи було успішним виконання командикоманда. Якщо сталася помилка, у рядкуobject.statusміститиметься повідомлення про помилку.Актуальна версія: KDE Frameworks™ 5.50
Range view.searchText(
Range,діапазонString,взірецьbool);назад= falseШукати перше включення
взірцяудіапазоніі повернути знайдений діапазон. Пошук буде виконано у зворотному напрямку, якщо для додаткового булевого параметраназадбуде встановлено значенняtrue.Повернутий діапазон буде некоректним (див. Range.isValid()), якщо
взірецьне буде знайдено удіапазоні.Актуальна версія: KDE Frameworks™ 5.97
Яким би чином не було запущено скрипт, він завжди користуватиметься загальною змінною «document», що відповідає поточній активній панелі перегляду. Нижче наведено список всіх типових функцій об’єкта Document.
String document.fileName();
Повертає назву файла документа або порожній рядок для незбережених буферів з текстом.
String document.url();
Повертає адресу URL документа повністю або порожній рядок для незбережених буферів з текстом.
String document.mimeType();
Повертає тип MIME документа або тип MIME
application/octet-stream, якщо відповідного типу MIME встановити не вдасться.String document.encoding();
Повертає поточне кодування символів, яке буде використано для збереження даних файла.
String document.highlightingMode();
Повертає загальний режим підсвічування, використаний у всьому документі.
String document.highlightingModeAt(Cursor);позиціяПовертає режим підсвічування, використаний за вказаною позицією у тексті.
Array document.embeddedHighlightingModes();
Повертає масив режимів підсвічування, вбудованих до поточного документа.
bool document.isModified();
Повертає
true, якщо у документі є незбережені зміни, інакше повертаєfalse.String document.text();
Повертає увесь вміст документа у формі єдиного рядка тексту. Розриви рядків буде позначено символом розриву рядка «
\n».String document.text(
int,зРядкаint,зіСтовпчикаint,доРядкаint); String document.text(доСтовпчикаCursor,зCursor); String document.text(доRange);діапазонПовертає фрагмент тексту у вказаному діапазоні. Для того, щоб код було легше читати, ми рекомендуємо вам використовувати засновану на об’єктах Cursor і Range версію функції.
String document.line(int);рядокПовертає рядок за його номером у тексті. Якщо вказаний номер не належатиме до діапазону номерів рядків документа, буде повернуто порожній рядок.
String document.wordAt(
int,рядокint); String document.wordAt(стовпчикCursor);курсорПовертає слово за вказаною позицією курсора.
-
Range document.wordRangeAt(
int,рядокint); Range document.wordRangeAt(стовпчикCursor);курсор Повертає діапазон слова за вказаним розташуванням курсора. Повернуте значення діапазону буде некоректним (див. Range.isValid()), якщо текст розташовано за кінцем рядка. Якщо за вказаним розташуванням курсора не буде слова, функцією буде повернуто порожній діапазон.
Актуальна версія: KDE 4.9
String document.charAt(
int,рядокint); String document.charAt(стовпчикCursor);курсорПовертає символ за вказаною позицією курсора.
String document.firstChar(int);рядокПовертає перший символ вказаного рядка
рядок, який не є пробілом. Першим символом рядка вважається символ у стовпчику 0. Якщо рядок є порожнім або складається лише з пробілів, функція повертає порожній рядок.String document.lastChar(int);рядокПовертає останній символ вказаного рядка
рядок, який не є пробілом. Якщо рядок є порожнім або складається лише з пробілів, функція повертає порожній рядок.bool document.isSpace(
int,рядокint); bool document.isSpace(стовпчикCursor);курсорПовертає
true, якщо символ у вказаній позиції курсора є пробілом. Якщо це не так, повертаєfalse.bool document.matchesAt(
int,рядокint,стовпчикString); bool document.matchesAt(текстCursor,курсорString);текстПовертає
true, якщо вказанийтекстрозташовано за відповідною позицією курсора. Якщо це не так, повертаєfalse.bool document.startsWith(
int,рядокString,текстbool);пропускатиПробілиПовертає
true, якщо рядок з вказаним номером починається з фрагмента текстутекст. Якщо це не так, повертаєfalse. За допомогою параметрапропускатиПробілиможна вказати програмі, чи слід ігнорувати пробіли.bool document.endsWith(
int,рядокString,текстbool);пропускатиПробілиПовертає
true, якщо рядок з вказаним номером завершується фрагментом текстутекст. Якщо це не так, повертаєfalse. За допомогою параметрапропускатиПробілиможна вказати програмі, чи слід ігнорувати пробіли.bool document.setText(String);текстЗамінює весь вміст документа на
текст.bool document.clear();
Вилучає з документа весь текст.
bool document.truncate(
int,рядокint); bool document.truncate(стовпчикCursor);курсорОбрізає рядок з вказаним номером на вказаному стовпчику або позиції курсора. Повертає
trueу разі успіху абоfalse, якщо рядка з вказаним номером у документі немає.bool document.insertText(
int,рядокint,стовпчикString); bool document.insertText(текстCursor,курсорString);текстВставляє фрагмент тексту
тексту вказану позицію курсора. Повертаєtrueу разі успіху абоfalse, якщо документ відкрито у режимі лише для читання.bool document.removeText(
int,зРядкаint,зіСтовпчикаint,доРядкаint); bool document.removeText(доСтовпчикаCursor,зCursor); bool document.removeText(доRange);діапазонВилучає текст у вказаному діапазоні. Повертає
trueу разі успіху абоfalse, якщо документ відкрито у режимі лише для читання.bool document.insertLine(
int,рядокString);текстВставляє вказаний фрагмент тексту до рядка з вказаним номером. Повертає
trueу разі успіху абоfalse, якщо документ відкрито у режимі лише для читання або рядка з вказаним номером у документі немає.bool document.removeLine(int);рядокВилучає рядок з вказаним номером. Повертає
trueу разі успіху абоfalse, якщо документ відкрито у режимі лише для читання або рядка з вказаним номером у документі немає.bool document.wrapLine(
int,рядокint); bool document.wrapLine(стовпчикCursor);курсорОбрізає рядок з вказаним номером за вказаним розташуванням курсора. Повертає
trueу разі успіху. У інших випадках повертаєfalse(наприклад, якщо номер рядка < 0).Актуальна версія: KDE 4.9
void document.joinLines(
int,початковийРядокint);кінцевийРядокОб’єднує рядки у діапазоні від
початковийРядокдокінцевийРядок. Послідовні рядки тексту завжди відокремлюються одинарним пробілом.int document.lines();
Повертає кількість рядків у документі.
bool document.isLineModified(int);рядокПовертає
true, якщо у рядкурядокзараз містяться незбережені дані.Актуальна версія: KDE 5.0
bool document.isLineSaved(int);рядокПовертає
true, якщорядокбуло змінено, після чого документ було збережено. Інакше кажучи, у рядку вже не міститься незбережених даних.Актуальна версія: KDE 5.0
bool document.isLineTouched(int);рядокПовертає
true, якщо у рядкурядокзараз містяться незбережені дані або його вміст було раніше змінено.Актуальна версія: KDE 5.0
bool document.findTouchedLine(
int,початковийРядокbool);напрямокШукати наступний змінений рядок, починаючи з рядка
початковийРядок. Пошук виконується у напрямку кінця або початку документа залежно від напрямку пошуку, визначеного параметромнапрям.Актуальна версія: KDE 5.0
int document.length();
Повертає кількість символів у документі.
int document.lineLength(int);рядокПовертає довжину рядка з номером
рядок.void document.editBegin();
Започатковує групу редагування для впорядкування операцій зі скасування або повторення дій. Не забувайте, що викликати
editEnd()слід саме стільки разів, скільки разів було викликаноeditBegin(). ВикликиeditBegin()використовують вбудований лічильник, отже їх може бути вкладено один у оден.void document.editEnd();
Завершує групу редагування. Останній виклик
editEnd()(тобто відповідник першого викликуeditBegin()) завершує крок з редагування.int document.firstColumn(int);рядокПовертає перший відмінний від пробілу стовпчик у вказаному за допомогою параметра номера,
рядок, рядку. Якщо у рядку будуть лише пробіли, функція поверне значення-1.int document.lastColumn(int);рядокПовертає останній відмінний від пробілу стовпчик у вказаному за допомогою параметра номера,
рядок, рядку. Якщо у рядку будуть лише пробіли, функція поверне значення-1.int document.prevNonSpaceColumn(
int,рядокint); int document.prevNonSpaceColumn(стовпчикCursor);курсорПовертає номер стовпчика з символом, відмінним від пробілу. Пошук буде виконано у напрямку початку документа, починаючи з вказаної позиції курсора.
int document.nextNonSpaceColumn(
int,рядокint); int document.nextNonSpaceColumn(стовпчикCursor);курсорПовертає номер стовпчика з символом, відмінним від пробілу. Пошук буде виконано у напрямку кінця документа, починаючи з вказаної позиції курсора.
int document.prevNonEmptyLine(int);рядокПовертає наступний непорожній рядок, що містить символи, відмінні від пробілів. Пошук відбуватиметься у напрямку початку документа.
int document.nextNonEmptyLine(int);рядокПовертає наступний непорожній рядок, що містить символи, відмінні від пробілів. Пошук відбуватиметься у напрямку кінця документа.
bool document.isInWord(
String,символint);атрибутПовертає
true, якщо вказанийсимволз вказаним параметроматрибутможе бути частиною слова. Якщо це не так, повертаєfalse.bool document.canBreakAt(
String,символint);атрибутПовертає
true, якщо вказанийсимволз вказаним параметроматрибутможе бути використано для розбиття рядка. Якщо це не так, повертаєfalse.bool document.canComment(
int,атрибутПочаткуint);атрибутКінцяПовертає
true, якщо діапазон тексту, початок і кінець якого визначаються на основі вказаних атрибутів, можна закоментувати. Якщо це не так, повертаєfalse.String document.commentMarker(int);атрибутПовертає позначку коментаря для окремого рядка коментарів з вказаним параметром
атрибут.String document.commentStart(int);атрибутПовертає позначку, якою має розпочинатися багаторядковий коментар для вказаного значення параметра
атрибут.String document.commentEnd(int);атрибутПовертає позначку, якою має розпочинатися багаторядковий коментар для вказаного значення параметра
атрибут.Range document.documentRange();
Повертає діапазон всього документа.
Cursor documentEnd();
Повертає курсор, розташований у останній позиції останнього рядка у документі.
bool isValidTextPosition(
int,рядокint); bool isValidTextPosition(позиціяCursor);курсорПовертає
true, якщо вказану позицію курсора розташовано у коректній позиції у тексті. Позиція у тексті є коректною, лише якщо її розташовано на початку, у середині або у кінці коректного рядка тексту. Крім того, текстова позиція є некоректною, якщо її розташовано посередині замінника символу Unicode.Актуальна версія: KDE 5.0
int document.attribute(
int,рядокint); int document.attribute(стовпчикCursor);курсорПовертає атрибут за вказаною позицією курсора.
bool document.isAttribute(
int,рядокint,стовпчикint); bool document.isAttribute(атрибутCursor,курсорint);атрибутПовертає
true, якщо атрибут за вказаною позицією курсора дорівнює значенню параметраатрибут. Якщо це не так, повертаєfalse.String document.attributeName(
int,рядокint); String document.attributeName(стовпчикCursor);курсорПовертає назву атрибута придатну до читання. Ця назва відповідає назві
itemDataу файлах підсвічування синтаксичних конструкцій.bool document.isAttributeName(
int,рядокint,стовпчикString); bool document.isAttributeName(назваCursor,курсорString);назваПовертає
true, якщо назва атрибута у певній позиції курсора відповідає вказаному значенню параметраназва. Якщо це не так, повертаєfalse.String document.variable(String);ключПовертає значення вказаної змінної документа
ключ. Якщо змінної з вказаною назвою у документі не існує, повертає порожній рядок.void document.setVariable(
String,ключString);значенняВстановлює значення відповідної змінної документа
ключ.Див. також змінні документа Kate
Актуальна версія: KDE 4.8
int document.firstVirtualColumn(int);рядокПовертає віртуальний стовпчик першого відмінного від пробілу символу у вказаному рядку або
-1, якщо рядок є порожнім або містить лише символи пробілів.int document.lastVirtualColumn(int);рядокПовертає віртуальний стовпчик останнього відмінного від пробілу символу у вказаному рядку або
-1, якщо рядок є порожнім або містить лише символи пробілів.int document.toVirtualColumn(
int,рядокint); int document.toVirtualColumn(стовпчикCursor); Cursor document.toVirtualCursor(курсорCursor);курсорПеретворює вказану «реальну» позицію курсора на віртуальну позицію курсора, повертає або ціле значення (int), або об’єкт Cursor.
int document.fromVirtualColumn(
int,lineint); int document.fromVirtualColumn(virtualColumnCursor); Cursor document.fromVirtualCursor(virtualCursorCursor);віртуальнийКурсорПеретворює вказану віртуальну позицію курсора на «реальну» позицію курсора, повертає або ціле значення (int), або об’єкт Cursor.
Cursor document.anchor(
int,рядокint,стовпчикChar); Cursor document.anchor(символCursor,курсорChar);символВиконує пошук у напрямку початку документа, починаючи від вказаної позиції курсора, вказаного символу. Наприклад, якщо функції буде передано символ «(», функція поверне позицію початкової дужки «(». Відповідність дужок не враховуватиметься, тобто інші «(...)» буде проігноровано.
Cursor document.rfind(
int,рядокint,стовпчикString,текстint); Cursor document.rfind(атрибут= -1Cursor,курсорString,текстint);атрибут= -1Виконує пошук у напрямку початку документа вказаного фрагмента тексту з відповідним значенням параметра
атрибут. Параметратрибутбуде проігноровано, якщо він матиме значення-1. Функція поверне значення некоректного курсора, якщо фрагмент тексту знайти не вдасться.int document.defStyleNum(
int,рядокint); int document.defStyleNum(стовпчикCursor);курсорПовертає типовий стиль курсора, використаний за вказаною позицією у тексті.
bool document.isCode(
int,рядокint); bool document.isCode(стовпчикCursor);курсорПовертає
true, якщо атрибут за вказаною позицією курсора не дорівнює жодному зі значень стилів:dsComment,dsString,dsRegionMarker,dsChar,dsOthers.bool document.isComment(
int,рядокint); bool document.isComment(стовпчикCursor);курсорПовертає
true, якщо значенням атрибута символу у позиції курсора єdsComment. Якщо це не так, повертаєfalse.bool document.isString(
int,рядокint); bool document.isString(стовпчикCursor);курсорПовертає
true, якщо значенням атрибута символу у позиції курсора єdsString. Якщо це не так, повертаєfalse.bool document.isRegionMarker(
int,рядокint); bool document.isRegionMarker(стовпчикCursor);курсорПовертає
true, якщо значенням атрибута символу у позиції курсора єdsRegionMarker. Якщо це не так, повертаєfalse.bool document.isChar(
int,рядокint); bool document.isChar(стовпчикCursor);курсорПовертає
true, якщо значенням атрибута символу у позиції курсора єdsChar. Якщо це не так, повертаєfalse.bool document.isOthers(
int,рядокint); bool document.isOthers(стовпчикCursor);курсорПовертає
true, якщо значенням атрибута символу у позиції курсора єdsOthers. Якщо це не так, повертаєfalse.void document.indent(
Range,діапазонint);змінаВстановити відступи у всіх рядка у діапазоні
діапазонназмінатабуляцій абозмінаразів наtabSizeпробілів, залежно від визначених користувачем параметрів. Значеннязмінаможе бути від'ємним.
Окрім програмного інтерфейсу документа та області перегляду, існує і загальний програмний інтерфейс редактора, який надає доступ до загальних функцій керування редактором за допомогою скриптів.
String editor.clipboardText();
Повертає текст, який зберігається у загальному буфері обміну даними.
Актуальна версія: KDE Frameworks™ 5.50
String editor.clipboardHistory();
Редактор зберігає журнал буфера обміну даними, який містить до 10 записів. Ця функція повертає усі записи, які зараз перебувають у журналі буфера обміну даними.
Актуальна версія: KDE Frameworks™ 5.50
void editor.setClipboardText(String);текстВстановлює для вмісту буфера обміну даними значення
текст. Запистекстбуде додано до журналу буфера обміну даними.Актуальна версія: KDE Frameworks™ 5.50