Skripto per JavaScript

La KatePart redaktila komponanto estas facile etendebla skribante skriptojn. La skriptlingvo estas ECMAScript (vaste konata kiel JavaScript). KatePart subtenas du specojn de skriptoj: deŝovajn kaj komandliniajn skriptojn.

Deŝov-Skriptoj

Deŝovskriptoj - ankaŭ referencitaj kiel indentiloj - aŭtomate deŝovas la fontkodon dum tajpado de teksto. Ekzemple, post frapado de la revenklavo la deŝovnivelo ofte pliiĝas.

La sekvaj sekcioj priskribas paŝon post paŝo kiel krei la skeleton por simpla indentilo. Kiel unua paŝo, kreu novan *.js dosieron nomatan ekz. javascript.js en la loka hejma dosierujo $XDG_DATA_HOME/katepart5/script/indentation. En tio, la mediovariablo XDG_DATA_HOME kutime vastiĝas al aŭ ~/.local~/.local/share.

Sur Windows® ĉi tiuj dosieroj troviĝas en %USERPROFILE%\AppData\Local\katepart5\script\indentation. %USERPROFILE% kutime vastiĝas al C:\\Uzantoj\\uzanto.

La Deŝovskripta Kapo

La kaplinio de la dosiero javascript.js estas enigita kiel JSON komence de la dokumento jene:

var katescript = {
    "name": "JavaScript",
    "author": "Ekzempla nomo <example.name@some.address.org>",
    "license": "BSD-Permesilo",
    "revision": 1,
    "kate-version": "5.1",
    "required-syntax-style": "javascript",
    "indent-languages": ["javascript"],
    "priority": 0,
}; // kate-script-header, devas esti ĉe la komenco de la dosiero sen komentoj

Ĉiu eniro estas klarigita detale nun:

  • nomo [bezonata]: Ĉi tiu estas la deŝovilnomo, kiu aperas en la menuo IlojDeŝovo kaj en la agorda dialogo.

  • aŭtoro [laŭvola]: La nomo de la aŭtoro kaj kontaktinformoj.

  • licenco [laŭvola]: Mallonga formo de la permesilo, kiel BSD License aŭ LGPLv3.

  • revizio [bezonata]: La revizio de la skripto. Ĉi tiu nombro devus esti pliigita kiam ajn la skripto estas modifita.

  • kate-version [bezonata]: Minimuma bezonata KatePart versio.

  • required-syntax-style [laŭvola]: La bezonata sintaksa stilo, kiu kongruas kun la specifita stilo en sintaks-reliefigaj dosieroj. Ĉi tio estas grava por indentiloj, kiuj dependas de specifaj elstarig-informoj en la dokumento. Se bezonata sintaksa stilo estas specifita, la indentigilo disponeblas nur kiam la taŭga markilo estas aktiva. Ĉi tio malhelpas nedifinitan konduton kaŭzitan de uzado de la indentigilo sen la atendata reliefa skemo. Ekzemple, la Ruby-indentigilo uzas ĉi tion en la dosieroj ruby.js kaj ruby.xml.

  • indent-languages [laŭvola]: JSON tabelo de sintaksaj stiloj kiujn la indentilo povas ĝuste deŝovi, ekz.: ["c++", "java"].

  • prioritato [laŭvola]: Se pluraj indentigiloj taŭgas por certa reliefigita dosiero, la prioritato decidas kiu indentigilo estas elektita kiel defaŭlta.

La Deŝovila Fontkodo

Specifinte la kaplinion, ĉi tiu sekcio klarigas kiel funkcias la indentskripto mem. La baza skeleto de la korpo aspektas jene:

// bezonataj katepart js-bibliotekoj, ekz. range.js se vi uzas Range
require ("range.js");

triggerCharacters = "{}/:;";
function indent(linio, indentLarĝo, ch)
{
    // vokita por ĉiu novlinio (ch == '\n') kaj ĉiuj signoj specifitaj en
    // la ĉiea variablo triggerCharacters. Kiam oni vokas IlojFormatigi deŝovon
    // la variablo ch estas malplena, t.e. ch == ''.
    //
    // vidu ankaŭ: Scripting API
    return -2;
}

La funkcio indent() havas tri parametrojn:

  • linio : la linio, kiu devas esti indentigita

  • indentWidth: la indentlarĝo en nombro da spacoj

  • ch: ĉu novlinia signo (ch == '\n'), la ekigilo specifita en triggerCharacters aŭ malplenigi se la uzanto alvokis la agon IlojFormatita indentaĵo.

La revena valoro de la indent() funkcio specifas kiel la linio estos indentigita. Se la liveraĵo estas simpla entjera nombro, ĝi estas interpretata jene:

  • revenvaloro -2: faru nenion

  • redona valoro -1: konservi indentaĵon (serĉas antaŭan nemalplenan linion)

  • redonas valoron 0 : nombroj >= 0 precizigas la indentprofundecon en spacoj

Alternative, tabelo de du elementoj povas esti liverita:

  • return [ indent, align ];

En ĉi tiu kazo, la unua elemento estas la indentprofundo kiel supre kun la sama signifo de la specialaj valoroj. Tamen, la dua elemento estas absoluta valoro reprezentanta kolumnon por aligno. Se ĉi tiu valoro estas pli alta ol la indenta valoro, la diferenco reprezentas kelkajn spacojn aldonotajn post la indentaĵo de la unua parametro. Alie, la dua nombro estas ignorita. Uzado de taboj kaj spacoj por indentaĵo estas ofte nomata miksita reĝimo.

