Il componente editor di KatePart è facilmente estendibile attraverso degli script. Il linguaggio di script è ECMAScript (comunemente noto come JavaScript). KatePart supporta due tipi di script: script di rientro e a riga di comando. Una funzionalità simile per comandare gli script da riga di comando viene anche fornita dall'estensione dei frammenti.
Gli script di rientro, noti anche come rientratori, fanno rientrare automaticamente il codice sorgente mentre si scrive. Per esempio, spesso il livello di rientro aumenta dopo aver premuto Invio.
Le sezioni seguenti descrivono passo-passo come creare la struttura di un semplice rientratore. Come primo passo crea un nuovo file *.js chiamato ad es. javascript.js nella cartella home locale $. Al suo interno la variabile di ambiente XDG_DATA_HOME/katepart5/script/indentationXDG_DATA_HOME viene tipicamente espansa sia in ~/.local che in ~/.local/share.
In Windows® questi file si trovano in %USERPROFILE%\AppData\Local\katepart5\script\indentation. %USERPROFILE% viene generalmente espanso in C:\\Utenti\\.utente
L'intestazione del file javascript.js è incorporata come JSON all'inizio del documento, e ha la forma seguente:
var katescript = {
"name": "JavaScript",
"author": "Pippo <pippo@topolinia.it>"
"license": "BSD License",
"revision": 1,
"kate-version": "5.1",
"required-syntax-style":"javascript",
"indent-languages": ["javascript"],
"priority": 0,
}; // kate-script-header, deve essere all'inizio della riga senza commenti
Ogni voce viene ora spiegata in dettaglio:
name[obbligatorio]: questo è il nome del rientratore che appare nel menu → e nella finestra di configurazione.author[facoltativo]: il nome dell'autore e informazioni per contattarlo.license[facoltativo]: forma breve della licenza, come Licenza BSD o LGPLv3.revision[obbligatorio]: la revisione dello script. Questo numero va aumentato ad ogni sua modifica.kate-version[obbligatorio]: versione minima di KatePart richiesta.required-syntax-style[facoltativo]: lo stile della sintassi richiesto, se soddisfa lostilespecificato nei file di evidenziazione della sintassi. È importante per i rientratori che richiedono informazioni di evidenziazione specifiche nel documento. Se uno stile di sintassi richiesto viene specificato, il rientratore è disponibile solo quando è attivo l'evidenziatore appropriato. Ciò impedisce il «comportamento non definito» causato dall'uso del rientratore senza lo schema di evidenziazione atteso. Per esempio, il rientratore di Ruby lo usa nei fileruby.jseruby.xml.indent-languages[facoltativo]: elenco JSON di stili di sintassi che il rientratore può far rientrare correttamente, ad es.:["c++", "java"].priority[facoltativo]: se ci sono più rientratori che si adattano a un certo file evidenziato la priorità decide quale viene scelto come predefinito.
Dopo aver specificato l'intestazione, questa sezione spiega come funziona lo script di rientro vero e proprio. La struttura fondamentale ha questo aspetto:
// librerie katepart js necessarie, ad es. range.js se usi Range
require ("range.js");
triggerCharacters = "{}/:;";
function indent(riga, larghezza_rientro, carattere)
{
// richiamato a ogni ritorno a capo (carattere == '\n') e per tutti i caratteri
// specificati nella in variabile globale triggerCharacters. Quando si chiama
// →
// la variabile carattere è vuota, cioè caratteri == ''.
//
// Vedi anche: API di scripting
return -2;
}
La funzione indent() ha tre argomenti:
riga: la riga da far rientrare;larghezza_rientro: la larghezza del rientro espressa come numero di spazi;carattere: un carattere di ritorno a capo (carattere== '\n'), un carattere di attivazione specificato intriggerCharacters, o vuota se l'utente ha attivato l'azione → .
Il valore restituito dalla funzione indent() specifica come far rientrare la riga. Se il valore è un semplice numero intero, viene interpretato come segue:
Valore restituito -2: non fare nulla;
Valore restituito -1: mantieni il rientro (cerca una riga non vuota precedente)
Valore restituito 0: I numeri numbers ≥ 0 specificano il rientro in spazi
In alternativa, si può restituire un array di due elementi:
return [ indent, align ];
In questo caso, il primo elemento è il rientro, con lo stesso significato di cui sopra. Il secondo elemento, invece, è un valore assoluto che rappresenta una colonna di «allineamento». Se questo valore è maggiore del valore di rientro, la differenza rappresenta un numero di spazi da aggiungere dopo il rientro della prima variabile. Altrimenti, il secondo numero viene ignorato. Usare sia tabulatori che spazi per il rientro viene spesso indicato come «modalità mista».
Considera il seguente esempio: supponiamo di usare le tabulazioni per il rientro, e la loro ampiezza è impostata a 4. Qui, <tab> indica una tabulazione e «.» uno spazio:
1: <tab><tab>pippo("ciao",
2: <tab><tab>......"mondo");
Quando si fa rientrare la seconda riga, la funzione indent() restituisce [8, 15]. Perciò, si inseriscono due tabulazioni per far rientrare fino alla colonna 8, e vengono aggiunti sette spazi per allineare il secondo argomento al primo, in modo che rimanga allineato se il file viene visualizzato con un'ampiezza di tabulazione diversa.
Un'installazione predefinita di KDE include KatePart con diversi rientratori. Il codice JavaScript corrispondente si può trovare in $.XDG_DATA_DIRS/katepart5/script/indentation
In Windows® questi file si trovano in %USERPROFILE%\AppData\Local\katepart5\script\indentation. %USERPROFILE% viene generalmente espanso in C:\\Utenti\\. utente
Lo sviluppo di un rientratore richiede il ricaricamento gli script, per testare le modifiche. Invece di riavviare l'applicazione puoi però passare alla riga di comando, e digitare il comando reload-scripts.
Se sviluppi degli script utili, per piacere considera la possibilità di contribuire al progetto KatePart creando una richiesta di integrazione nel nostro progetto GitLab.
Nota
Una funzionalità simile per comandare gli script da riga di comando viene anche fornita dall'estensione dei frammenti. Questa può essere un punto di partenza più semplice, specialmente per i piccoli script personalizzati.
Essendo difficile soddisfare le necessità di tutti, KatePart supporta dei piccoli strumenti di supporto per manipolare velocemente il testo attraverso la riga di comando integrata. Per esempio, il comando sort è implementato come uno script. Questa sezione spiega come creare file *.js per estendere KatePart con script di supporto a piacere.
Gli script da riga di comando si trovano nella stessa cartella degli script di rientro. Come primo passo, crea un nuovo file *.js chiamato myutils.js nella home locale $. Al suo interno la variabile di ambiente XDG_DATA_HOME/katepart5/script/commandsXDG_DATA_HOME viene tipicamente espansa sia in ~/.local che in ~/.local/share.
In Windows® questi file si trovano in %USERPROFILE%\AppData\Local\katepart5\script\commands. %USERPROFILE% viene generalmente espanso in C:\\Utenti\\. utente
L'intestazione di ciascuno script da riga di comando è incorporata in JSON all'inizio dello script come segue:
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": "Ordina il testo selezionato",
"category": "Editing",
"interactive": "false"
},
{ "function": "moveLinesDown",
"name": "Sposta le righe in basso",
"category": "Editing",
"shortcut": "Ctrl+Shift+Down",
"interactive": "false"
}
]
}; // l'intestazione dello script di kate deve essere all'inizio del file senza commento
Ciascuna voce è spiegata ora in dettaglio:
author[facoltativo]: il nome dell'autore e informazioni per contattarlo.license[facoltativo]: forma breve della licenza, come Licenza BSD o LGPLv2.revision[obbligatorio]: la revisione dello script. Questo numero va aumentato ad ogni sua modifica.kate-version[obbligatorio]: versione minima di KatePart richiesta.functions[obbligatorio]: vettore JSON di comandi nello script.actions[opzionale]: un vettore JSON di oggetti JSON che definiscono le azioni che appaiono nel menu dell'applicazione. Informazioni dettagliate sono fornite nella sezione Stabilire le scorciatoie.
Dal momento che il valore di functions è un vettore JSON, un singolo script può contenere un numero arbitrario di comandi per la riga di comando. Ciascuna funzione è disponibile attraverso il menu riga di comando integrata di KatePart.
Tutte le funzioni specificate nell'intestazione devono essere implementate nello script. Lo script nell'esempio qui sopra deve implementare le due funzioni sort e moveLinesDown. Tutte le funzioni hanno la sintassi seguente:
// librerie katepart js necessarie, ad es. range.js se usi Range
require ("range.js");
function <nome>(argomento_1, argomento_2, ...)
{
// ... implementazione, vedi anche: API per gli script
}
Gli argomenti nella riga di comando vengono passati alla funzione come argomento_1, argomento_2, ecc. Per poter documentare ogni comando, basta implementare la funzione help come segue:
function help(comando)
{
if (comando == "sort") {
return i18n("Ordina il testo selezionato.");
} else if (comando == "...") {
// ...
}
}
Eseguire quindi help sort nella riga di comando chiamerà questa funzione ausiliaria con l'argomento comando impostato al comando dato, cioè comando == "sort". KatePart presenterà quindi il testo risultante come documentazione per l'utente. Assicurati di tradurre le stringhe.
Lo sviluppo di uno script da riga di comando richiede il ricaricamento gli script stesso, per testare le modifiche. Invece di riavviare l'applicazione puoi però passare alla riga di comando, e digitare il comando reload-scripts.
Per rendere gli script accessibili nel menu dell'applicazione e per potergli assegnare delle scorciatoie, gli script devono fornire un'appropriata intestazione. Nell'esempio sottostante entrambe le funzioni sort e moveLinesDown appaiono nel menu grazie alla seguente parte dell'intestazione dello script:
var katescript = {
...
"actions": [
{ "function": "sort",
"name": "Ordina il testo selezionato",
"icon": "",
"category": "Editing",
"interactive": "false"
},
{ "function": "moveLinesDown",
"name": "Sposta le righe in basso",
"icon": "",
"category": "Editing",
"shortcut": "Ctrl+Shift+Down",
"interactive": "false"
}
]
};
I campi necessari sono i seguenti:
function[obbligatorio]: la funzione che dovrebbe comparire nel menu → .name[obbligatorio]: il testo che compare nel menu script.icon[facoltativo]: l'icona che appare di fianco al testo nel menu. Qui si possono usare tutti i nomi delle icone di KDE.category[facoltativo]: se si specifica una categoria, lo script compare in un sottomenu.shortcut[facoltativo]: la scorciatoia qui data è la predefinita, per esempioCtrl+Alt+t. Vedi la documentazione di Qt™ per maggiori dettagli.interactive[facoltativo]: impostalo atruese allo script serve che l'utente faccia qualcosa.
Se sviluppi degli script utili, per piacere considera la possibilità di contribuire al progetto KatePart creando una richiesta di integrazione nel nostro progetto GitLab.
L'API per script qui presentata è disponibile in tutti gli script, cioè gli script di rientro e i comandi da riga di comando. Le classi Cursor e Range sono fornite dalle librerie presenti in $. Se le vuoi usare nel tuo script, il che è necessario per usare alcune delle funzioni di XDG_DATA_DIRS/katepart5/librariesDocument o View, includi la libreria necessaria con:
// librerie katepart js necessarie, ad es. range.js se usi Range
require ("range.js");
Per estendere l'API standard per gli script con funzioni e prototipi propri basta creare un nuovo file nella cartella di configurazione locale di KDE, $, e includerlo nel tuo script con: XDG_DATA_HOME/katepart5/libraries
require ("nome_del_mio_script.js");
In Windows® questi file si trovano in %USERPROFILE%\AppData\Local\katepart5\libraries. %USERPROFILE% viene generalmente espanso in C:\\Utenti\\.utente
Per estendere i prototipi preesistenti, come Cursor o Range, il modo raccomandato di procedere non è di modificare i file *.js globali. Cambia piuttosto il prototipo Cursor in JavaScript dopo aver incluso cursor.js nello script con require.
Essendo KatePart un editor di testo, tutta l'API per gli script si basa, ovunque sia possibile, su cursori e intervalli. Un cursore (Cursor) è una semplice tupla del tipo (riga, colonna) che rappresenta una posizione nel testo del documento. Un intervallo (Range) si estende sul testo a partire da una posizione di partenza a una finale del cursore. L'API viene spiegata in dettaglio nelle sezioni seguenti.
Cursor();
Costruttore. Restituisce un cursore alla posizione
(0, 0).Esempio:
var cursore = new Cursor();Cursor(
int,rigaint);colonnaCostruttore. Restituisce un cursore alla posizione
(riga, colonna).Esempio:
var cursore = new Cursor(3, 42);Cursor(Cursor);altroCostruttore di copia. Restituisce una copia dell'
altrocursore.Esempio:
var copia = new Cursor(altro);Cursor Cursor.clone();
Restituisce un clone del cursore.
Esempio:
var clone = cursor.clone();Cursor.setPosition(
int,rigaint);colonnaImposta la posizione del cursore a
rigaecolonna.Da: KDE 4.11
bool Cursor.isValid();
Controlla se il cursore è valido. Non lo è se la riga o la colonna sono impostate a
-1.Esempio:
var valido = cursor.isValid();Cursor Cursor.invalid();
Restituisce un nuovo cursore non valido posizionato a
(-1, -1).Esempio:
var cursoreNonValido = cursor.invalid();int Cursor.compareTo(Cursor);altroConfronta un cursore con un
altro. Restituisce:-1, se il cursore è posizionato prima dell'altro,0, se sono uguali, e+1, se il cursore è posizionato dopo l'altro.
bool Cursor.equals(Cursor);altroRestituisce
truese il cursore e l'altrosono uguali, altrimentifalse.String Cursor.toString();
Restituisce un cursore sotto forma di stringa nella forma «
Cursor(riga, colonna)».
Range();
Costruttore. Chiamare
new Range()restituisce un intervallo tra(0, 0)e(0, 0).Range(
Cursor,inizioCursor);fineCostruttore. Chiamare
new Range(restituisce l'intervallo (inizio,fine)inizio,fine).Range(
int,riga_inizioint,colonna_inizioint,riga_fineint);colonna_fineCostruttore. Chiamare
new Range(restituisce l'intervallo da (riga_inizio,colonna_inizio,riga_fine,colonna_fine)riga_inizio,colonna_inizio) a (riga_fine,colonna_fine).Range(Range);altroCostruttore di copia. Restituisce una copia dell'
altrointervallo.Range Range.clone();
Restituisce un clone dell'intervallo.
Esempio:
var clone = range.clone();bool Range.isEmpty();
Restituisce
truese i cursori di inizio e fine sono uguali.Esempio:
var empty = range.isEmpty();Da: KDE 4.11
bool Range.isValid();
Restituisce
truese entrambi i cursori, iniziale e finale, sono validi, altrimentifalse.Esempio:
var valido = range.isValid();Range Range.invalid();
Restituisce l'intervallo da (-1, -1) a (-1, -1).
bool Range.contains(Cursor);cursoreRestituisce
truese l'intervallo contiene la posizione del cursore, altrimentifalse.bool Range.contains(Range);altroRestituisce
truese l'intervallo contiene l'altro, altrimentifalse.bool Range.containsColumn(int);colonnaRestituisce
truese lacolonnaè nell'intervallo semiaperto[inizio.colonna, fine.colonna), altrimentifalse.bool Range.containsLine(int);rigaRestituisce
truese larigaè nell'intervallo semiaperto[inizio.riga, fine.riga), altrimentifalse.bool Range.overlaps(Range);altroRestituisce
truese l'intervallo e l'altrohanno una regione in comune, altrimentifalse.bool Range.overlapsLine(int);rigaRestituisce
truese larigaè nell'intervallo[inizio.riga, fine.riga], altrimentifalse.bool Range.overlapsColumn(int);colonnaRestituisce
truese lacolonnaè nell'intervallo[inizio.colonna, fine.colonna], altrimentifalse.bool Range.onSingleLine();
Restituisce
truese l'intervallo comincia e finisce sulla stessa riga, cioè seRange.start.line == Range.end.line.Da: KDE 4.9
bool Range.equals(Range);altroRestituisce
truese l'intervallo e l'altrosono uguali, altrimentifalse.String Range.toString();
Restituisce un intervallo sotto forma di stringa nella forma «
Range(Cursor(riga, colonna), Cursor(riga, colonna))».
Questa sezione elenca tutte le funzioni globali.
String read(String);fileCercherà nel
filedato, relativamente alla cartellakatepart5/script/files, e ne restituirà i contenuti in forma di stringa.
void require(String);fileCercherà nel
filedato, relativamente allakatepart5/script/libraries, e lo valuterà.requireè già programmato per evitare inclusioni multiple dello stessofile.Da: KDE 4.10
void debug(String);testoStampa il
testosustdoutnella console che ha avviato l'applicazione.
Per supportare una localizzazione completa ci sono diverse funzioni per tradurre le stringhe negli script, cioè i18n, i18nc, i18np e i18ncp. Queste funzioni si comportano esattamente come le funzioni di traduzione di KDE.
Le funzioni traducono le stringhe incluse con il sistema di traduzione di KDE nella lingua usata nell'applicazione. Le stringhe negli script sviluppati nel codice sorgente ufficiale di KatePart sono automaticamente estratte e traducibili: in altre parole gli sviluppatori di KatePart non devono preoccuparsi di estrarre e tradurre i messaggi. Va anche notato, però, che la traduzione funziona solo all'interno dell'infrastruttura di KDE: cioè nuove stringhe negli script di terze parti sviluppati al di fuori di KDE non sarebbero tradotte. Tuttavia prendi in considerazione l'idea di contribuire con i tuoi script a Kate, in modo che sia possibile una traduzione appropriata.
void i18n(
String,testoargomento_1, ... );Traduce
testonella lingua usata dall'applicazione. Gli argomentiargomento_1e seguenti sono facoltativi e vengono usati per sostituire i segnaposti%1,%2, ecc..void i18nc(
String,contestoString,testoargomento_1, ... );Traduce
testonella lingua usata dall'applicazione. Inoltre, la stringacontestoviene resa visibile ai traduttori, per chiarire eventuali equivoci e produrre una traduzione migliore. Gli argomentiargomento_1e seguenti sono facoltativi, e vengono usati per sostituire i segnaposti%1,%2ecc..void i18np(
String,singolareString,pluraleint,numeroargomento_1, ... );Traduce
singolareopluralenella lingua usata dall'applicazione, a seconda delnumerodato. Gli argomentiargomento_1e seguenti sono facoltativi, e vengono usati per sostituire i segnaposti%1,%2ecc..void i18ncp(
String,contestoString,singolareString,pluraleint,numeroargomento_1, ... );Traduce
singolareopluralenella lingua usata dall'applicazione, a seconda delnumerodato. Inoltre la stringacontestoviene resa visibile ai traduttori, per chiarire eventuali equivoci e produrre una traduzione migliore. Gli argomentiargomento_1e seguenti sono facoltativi, e vengono usati per sostituire i segnaposti%1,%2ecc..
Ogni volta che uno script viene eseguito è presente una variabile globale, «view», che rappresenta la vista attiva dell'editor. Segue un elenco di tutte le funzioni di vista disponibili.
void view.copy()Taglia la selezione, se ce n'è una, altrimenti l'intera riga se è stata spuntata l'opzione
[ ] Copia o taglia la riga attuale se non c'è una selezione.Da: KDE Frameworks™ 5.79
void view.cut()Taglia la selezione, se ce n'è una, altrimenti l'intera riga se è stata spuntata l'opzione
[ ] Copia o taglia la riga attuale se non c'è una selezione.Da: KDE Frameworks™ 5.79
void view.paste()Incolla il contenuto degli appunti.
Da: KDE Frameworks™ 5.79
Cursor view.cursorPosition()Restituisce la posizione attuale del cursore nella vista.
void view.setCursorPosition(
int,rigaint); void view.setCursorPosition(colonnaCursor);cursoreImposta la posizione attuale del cursore a
(o alriga,colonna)cursoredato.Cursor view.virtualCursorPosition();
Restituisce la posizione virtuale del cursore con ogni tabulazione che conta una quantità di spazi dipendente dall'attuale ampiezza di tabulazione.
void view.setVirtualCursorPosition(
int,rigaint); void view.setVirtualCursorPosition(colonnaCursor);cursoreImposta la posizione virtuale attuale del cursore a
(o alriga,colonna)cursoredato.String view.selectedText();
Restituisce il testo selezionato. Se non c'è del testo selezionato, la stringa restituita è vuota.
bool view.hasSelection();
Restituisce
truese la vista contiene del testo selezionato, altrimentifalse.Range view.selection();
Restituisce l'intervallo di testo selezionato. L'intervallo di testo non è valido se non c'è testo selezionato.
void view.setSelection(Range);intervalloImposta il testo selezionato all'
intervallodato.void view.removeSelectedText();
Rimuove il testo selezionato. Se la vista non ne ha non fa nulla.
void view.selectAll();
Seleziona tutto il testo del documento.
void view.clearSelection();
Pulisce la selezione di testo senza rimuoverlo.
void view.setBlockSelection(bool on);
Attiva o disattiva la modalità di selezione a blocchi.
bool view.blockSelection();
Restituisce
truese la modalità di selezione a blocchi è attivata, altrimentifalse.void view.align(Range);intervalloFa rientrare nuovamente le righe che si trovano nell'
intervalloin base alle impostazioni di rientro correnti.void view.alignOn(
Range,intervalloString);modello= ""Allinea le righe in
intervalloalla colonna data dall'espressione regolaremodello. Con unmodellovuoto, per impostazione predefinita allineerà al primo carattere non di spazio. Se il modello ha una cattura, rientreràEsempi:
view.alignOn(document.documentRange(), '-');inserirà degli spazi prima del primo-di ogni riga per allinearle nella stessa colonna.view.alignOn(document.documentRange(), ':\\s+(.)');inserirà degli spazi prima del primo carattere non di spazio che ricorre dopo i due punti per allinearle nella stessa colonna.object view.executeCommand(
String,comandoString,argomenti);intervalloEsegue il comando per la riga di comando
comandocon gli argomenti opzionaliargomentie con l'opzionaleintervallo. L'oggettorestituito ha la proprietà booleanaoggetto.ok, che indica che l'esecuzione delcomandoha avuto successo. In caso di errori, la stringaoggetto.statuscontiene un messaggio di errore.Da: KDE Frameworks™ 5.50
Range view.searchText(
Range,intervalloString,modellobool);backwards= falseCerca la prima occorrenza di
modelloinintervalloe restituisce l'intervallo corrispondente. La ricerca viene eseguita all'indietro se il parametro booleanobackwardsè impostato atrue.L'intervallo restituito non è valido (vedi Range.isValid()) se
modellonon viene trovato inintervallo.Da: KDE Frameworks™ 5.97
Ogni volta che uno script viene eseguito è presente una variabile globale, «document», che rappresenta il documento attivo. Segue un elenco di tutte le funzioni del documento disponibili.
String document.fileName();
Restituisce il nome del file del documento o una stringa vuota per i documenti non salvati.
String document.url();
Restituisce l'URL completo del documento, o una stringa vuota per i documenti non salvati.
String document.mimeType();
Restituisce il tipo di file MIME del documento, o il tipo MIME del file
application/octet-streamse non se ne può trovare uno appropriato.String document.encoding();
Restituisce la codifica attualmente usata per salvare il file.
String document.highlightingMode();
Restituisce la modalità di evidenziazione globale usata per tutto il documento.
String document.highlightingModeAt(Cursor);posizioneRestituisce la modalità di evidenziazione usata alla
posizionenel documento.Array document.embeddedHighlightingModes();
Restituisce un array di modalità di evidenziazione incorporate in questo documento.
bool document.isModified();
Restituisce
truese il documento ha modifiche non salvate, altrimentifalse.String document.text();
Restituisce tutto il contenuto del documento in una sola stringa di testo. I ritorni a capo sono indicati con il carattere «
\n».String document.text(
int,da_rigaint,da_colonnaint,a_rigaint); String document.text(a_colonnaCursor,daCursor); String document.text(aRange);intervalloRestituisce il testo nell'intervallo dato. Per migliorare la leggibilità del codice si raccomanda di usare le versioni con cursori o intervalli.
String document.line(int);rigaRestituisce la riga di testo richiesta come stringa. La stringa è vuota se la riga richiesta è oltre i limiti.
String document.wordAt(
int,rigaint); String document.wordAt(colonnaCursor);cursoreRestituisce la parola alla posizione del cursore data.
-
Range document.wordRangeAt(
int,rigaint); Range document.wordRangeAt(colonnaCursor);cursore Restituisce l'intervallo di una parola alla posizione del cursore data. L'intervallo restituito non è valido (vedi Range.isValid()) se la posizione è oltre la fine di una riga. Se non c'è una parola alla fine del cursore viene restituito un intervallo vuoto.
Da: KDE 4.9
String document.charAt(
int,rigaint); String document.charAt(colonnaCursor);cursoreRestituisce il carattere alla posizione del cursore data.
String document.firstChar(int);rigaRestituisce il primo carattere nella
rigadata che non sia uno spazio. Il primo carattere è alla colonna 0. Se la riga è vuota o contiene solo spazi la stringa restituita è vuota.String document.lastChar(int);rigaRestituisce l'ultimo carattere nella
rigadata che non sia uno spazio. Se la riga è vuota o contiene solo spazi la stringa restituita è vuota.bool document.isSpace(
int,rigaint); bool document.isSpace(colonnaCursor);cursoreRestituisce
truese il carattere alla posizione del cursore data è uno spazio, altrimentifalse.bool document.matchesAt(
int,rigaint,colonnaString); bool document.matchesAt(testoCursor,cursoreString);testoRestituisce
truese iltestocorrisponde a quello presente alla posizione del cursore, altrimentifalse.bool document.startsWith(
int,rigaString,testobool);salta_spaziRestituisce
truese la riga comincia con iltesto, altrimentifalse. L'argomentosalta_spazidecide se gli spazi iniziali vanno ignorati.bool document.endsWith(
int,rigaString,testobool);salta_spaziRestituisce
truese la riga finisce con iltesto, altrimentifalse. L'argomentosalta_spazidecide se gli spazi finali vanno ignorati.bool document.setText(String);testoImposta tutto il testo del documento.
bool document.clear();
Rimuove tutto il testo del documento.
bool document.truncate(
int,rigaint); bool document.truncate(colonnaCursor);cursoreTronca la
rigaallacolonna. Restituiscetruese funziona, ofalsese lariganon fa parte dell'intervallo del documento.bool document.insertText(
int,rigaint,colonnaString); bool document.insertText(testoCursor,cursoreString);testoInserisce il
testoalla posizione del cursore data. Restituiscetruese funziona, ofalsese il documento è in modalità a sola lettura.bool document.removeText(
int,da_rigaint,da_colonnaint,a_rigaint); bool document.removeText(a_colonnaCursor,daCursor); bool document.removeText(aRange);intervalloRimuove il testo nell'intervallo dato. Restituisce
truese funziona, ofalsese il documento è in modalità di sola lettura.bool document.insertLine(
int,rigaString);testoInserisce il testo nella riga data. Restituisce
truese funziona, ofalsese il documento è in modalità di sola lettura oppure la riga non è nell'intervallo del documento.bool document.removeLine(int);rigaRimuove la riga di testo data. Restituisce
truese funziona, ofalsese il documento è in modalità di sola lettura oppure la riga non è nell'intervallo del documento.bool document.wrapLine(
int,rigaint); bool document.wrapLine(colonnaCursor);cursoreManda a capo la riga alla posizione del cursore data. Restituisce
truese funziona, altrimentifalse, ad es. se la riga < 0.Da: KDE 4.9
void document.joinLines(
int,riga_inizioint);riga_fineUnisce le righe da
riga_inizioariga_fine. Due righe di testo consecutive sono sempre separate da un solo spazio.int document.lines();
Restituisce il numero di righe nel documento.
bool document.isLineModified(int);rigaRestituisce
truese larigaattuale contiene dati non salvati.Da: KDE 5.0
bool document.isLineSaved(int);rigaRestituisce
truese larigaè cambiata ma il documento è stato salvato, e quindi la riga corrente non contiene dati non salvati.Da: KDE 5.0
bool document.isLineTouched(int);rigaRestituisce
truese larigacontiene dati non salvati o è stata cambiata in precedenza.Da: KDE 5.0
bool document.findTouchedLine(
int,startLinebool);giùCerca la successiva riga modificata, a partire da
riga. La ricerca è eseguita verso l'alto o verso il basso, a seconda della direzione specificata ingiù.Da: KDE 5.0
int document.length();
Restituisce il numero di caratteri nel documento.
int document.lineLength(int);rigaRestituisce la lunghezza della
riga.void document.editBegin();
Avvia un gruppo di modifica per un raggruppamento di azioni annullabili. Assicurati di chiamare sempre
editEnd()con la stessa frequenza dieditBegin(). ChiamandoeditBeginviene usato internamente un contatore di riferimenti, cioè, questa chiamata può essere annidata.void document.editEnd();
Chiude un gruppo di modifica. L'ultima chiamata di
editEnd()(cioè quella corrispondente alla prima chiamata aeditBegin()) conclude il passo di modifica.int document.firstColumn(int);rigaRestituisce la prima colonna non di spazi nella
riga. Se nellarigaci sono solo spazi, viene restituito-1.int document.lastColumn(int);rigaRestituisce l'ultima colonna non di spazi nella
riga. Se nellarigaci sono solo spazi, viene restituito-1.int document.prevNonSpaceColumn(
int,rigaint); int document.prevNonSpaceColumn(colonnaCursor);cursoreRestituisce la colonna con caratteri non di spaziatura che comincia alla posizione del cursore data, cercando indietro.
int document.nextNonSpaceColumn(
int,rigaint); int document.nextNonSpaceColumn(colonnaCursor);cursoreRestituisce la colonna con caratteri non di spaziatura che comincia alla posizione del cursore data, cercando in avanti.
int document.prevNonEmptyLine(int);rigaRestituisce la prossima riga non vuota con caratteri non di spaziatura, cercando indietro.
int document.nextNonEmptyLine(int);rigaRestituisce la prossima riga non vuota con caratteri non di spaziatura, cercando in avanti.
bool document.isInWord(
String,carattereint);attributoRestituisce
truese ilcaratterecon l'attributopuò far parte di una parola, altrimentifalse.bool document.canBreakAt(
String,carattereint);attributoRestituisce
truese ilcaratterecon l'attributopuò essere mandato a capo, altrimentifalse.bool document.canComment(
int,attributo_inizioint);attributo_fineRestituisce
truese un intervallo che inizia e finisce con gli attributi dati può essere fatto diventare un commento, altrimentifalse.String document.commentMarker(int);attributoRestituisce l'indicatore di commento per i commenti di una sola riga per un
attributo.String document.commentStart(int);attributoRestituisce l'indicatore di commento per l'inizio di commenti multi-riga per un
attributo.String document.commentEnd(int);attributoRestituisce l'indicatore di commento per la fine di commenti multi-riga per un
attributo.Range document.documentRange();
Restituisce un intervallo che comprende tutto il documento.
Cursor documentEnd();
Restituisce un cursore posizionato nell'ultima colonna dell'ultima riga del documento.
bool isValidTextPosition(
int,rigaint); bool isValidTextPosition(colonnaCursor);cursoreRestituisce
truese la posizione del cursore ricade in una posizione di testo valida, cioè se è localizzata all'inizio, nel mezzo o alla fine di una riga valida. Una posizione di testo non è valida se si trova in un surrogato Unicode.Da: KDE 5.0
int document.attribute(
int,rigaint); int document.attribute(colonnaCursor);cursoreRestituisce l'attributo alla posizione del cursore data.
bool document.isAttribute(
int,rigaint,colonnaint); bool document.isAttribute(attributoCursor,cursoreint);attributoRestituisce
truese l'attributo alla posizione del cursore data è uguale aattributo, altrimentifalse.String document.attributeName(
int,rigaint); String document.attributeName(colonnaCursor);cursoreRestituisce il nome dell'attributo in testo leggibile. È uguale al nome
itemDatanei file di evidenziazione della sintassi.bool document.isAttributeName(
int,rigaint,colonnaString); bool document.isAttributeName(nomeCursor,cursoreString);nomeRestituisce
truese il nome dell'attributo a una certa posizione del cursore corrisponde alnome, altrimentifalse.String document.variable(String);chiaveRestituisce il valore della variabile del documento
chiave. Se la variabile non esiste il valore restituito è una stringa vuota.void document.setVariable(
String,chiaveString);valoreImposta il valore della variabile del documento richiesta
chiave.Vedi anche: le variabili nei documenti di Kate.
Da: KDE 4.8
int document.firstVirtualColumn(int);rigaRestituisce la colonna virtuale del primo carattere non di spaziatura nella riga indicata, o
-1se la riga è vuota oppure contiene solo caratteri di spaziatura.int document.lastVirtualColumn(int);rigaRestituisce la colonna virtuale dell'ultimo carattere non di spaziatura nella riga indicata, o
-1se la riga è vuota oppure contiene solo caratteri di spaziatura.int document.toVirtualColumn(
int,rigaint); int document.toVirtualColumn(colonnaCursor); Cursor document.toVirtualCursor(cursoreCursor);cursoreConverte la posizione «reale» del cursore in una virtuale, restituendo un oggetto
intoCursor.int document.fromVirtualColumn(
int,rigaint); int document.fromVirtualColumn(colonna_virtualeCursor); Cursor document.fromVirtualCursor(cursore_virtualeCursor);cursore_virtualeConverte la posizione virtuale data del cursore in una «reale», restituendo un oggetto
intoCursor.Cursor document.anchor(
int,rigaint,colonnaChar); Cursor document.anchor(carattereCursor,cursoreChar);carattereCerca indietro il carattere partendo dal cursore dato. Per esempio, se si passa «(» come carattere, la funzione restituirà la posizione dell'apertura «(». Questo conteggio dei riferimenti, cioè altri «(...)», vengono ignorati.
Cursor document.rfind(
int,rigaint,colonnaString,testoint); Cursor document.rfind(attributo= -1Cursor,cursoreString,testoint);attributo= -1Cerca all'indietro il testo con l'
attributoappropriato. L'attributoviene ignorato se è impostato a-1. Il cursore restituito non è valido se non si trova il testo.int document.defStyleNum(
int,rigaint); int document.defStyleNum(colonnaCursor);cursoreRestituisce lo stile predefinito usato alla posizione data del cursore.
bool document.isCode(
int,rigaint); bool document.isCode(colonnaCursor);cursoreRestituisce
truese l'attributo alla posizione data del cursore non è uguale a tutti i seguenti stili:dsComment,dsString,dsRegionMarker,dsChar,dsOthers.bool document.isComment(
int,rigaint); bool document.isComment(colonnaCursor);cursoreRestituisce
truese l'attributo del carattere alla posizione del cursore data èdsComment, altrimentifalse.bool document.isString(
int,rigaint); bool document.isString(colonnaCursor);cursoreRestituisce
truese l'attributo del carattere alla posizione del cursore data èdsString, altrimentifalse.bool document.isRegionMarker(
int,rigaint); bool document.isRegionMarker(colonnaCursor);cursoreRestituisce
truese l'attributo del carattere alla posizione del cursore data èdsRegionMarker, altrimentifalse.bool document.isChar(
int,rigaint); bool document.isChar(colonnaCursor);cursoreRestituisce
truese l'attributo del carattere alla posizione del cursore data èdsChar, altrimentifalse.bool document.isOthers(
int,rigaint); bool document.isOthers(colonnaCursor);cursoreRestituisce
truese l'attributo del carattere alla posizione del cursore data èdsOthers, altrimentifalse.void document.indent(
Range,intervalloint);modificaFa rientrare tutte le righe nell'
intervallocon lamodificadelle schede o del numero delle volte degli spazitabSize, a seconda delle preferenze dell'utente. Il parametro dimodificapuò essere negativo.
Oltre alle API per documento e vista c'è un'API generale per editor, che fornisce delle funzioni per le funzionalità di script generali per editor.
String editor.clipboardText();
Restituisce il testo che c'è attualmente negli appunti globali.
Da: KDE Frameworks™ 5.50
String editor.clipboardHistory();
L'editor mantiene una cronologia degli appunti che contiene fino a 10 voci di appunti. Questa funzione restituisce tutte le voci che ci sono attualmente nella cronologia degli appunti.
Da: KDE Frameworks™ 5.50
void editor.setClipboardText(String);testoImposta il contenuto degli appunti a
testo. iltestosarà aggiunto alla cronologia degli appunti.Da: KDE Frameworks™ 5.50