Konsideru la sekvan ekzemplon: Supozu uzanta tabojn por indentigi, kaj tab-larĝo estas agordita al 4. Ĉi tie, <tab> reprezentas tabon kaj '.' spacon:

1: <tab><tab>foobar("saluton",
2: <tab><tab>......."mondo");

Kiam indentlinio 2, la funkcio indent() redonas [8, 15]. Kiel rezulto, du taboj estas enmetitaj por deŝovi al kolumno 8, kaj 7 spacoj estas aldonitaj por vicigi la duan parametron sub la unua, tiel ke ĝi restu vicigita se la dosiero estas rigardata kun malsama tab-larĝo.

Defaŭlta KDE instalaĵo sendas KatePart kun pluraj indentiloj. La responda JavaScript fontkodo troviĝas en $XDG_DATA_DIRS/katepart5/script/indentation.

Sur Windows® ĉi tiuj dosieroj troviĝas en %USERPROFILE%\AppData\Local\katepart5\script\indentation. %USERPROFILE% kutime vastiĝas al C:\\Uzantoj\\uzanto.

Evoluigi deŝovilon postulas reŝargi la skriptojn por vidi ĉu la ŝanĝoj kondutas taŭge. Anstataŭ rekomenci la aplikaĵon, simple ŝanĝu al la komandlinio kaj alvoku la komandon reload-scripts.

Se vi evoluigas utilajn skriptojn bonvolu konsideri kontribui al la KatePart Projekto per kontaktante la dissendoliston.

Komandoliniaj Skriptoj

Ĉar estas malfacile kontentigi ĉies bezonojn, KatePart subtenas malgrandajn helpajn ilojn por rapida manipulado de teksto per la enkonstruita komandlinio. Ekzemple, la komando sort estas efektivigita kiel skripto. Ĉi tiu sekcio klarigas kiel krei dosierojn *.js por etendi KatePart kun arbitraj helpaj skriptoj.

Komandliniaj skriptoj troviĝas en la sama dosierujo kiel deŝovilaj skriptoj. Do kiel unua paŝo, kreu novan dosieron *.js nomitan myutils.js en la loka hejma dosierujo $XDG_DATA_HOME/katepart5 /script/commands. En tio, la mediovariablo XDG_DATA_HOME kutime vastiĝas al aŭ ~/.local~/.local/share.

Sur Windows® ĉi tiuj dosieroj troviĝas en %USERPROFILE%\AppData\Local\katepart5\script\commands. %USERPROFILE% kutime vastiĝas al C:\\Users\\uzanto.

La Komandlinioskripta Kapo

La kaplinio de ĉiu komandlinia skripto estas enigita en JSON komence de la skripto jene:

var katescript = {
    "author": "Ekzempla nomo <example.name@some.address.org>",
    "license" : "LGPLv2+",
    "revision": 1,
    "kate-version": "5.1",
    "functions": ["sort", " moveLinesDown"],
    "actions": [
       { "function": "sort",
         "name": "Ordigi Elektitan Tekston",
         "category ": "Redaktado",
         "interactive": "false"
       },
       { "function": "moveLinesDown",
         "name": \ "Movi Liniojn Malsupren",
         "category": "Redaktado",
         "shortcut": "Ctrl+Shift+Down",
         "interactive": "false"
       }
    ]
}; // kate-script-header, devas esti ĉe la komenco de la dosiero sen komentoj

Ĉiu eniro estas klarigita detale nun:

  • aŭtoro [laŭvola]: La nomo de la aŭtoro kaj kontaktinformoj.

  • licenco [laŭvola]: Mallonga formo de la permesilo, kiel BSD License aŭ LGPLv2.

  • revizio [bezonata]: La revizio de la skripto. Ĉi tiu nombro devus esti pliigita kiam ajn la skripto estas modifita.

  • kate-version [bezonata]: Minimuma bezonata KatePart versio.

  • funkcioj [bezonata]: JSON tabelo de komandoj en la skripto.

  • agoj [laŭvola]: JSON Tabelo de JSON objektoj kiuj difinas la agojn kiuj aperas en la aplikaĵa menuo. Detalaj informoj estas provizitaj en la sekcio Ligaj Ŝparvojoj.

Ĉar la valoro de funkcioj estas JSON tabelo, ununura skripto kapablas enhavi arbitran nombron da komandliniaj komandoj. Ĉiu funkcio disponeblas per la enkonstruita komandlinio de KatePart.

La Skripta Fontkodo

Ĉiuj funkcioj specifitaj en la kaplinio devas esti efektivigitaj en la skripto. Ekzemple, la skriptodosiero de la supra ekzemplo bezonas efektivigi la du funkciojn sort kaj moveLinesDown. Ĉiuj funkcioj havas la sekvan sintakson:

// postulis katepart js-bibliotekojn, ekz. range.js se vi uzas Range
require ("range.js");

function <nomo>(arg1, arg2, ...)
{
 // ... efektivigo, vidu ankaŭ: Skripta API
}

Argumentoj en la komandlinio estas transdonitaj al la funkcio kiel arg1, arg2, ktp. Por provizi dokumentadon por ĉiu komando, simple efektivigu la funkcion 'help' jene:

function help(cmd)
{
    if (cmd == "sort" ) {
        return i18n("Ordigi la elektitan tekston.");
    } else if (cmd == "...") {
        // ...
    }
}

Efektivigi help sort en la komandlinio tiam vokas ĉi tiun helpfunkcion kun la argumento cmd agordita al la donita komando, t.s. cmd == "sort". KatePart tiam prezentas la liveritan tekston kiel dokumentadon al la uzanto. Nepre traduki la ĉenojn.

Disvolvi komandlinian skripton postulas reŝargi la skriptojn por vidi ĉu la ŝanĝoj kondutas taŭge. Anstataŭ rekomenci la aplikaĵon, simple ŝanĝu al la komandlinio kaj alvoku la komandon reload-scripts.

Ligantaj Ŝparvojoj

Por igi la skriptojn alireblaj en la aplikaĵa menuo kaj atribui ŝparvojojn, la skripto devas provizi taŭgan skripton. En la ĉi-supra ekzemplo, ambaŭ funkcioj ordigi kaj moveLinesDown aperas en la menuo pro la sekva parto en la skriptkapo:

var katescript = {
    ...
    "actions": [
        {   "function": "sort",
            "name": "Ordigi Elektitan Tekston",
            "icon": "",
            "category": "Redaktado",
            "interactive": "false"
        },
        {   "function": "moveLinesDown",
            "name": "Movi Liniojn Malsupren",
            "icon": "",
            "category": "Redaktado",
            "shortcut": "Ctrl+Shift+Down",
            "interactive": "false"
        }
    ]
};

La kampoj por unu ago estas jenaj:

  • funkcio [bezonata]: La funkcio kiu devus aperi en la menuo IlojSkriptoj.

  • nomo [bezonata]: La teksto aperas en la skriptmenuo.

  • pikono [laŭvola]: La piktogramo aperas apud la teksto en la menuo. Ĉiuj KDE piktogramnomoj povas esti uzataj ĉi tie.

  • kategorio [laŭvola]: Se kategorio estas specifita, la skripto aperas en submenuo.

  • mallongigo [laŭvola]: La ŝparvojo donita ĉi tie estas la defaŭlta ŝparvojo. Ekzemplo: Ktrl+Alt+t. Vidu la Qt™ dokumentado por pliaj detaloj.

  • interaga [laŭvola]: Se la skripto bezonas enigon de uzanto en la komandlinio, agordu ĉi tion al true.

Se vi evoluigas utilajn skriptojn bonvolu konsideri kontribui al la KatePart Projekto per kontaktante la dissendoliston.

Skripta API

La scripting-API prezentita ĉi tie estas disponebla por ĉiuj skriptoj, t.s. deŝovskriptoj kaj komandliniaj komandoj. La klasoj Cursor kaj Range estas provizitaj de bibliotekaj dosieroj en $XDG_DATA_DIRS/katepart5/libraries. Se vi volas uzi ilin en via skripto, kiu bezonas uzi iujn el la funkcioj DokumentoVidi, bonvolu inkluzivi la necesan bibliotekon uzante:

// postulis katepart js-bibliotekojn, ekz. range.js se vi uzas Range
require ("range.js");

Por etendi la norman scripting API kun viaj propraj funkcioj kaj prototipoj simple kreu novan dosieron en la loka agorda dosierujo de KDE $XDG_DATA_HOME/katepart5/libraries kaj enmetu ĝin en vian skripto uzante:

require ("miaskriptnomoĉitie.js");

Sur Windows® ĉi tiuj dosieroj troviĝas en %USERPROFILE%\AppData\Local\katepart5\libraries. %USERPROFILE% kutime vastiĝas al C:\\Users\\uzanto.

Por etendi ekzistantajn prototipojn kiel CursorRange, la rekomendinda maniero estas ne modifi la ĉieajn *.js dosierojn. . Anstataŭe, ŝanĝu la prototipon Cursor en JavaScript post kiam la cursor.js estas inkluzivita en vian skripton per require.

Kursoroj kaj Intervaloj

Ĉar KatePart estas tekstredaktilo, la tuta scripting-API baziĝas sur kursoroj kaj intervaloj kiam ajn eblas. Kursoro estas simpla (linio, kolumno) opo reprezentanta tekstopozicion en la dokumento.Intervalo ampleksas tekston de komenca kursora pozicio ĝis fina kursora pozicio. La API estas klarigita detale en la sekvaj sekcioj.

La Profilo de Cursor
Cursor();

Konstruilo. Liveras Cursor ĉe pozicio (0, 0).

Ekzemplo: var cursor = new Cursor();

Cursor(int linio, int kolumno);

Konstruilo. Liveras Cursor ĉe pozicio (linio, kolumno).

Ekzemplo: var cursor = new Cursor(3, 42);

Cursor(Cursor alia);

Kopi-konstruilo. Liveras kopion de la kursoro alia.

Ekzemplo: var kopio = new Cursor(alia);

Cursor Cursor.clone();

Liveras klonon de la kursoro.

Ekzemplo: var clone = cursor.clone();

Cursor.setPosition(int linio, int kolumno);

Agordas la pozicion de la kursoro al linio kaj kolumno.

Ekde: KDE 4.11

bool Cursor.isValid();

Kontrolu ĉu la kursoro validas. La kursoro estas nevalida, se linio kaj/aŭ kolumno estas agordita al -1.

Ekzemplo: var valid = cursor.isValid();

Cursor Cursor.invalid();

Liveras novan nevalidan kursoron situantan ĉe (-1, -1).

Ekzemplo: var invalidCursor = cursor.invalid();

int Cursor.compareTo(Cursor alia);

Komparas ĉi tiun kursoron kun la kursoro alia. Revenoj

  • -1, se ĉi tiu kursoro troviĝas antaŭ la kursoro alia,

  • 0, se ambaŭ kursoroj egalas kaj

  • +1, se ĉi tiu kursoro troviĝas post la kursoro alia.

bool Cursor.equals(Cursor alia);

Donas true, se ĉi tiu kursoro kaj la kursoro alia estas egalaj, alie false.

String Cursor.toString();

Liveras la kursoron kiel ĉeno de la formo Cursor(linio, kolumno).

La Range-Prototipo
Range();

Konstruilo. Voki new Range() liveras Range ĉe (0, 0) - (0, 0).

Range (Cursor komenco, Cursor fino);

Konstruilo. Voki new Range(komenco, fino) redonas la Gamon (komenco, fino ).

Range(int komencLinio, int startColumn, int endLinio parametro
>, int endColumn);

Konstruilo. Voki new Range(startLine, startColumn, endLine, endColumn) redonas la Gamon de (komencLinio, komencKolumno) al (finLinio, finKolumno).

Range(Range alia);

Kopi-konstruilo. Resendas kopion de Range alia.

Range Range.clone();

Liveras klonon de la intervalo.

Ekzemplo: var clone = range.clone();

bool Range.isEmpty();

Donas true, se la komencaj kaj finaj kursoroj estas egalaj.

Ekzemplo: var empty = range.isEmpty();

Ekde: KDE 4.11

bool Range.isValid();

Donas true, se kaj komenca kaj fina kursoro validas, alie false.

Ekzemplo: var valid = range.isValid();

Range Range.invalid();

Liveras la Range de (-1, -1) al (-1, -1).

bool Range.contains(Cursor kursoro);

Donas true, se ĉi tiu intervalo enhavas la kursoran pozicion, alie false.

bool Range.contains(Range alia);

Donas true, se ĉi tiu gamo enhavas la Gamon alia, alie false.

bool Range.containsColumn(int kolumno);

Donas true, se kolumno estas en la duonmalferma intervalo [komenco.kolumno, fino.kolumno), alie false.

bool Range.containsLine(int linio);

Donas true, se linio estas en la duonmalferma intervalo [komenco.linio, fino.linio), alie false.

bool Range.overlaps(Range alia);

Donas true, se ĉi tiu intervalo kaj la intervalo alia dividas komunan regionon, alie false.

bool Range.overlapsLine(int linio);

Donas true, se linio estas en la intervalo [start.line, end.line], alie false.

bool Range.overlapsColumn(int kolumno);

Donas true, se kolumno estas en la intervalo [komenco.kolumno, fino.kolumno], alie false.

bool Range.onSingleLine();

Donas true, se la intervalo komenciĝas kaj finiĝas ĉe la sama linio, t.s. if Range.start.line == Range.end.line.

Ekde: KDE 4.9

bool Range.equals(Range alia);

Donas true, se ĉi tiu gamo kaj la Range alia estas egalaj, alie false.

String Range.toString();

Liveras la intervalon kiel ĉeno de la formo Range(Cursor(linio, kolumno), Cursor(linio, kolumno)).

Ĉieaj Funkcioj

Ĉi tiu sekcio listigas ĉiujn ĉieajn funkciojn.

Legado & Inkluzivado de Dosieroj
String read(String dosiero);

Serĉos la donitan dosieron rilate al la dosierujo katepart5/script/files kaj liveros ĝian enhavon kiel ĉenon.

void require(String dosiero);

Serĉos la donitan dosieron rilate al la dosierujo katepart5/script/libraries kaj taksos ĝin. require estas interne protektita kontraŭ multoblaj inkludoj de la sama dosiero.

Ekde: KDE 4.10

Sencimigado
void debug(String teksto);

Presas tekston al stdout en la konzolo lanĉanta la aplikaĵon.

Traduko

Por subteni plenan lokalizon, ekzistas pluraj funkcioj por traduki ĉenojn en skriptoj, nome i18n, i18nc, i18np kaj i18ncp. Ĉi tiuj funkcioj kondutas ekzakte kiel la tradukfunkcioj de KDE.

La tradukfunkcioj tradukas la envolvitajn ĉenojn per la traduksistemo de KDE al la lingvo uzata en la aplikaĵo. Ĉenoj en skriptoj evoluantaj en la oficiala KatePart fontoj estas aŭtomate ĉerpitaj kaj tradukeblaj. Alivorte, kiel KatePart programisto vi ne devas ĝeni per eltiro kaj tradukado de mesaĝoj. Notu tamen, ke la traduko funkcias nur ene de la KDE infrastrukturo, t.s., novaj ĉenoj en triaj skriptoj disvolvitaj ekster KDE ne estas tradukitaj. Tial bonvolu konsideri kontribui viajn skriptojn al Kate tia ke taŭga tradukado estas ebla.

void i18n(String teksto, arg1, ...);

Tradukas tekston al la lingvo uzata de la aplikaĵo. La argumentoj arg1, ..., estas nedevigaj kaj uzataj por anstataŭigi la anstataŭaĵojn %1, %2, ktp.

void i18nc(String kunteksto, String teksto, arg1, ...) ;

Tradukas tekston al la lingvo uzata de la aplikaĵo. Aldone, la ĉeno kunteksto estas videbla por tradukistoj por ke ili povu provizi pli bonan tradukon. La argumentoj arg1, ..., estas nedevigaj kaj uzataj por anstataŭigi la anstataŭaĵojn %1, %2, ktp.

void i18np(String unuopa, String pluralo, int nombro, arg1, ...);

Tradukas aŭ singularopluralo en la lingvon uzatan de la aplikaĵo, depende de la donita nombro. La argumentoj arg1, ..., estas nedevigaj kaj uzataj por anstataŭigi la anstataŭaĵojn %1, %2, ktp.

void i18ncp(String kunteksto , String unuopa, String pluralo, int nombro, arg1, ...);

Tradukas aŭ singularopluralo en la lingvon uzatan de la aplikaĵo, depende de la donita nombro. Aldone, la ĉeno kunteksto estas videbla por tradukistoj por ke ili povu provizi pli bonan tradukon. La argumentoj arg1, ..., estas nedevigaj kaj uzataj por anstataŭigi la anstataŭaĵojn %1, %2, ktp.

La View API

Kiam ajn skripto estas rulita, ekzistas ĉiea variablo vido reprezentanta la nunan aktivan redaktan vidon. La sekvanta estas listo de ĉiuj disponeblaj Vidaj funkcioj.

void view.copy()

Kopiu la elekton se ekzistas unu, alie la nunan linion se la opcio [ ] Kopiu/Tranĉi la nunan linion se neniu elekto estas agordita.

Ekde: KDE Frameworks™ 5.79

void view.cut()

Tranĉi la elekton se ekzistas unu, alie la aktuala linio se la opcio [ ] Kopiu/Tranĉi la nunan linion se neniu elekto estas agordita.

Ekde: KDE Frameworks™ 5.79

void view.paste()

Algluu la enhavon de la tondujo.

Ekde: KDE Frameworks™ 5.79

Cursor view.cursorPosition()

Liveras la aktualan kursoran pozicion en la vido.

void view.setCursorPosition(int linio, int kolumno);
void view.setCursorPosition(Cursor kursoro);

Agordu la aktualan kursoron al aŭ (linio, kolumno) aŭ al la donita kursoro.

Cursor vido.virtualCursorPosition ();

Resendas la virtualan kursoran pozicion kun ĉiu tabo kalkulanta la respondan kvanton da spacoj depende de la nuna tab-larĝeco.

void view.setVirtualCursorPosition(int linio, int kolumno);
void view.setVirtualCursorPosition(Cursor kursoro);

Agordu la nunan virtualan kursoran pozicion al (linio, kolumno) aŭ al la donita kursoro.

String view.selectedText();

Resendas la elektitan tekston. Se neniu teksto estas elektita, la liverita ĉeno estas malplena.

bool view.hasSelection();

Redonas true, se la vido elektis tekston, alie false.

Range view.selection();

Redonas la elektitan tekstan gamon. La redonita intervalo estas nevalida se ne estas elektita teksto.

void view.setSelection(Range gamo);

Agordu la elektitan tekston al la donita gamo.

void view.removeSelectedText();

Forigu la elektitan tekston. Se la vido ne havas ajnan elektitan tekston, tio faras nenion.

void view.selectAll ();

Elektas la tutan tekston en la dokumento.

void vido.clearSelection();

Purigas la teksto-elekton sen forigi la tekston.

void view.setBlockSelection(bool on);

Ŝalti aŭ malŝalti blokan elektoreĝimon.

bool view.blockSelection();

Redonas true, se blokelekta reĝimo estas ŝaltita, alie false.

void view.align(Range gamo);

Ĝuste reindentigas liniojn ene de intervalo laŭ aktualaj indentagordoj.

void view.alignOn(Range gamo, String ŝablono = "");

Vicigas liniojn en gamo sur la kolumno donita de la regula esprimo ŝablono. Kun malplena ŝablono ĝi viciĝos al la unua nemalplena signo defaŭlte. Se la ŝablono havas kapton, ĝi deŝovos sur la kaptita kongruo.

Ekzemploj:

view.alignOn(document.documentRange(), '-'); enmetos spacojn antaŭ la unua - de ĉiu linioj por vicigi ilin ĉiujn sur la sama kolumno.

view.alignOn(document.documentRange(), ':\\s+(.)'); enmetos spacojn antaŭ la unua nemalplena signo kiu okazas post dupunkto por vicigi ilin ĉiujn. la sama kolumno.

objekto view.executeCommand(String komando,
 String argoj,
 Range  intervalo);

Efektigas la komandlinian komandon komandon kun la nedevigaj argumentoj args kaj la nedeviga gamo. La redonita objekto havas bulean econ object.ok kiu indikas ĉu plenumo de la komando sukcesis. En kazo de eraro, la ĉeno object.status enhavas erarmesaĝon.

Ekde: KDE Frameworks™ 5.50

Range view.searchText(Range gamo,
                      String ŝablono,
                      bool malantaŭen = false);

Serĉu la unuan aperon de ŝablono en gamo kaj liveras la kongruan intervalon. Serĉo estas farita malantaŭen se la laŭvola bulea parametro malantaŭen estas agordita al true.

La redonita intervalo estas nevalida (vidu Range.isValid()) se ŝablono ne troviĝas en intervalo.

Ekde: KDE Frameworks™ 5.97

La Dokumenta API

Kiam ajn skripto estas rulita, estas ĉiea variablo dokumento reprezentanta la aktuale aktivan dokumenton. La sekvanta estas listo de ĉiuj disponeblaj Dokumentaj funkcioj.

String document.fileName();

Liveras la dosiernomon de la dokumento aŭ malplenan ĉenon por nekonservitaj tekstaj bufroj.

String document.url();

Liveras la plenan URL de la dokumento; aŭ malplena ĉeno por nekonservitaj tekstaj bufroj.

String document.mimeType();

Liveras la dokumentan MIME-tipon aŭ la MIME-tipon application/octet-stream se neniu taŭga MIME-tipo povus esti trovita.

String document.encoding();

Redonas la nuntempe uzatan kodigon por konservi la dosieron.

String document.highlightingMode ();

Liveras la ĉiean reliefigreĝimon uzatan por la tuta dokumento.

String document.highlightingModeAt(Cursor pos);

Redonas la emfazan reĝimon uzatan ĉe la donita pozicio en la dokumento.

Array document.embeddedHighlightingModes ();

Liveras tabelon de reliefaj modoj enigitaj en ĉi tiu dokumento.

bool document.isModified();

Redonas true, se la dokumento havas nekonservitajn ŝanĝojn (modifitajn), alie false.

String document.text();

Resendas la tutan enhavon de la dokumento en ununura tekstoĉeno. Novlinioj estas markitaj per la novlinia signo \n.

String document.text(int deLinio, int deKolumno, int alLinio, int alKolumno);
String document.text(Cursor de, Cursor al);
String document.text(Range intervalo);

Liveras la tekston en la donita gamo. Oni rekomendas uzi la kursoron kaj gamon bazitan version por pli bona legebleco de la fontkodo.

String document.line(int linio);

Liveras la donitan tekstlinion kiel ĉenon. La ĉeno estas malplena se la petita linio estas ekster intervalo.

String document.wordAt(int linio, int kolumno);
String document.wordAt(Cursor kursoro);

Liveras la vorton ĉe la donita kursora pozicio.

Range document.wordRangeAt(int linio, int kolumno);
Range document.wordRangeAt(Cursor kursoro);

Redonu la gamon de la vorto ĉe la donita kursora pozicio. La redonita intervalo estas nevalida (vidu Range.isValid()), se la tekstopozicio estas post la fino de linio. Se ne estas vorto ĉe la donita kursoro, malplena gamo estas liverita.

Ekde: KDE 4.9

String document.charAt(int linio, int kolumno);
String document.charAt(Cursor kursoro);

Liveras la signon ĉe la donita kursora pozicio.

String document.firstChar(int linio);

Liveras la unuan signon en la donita linio kiu ne estas blankspaco. La unua signo estas ĉe kolumno 0. Se la linio estas malplena aŭ enhavas nur blankspacsignojn, la liverita ĉeno estas malplena.

String document.lastChar(int linio);

Liveras la lastan signon en la donita linio kiu ne estas blankspaco. Se la linio estas malplena aŭ enhavas nur blankspacsignojn, la liverita ĉeno estas malplena.

bool document.isSpace(int linio, int kolumno);
bool document.isSpace(Cursor kursoro);

Donas true, se la signo ĉe la donita kursora pozicio estas blankspaco, alie false.

bool document.matchesAt(int linio, int kolumno, String teksto);
bool document.matchesAt(Cursor kursoro, String teksto );

Donas true, se la donita teksto kongruas ĉe la responda kursora pozicio, alie false.

bool document.startsWith(int linio, String teksto, bool skipWhiteSpaces);

Donas true, se la linio komenciĝas per teksto, alie false. La argumento skipWhiteSpaces kontrolas ĉu gvidaj blankspacoj estas ignoritaj.

bool document.endsWith(int linio, String teksto, bool skipWhiteSpaces);

Redonas true, se la linio finiĝas per teksto, alie false. La argumento skipWhiteSpaces kontrolas ĉu postaj blankspacoj estas ignoritaj.

bool document.setText(String teksto);

Agordas la tutan dokumentan tekston.

bool document.clear();

Forigas la tutan tekston en la dokumento.

bool document.truncate(int linio, int kolumno);
bool document.truncate(Cursor kursoro);

Detranĉu la donitan linion ĉe la donita kolumno aŭ kursora pozicio. Redonas true je sukceso, aŭ false se la donita linio ne estas parto de la dokumento-intervalo.

bool document.insertText(int linio, int kolumno, String teksto);
bool document.insertText(Cursor kursoro, String teksto);

Enmetas la tekston ĉe la donita kursora pozicio. Redonas true je sukceso, aŭ false, se la dokumento estas en nurlegebla reĝimo.

bool document.removeText(int deLinio, int deKolumno, int alLinio, int alKolumno);
bool document.removeText(Cursor de, Cursor al);
bool document.removeText(Range intervalo);

Forigas la tekston en la donita gamo. Redonas true je sukceso, aŭ false, se la dokumento estas en nurlegebla reĝimo.

bool document.insertLine(int linio, String teksto);

Enmetas tekston en la donita linio. Redonas true je sukceso, aŭ false, se la dokumento estas en nurlegebla reĝimo aŭ la linio ne estas en la dokumento-intervalo.

bool document.removeLine(int linio);

Forigas la donitan tekstan linion. Redonas true je sukceso, aŭ false, se la dokumento estas en nurlegebla reĝimo aŭ la linio ne estas en la dokumento-intervalo.

bool document.wrapLine(int linio, int kolumno);
bool document.wrapLine(Cursor kursoro);

Envolvas la linion ĉe la donita kursora pozicio. Redonas true je sukceso, alie false, ekz. if linio < 0.

Ekde: KDE 4.9

void document.joinLines(int startLine, int endLine);

Kunigas la liniojn de startLine al endLine. Du sekvaj tekstlinioj ĉiam estas apartigitaj per ununura spaco.

int dokumento.lines();

Liveras la nombron da linioj en la dokumento.

bool document.isLineModified(int linio);

Donas true, se linio nuntempe enhavas nekonservitajn datumojn.

Ekde: KDE 5.0

bool document.isLineSaved(int linio);

Donas true, se linio estis ŝanĝita, sed la dokumento estis konservita. Tial, la linio nuntempe ne enhavas iujn ajn nekonservitajn datumojn.

Ekde: KDE 5.0

bool document.isLineTouched(int linio);

Donas true, se linio nuntempe enhavas nekonservitajn datumojn aŭ estis ŝanĝita antaŭe.

Ekde: KDE 5.0

bool document.findTouchedLine(int startLinio, bool malsupren);

Serĉu la sekvan tuŝitan linion komencante ĉe linio. La serĉo estas farita aŭ supren aŭ malsupren laŭ la serĉdirekto specifita en malsupren.

Ekde: KDE 5.0

int dokumento.length();

Liveras la nombron da signoj en la dokumento.

int dokumento.lineLength(int linio);

Liveras la longon de la linio.

void dokumento.editBegin();

Lanĉas redaktan grupon por malfari/refari grupigon. Certiĝu ĉiam voki editEnd() tiom ofte kiom vi vokas editBegin(). Voki editBegin() interne uzas referencan nombrilon, t.s., ĉi tiu voko povas esti nestita.

void dokumento.editEnd();

Finas redaktan grupon. La lasta alvoko de editEnd() (t.s. tiu por la unua voko de editBegin()) finas la redaktan paŝon.

int dokumento.unuaKolumno(int linio);

Liveras la unuan ne-blankspackolumnon en la donita linio. Se estas nur blankspacoj en la linio, la liveraĵo estas -1.

int dokumento.lastKolumno(int linio);

Liveras la lastan ne-blankspackolumnon en la donita linio. Se estas nur blankspacoj en la linio, la liveraĵo estas -1.

int document.prevNonSpaceColumn(int linio, int kolumno);
int document.prevNonSpaceColumn(Cursor kursoro);

Redonas la kolumnon kun ne-blankspaca signo komencanta ĉe la donita kursora pozicio kaj serĉanta malantaŭen.

int document.nextNonSpaceColumn(int linio, int kolumno);
int document.nextNonSpaceColumn(Cursor kursoro);

Redonas la kolumnon kun ne-blankspaca signo komencanta ĉe la donita kursora pozicio kaj serĉante antaŭen.

int document.prevNonEmptyLine(int linio);

Liveras la sekvan nemalplenan linion enhavantan ne-blankspacsignojn serĉantajn malantaŭen.

int dokumento.nextNonEmptyLine(int linio);

Liveras la sekvan nemalplenan linion enhavantan ne-blankspacsignojn serĉantajn antaŭen.

bool document.isInWord(String signo, int atributo);

Donas true, se la donita signo kun la donita atributo povas esti parto de vorto, alie false.

bool document.canBreakAt(String signo, int atributo);

Donas true, se la donita signo kun la donita atributo taŭgas por envolvi linion, alie false.

bool document.canComment(int startAtribute, int endAttribute);

Donas true, se intervalo komencanta kaj finiĝanta per la donitaj atributoj taŭgas por esti komentita, alie false.

String document.commentMarker(int atributo);

Liveras la komentmarkilon por unuliniaj komentoj por donita atributo.

String document.commentStart(int atributo);

Liveras la komentmarkilon por la komenco de plurliniaj komentoj por donita atributo.

String document.commentEnd(int atributo);

Redonas la komentan markilon por la fino de plurliniaj komentoj por donita atributo.

Range document.documentRange();

Liveras gamon, kiu ampleksas la tutan dokumenton.

Cursor documentEnd();

Liveras kursoron poziciigitan ĉe la lasta kolumno de la lasta linio en la dokumento.

bool isValidTextPosition(int linio, int kolumno);
bool isValidTextPosition(Cursor kursoro );

Donas true, se la donita kursora pozicio estas poziciigita ĉe valida tekstopozicio. Teksta pozicio validas nur se ĝi situas ĉe la komenco, en la mezo aŭ la fino de valida linio. Plue, tekstpozicio estas malvalida se ĝi troviĝas en Unikoda anstataŭaĵo.

Ekde: KDE 5.0

int document.attribute(int linio, int kolumno);
int document.attribute(Cursor kursoro);

Liveras la atributon ĉe la donita kursora pozicio.

bool document.isAttribute(int linio, int kolumno, int atributo);
bool document.isAttribute(Cursor kursoro, int atributo);

Donas true, se la atributo ĉe la donita kursora pozicio egalas atributo, alie false.

String document.attributeName(int linio, int kolumno);
String document.attributeName(Cursor kursoro);

Donas la atributan nomon kiel homlegebla teksto. Ĉi tio estas egala al la nomo itemData en la sintaksa reliefaj dosieroj.

bool document.isAttributeName(int linio, int kolumno, String nomo);
bool document.isAttributeName(Cursor kursoro, String nomo);

Redonas true, se la atributnomo ĉe certa kursorpozicio kongruas kun la donita nomo, alie false.

String document.variable(String klavo);

Liveras la valoron de la petita dokumentvariablo ŝlosilo. Se la dokumentvariablo ne ekzistas, la liveraĵo estas malplena ĉeno.

void document.setVariable(String ŝlosilo, String valoro);

Agordu la valoron de la petita dokumentvariablo ŝlosilo.

Vidu ankaŭ: Kate-dokumentvariabloj

Ekde: KDE 4.8

int dokumento.unuaVirtualaKolumno(int linio);

Liveras la virtualan kolumnon de la unua ne-spaco en la donita linio aŭ -1, se la linio estas malplena aŭ enhavas nur blankspacsignojn.

int dokumento.lastVirtualColumn(int linio);

Liveras la virtualan kolumnon de la lasta ne-spaco en la donita linio aŭ -1, se la linio estas malplena aŭ enhavas nur blankspacsignojn.

int document.toVirtualColumn(int linio, int kolumno);
int document.toVirtualColumn(Cursor kursoro);
Cursor document.toVirtualCursor(Cursor kursoro);

Konvertas la donitan realan kursoran pozicion al virtuala kursora pozicio, ĉu liverante int aŭ Cursor-objekton.

int document.fromVirtualColumn(int linio, int virtualaKolumno);
int document.fromVirtualColumn(Cursor virtualaKursoro);
Cursor document.fromVirtualCursor(Cursor virtualaKursoro);

Konvertas la donitan virtualan kursoran pozicion al reala kursora pozicio, ĉu liverante int aŭ Cursor-objekton.

Cursor document.anchor(int linio, int kolumno, Char signo);
Cursor document.anchor(Cursor kursoro, Signo signo);

Serĉas malantaŭen la donitan signon komencante de la donita kursoro. Ekzemple, se '(' estas pasigita kiel signo, ĉi tiu funkcio redonos la pozicion de la malfermaĵo '('. Ĉi tiu referenca nombrado, t.s. aliaj '(...)' estas ignoritaj.

Cursor document.rfind(int linio, int kolumno, String teksto, int atributo = -1);
Cursor document.rfind(Cursor kursoro, String teksto, int atributo = -1);

Trovu serĉante malantaŭen la donitan tekston kun la taŭga atributo. La argumento atributo estas ignorata se ĝi estas agordita al -1. La redonita kursoro estas nevalida, se la teksto ne troviĝis.

int document.defStyleNum(int linio, int kolumno);
int document.defStyleNum(Cursor kursoro);

Liveras la defaŭltan stilon uzatan ĉe la donita kursora pozicio.

bool document.isCode(int linio, int kolumno);
bool document.isCode(Cursor kursoro);

Redonas true, se la atributo ĉe la donita kursora pozicio ne egalas al ĉiuj jenaj stiloj: dsComment, dsString, dsRegionMarker , dsChar, dsOthers.

bool document.isComment(int linio, int kolumno);
bool document.isComment(Cursor kursoro);

Redonas true, se la eco de la signo ĉe la kursora pozicio estas dsComment, alie false.

bool document.isString(int linio, int kolumno);
bool document.isString(Cursor kursoro);

Redonas true, se la atributo de la signo ĉe la kursora pozicio estas dsString, alie false.

bool document.isRegionMarker(int linio, int kolumno);
bool document.isRegionMarker(Cursor kursoro);

Redonas true, se la eco de la signo ĉe la kursora pozicio estas dsRegionMarker, alie false.

bool document.isChar(int linio, int kolumno);
bool document.isChar(Cursor kursoro);

Redonas true, se la eco de la signo ĉe la kursora pozicio estas dsChar, alie false.

bool document.isOthers(int linio, int kolumno);
bool document.isOthers(Cursor kursoro);

Donas true, se la eco de la signo ĉe la kursora pozicio estas dsOthers, alie false.

void document.indent(Range intervalo, int ŝanĝo);

Indentigas ĉiujn liniojn en intervalo per ŝanĝo taboj aŭ ŝanĝo oble tabSize spacoj depende de la preferoj de la uzantoj. La parametro ŝanĝo povas esti negativa.

La Redaktilo API

Krom la dokumento kaj vido API, ekzistas ĝenerala redaktilo API kiu disponigas funkciojn por ĝenerala redaktilo skriptfunkcio.

String editor.clipboardText();

Liveras la tekston kiu nuntempe estas en la ĉiea tondujo.

Ekde: KDE Frameworks™ 5.50

String editor.clipboardHistory();

La redaktilo tenas historion de tondujo kiu enhavas ĝis 10 enskribojn de tondujo. Ĉi tiu funkcio liveras ĉiujn enskribojn kiuj nuntempe estas en la tondujohistorio.

Ekde: KDE Frameworks™ 5.50

void editor.setClipboardText(String teksto);

Agordu la enhavon de la tondujo al teksto. La teksto estos aldonita al la historio de la tondujo.

Ekde: KDE Frameworks™ 5.50