# Lavorare con le estensioni

Puoi abilitare le singole estensioni nella finestra di configurazione, che dà anche accesso ad opzioni di configurazione aggiuntive, se richieste dalle estensioni.

## Estensioni dell'applicazione &kate;

Le estensioni di &kate; sono funzioni aggiuntive per l'editor &kate;. Possono aggiungere nuovi menu e nuove scorciatoie, ed estendere le funzionalità di &kate;. Puoi installarne quante ne vuoi, e dall'interno di &kate;: apri la finestra di configurazione di &kate; con Impostazioni Configura Kate..., seleziona Applicazione Estensioni e scegli quelle che vuoi.

Le estensioni per l'applicazione disponibili sono:

- Strumenti esterni: avvia strumenti esterni ed applicazioni

- Navigatore backtrace: vista dello strumento di navigazione dei backtrace C/C++

- Estensione di compilazione: compila o esegui il `make` ed elabora i messaggi d'errore

- Chiudi escludendo/includendo: chiudi un gruppo di documenti in base a un percorso comune, o a un'estensione di file

- Selettore di colore: mostra l'anteprima per i nomi dei colori noti

- Parentesi colorate: parentesi colorate per migliorare la leggibilità

- CTags: cerca definizioni e dichiarazioni con CTags

- Anteprima del documento: esegui l'anteprima del documento nel formato di destinazione

- Selettore di documenti: sfoglia rapidamente i documenti per mezzo della combinazione &Alt;

- Selettore dei file: vista dello strumento Selettore dei file

- Vista Albero dei documenti: visualizza i file aperti in un albero di file

- &gdb;: fornisce una semplice interfaccia a &gdb;

- Estensione di progetto: integrazione con &git; e con altri sistemi di controllo del sorgente

- Replicode - linguaggio costruttivista per IA ed esecuzione

- Client LSP: il client LSP fornisce navigazione e completamento del codice per molti linguaggi

- Cerca e sostituisci: cerca e sostituisci nei documenti, nelle cartelle o nei progetti

- Vista strumento per i frammenti di testo: vista dello strumento che incorpora la gestione dei frammenti

- Macro da tastiera: registra ed esegui le macro da tastiera (cioè una sequenza di azioni da tastiera).

- Estensione SQL: interroga le banche dati SQL

- Visore di simboli estrai e visualizza i simboli di riferimento dal sorgente

- Vista strumento Terminale: usando l'oggetto &konsole; di &kde; hai un terminale pronto all'uso

- Filtro di testo: elabora il testo usando comandi da terminale

- Completamento &XML;: elenca gli elementi, gli attributi, i valori di attributi e le entità &XML; permesse da DTD.

- Validazione &XML;: valida i file &XML; con xmllint

- Esploratore del compilatore: interfaccia allo strumento Esploratore del compilatore

- Formattazione: estensione per la formattazione del codice

## Strumenti esterni

L'estensione Strumenti esterni ti permette di invocare delle applicazioni esterne con dei dati collegati al documento corrente, ad esempio al suo URL, alla sua cartella, al suo testo o alla sua selezione. Una volta abilitati appare, come illustrato di seguito, una pagina di configurazione, che ti consente di modificare o di rimuovere gli strumenti esistenti. Allo stesso modo puoi aggiungere dei nuovi strumenti a tuo piacimento: essi appariranno quindi nel sotto-menu Strumenti esterni del menu Strumenti dell'applicazione.

La pagina di configurazione permette di aggiungere nuovi strumenti esterni facendo clic sul pulsante Aggiungi. In questo caso, un menu a comparsa apparirà sia dove si può aggiungere un nuovo strumento esterno che aggiungere uno strumento esistente da una lista predefinita o aggiungere una nuova categoria per organizzare gli strumenti esterni in categorie. Allo stesso modo, gli strumenti esistenti possono essere modificati sia facendoci doppio clic, sia invocando Modifica..., mentre Rimuovi rimuove gli strumenti selezionati.

### Configurazione degli strumenti esterni

La modifica di uno strumento apre una pagina di configurazione che permette una configurazione particolareggiata dello strumento:

Come si può vedere si possono definire molti dettagli, ovvero:

- `Nome`, il nome dello strumento, che apparirà successivamente nel menu.

  `Icona`, l'icona opzionale che è visibile nel menu.

  `Eseguibile`, l'eseguibile, che include anche il percorso completo se esso non è nella variabile d'ambiente `PATH`.

  `Argomenti`, argomenti facoltativi da passare all'eseguibile.

  `Ingresso`, un ingresso facoltativo che viene passato al processo tramite stdin.

  `Cartella di lavoro`, la cartella di lavoro dello strumento in cui verrà avviato lo strumento. Se vuoto, verrà impostata al percorso del documento corrente.

  `Tipi MIME`, se impostato, fa in modo che lo strumento sia attivo solo se corrisponde con quello del documento corrente.

  `Salva`, quando invocato, non salva niente, oppure il documento corrente o tutti i documenti.

  `Attivazione`, i criteri di attivazione per eseguire lo strumento. Esso influenzerà il documento attivo corrente, e verrà eseguito solamente se il suo tipo MIME corrisponde a quello dello strumento esterno.

  Sono disponibili i seguenti criteri di attivazione:

- `Nessuno`: è il predefinito, significa che lo strumento non ha criteri di attivazione.

  `Prima di salvare`: questo criterio di attivazione eseguirà lo strumento appena prima che il documento venga salvato.

  `Dopo aver salvato`: questo strumento di attivazione eseguirà lo strumento dopo che il documento è stato salvato.

`Ricarica il documento corrente dopo l'esecuzione`: è utile quando il file corrente viene modificato sul disco.

`Risultato`: il risultato definisce l'obiettivo di stdout. È impostato o a `Ignorato`, o a `Inserisci alla posizione del cursore`, o a `Sostituisci il testo selezionato`, o a `Sostituisci il documento corrente`, o a `Aggiungi al documento corrente`, o a `Inserisci in un nuovo documento`, o a `Copia negli appunti`, o a `Visualizza nel pannello`.

`Editor dei comandi`, comando facoltativo che può essere usato per invocare lo strumento esterno dalla riga di comando integrata.

Il pulsante Valori predefiniti è visibile solo per gli strumenti che vengono forniti con Kate. Se ci si fa clic, tutte le impostazioni dello strumento vengono riportate al loro valore predefinito (o di fabbrica).

### Espansione delle variabili

Alcuni campi modificabili, quali Eseguibile, Argomenti, Ingresso e Cartella di lavoro supportano delle variabili che verranno espanse quando lo strumento verrà invocato: esse vengono indicate dall'icona {} che appare quando uno di questi campi di inserimento testuale ha il fuoco (vedi il cerchio rosso):

Se si passa col mouse sopra ad uno di questi campi di inserimento testuale viene anche mostrato un suggerimento col testo corrente espanso. Inoltre, facendo clic sull'azione {} si aprirà una finestra che elenca tutte le variabili disponibili:

Questa funzionalità fornisce una gran flessibilità quando si definisce uno strumento esterno, dal momento che tutte le variabili nella forma `%{...}` vengono espanse quando lo strumento viene invocato. Ci sono due tipi di variabili supportate:

- `%{variable-name}`

- `%{variable-name:<value>}`

. La prima forma, `%{variable-name}`, sostituisce semplicemente la variabile col suo contenuto. Per esempio, la variabile `%{Document:FileName}` viene sostituita dal nome del file del documento corrente senza il percorso. La seconda forma, `%{variable-name:<value>}`, prende `<value>` come contenuto, per esempio può essere usata per espandere una variabile d'ambiente con `%{ENV:HOME}`, oppure si può ottenere la data corrente nel formato preferito, come `%{Date:yyyy-MM-dd}`.

Le variabili supportate includono:

- `Document:FileBaseName`: nome di base di file, senza percorso e suffisso, del documento corrente.

  `Document:FileExtension`: estensione del file del documento corrente.

  `Document:FileName`: nome del file senza percorso del documento corrente.

  `Document:FilePath`: percorso completo del documento corrente, incluso il nome del file.

  `Document:Text`: contenuto del documento corrente.

  `Document:Path`: percorso completo del documento corrente, senza il nome del file.

  `Document:NativeFilePath`: percorso completo del documento corrente, incluso il nome del file, con il separatore di percorso nativo (la barra inversa in Windows).

  `Document:NativePath`: percorso completo del documento corrente, senza il nome del file, con il separatore di percorso nativo (la barra inversa in Windows).

  `Document:Cursor:Line`: numero di riga della posizione del cursore di testo nel documento corrente (inizia da 0).

  `Document:Cursor:Column`: numero di colonna della posizione del cursore di testo nel documento corrente (inizia da 0).

  `Document:Cursor:XPos`: componente X della posizione del cursore nelle coordinate globali dello schermo.

  `Document:Cursor:YPos`: componente Y della posizione del cursore nelle coordinate globali dello schermo.

  `Document:Selection:Text`: selezione di testo del documento corrente.

  `Document:Selection:StartLine`: riga iniziale della selezione di testo del documento corrente.

  `Document:Selection:StartColumn`: colonna iniziale della selezione di testo del documento corrente.

  `Document:Selection:EndLine`: riga finale della selezione di testo del documento corrente.

  `Document:Selection:EndColumn`: colonna finale della selezione di testo del documento corrente.

  `Document:RowCount`: numero di righe del documento corrente.

  `Document:Variable:<variable>`: espande variabili del documento arbitrarie.

  `Date:Locale`: la data attuale nel formato della localizzazione corrente.

  `Date:ISO`: la data attuale (ISO).

  `Date:<value>`: la data attuale (QDate formatstring).

  `Time:Locale`: l'ora attuale nel formato della localizzazione corrente.

  `Time:ISO`: l'ora attuale (ISO).

  `Time:<value>`: l'ora attuale (QTime formatstring).

  `ENV:<value>`: accesso alle variabili d'ambiente.

  `JS:<expression>`: valuta una semplice espressione JavaScript.

  `PercentEncoded:<text>`: testo codificato in percentuale.

  `UUID`: genera un nuovo UUID.

### Elenco degli strumenti predefiniti

Molti strumenti sono compresi per impostazione predefinita, ad ogni modo, qualora ne avessi altri, contattaci su kwrite-devel@kde.org affinché possiamo aggiungerli alla lista. Tutti gli strumenti predefiniti sono visibili nella vista ad elenco per impostazione predefinita, ma essi possono essere modificati a proprio piacimento, inclusa la categoria, oppure essere anche eliminati. Gli strumenti eliminati possono essere aggiunti nuovamente facendo clic sul pulsante Aggiungi nella pagina di configurazione, come descritto qui sopra.

### git-cola

git-cola è un client grafico che ti permette di allestire e di depositare facilmente le modifiche. Se installato è disponibile anche da riga di comando, digitando `git-cola`

- `Nome`: git-cola

  `Icona`: git-cola

  `Eseguibile`: git-cola

  `Argomenti`: -r %{Document:Path}

  `Editor dei comandi`: git-cola

### gitk

Anche gitk è un client di git, che permette di visualizzare bene la cronologia di git.

- `Nome`: gitk

  `Icona`: git-gui

  `Eseguibile`: gitk

  `Cartella di lavoro`: %{Document:Path}

  `Editor dei comandi`: gitk

### git blame

Avvia git blame per seguire facilmente le modifiche di git nel file corrente.

- `Nome`: git blame

  `Eseguibile`: git

  `Argomenti`: gui blame %{Document:FileName}

  `Salva`: Documento corrente

  `Cartella di lavoro`: %{Document:Path}

  `Editor dei comandi`: git-blame

### Esegui script di shell

Avvia una console esterna nella quale viene eseguito il documento corrente. Lo script deve indicare l'interprete nella prima riga attraverso una riga shebang tipo `#!/percorso/per/l/interprete`.

- `Nome`: esegui script di shell

  `Icona`: system-run

  `Eseguibile`: konsole

  `Argomenti`: -e sh -c "cd %{Document:Path} && pwd && chmod -vc a+x %{Document:FileName} && ./%{Document:FileName} ; echo Premi un tasto per continuare. && read -n 1"

  `Salva`: Documento corrente

  `Cartella di lavoro`: %{Document:Path}

  `Editor dei comandi`: run-script

### Cerca in Google il testo selezionato

Cerca in Google il testo selezionato.

- `Nome`: cerca in Google il testo selezionato

  `Icona`: globe

  `Eseguibile`: xdg-open

  `Argomenti`: "https://www.google.com/search?q=%{Document:Selection:Text}"

  `Editor dei comandi`: google

### Inserisci UUID

Inserisci un nuovo UUID ogni volta che questa azione viene invocata.

- `Nome`: inserisci UUID

  `Eseguibile`: echo

  `Argomenti`: %{UUID}

  `Output`: inserisci alla posizione del cursore

  `Editor dei comandi`: uuid

### Esegui Clang Format su un file completo

Esegui clang-format sul file corrente del disco. Il documento viene poi ricaricato.

- `Nome`: esegui Clang Format su un file completo

  `Eseguibile`: clang-format

  `Argomenti`: -i %{Document:FileName}

  `Cartella di lavoro`: %{Document:Path}

  `Salva`: Documento corrente

  `Ricarica`: Sì

  `Editor dei comandi`: clang-format-file

### Esegui Clang Format sul testo selezionato

Esegui Clang Format solo sul testo selezionato nel documento corrente.

- `Nome`: esegui Clang Format sul testo selezionato

  `Eseguibile`: clang-format

  `Argomenti`: -assume-nomeFile: %{Document:FileName}

  `Cartella di lavoro`: %{Document:Path}

  `Ingresso`: %{Document:Selection:Text}

  `Output`: sostituisci il testo selezionato

  `Editor dei comandi`: clang-format-selection

### Anteprima Qt Quick 2 (qmlscene)

Mostra l'anteprima del file QML corrente in qmlscene.

- `Nome`: anteprima Qt Quick 2 (qmlscene)

  `Eseguibile`: qmlscene

  `Argomenti`: %{Document:FileName}

  `Salva`: Documento corrente

  `Cartella di lavoro`: %{Document:Path}

  `Editor dei comandi`: qml-preview

### File completo in formato JSON

Formatta l'intero file JSON.

- `Nome`: file completo in formato JSON

  `Icona`: application-json

  `Eseguibile`: jq

  `Argomenti`: %{Document:FileName}

  `Salva`: Documento corrente

  `Cartella di lavoro`: %{Document:Path}

  `Output`: sostituisci il documento corrente

  `Editor dei comandi`: json-format-file

### File completo in formato XML

Formatta l'intero file XML.

- `Nome`: file completo in formato JSON

  `Icona`: application-xml

  `Eseguibile`: xmllint

  `Argomenti`: --format %{Document:FileName}

  `Salva`: Documento corrente

  `Cartella di lavoro`: %{Document:Path}

  `Output`: sostituisci il documento corrente

  `Editor dei comandi`: xml-format-file

## Estensione per il Navigatore backtrace

### Usare l'estensione Navigatore backtrace

Questa estensione è destinata più agli sviluppatori che agli utenti: mostra in uno strumento visivo di &kate; il backtrace consegnato da gdb in una vista a elenco: facendo clic su di un elemento si apre il file selezionato al numero di riga corretto. Funziona per i backtrace generati sulla tua macchina, ma funzionerà anche sui backtrace di altre persone, &ie; verrà trovato `/home/dummy/qt-copy/…/qwidget.cpp` anche su altre macchine. Affinché questo funzioni devi indicizzare le cartelle in cui è localizzato il codice sorgente.

A volte ci sono più file con lo stesso nome, ⪚

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

Per selezionare quello giusto l'estensione prende le ultime due parti dell'&URL;, che in questo caso sarebbero

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

E quindi di solito l'estensione trova quello giusto.

L'indicizzazione di master e di altri rami porterà ovviamente ad un conflitto.

### Configurazione

Aggiungi le cartelle che contengono il codice sorgente nella pagina di configurazione.

Navigatore backtrace
Configura i percorsi nella vista dello strumento di navigazione Backtrace

Un clic su OK fa iniziare l'indicizzazione; apri lo strumento visivo Navigatore Backtrace quando questa finisce.

Ora puoi caricare un backtrace dagli appunti (⪚, quando fai clic su Copia negli appunti in &drkonqi;), o da un file.

## Estensione di compilazione

### Introduzione

L'estensione di compilazione ti permette di eseguire azioni come la generazione, la pulizia e la compilazione di un progetto.

### Usare l'estensione di compilazione

L'estensione di compilazione aggiunge la vista dello strumento Output compilazione in basso, ed un menu Compila nella barra dei menu. La vista dello strumento può essere usata per configurare le impostazioni degli obiettivi della compilazione, mentre il menu può essere usato per effettuare le azioni di generazione, di pulizia e di compilazione.

Output della compilazione

La vista dello strumento Output compilazione ha due schede:

- Impostazioni obiettivo

- Output

#### Scheda delle impostazioni degli obiettivi

La scheda delle impostazioni dell'obiettivo può essere usata per configurare i vari obiettivi della compilazione e per definire gli insiemi degli obiettivi.

Per cambiare i nomi o i comandi fai doppio clic sulle voci nella tabella e usa la casella a tendina per selezionare l'insieme degli obiettivi attivi; se invece spunti la casella davanti ad un obiettivo, allora lo definisci come predefinito.

Un nuovo insieme di obiettivi contiene molte opzioni di configurazione:

Cartella di lavoro

- Qui puoi impostare il percorso del progetto; lascialo vuoto se vuoi usare la cartella in cui si trova il documento corrente.

Compila

- Questa opzione ti permette di definire il comando di compilazione; l'impostazione predefinita è `make`.

Pulisci

- Questa opzione ti permette di definire il comando di pulizia; l'impostazione predefinita è `make clean`.

Configurazione

- Questa opzione permette di definire il comando di configurazione; l'impostazione predefinita è `cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=/usr/local ../`.

In alto questa estensione ha una barra degli strumenti, con i seguenti pulsanti:

- Compila l'obiettivo selezionato
- Aggiungi un nuovo obiettivo di compilazione
- Crea un nuovo insieme di obiettivi
- Copia un comando o un insieme di obiettivi
- Elimina il comando o l'insieme degli obiettivi attuali

#### Scheda dell'output

La scheda Output mostra l'output della console generato dall'ultimo comando.

Usa il cursore presente nella parte superiore per mostrare o nascondere alcune categorie di output:

Output compilazione completo, Output compilazione ottimizzato, Errori ed avvisi oppure Solo errori

Ogni riga contiene un messaggio e, se disponibili, il nome del file e il numero di riga. Facendo clic sull'errore o sull'avviso vieni portato al file appropriato, e il cursore si trova già sulla riga corrispondente.

Per andare all'errore precedente premi &Alt;&Shift;&Left;, mentre per andare al successivo premi &Alt;&Shift;&Right;.

### Struttura del menu

Compila Seleziona obiettivo...

- Seleziona da un elenco di obiettivi configurato dall'utente.

Compila Compila l'obiettivo predefinito

- Compila l'obiettivo definito come predefinito nell'insieme degli obiettivi attivi.

Compila Compila l'obiettivo precedente

- Passa al precedente obiettivo configurato dall'utente.

Compila Ferma

- Ferma la compilazione di un obiettivo.

&Ctrl;&Alt;&Left; Compila Errore precedente

- Sposta il cursore sull'errore precedente nel documento.

&Ctrl;&Alt;&Right; Compila Errore successivo

- Sposta il cursore sull'errore successivo nel documento.

### Ringraziamenti e riconoscimenti

L'estensione di compilazione di &kate; è stata scritta da Kåre Särs.

Ringraziamenti speciali vanno alla partecipante del Google Code-In 2011, Salma Sultana, per aver scritto la gran parte di questa sezione.

## Estensione di chiusura per gruppo

### Introduzione

Questa estensione ti permette di chiudere un gruppo di documenti in base alla loro estensione e al loro percorso.

### Usare l'estensione di chiusura per gruppo

Assumendo che tu abbia questi documenti aperti in &kate;:

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

Allora hai le seguenti opzioni per chiudere i documenti, come visualizzato nella schermata successiva:

Chiudi tranne

Usa la casella nell'ultima voce della lista per abilitare o disabilitare una finestra di conferma. Le opzioni selezionate saranno applicate ad entrambe le azioni di chiusura.

### Struttura del menu

File Chiudi tranne

- Chiude tutti i documenti tranne quelli con il percorso o l'estensione selezionati dal sotto-menu.

File Chiudi simili

- Chiude tutti i documenti con il percorso o l'estensione selezionati nel sotto-menu.

## Estensione Selettore di colore

### Introduzione

Questa estensione aggiunge nelle righe del testo un'anteprima colore/selettore (⪚, `#FFFFFF`, `bianco`).

Per caricare questa estensione apri la finestra di configurazione di &kate; in Impostazioni Configura &kate;..., seleziona quindi Selettore di colore e chiudi la finestra.

### Configurazione

Nella pagina delle impostazioni del Selettore di colore nella configurazione di &kate; è possibile configurare le seguenti impostazioni del comportamento dell'estensione.

Mostra l'anteprima per i nomi dei colori noti

- Se mostrare il selettore di colore per i nomi dei colori noti (⪚, `azzurro`). Vedi questa pagina per l'elenco dei colori.

Metti l'anteprima dopo il colore del testo

- Se mettere l'anteprima nelle righe del testo dopo il colore del testo.

Corrispondenza coi colori esadecimali

- Qui puoi scegliere le migliori opzioni per l'abbinamento dei colori utilizzato nel tuo codice.

## Parentesi colorate

### Introduzione

L'estensione parentesi colorate colora le coppie di parentesi corrispondenti con dei colori diversi, in modo da migliorare la leggibilità. Tuttavia, non tutte le parentesi vengono colorate: ad esempio, una la cui apertura o chiusura corrispondente non è visibile verrà ignorata. Allo stesso modo, l'unica coppia di parentesi su una riga non verrà colorata.

### Configurazione

L'estensione non fornisce nessuna configurazione.

## Estensione CTags

### Introduzione

CTags genera un file indice (o tag) di oggetti del linguaggio trovati nei file sorgente, che permette a queste voci di essere velocemente e facilmente localizzate da &kate; per mezzo di questa estensione.

Un tag è un oggetto del linguaggio per il quale è disponibile una voce indice (o in alternativa la voce indice creata per quell'oggetto).

La generazione di tag è supportata per questi linguaggi di programmazione.

### Configurazione

L'estensione CTags usa due diversi file di banca dati per l'indice.

Nella pagina delle impostazioni di CTags nella configurazione di &kate; puoi aggiungere o rimuovere le cartelle contenenti il codice sorgente e rigenerare la banca dati comune di CTags.

#### Indice comune

Impostazioni di CTags
Configurare la banca dati globale di CTags

In basso alla pagina delle impostazioni puoi adattare il comando CTags.

Per ulteriori informazioni su tutte le opzioni disponibili leggi le pagine man di CTags, che sono presenti nel &khelpcenter;; puoi anche digitare l'&URL; man:/ctags direttamente in &konqueror;

L'indicizzazione inizia facendo clic su Aggiorna; quando finisce chiudi la finestra.

#### Sessione di indicizzazione

Per configurare la sessione di indicizzazione apri la vista CTags.

Fonti indicizzazione

- In questa scheda puoi aggiungere o rimuovere le cartelle contenenti il codice sorgente e rigenerare manualmente la banca dati specifica per la sessione di CTags.

Banca dati

- Impostazioni della banca dati
  Configurare la banca dati per la sessione di CTags

  Seleziona un altro file di banca dati di CTags, configura i comandi di CTags oppure ripristina quelli predefiniti.

### Utilizzare l'estensione CTags

Metti il puntatore del mouse sugli oggetti del linguaggio come le funzioni, i simboli &etc; a cui sei interessato e seleziona una delle azioni dal menu CTags: salterai alla riga del file dove l'oggetto è stato definito o dichiarato.

Le azioni del menu CTags non hanno nessuna scorciatoia predefinita; per configurarle usa l'editor di scorciatoie da tastiera.

In alternativa puoi usare il campo di ricerca nella scheda Ricerca della vista CTags.

Digitando dei caratteri nel campo di ricerca, questa inizierà: saranno visualizzati i nomi corrispondenti degli oggetti del linguaggio, come funzioni, classi, simboli &etc;, insieme al tipo ed al nome del file.

Seleziona una voce nella lista per saltare nel file sorgente alla riga corrispondente.

### Struttura del menu

CTags Torna indietro di un passo

- Torna indietro all'ultimo tag visitato nella cronologia.

CTags Cerca testo corrente

- Apre la scheda Ricerca della vista CTags e visualizza tutti gli oggetti del linguaggio corrispondenti all'attuale selezione di testo nella lista.

CTags Vai alla dichiarazione

- Se il cursore è su una definizione di oggetto allora il documento contenente la dichiarazione dello stesso si aprirà, se necessario, e sarà attivata la sua vista, con il cursore posizionato all'inizio della dichiarazione.

CTags Vai alla definizione

- Se il cursore è su una dichiarazione di oggetto, questa aprirà il documento contenente la dichiarazione dello stesso, se necessario, e attiverà la sua vista, con il cursore all'inizio della definizione.

## Estensione per l'anteprima del documento

### Introduzione

L'estensione abilita un'anteprima in diretta del documento di testo attualmente modificato; questo avviene nella barra laterale nel suo formato finale. Quindi il risultato sarà immediatamente visibile vicino al testo sorgente quando, ad esempio, modifichi un testo &Markdown; o un'immagine &SVG;.

Per la visualizzazione viene utilizzata l'estensione &kparts; che è attualmente selezionata come preferita per il tipo &MIME; del documento. L'anteprima non è quindi possibile se non c'è nessuna estensione &kparts; per quel tipo.

Per cambiare l'estensione preferita apri il modulo Associazioni dei file nelle &systemsettings; e modifica l'Ordine di preferenza dei servizi nella scheda Integrazione.

### Alcune estensioni &kparts; disponibili

Tipo &MIME; | Estensione &kparts;
Testo &Markdown; | KMarkdownWebViewPart oppure OkularPart
Immagine &SVG; | SVGPart
File UI di &Qt; | KUIViewerPart
File grafi &DOT; | KGraphviewerPart

### Struttura del menu

Visualizza Viste degli strumenti Mostra anteprima

- Mostra o nasconde in una barra laterale l'anteprima del documento di &kate;.

### Interfaccia

I pulsanti nella parte alta della finestra dell'anteprima forniscono queste azioni:

- Blocca l'anteprima su un certo documento. Selezionando questa opzione ti assicuri che, se il fuoco passa ad un altro documento nella stessa finestra di &kate;, l'anteprima non seguirà quel documento ma rimarrà invece sul precedente.

- Abilita o disabilita l'aggiornamento del contenuto dell'anteprima del documento corrente

- Aggiorna manualmente il contenuto dell'anteprima del documento corrente

- Un menu a discesa con delle azioni dall'estensione &kparts;

## Estensione per il selettore dei documenti

### Struttura del menu

&Ctrl; Visualizza Ultime viste usate

&Ctrl;&Shift; Visualizza Ultime viste usate (Opposto)

- Apre una lista con i documenti visualizzati di recente:

  Documenti visualizzati di recente

  Tieni il tasto &Ctrl; premuto ed usa per scorrere avanti nell'elenco; premi anche il tasto &Shift; per invertire la direzione.

  Tieni premuta la scorciatoia &Ctrl; e potrai usare i tasti &Up;, &Down;, &Home; o &End; per spostarti nella lista. Se invece premi più volte un carattere, allora passerai su tutte le voci della lista che cominciano con quella lettera; rilasciando la scorciatoia andrai al documento che hai selezionato.

## Selettore dei file

Il selettore dei file è un visore di cartelle, che ti permette di aprire i file da una cartella visualizzata nel riquadro attuale.

### Struttura del menu

Visualizza Viste degli strumenti Mostra il selettore dei file

- Mostra o nasconde il selettore dei file di &kate;.

### Interfaccia

Dall'alto al basso, il selettore dei file è composto dai seguenti elementi:

Una barra degli strumenti

- Questa contiene i pulsanti standard per la selezione:

  Indietro

- Provoca l'esecuzione del comando `cd` nella cartella precedente nella cronologia. Questo pulsante è disabilitato se la cartella in questione non esiste.

Avanti

- Provoca l'esecuzione del comando `cd` nella cartella successiva nella cronologia. Questo pulsante è disabilitato se la cartella in questione non esiste.

Segnalibri

- Apre un sotto-menu da cui puoi modificare o aggiungere i segnalibri, e anche aggiungere una nuova cartella di segnalibri.

Cartella del documento attuale

- Questo pulsante fa eseguire alla vista delle cartelle il comando `cd` nella posizione in cui è contenuto il documento attualmente attivo, se possibile. Questo pulsante è disabilitato se il documento attivo è un nuovo file che non è ancora stato salvato, oppure se la cartella in cui risiede non è individuabile.

Opzioni

- Vista breve

- Mostra solo i nomi dei file.

Vista dettagliata

- Visualizza il Nome, la Data e la Dimensione dei file.

Vista ad albero

- Come la vista breve, ma le cartelle possono essere espanse per visualizzarne i contenuti.

Vista ad albero dettagliata

- Anche questa permette di espandere le cartelle, ma mostra le colonne aggiuntive disponibili nella vista dettagliata.

Mostra i file nascosti

- Mostra i file che sono normalmente nascosti dal &OS;.

Sincronizza automaticamente con il documento attuale

- Quando questa opzione è abilitata il selettore dei file eseguirà automaticamente il comando `cd` nella cartella del documento attualmente aperto nell'area di modifica ogni volta che cambia.

Una voce per la posizione

- Questo mostra il percorso di navigazione della cartella attualmente aperta, come in &dolphin;: puoi fare clic su qualsiasi cartella per sfogliarla, o fare clic su una delle frecce alla sinistra di una cartella per selezionare qualsiasi cartella sottostante. Puoi anche effettuare selezioni dall'elenco delle tue Risorse facendo clic sull'icona in fondo a sinistra nel percorso di navigazione, che mostra un'icona rappresentante la Risorsa attuale.

  Puoi anche fare clic alla destra del percorso di navigazione per trasformarlo in una casella di testo; qui puoi digitare il percorso di una cartella da sfogliare. La voce &URL; mantiene una lista di tutti i percorsi precedentemente inseriti: per sceglierne uno usa il pulsante con la freccia alla sua destra.

  Il campo &URL; ha il completamento automatico dei nomi delle cartelle, che può essere impostato utilizzando il &RMB; sul campo di inserimento.

Una vista delle cartelle

- Questa è una vista standard delle cartelle di &kde;.

Una voce di filtro

- La voce di filtro ti permette di definire un filtro per i file visualizzati nella vista delle cartelle. Il filtro usa gli schemi standard; questi devono essere separati da spazi, per esempio: `*.cpp *.h *.moc`.

  Inserisci un asterisco singolo `*` per visualizzare tutti i file.

  La voce di filtro salva gli ultimi dieci filtri inseriti durante la sessione: per usarne uno fai clic sul pulsante con la freccia a destra del campo di inserimento, e seleziona quello che desideri. Puoi disattivare il filtro premendo il pulsante Pulisci il testo, che si trova alla sinistra del pulsante di auto-completamento a freccia.

### Configurazione

Questa estensione può essere configurata nella pagina del Selettore dei file della configurazione di &kate;.

Barra degli strumenti

- Configura i pulsanti della barra del selettore dei file spostando quelli che desideri nell'elenco Azioni selezionate, e ordinali con i pulsanti a freccia di fianco all'elenco.

## L'elenco dei documenti

### Introduzione

L'elenco dei documenti mostra la lista di tutti i documenti attualmente aperti in &kate;. Per indicarne lo stato, i file modificati avranno una piccola icona a forma di dischetto alla loro sinistra.

In alto all'elenco dei documenti c'è una barra degli strumenti, che ha i seguenti pulsanti:

- Crea un nuovo documento
- Apre un documento esistente
- Il documento precedente
- Il documento successivo
- Salva il documento attuale
- Salva il documento attuale con un nuovo nome

L'elenco dei documenti compare come impostazione predefinita nella Modalità ad albero, che mostra la struttura delle cartelle attorno a tutti i documenti aperti. È disponibile anche la Modalità a lista, che mostra invece un semplice elenco dei documenti aperti. Puoi cambiare la modalità facendo clic destro sull'elenco e selezionando la Modalità di visualizzazione dal menu.

Se due o più file (che si trovano in cartelle diverse) hanno lo stesso nome e sono aperti nella Modalità elenco, al nome del secondo file e dei successivi verrà anteposto un (2), e così via. Il suggerimento del file ti mostrerà comunque il suo nome con il percorso completo, permettendoti così di scegliere quello che desideri.

Fai clic sul nome del documento nella lista per visualizzare un documento nel riquadro attivo.

Il menu contestuale ha alcune azioni in comune con il menu File.

Ci sono anche le azioni proprie di un gestore di file, che servono per rinominare o per eliminare i file; con Copia posizione potrai copiare negli appunti l'intero percorso del documento.

Facendo clic con il tasto destro sulla lista, e selezionando una voce dal menu Ordina per, potrai ordinare l'elenco in diversi modi. Le opzioni sono:

Nome documento

- Elenca i documenti alfabeticamente per nome.

Percorso documenti

- Elenca i documenti alfabeticamente in base al loro percorso.

Ordine di apertura

- Elenca i documenti in base all'ordine di apertura.

L'elenco dei documenti visualizza, come impostazione predefinita, la cronologia, ombreggiando il colore dello sfondo dei documenti più recenti: se il documento viene modificato gli viene miscelato un altro colore. I documenti più recenti hanno colori più vivi, quindi potrai trovare facilmente quelli su cui stai lavorando. Questa funzionalità può essere disabilitata dalla pagina Documenti del pannello di configurazione.

La posizione predefinita dell'elenco dei documenti nella finestra di &kate; è alla sinistra dell'area dell'editor.

### Struttura del menu

&Alt;&Up; Visualizza Documento precedente

- Apre il documento visualizzato sopra il documento attualmente aperto nell'elenco dei documenti.

&Alt;&Down; Visualizza Documento successivo

- Apre il documento visualizzato sotto il documento attualmente aperto nell'elenco dei documenti.

Visualizza Mostra attivo

- Mostra il documento attualmente aperto nell'elenco dei documenti.

### Configurazione

Sfumature di sfondo

- Questa sezione ti permette di abilitare o disabilitare la visualizzazione delle sfumature dello sfondo nelle tue attività recenti, e, se abilitata, di scegliere quali colori usare.

Ordina per

- Imposta il tipo di ordinamento da dare ai documenti; può anche essere impostato con il menu che appare facendo clic con il &RMB; nell'elenco dei documenti.

Modalità di visualizzazione

- Ci sono due opzioni che influenzano la visualizzazione della vista dei documenti: l'opzione Vista ad albero li visualizzerà in un albero, sotto le cartelle in cui si trovano, mentre l'opzione Vista a elenco li visualizzerà come un semplice elenco.

Mostra il percorso completo

- Quando la vista ad albero e questa opzione sono abilitate, le voci delle cartelle visualizzate nella vista dei documenti mostreranno il percorso completo della cartella, oltre al nome. Non ha effetto nella vista a elenco.

Mostra la barra degli strumenti

- Quando sono abilitate Vista ad albero e questa opzione, sull'elenco dei documenti viene visualizzata una barra degli strumenti con azioni come Salva. Deselezionala se la barra degli strumenti dovrebbe invece essere nascosta.

Mostra il pulsante Chiudi

- Se questa opzione è abilitata, &kate; al passaggio col mouse mostrerà un pulsante di chiusura per i documenti aperti.

## Estensione per &gdb;

### Introduzione

L'estensione per &gdb; di &kate; fornisce una semplice interfaccia al popolare debugger del progetto &GNU;.

Una precedente esperienza con &gdb; è caldamente raccomandata; visita il sito Web di &gdb; per maggiori informazioni sul suo uso.

Puoi abilitare l'estensione per &gdb; nella sezione delle estensioni della configurazione di &kate;.

Affinché l'estensione funzioni correttamente devi avere un file sorgente (di un qualsiasi tipo supportato da &gdb;), ed un eseguibile.

Se compili usando &gcc; o `g++`, potresti aver bisogno di usare l'argomento da riga di comando ``-ggdb``.

Fatte queste preparazioni apri il file sorgente in &kate;, inserisci il percorso all'eseguibile nella scheda Impostazioni della vista dello strumento Vista di debug e seleziona dal menu Debug Avvia il debug per cominciare.

### Menu e struttura della barra degli strumenti

Tutte queste opzioni sono disponibili nei menu di &kate;, e molte sono disponibili anche nella barra degli strumenti di debug.

Visualizza Viste degli strumenti Mostra Vista di debug

- Mostra una vista contenente l'output di &gdb;, la riga di comando di &gdb; usata, ed altre impostazioni.

Visualizza Viste degli strumenti Mostra locali e pila

- Mostra un elenco di tutte le variabili attualmente in memoria, i loro valori ed un backtrace di &gdb;.

Debug Obiettivi

- Un sotto-menu contenente un elenco di obiettivi (eseguibili).

Debug Avvia il debug

- Avvia &gdb; con un obiettivo.

Debug Termina / interrompi il debug

- Interrompe &gdb;.

Debug Riavvia il debug

- Riavvia &gdb;.

Debug Commuta punto di interruzione / interrompi

- Imposta un punto di interruzione alla posizione attuale del cursore.

Debug Entra

- Esegui l'istruzione attuale (sarà effettuato il debug della chiamata a funzione).

Debug Passa oltre

- Esegui l'istruzione attuale (non sarà effettuato il debug della chiamata a funzione).

Debug Esci

- Riprende l'esecuzione fino alla conclusione del programma in esecuzione.

Debug Sposta contatore dei programmi

- Sposta contatore dei programmi (prossima esecuzione).

Debug Esegui fino al cursore

- Esegue il programma fino a raggiungere l'attuale posizione del cursore.

Debug Continua

- Ignora qualsiasi punto di interruzione ed esegue il programma fino alla sua conclusione (corretta o meno).

Debug Stampa valore

- Stampa il valore della variabile attualmente indicata dal cursore.

Impostazioni Barre mostrate Estensione &gdb;

- Mostra la barra degli strumenti di debug.

### Vista di debug

La vista dello strumento Vista di debug è composta da diverse schede:

Uscita di &gdb;

- Contiene l'uscita di &gdb; ed una riga di comando per &gdb;.

  La scheda Uscita La scheda Uscita.

  La scheda Uscita mostra il risultato generato sulla console da una sessione di debug.

Impostazioni

- Eseguibile

- Percorso dell'obiettivo (l'eseguibile) su cui eseguire il debug.

Cartella di lavoro

- La cartella di lavoro attuale fornita all'obiettivo.

Argomenti

- Argomenti passati al programma.

Mantieni attivazione

- Mantiene attiva la riga di comando di &gdb;.

Ridireziona I/O

- Apre una nuova scheda I/O nella Vista di debug, dove puoi vedere l'uscita ed inserire gli ingressi al programma in esecuzione.

La finestra delle impostazioni La finestra delle impostazioni

La finestra Impostazioni, che mostra la configurazione di una sessione di debug.

I/O

- Contiene un'area che mostra l'uscita del programma attuale, ed una riga di comando dalla quale puoi passare degli ingressi.

  La scheda I/O La scheda I/O.

  La scheda I/O, che mostra l'uscita di un semplice programma di prova.

### Pila di chiamate e Locali

La vista dello strumento Pila delle chiamate contiene un elenco di backtrace formattati restituiti da &gdb;.

La vista dello strumento Pila delle chiamate di &gdb; La vista dello strumento Pila delle chiamate.

La vista dello strumento Pila delle chiamate dell'estensione &gdb;.

La vista dello strumento Locali mostra un elenco di tutte le variabili attualmente in memoria del programma, ed i loro valori corrispondenti.

La vista dello strumento Locali di &gdb; La vista dello strumento Locali.

La vista dello strumento Locali dell'estensione &gdb;.

### Ringraziamenti e riconoscimenti

Ringraziamenti speciali vanno al partecipante del Google Code-In 2011, Martin Gergov, per aver scritto la maggior parte di questa sezione.

## Estensione di progetto

### Introduzione

L'idea di base dell'estensione di progetto è quella di avere una lista strutturata di file che appartengono al progetto, con le seguenti proprietà:

1. Fornire una vista strutturata dei file

2. Rendere semplice e molto veloce l'apertura ed il passaggio tra i vari progetti

3. Supportare la ricerca e la sostituzione nel progetto

4. Fornire un semplice completamento automatico

5. Rendere semplice l'apertura rapida dei file del progetto

6. Supportare la compilazione dei progetti

### Mostrare una vista strutturata dei file

Apri un file di un progetto una volta che l'estensione di progetto è caricata nella pagina di configurazione di &kate;: ti apparirà una barra laterale elencante tutti i progetti, così come i loro file, in questo modo:

Vista di progetto

Come puoi vedere, Kate è il progetto attualmente attivo, ed il suo contenuto è elencato nella vista ad albero; facendo clic sui file nella vista, questi si apriranno nell'editor. Viene inoltre fornito un menu contestuale con il quale puoi aprire i file con altre applicazioni, ad esempio i file `.ui` con Qt Designer.

Puoi filtrare le voci: digita una parte del nome del file che stai cercando nella barra di ricerca che è in fondo alla lista.

### Passaggio ad un altro progetto

L'idea è che non devi mai aprire un progetto manualmente, questo non è affatto supportato. Quindi, quello che succede quando apri un file è che l'estensione di progetto scansiona la sua cartella e quelle superiori alla ricerca di un file `.kateproject`: se lo trova, il progetto viene caricato automaticamente.

Inoltre l'estensione di progetto cambierà automaticamente l'attuale progetto se apri con &kate; un documento che appartiene ad un altro progetto: in questo modo il progetto pertinente sarà attivo sempre. Naturalmente puoi anche cambiare il progetto attualmente attivo usando la casella combinata.

### Ricerca e sostituzione nei progetti

&kate; dispone di un'estensione di ricerca e sostituzione, che si trova nella barra laterale in basso: se c'è un progetto caricato apri la barra laterale Cerca e Sostituisci e passa alla modalità di ricerca e sostituzione nel progetto attuale:

Ricerca nei progetti

### Completamento automatico semplice

Grazie alla conoscenza di tutti i file che appartengono ad un progetto, l'estensione di progetto fornisce un semplice servizio di auto-completamento basato su CTags: se c'è un progetto aperto, CTags analizza in un processo in background tutti i file del progetto, e salva le informazioni CTags in `/tmp`; questo file viene poi utilizzato per popolare la finestra a comparsa del completamento automatico di &kate;.

Di contro, senza questo auto-completamento &kate; è capace solo di mostrare le voci di auto-completamento basandosi solo sulle parole del file attuale. In questo modo l'auto-completamento fornito dall'estensione di progetto è molto più potente.

Completamento nei progetti

Una finestrella passiva ti avviserà sull'eventuale mancanza di CTag. Degno di nota è il fatto che il file di CTags in `/tmp` viene cancellato alla chiusura di &kate;: così l'estensione non inquinerà nessuna cartella con dei file indesiderati.

### Supporto alla compilazione del progetto

Un'altra caratteristica è quella di offrire supporto all'Estensione di compilazione, che così viene configurata correttamente.

### Creare i progetti

#### Caricare i progetti automaticamente

L'estensione di progetto ha una funzionalità di auto-caricamento, che ti consente di leggere la lista dei file dal sistema di controllo della versione. Questa funzionalità deve essere abilitata nelle impostazioni (lo è in maniera predefinita):

Configurazione dell'estensione dei progetti

#### Creare i progetti manualmente

Devi solo creare un file `.kateproject` nella cartella principale del progetto. Ad esempio, il file `.kateproject` di Kate apparirà così:

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

Il contenuto del file è scritto con la sintassi &JSON;: il nome del progetto è Kate, ed i file in esso contenuti dovrebbero essere letti da &git;.

Al posto di `git` sono supportati anche subversion, attraverso `svn`, e mercurial con `hg`. Se non vuoi leggere dei file da un sistema di controllo di versione puoi semplicemente invocare kate dalla riga di comando come:

    kate /path/to/folder

oppure puoi caricare ricorsivamente i file dalle cartelle, come di seguito:

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

Qui le sotto-cartelle e i filtri definiscono qual è parte del progetto. Puoi anche mischiare controllo della versione e file in base ai filtri. I file nascosti non verranno recuperati se l'opzione `"hidden"` è 0. `"exclude_patterns"` è un elenco di modelli di espressioni regolari che possono essere usati per escludere file e cartelle dall'albero del progetto. In questo esempio verranno esclusi tutti i file e le cartelle in una cartella `build`.

Se vuoi aggiungere il supporto per la compilazione, allora puoi scrivere un `.kateproject` come questo:

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

Gli obiettivi specificati sopra appariranno quindi nell'estensione di compilazione sotto "Obiettivi dell'estensione di progetto ". Se il vettore `"targets"` è specificato, allora `"build"`, `"clean"` and `"install"` vengono ignorati. Ogni elemento nel vettore specifica un obiettivo:`"name"` è il nome dell'obiettivo, `"build_cmd"` verrà utilizzato per compilare l'obiettivo, `"run_cmd"` verrà usato per eseguire l'obiettivo. Il più importante di tutti è `"directory"`, che è dove verrà eseguito il comando.

Nel caso tu abbia un file `.kateproject` gestito da un sistema di controllo versione, ma avessi bisogno di modificare la configurazione per un particolare spazio di lavoro, puoi salvare queste modifiche in un file separato chiamato `.kateproject.local`. Il contenuto di questo file avrà la precedenza su `.kateproject`.

### Progetto attuale

Usando &Alt;1 Progetti Vai a potrai aprire il Progetto attuale, che è visualizzato in basso nella finestra dell'editor ed ha quattro schede:

Progetto attuale

Pannello del terminale

- Un Emulatore di terminale che parte dalla cartella principale del progetto.

Indice del codice

- La digitazione di caratteri nella barra di ricerca inizierà la ricerca, e visualizzerà i corrispondenti nomi delle funzioni, delle classi, dei simboli &etc;, insieme al tipo, al nome del file e al numero di riga.

  Seleziona una voce nella lista per saltare nel file sorgente alla riga corrispondente.

Analisi del codice

- Fai clic su Inizia analisi per iniziare un'analisi statica del codice C e C++ usando `cppcheck`, e per generare un rapporto mostrante il nome del file, il numero delle righe, la gravità (stile, avvisi &etc;) e il problema trovato.

  Seleziona una voce nella lista per saltare nel file sorgente alla riga corrispondente.

Note

- Il testo inserito in questa scheda sarà salvato nel file `.kateproject.notes`.

### Il menu Progetti

Il menu Progetti ti permette di passare tra i progetti attualmente aperti. Viene visualizzato dall'estensione dei progetti.

&Ctrl;&Alt;&Left; Progetti Indietro

- Passa al progetto precedente.

&Ctrl;&Alt;&Right; Progetti Avanti

- Passa al progetto successivo

&Alt;1 Progetti Vai a

- Apre la vista del Progetto attuale nella parte bassa della finestra di modifica.

## Estensione client LSP

L'estensione client LSP fornisce molte funzionalità per i linguaggi, quali il completamento e la navigazione del codice o la ricerca di riferimenti basata sul Language Server Protocol.

Una volta che hai abilitato il client LSP, nella pagina delle estensioni della finestra di configurazione di &kate; te ne apparirà un'altra, chiamata Client LSP.

### Struttura del menu

Se appropriato, nella spiegazione seguente viene menzionato anche un comando LSP corrispondente, la cui documentazione può quindi fornire informazioni e interpretazioni aggiuntive, sebbene possa variare a seconda del linguaggio effettivo. L'espressione "simbolo corrente" si riferisce al simbolo corrispondente alla posizione corrente del cursore, come determinato dal linguaggio e dall'implementazione del server.

Client LSP Vai alla definizione

- [textDocument/definition] Vai alla definizione attuale del simbolo.

Client LSP Vai alla dichiarazione

- [textDocument/declaration] Vai alla dichiarazione attuale del simbolo.

Client LSP Vai alla definizione del tipo

- [textDocument/definition] Vai alla definizione del tipo di simbolo corrente.

Client LSP Trova riferimenti

- [textDocument/references] Trova i riferimenti al simbolo attuale.

Client LSP Trova implementazioni

- [textDocument/references] Trova le implementazioni del simbolo corrente.

Client LSP Evidenzia

- [textDocument/documentHighlight] Evidenzia i riferimenti ai simboli correnti nel documento attuale.

Client LSP Finestrella informativa

- [textDocument/hover] Finestrella informativa del simbolo attuale.

Client LSP Formatta

- [textDocument/formatting] [textDocument/rangeFormatting] Formatta l'attuale documento o l'attuale selezione.

Client LSP Rinomina

- [textDocument/rename] Rinomina il simbolo attuale.

Client LSP Soluzione rapida

- [textDocument/codeAction, workspace/executeCommand] Calcola e applica una soluzione rapida per una diagnostica sulla posizione (o sulla linea) corrente.

Client LSP Mostra la documentazione di completamento selezionata

- Mostra la documentazione dell'elemento selezionato nell'elenco di completamento.

Client LSP Abilita l'aiuto sulle firme con l'auto-completamento

- Mostra anche l'aiuto sulle firme nell'elenco di completamento.

Client LSP Includi la dichiarazione nei riferimenti

- Richiede di includere la dichiarazione del simbolo quando ne vengono richiesti i riferimenti.

Client LSP Aggiungi le parentesi al completamento della funzione

- Aggiunge automaticamente una coppia di parentesi dopo il completamento di una funzione.

Client LSP Mostra la finestrella informativa

- Mostra la finestrella informativa sul cursore al passaggio del mouse. Indipendentemente da questa impostazione la richiesta può sempre essere inizializzata manualmente.

Client LSP Formattazione durante la digitazione

- [document/onTypeFormatting] Formatta parti del documento alla digitazione di alcuni caratteri di attivazione. Ad esempio questo si potrebbe applicare ai rientri nelle nuove righe, oppure a qualsiasi altra cosa stabilita dal server LSP. Nota che gli script dell'editor per il rientro potrebbero cercare di fare la stessa cosa (a seconda della modalità), perciò non è raccomandabile aver abilitato entrambi allo stesso tempo.

Client LSP Sincronizzazione incrementale del documento

- Invia delle modifiche parziali del documento per aggiornare il server piuttosto che l'intero documento di testo (se supportato).

Client LSP Evidenzia posizione di arrivo

- Emette un segnale visivo transitorio dopo aver eseguito un arrivo in una posizione (di una definizione, di una dichiarazione, ecc).

Client LSP Mostra le notifiche di diagnostica

- [textDocument/publishDiagnostics] Elabora e mostra le notifiche di diagnostica inviate dal server.

Client LSP Mostra i punti salienti della diagnostica

- Aggiungi i punti salienti del testo per gli intervalli indicati nella diagnostica.

Client LSP Mostra i segni di diagnostica

- Aggiungi segni di documento nelle righe indicate dalla diagnostica.

Client LSP Passa alla scheda di diagnostica

- Passa alla scheda diagnostica nell'estensione dello strumento visivo.

Client LSP Chiudi tutte le schede non di diagnostica

- Chiude tutte le schede non diagnostiche (⪚ i riferimenti) nell'estensione dello strumento visivo.

Client LSP Riavvia server LSP

- Riavvia il server LSP del documento corrente.

Client LSP Riavvia tutti i server LSP

- Ferma tutti i server LSP che saranno quindi (ri)avviati se necessario.

### Supporto ai simboli di arrivo

Il client LSP può aiutarti a saltare a ogni simbolo nel progetto o nel file corrente. Per saltare ai simboli nel file usa lo strumento visivo «Schema del simbolo del client LSP» nel bordo destro di Kate. Lo strumento visivo elenca tutti i simboli che sono trovati dal server nel documento corrente.

#### Configurazione dello schema dei simboli del client LSP

Per impostazione predefinita i simboli vengono ordinati in base alla loro occorrenza nel documento, ma potresti anche ordinarli alfabeticamente. Per farlo, clic destro sullo strumento visivo, poi spunta «Ordina alfabeticamente».

Per impostazione predefinita lo strumento visivo mostra i simboli nella modalità ad albero, tuttavia puoi modificarla in un elenco dal menu contestuale.

#### Supporto ai simboli di arrivo globale

Per saltare ai simboli nel progetto puoi aprire la finestra dei simboli di arrivo usando &Ctrl;&Alt;p. La finestra è vuota quando si apre, ma non appena inizi a digitare comincia a mostrare i simboli corrispondenti. La qualità delle corrispondenze e della capacità di filtraggio dipende dal server che usi: ad esempio, clangd supporta il filtraggio approssimato, ma altri server potrebbero non supportarlo.

### Altre funzionalità

Il comando per scambiare intestazione e sorgente è supportato. Per farlo in un progetto C o C++ puoi utilizzare l'opzione «Scambia sorgente e intestazione» sia dal menu contestuale che con la scorciatoia F12.

Puoi andare velocemente a un simbolo mettendo il mouse sopra di esso e poi premendo &Ctrl; più il pulsante sinistro del mouse.

### Configurazione

La pagina di configurazione dell'estensione permette principalmente la configurazione persistente di alcune delle voci di menu di cui sopra. Tuttavia esiste una voce aggiuntiva per specificare il file di configurazione del server: è un file &JSON; che può essere utilizzato per specificare il server LSP da avviare (e quindi con cui comunicare tramite stdin e stdout). Per comodità sono incluse alcune configurazioni predefinite, che possono essere ispezionate nella pagina di configurazione dell'estensione. Per aiutare nella spiegazione di seguito, viene fornito un estratto di tale configurazione:

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

Nota che ciascun «command» può essere un vettore o una stringa (nel qual caso viene divisa in un vettore), inoltre viene considerata anche una voce «global» di livello massimo (vicina a «server»), vedi sotto. Il binario specificato viene cercato nel solito modo, ad es usando `PATH`. Se è installato in posizioni personalizzate, allora l'ultimo metodo potrebbe dover essere esteso. In alternativa si può utilizzare un collegamento (simbolico) o uno script wrapper per una posizione nel `PATH` usuale. Come illustrato sopra, uno può specificare un «percorso» in cui cercare dopo averlo fatto nelle posizioni standard.

Tutte le voci in «command», «root» e «path» sono soggette all'espansione delle variabili.

«HighlightingModeRegex» viene usato per associare la modalità di evidenziazione usata da &kate; all'ID del linguaggio del server. Se non viene fornita alcuna espressione regolare, viene utilizzato l'id del linguaggio stesso. Se una voce «documentLanguageId» viene impostata a falso allora non viene fornito al server nessun ID del linguaggio all'apertura del documento. Questo potrebbe dare dei risultati migliori su alcuni server che sono più precisi nel determinare il tipo di documento piuttosto che farlo in base alla modalità di kate.

Dall'esempio qui sopra, il principio è probabilmente chiaro. Inoltre, ciascun oggetto di voce del server può avere anche una voce «initializationOptions», che viene passata al server come parte del metodo «initialize». Se presente, viene passata al server una voce «settings» per mezzo della notifica «workspace/didChangeConfiguration». Sia «completionTriggerCharacters» che «signatureTriggerCharacters» possono essere specificati come oggetto JSON col membro stringa «exclude» oppure «include». Questi verranno usati per, rispettivamente, escludere o aggiungere alcuni caratteri ai rispettivi attuatori impostati come forniti dal server.

Vengono applicate varie fasi di sovrapposizione/unione;

- la configurazione utente (caricata dal file) ha la precedenza sulla configurazione predefinita (interna)

- La voce «lspclient» in `.kateproject` nella configurazione del progetto ha la precedenza su quella qui sopra

- La voce «global» risultante viene utilizzata per integrare (non per sovrascrivere) ogni voce del server

Un'istanza del server viene utilizzata per ogni combinazione (root, servertype). Se «root» viene specificata come un percorso assoluto viene utilizzato così com'è, diversamente è relativo a projectBase (come determinato dall'estensione di progetto) se applicabile, oppure è relativo alla cartella del documento. Se non è stato specificato, e se «rootIndicationFileNames» è un vettore, allora viene selezionata una cartella genitore del documento corrente che contiene il file che è selezionato. In alternativa, se «root» non è specificato e «rootIndicationFilePatterns» è un vettore di modelli di file, viene selezionata una cartella genitore del documento corrente che corrisponde al modello di file che è selezionato. Come ultimo ripiego viene selezionata come «root» la cartella home. Per qualsiasi documento la cartella «root» risultante determina se è necessaria o meno un'istanza separata. Se sì, «root» viene passata come rootUri/rootPath.

In generale viene raccomandato di lasciare root non specificata poiché non è così importante per un server (ma dipende dalle tue esigenze). Un numero minore di istanze del server è ovviamente più efficiente e ha anche una visione "più ampia" rispetto a molte istanze separate.

Come menzionato sopra, molte voci sono soggette all'espansione delle variabili. Un'applicazione adatta di essa, associata ad uno «script adattatore», permette la personalizzazione in molte circostanze. Ad esempio, considera uno scenario di sviluppo in Python formato da più progetti (ad esempio repository git), ciascuno con le proprie impostazioni di ambiente virtuale (venv). Usando la configurazione predefinita il server del linguaggio Python non sarà a conoscenza dell'ambiente virtuale. A questo però si può rimediare col seguente approccio: per prima cosa, nell'estensione «User Server Settings» di LSPClient si può inserire il seguente frammento:

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

La voce principale qui sopra è relativa alla cartella del progetto e garantisce che sia stato avviato un server di lingua separato per ogni progetto. In questo caso ciò è necessario, in quanto ciascuno ha un ambiente virtuale distinto.

`pylsp_in_env` è un piccolo «script adattatore» che dovrebbe essere messo in `PATH`, col seguente contenuto (da sistemare):

    #!/bin/bash
    cd $1
    # avvia il server (python-lsp-server) nell'ambiente virtuale
    # (ad esempio con le impostazioni delle variabili dell'ambiente virtuale)
    # quindi sorgente dell'ambiente virtuale
    source XYZ
    # il server e gli argomenti possono variare
    exec myserver

#### Configurazione del server LSP

Ogni specifico server LSP ha il suo modo di gestire le personalizzazioni e può utilizzare mezzi specifici per linguaggio/strumento per la configurazione, ⪚ `tox.ini` (per python), `.clang-format` per lo stile di formattazione C++. Queste configurazioni possono quindi essere anche usate da altri strumenti non LSP, ad esempio da tox o da clang-format. Inoltre, alcuni server LSP caricano la configurazione anche da file personalizzati, ⪚ da `.ccls`. Infine, la configurazione personalizzata del server può anche venir passata con LSP (protocollo), vedi le voci «initializationOptions» e «settings» sopra menzionate nella configurazione del server.

Dal momento che vengono applicati molti livelli di sovrapposizione/unione, il seguente esempio di configurazione client specificata dall'utente modifica una configurazione di un server per linguaggio Python.

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

Sfortunatamente la configurazione/personalizzazione del server LSP spesso non è così ben documentata, e spesso solo esaminando il codice sorgente si capiscono gli approcci di configurazione e l'insieme delle opzioni di configurazione disponibili. In particolare, il server di esempio qui sopra supporta molte altre opzioni in «settings». Consulta la documentazione di un altro client LSP per molti altri esempi di server di linguaggi e per le impostazioni corrispondenti, che possono essere facilmente e prontamente trasformate nella configurazione &JSON; utilizzata qui e descritta sopra.

#### Formattazione al salvataggio del server LSP

Puoi abilitare «Formattazione al salvataggio» dalle impostazioni LSP nella finestra di configurazione.

#### Soppressione diagnostica del server LSP

Può accadere che vengano riportate diagnostiche che non sono realmente utili. Questo può essere un po' problematico, specialmente se ce ne sono molte (e spesso dello stesso tipo). In alcuni casi ciò potrebbe essere ottimizzato con dei mezzi specifici del linguaggio (del server). Ad esempio, il meccanismo di configurazione clangd permette l'ottimizzazione di alcuni aspetti di diagnostica. In generale, tuttavia, potrebbe non essere evidente come farlo, oppure non affatto possibile nei modi desiderati a causa di limitazioni del server o di bug.

Come tale, l'estensione supporta la soppressione della diagnostica in modo simile ad esempio alle soppressioni in Valgrind. La configurazione più raffinata può essere fornita da una chiave «suppressions» nel &JSON; (unito) di configurazione.

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

Ogni regola (valida) ha un nome arbitrario ed è definita da un vettore di lunghezza 2 o 3 che fornisce un'espressione regolare da confrontare al nome del file (completo), un'altra da confrontare con la diagnostica (testo) e da un'altra facoltativa da confrontare con (l'intervallo del codice sorgente del) testo a cui si applica la diagnostica.

Oltre alla configurazione particolareggiata qui sopra, il menu contestuale nella scheda della diagnostica supporta anche l'aggiunta e la rimozione delle soppressioni che corrispondono esattamente ad una diagnostica particolare (testo), sia a livello globale (qualsiasi file) che locale (il file specifico in questione). Queste soppressione sono memorizzate e vengono caricate dalla configurazione della sessione.

#### Risoluzione dei problemi col server LSP

Una cosa è descrivere come configurare un server LSP (personalizzato) per un linguaggio particolare, un'altra è avere un server funzionante senza problemi; di solito, per fortuna, il caso è quest'ultimo. A volte possono tuttavia sorgere dei problemi, sia a causa di qualche "sciocca" configurazione errata che di problemi ben più fondamentali con il server stesso. Quest'ultimo caso potrebbe manifestarsi ad esempio in un doppio tentativo di avvio del server, come riportato nella scheda Output &kate;. Questa ha però unicamente lo scopo di trasmettere i messaggi o i progressi di alto livello piuttosto che fornire una diagnostica dettagliata, e ancor meno per quello che in realtà è un altro processo (il server LSP).

Il modo usuale di diagnosticare ciò è quello di aggiungere alcuni flag al comando di avvio (del server del linguaggio) che abilitano la registrazione (aggiuntiva) verso qualche file o standard error, cosa che non accade per impostazione predefinita. Se ora &kate; viene avviato dalla riga di comando si potrebbe essere in grado di vedere più chiaramente quello che potrebbe andare storto.

Può essere informativo esaminare anche lo scambio di protocollo tra il client LSP di &kate; e il server LSP. Di nuovo, quest'ultimo di solito ha modi per tracciarlo. Il client LSP in genere fornisce (a stderr) un tracciamento di debug aggiuntivo se &kate; viene invocato con `QT_LOGGING_RULES=katelspclientplugin=true` adeguatamente esportato tramite `export`.

## Ricerca e sostituzione

### Introduzione

L'estensione di ricerca e sostituzione di &kate; ti consente di cercare del testo o delle espressioni regolari in molti file contemporaneamente. Puoi cercare in tutti i file aperti, in tutti i file di una cartella e, se vuoi, nelle sue sottocartelle, oppure nei file attivi. Puoi filtrare anche in base al nome del file, ad esempio cercando solo nei file che hanno un'estensione particolare.

### Interfaccia

#### Interrogazione di ricerca

Le opzioni seguenti sono sempre visualizzate in cima alla vista dello strumento di ricerca nei file:

- Puoi avere tante ricerche aperte quante vuoi allo stesso tempo: basta fare clic sul pulsante nuova scheda nell'angolo in alto a sinistra nella vista dello strumento di ricerca. Apparirà una nuova scheda di risultati, che ti permette di effettuare una nuova ricerca.

- Il pulsante nell'angolo in alto a destra dello strumento di ricerca nei file visualizzerà alternativamente nella metà inferiore della vista dello strumento le opzioni aggiuntive per la modalità di ricerca nelle cartelle e i risultati della tua ricerca.

Trova

- Qui è dove scrivi quello che vuoi cercare. Puoi inserire del testo normale oppure un'espressione regolare, se queste sono abilitate.

Sostituisci (casella di testo)

- Il testo di sostituzione che verrà aggiunto ai file al posto del testo nella casella Trova.

Cerca

- Quando hai finito di configurare tutto premi il pulsante Cerca per effettuare la ricerca. Per fare la stessa cosa puoi anche premere &Enter; nella casella di testo Trova.

Sostituisci

- Quando hai finito di configurare tutto premi il pulsante Sostituisci per sostituire il testo inserito nella casella Trova con quello della casella Sostituisci. Per fare la stessa cosa puoi anche premere &Enter; nella casella di testo Sostituisci.

Successivo

- Vai alla corrispondenza successiva della ricerca, cambiando file se necessario.

Sostituisci spuntati

- Come per Sostituisci, ma la sostituzione sarà effettuata solo nei file che sono spuntati nel pannello sottostante.

#### Opzioni di ricerca nelle cartelle

Queste opzioni sono mostrate sotto le opzioni di interrogazione di cui sopra. Se sono invece visualizzati i risultati della ricerca premi il pulsante per mostrarle.

Cerca in

- Qui ci sono tre opzioni: seleziona File aperti per cercare in tutti i file attualmente aperti in &kate;, Cartella per cercare in una cartella e, a scelta, nelle sue sottocartelle, oppure File attuale per cercare solo nel file attivo.

  Se l'estensione dei Progetti è caricata, puoi cercare sia nel Progetto attuale che in Tutti i progetti aperti.

Distingui le maiuscole

- Limita i risultati a quelli che hanno le stesse maiuscole e minuscole specificate nella ricerca.

Espressioni regolari

- Ti permette di usare le espressioni regolari invece che del semplice testo come stringa di ricerca.

Espandi i risultati

- Visualizza tutti i risultati trovati in ogni file, invece che solo un elenco di file che contengono la stringa cercata.

Cartella

- Puoi inserire il percorso della cartella in cui vuoi cercare; ad esempio, potresti inserire `~/sviluppo/kde/kate/` se volessi cercare nel codice sorgente di &kate;. Questa opzione è disponibile solo se utilizzi la modalità nella cartella.

Apri finestra di selezione dei file

- Premi questo pulsante per localizzare la cartella nel navigatore delle cartelle del tuo sistema. Questo pulsante funziona solo se si utilizza la modalità Cartella.

- Premi questo pulsante per sostituire la Cartella con la cartella superiore a quella attualmente selezionata. Questo pulsante funziona solo se utilizzi la modalità Cartella.

- Questo pulsante imposterà la voce della Cartella a quella in cui si trova il documento attuale. Il pulsante funziona solo se utilizzi la modalità Cartella.

Filtro

- Questa opzione ti permette di cercare solo i nomi di file che corrispondano ad un certo schema. Cambialo ad esempio in `*.cpp` per cercare solo file scritti in C++, e in `kate*` per quelli che cominciano per `kate`. Puoi inserire più filtri separandoli con delle virgole (`,`); quest'opzione non è però disponibile nella modalità file aperti.

Escludi

- Il contrario di Filtro: impedisce a &kate; di cercare dei file che corrispondono a modelli precisi. Come per il Filtro puoi digitare più modelli separandoli con delle virgole (`.`); quest'opzione non è però disponibile nella modalità File aperti.

Ricorsivo

- Se questa opzione è abilitata, &kate; cercherà anche in tutte le sottocartelle della cartella selezionata. Questa opzione è disponibile solo se si utilizza la modalità cartella.

Includi i file nascosti

- Se questa opzione è abilitata, &kate; cercherà anche nei file o nelle cartelle che sono normalmente nascosti dal &OS;. Questa opzione è disponibile solo se si utilizza la modalità Cartella.

Segui i collegamenti simbolici

- L'estensione di ricerca nei file normalmente non segue i collegamenti simbolici. Se questa opzione è abilitata l'estensione invece li seguirà, e cercherà nei file e nelle cartelle a cui riferiscono. Questa opzione è disponibile solo utilizzando la modalità Cartella.

  È possibile che i collegamenti simbolici puntino alla cartella genitore di quella attualmente cercata, o che altre cartelle contenenti collegamenti simbolici puntino ad essa. Se è presente un simile collegamento e l'opzione è abilitata, &kate; seguirà ripetutamente il collegamento, e la ricerca non si concluderà mai.

Includi i file binari

- Se questa opzione è abilitata, &kate; cercherà anche nei file che non sembrano essere file di testo.

#### Risultati della ricerca

I risultati della ricerca sono visualizzati sotto le opzioni dell'interrogazione. Se sono mostrate le opzioni per la modalità di ricerca nelle cartelle basta premere il pulsante per mostrarli. Saranno inoltre automaticamente visualizzati non appena verrà effettuata una ricerca.

I risultati di ricerca visualizzano un elenco di file che contengono il testo che corrisponde alla ricerca effettuata, seguito dal numero di occorrenze trovate in quei file.

Per vedere un elenco di corrispondenze in quel file basta fare clic sulla freccia di espansione a sinistra del nome del file. (Se è stata selezionata l'opzione Espandi i risultati, ciò avverrà automaticamente). Sarà visualizzato il numero di riga di ogni corrispondenza seguito dal contenuto di tale riga, con i termini di ricerca indicati in grassetto.

Per aprire il file in cui è stato trovato il risultato basta fare doppio clic su di esso: se necessario &kate; lo aprirà. Puoi inoltre spostare il cursore nella posizione di una corrispondenza particolare facendo doppio clic sulla voce in elenco anziché sul nome del file.

### Struttura del menu

&Ctrl;&Alt;F Modifica Cerca nei file

- Avvia la vista dello strumento Ricerca e sostituisci

Modifica Vai alla corrispondenza successiva

- Vai alla corrispondenza successiva in una ricerca eseguita dall'estensione Cerca e sostituisci.

Modifica Vai alla corrispondenza precedente

- Vai alla corrispondenza precedente in una ricerca eseguita dall'estensione Cerca e sostituisci.

Visualizza Viste degli strumenti Mostra cerca e sostituisci

- Attiva o disattiva la visualizzazione dello strumento Cerca e sostituisci di &kate;.

## Frammenti di &kate;

### Introduzione

I frammenti di &kate; sono un'estensione usata per risparmiare tempo con il supporto dei cosiddetti frammenti (codice sorgente, codice macchina o testo riutilizzabile). L'estensione supporta anche il completamento del codice e &javascript;.

### Struttura del menu

Visualizza Viste degli strumenti Mostra frammenti

- Mostra il pannello contenente tutti i frammenti del tuo deposito che sono disponibili per il tipo di file attualmente aperto.

Strumenti Crea frammento

- Crea un nuovo frammento, cioè un pezzo di testo riutilizzabile che puoi inserire in qualsiasi parte di qualsiasi documento.

### Pannello dei frammenti

Pannello dei frammenti di &kate; Il pannello dei frammenti di &kate;.

Il pannello per i frammenti di &kate;.

Nel pannello dovresti vedere un elenco di depositi di frammenti, insieme alle opzioni per crearne di tuoi, di recuperarli da Internet o di caricarli da un file locale. Ogni deposito ha una casella con cui puoi attivarlo o disattivarlo; ci sono anche dei pulsanti per modificare ed eliminare i depositi esistenti.

#### Caricare i file dei depositi di frammenti

Puoi scaricare i depositi di frammenti da Internet: basta che fai clic su Ottieni nuovi frammenti e ti apparirà una finestra con un elenco di depositi di frammenti. Dopo aver scaricato il frammento desiderato assicurati di attivarlo.

#### Creare e modificare i depositi

Per creare un nuovo deposito di frammenti fai clic su Aggiungi deposito. Ora dovresti vedere una finestrella che chiede il nome, la licenza e l'autore del file di frammenti: dopo aver scelto le opzioni desiderate fai clic su Ok.

Editor di frammenti L'editor di depositi.

L'interfaccia dell'editor di depositi.

L'editor dei depositi di frammenti contiene le seguenti opzioni:

Nome

- Appare nell'elenco dei frammenti nella vista degli strumenti, e viene usato per la funzionalità di completamento del codice.

Spazio dei nomi

- Prefisso usato nel completamento del codice.

Licenza

- Seleziona la licenza per il tuo deposito di frammenti.

Autori

- Inserisci i nomi degli autori del file di frammenti.

Tipi di file

- Seleziona i tipi di file a cui vuoi che si applichi il deposito: l'impostazione predefinita è , in modo che il deposito si applichi a tutti i file. Puoi cambiarla, per esempio in qualcosa come `C++`, oppure selezionare da un elenco mediante un clic sulle voci, e puoi specificare anche più di un tipo di file: basta che premi &Shift; mentre aggiungi i tipi.

#### Creare e modificare i frammenti

Editor di frammenti L'editor di frammenti.

L'interfaccia dell'editor di frammenti.

Nome

- Il nome che sarà mostrato nell'elenco di completamento.

Scorciatoia

- Premendo questa scorciatoia il frammento sarà inserito nel documento.

Frammenti

- Il testo che il tuo frammento inserirà nel documento.

  Un frammento può contenere campi modificabili, su cui puoi spostarti premendo . Per creare i campi nel testo del modello si possono usare le seguenti espressioni:

  `${`field_name`}` crea un semplice campo modificabile. Tutte le successive occorrenze dello stesso `field_name`creano campi che rispecchiano i contenuti del primo durante la modifica.

  `${`field_name=default`}` può essere usato per specificare un valore predefinito per il campo. `default` può essere una qualsiasi espressione &javascript;.

  Usa `${`field_name`=`testo`}` per specificare una stringa fissa come valore predefinito.

  `${func(`other_field1`, `other_field2`, ...)}` può essere usato per creare un campo che valuta una funzione &javascript; per ciascuna modifica e che contiene il suo contenuto. Vedi la scheda Script per maggiori informazioni.

  `${cursor}` può essere usato per segnare la posizione finale del cursore dopo che è stato riempito tutto il resto.

Script

- Funzioni di supporto in &javascript; da usare nei tuoi frammenti.

  Tutte le funzioni &javascript; dovrebbero ritornare i contenuti che vuoi mettere nel modello di campo come una stringa.

  Le funzioni sono chiamate in un ambito che contiene i contenuti di tutti i campi modello come variabili locali. Per esempio, in un frammento che contiene `${`field`}` sarà presente una variabile, chiamata `field` , contenente i contenuti aggiornati del campo modello. Quelle variabili possono sia usate staticamente nella funzione sia passate come argomento usando la sintassi `${func(field)}` oppure `${`field2=func(field)`}` nella stringa del frammento.

  Puoi usare l'API di scripting di &kate; per ottenere il testo selezionato, l'intero testo, il nome del file ed altro usando i metodi appropriati degli oggetti `document` e `view`. Per ulteriori informazioni fai riferimento alla documentazione dell'API di scripting.

  Per script più complessi può essere importante capire che prima il frammento grezzo viene inserito nel documento, poi le funzioni vengono valutate. Ad esempio, se una funzione restituisce il testo della riga nella quale è stato inserito il frammento, quel testo conterrà anche `${functionCall()}`.

  Questo frammento è un esempio di come lavorare con le selezioni usando lo scripting con l'API. È un modo semplice per avvolgere il testo selezionato all'interno di etichette: `<strong>${view.selectedText()}</strong>`

  L'esempio seguente invoca uno script che inserisce un testo predefinito nel caso non ci sia nessuna selezione. Frammento:

  `${rangeCommand("<strong>%%1</strong>", "Bold")}`

  Script:

      function rangeCommand(command, def) {
          if (view.selectedText().length
      > 0) {
              return command.replace("%%1", view.selectedText());
          } else {
              return command.replace("%%1", def);
          }
      }

### Usare i frammenti

I frammenti di &kate; in azione Accesso ai frammenti di &kate; da una vista degli strumenti e un menu a cascata.

Selezione da un elenco di frammenti.

Puoi richiamare i frammenti in due modi:

- Scegliendo il frammento dalla vista dello strumento.

- Premendo &Ctrl; &Space; mentre scrivi: questo ti mostrerà tutti i frammenti in una comoda finestra da cui potrai sceglierne uno. Questa combinazione di tasti fornisce funzionalità simili a quelle del completamento del codice.

Se il frammento contiene variabili (oltre a `${cursor}`) il cursore andrà automaticamente alla prima occorrenza di una variabile, e aspetterà che tu scriva qualcosa. Quando hai finito puoi premere per passare alla prossima variabile, e così via.

### Ringraziamenti e riconoscimenti

I frammenti di &kate; sono stati scritti da Joseph Wenninger.

Ringraziamenti speciali vanno al partecipante del Google Code-In 2011, Martin Gergov, per aver scritto la maggior parte di questa sezione.

## Estensione Macro da tastiera

### Introduzione

Registra ed esegui le macro da tastiera (cioè una sequenza di azioni da tastiera).

### Uso basilare

#### Per avviare la registrazione di una macro da tastiera:

Strumenti Macro da tastiera Registra macro... (&Ctrl;&Shift;K).

L'estensione registrerà ogni pressione di tasti fino al termine della registrazione.

#### Per interrompere la registrazione:

Strumenti Macro da tastiera Interrompi la registrazione della macro (&Ctrl;&Shift;K).

L'estensione interromperà la registrazione della pressione dei tasti e salverà la sequenza come macro corrente.

#### Per annullare la registrazione:

Strumenti Macro da tastiera Annulla registrazione della macro (&Ctrl;&Alt;&Shift;K).

L'estensione interromperà la registrazione della pressione dei tasti, ma la macro corrente non cambierà.

#### Per eseguire la macro corrente:

Strumenti Macro da tastiera Esegui macro (&Ctrl;&Alt;K).

L'estensione eseguirà la macro corrente.

Anche il comando `kmplay`, senza argomenti, eseguirà la macro corrente.

### Macro con nome

È possibile salvare le macro da tastiera dandogli un nome.

Le macro con nome sono persistenti tra le sessioni di Kate: vengono salvate nel file `keyboardmacros.json` che si trova nella cartella dei dati utente di Kate (di solito `~/.local/share/kate/`).

#### Per salvare la macro corrente:

Strumenti Macro da tastiera Salva la macro corrente (&Alt;&Shift;K).

L'estensione ti chiederà un nome, e salverà la macro con quello.

Il comando `kmsave `nome`` salverà la macro corrente come ``nome``.

#### Per caricare una macro come la corrente:

Strumenti Macro da tastiera Carica macro con nome....

L'estensione elenca le macro salvate come voci di questo sotto-menu: attivandone una, questa verrà caricata come corrente.

Il comando `kmload `nome`` caricherà come corrente la macro salvata come ``nome``.

#### Per eseguire una macro salvata senza caricarla:

Strumenti Macro da tastiera Esegui macro con nome....

L'estensione elenca le macro salvate come voci di questo sotto-menu: attivandone una, la macro corrispondente verrà eseguita senza essere caricata.

Nota che ogni macro salvata è un'azione che fa parte della collezione di azioni corrente; in questo modo una scorciatoia personalizzata può essere assegnata ad essa dall'interfaccia Impostazioni Configura scorciatoie da tastiera....

Il comando `kmplay `nome`` eseguirà la macro salvata come ``nome`` senza caricarla.

#### Per pulire, cioè eliminare, una macro salvata:

Strumenti Macro da tastiera Pulisci macro con nome....

L'estensione elenca le macro salvate come voci di questo sotto-menu: attivandone una, la macro corrispondente verrà pulita (cioè eliminata).

Il comando `kmwipe `nome`` pulirà la macro salvata come ``nome``.

#### Suggerimenti per i comandi:

Nota che tutti questi comando dopo il prefisso `km` utilizzano una lettera diversa: in questo modo puoi chiamarli in maniera efficiente usando il completamento con tab!

### Limitazioni

Al momento le macro da tastiera non vengono eseguite correttamente se nell'interfaccia vengono utilizzati alcuni oggetti, ad esempio QMenu, QuickOpenLineEdit o TabSwitcherTreeView. Non sono sicuro sul perché, ma il mio primo pensiero è che questi oggetti funzionino in una modalità non standard riguardo agli eventi da tastiera.

## Estensione SQL

### Introduzione

Il linguaggio strutturato di interrogazione (SQL) è un linguaggio specializzato per l'aggiornamento, l'eliminazione e la richiesta di informazioni dalle banche dati.

L'estensione SQL per &kate; ti permette di:

- Creare una banca dati

- Connetterti a banche dati esistenti

- Inserire ed eliminare dati dalle banche dati

- Eseguire le interrogazioni

- Visualizzare i risultati in una tabella

### Connessione ad una banca dati

Seleziona Aggiungi connessione dal menu o dalla barra degli strumenti SQL, e quindi seleziona il driver di banca dati di &Qt; che vuoi usare (inclusi QSQLITE, QMYSQL3, QMYSQL, QODBC3, QODBC, QPSQL7, e QPSQL); se non lo trovi devi installarlo. Premi quindi Successivo.

Se la banca dati che hai selezionato usa un file, basta che ne indichi la posizione e che premi il pulsante Successivo; se è invece richiesta la connessione ad un server devi inserire il nome host, il tuo nome utente, la tua password e qualsiasi altra informazione che il driver ti richieda. Premi quindi Successivo.

Infine dai un nome alla connessione e premi Successivo.

### Eseguire le interrogazioni

#### INSERT/DELETE/UPDATE

Con l'estensione SQL puoi inserire, eliminare ed aggiornare i dati, proprio come faresti da riga di comando o da un programma: basta che inserisci un'interrogazione e che premi il pulsante Esegui interrogazione nella barra degli strumenti, oppure SQL Esegui interrogazione (&Ctrl;E).

##### Alcune interrogazioni d'esempio

`INSERT`

-     INSERT INTO nome_tabella ("campo1", "campo2", "campo3", "campo4", "campo5")
      VALUES ("valore1", "valore2", "valore3", "valore4", "valore5" )

`DELETE`

-     DELETE FROM nome_tabella WHERE name = "testo"

`UPDATE`

-     UPDATE nome_tabella SET "campo1" = "testo", "campo2" = "testo", "campo3" = "testo", "campo4" = "testo", "campo5" = "testo"

#### SELECT

Dopo aver eseguito un'interrogazione di tipo `SELECT` puoi vederne i risultati in una tabella; questa apparirà nella vista degli strumenti Risultato di dati SQL in fondo a &kate;, oppure come testo in Risultato di testo SQL. Se c'è un errore potrai vederlo dal risultato.

##### Interrogazione `SELECT` d'esempio

    SELECT * FROM nome_tabella

Nella vista degli strumenti Risultato di dati SQL ci sono diversi pulsanti:

Ridimensiona le colonne in base ai contenuti

- Cambia le dimensioni delle colonne per adattarsi al loro contenuto.

Ridimensiona le righe in base ai contenuti

- Cambia le dimensioni delle righe per adattarsi al loro contenuto.

Copia

- Seleziona tutto il contenuto della tabella e lo copia negli appunti.

Esporta

- Esporta tutto il contenuto della tabella in un file, negli appunti o nel documento attuale in formato di valori separati da virgole (CSV).

Pulisci

- Rimuove qualsiasi cosa dalla vista della tabella.

Puoi ora cambiare i colori visualizzati nella tabella andando nella sezione SQL dopo aver selezionato Impostazioni Configura &kate;....

### Sfogliare

Puoi sfogliare la banca dati usando la vista dello strumento Schema di banca dati sulla sinistra. Le informazioni mostrate variano a seconda del driver per la banca dati che stai usando.

Per aggiornare questo elenco fai clic con il &RMB; in qualsiasi parte nella vista dello strumento, e seleziona Aggiorna. Per generare un'interrogazione su una qualsiasi voce dell'elenco fai clic con il &RMB;, seleziona Genera, e quindi il tipo di interrogazione (SELECT, UPDATE, INSERT, o DELETE) dal sotto-menu che compare.

### Struttura del menu

SQL Aggiungi connessione...

- Aggiunge una nuova connessione usando un qualsiasi driver per le banche dati.

SQL Rimuovi connessione

- Rimuove la connessione selezionata.

SQL Modifica connessione...

- Modifica le impostazioni della connessione attuale.

Connessioni

- Tutte le connessioni alle banche dati che hai creato sono elencate tra gli elementi del menu Modifica connessione ed Esegui interrogazione; selezionane una per eseguire interrogazioni o per modificarla.

&Ctrl;E SQL Esegui interrogazione

- Esegue l'interrogazione.

### Ringraziamenti e riconoscimenti

L'estensione SQL è stata scritta da Marco Mentasti.

Ringraziamenti speciali vanno al partecipante del Google Code-In 2011, Ömer Faruk Oruç, per aver scritto la maggior parte di questa sezione.

## Estensione Visore di simboli

### Usare l'estensione di chiusura per gruppo

Permette agli sviluppatori di visualizzare i simboli (funzioni, macro e strutture) nel codice sorgente.

Puoi agevolmente sfogliare il codice facendo clic sulle informazioni analizzate.

Al momento sono supportati i seguenti linguaggi:

C/C++, &Java;, Perl, PHP, Python, Ruby, XSLT, Tcl/Tk e Fortran

Elenco delle funzionalità:

- Modalità ad albero
- Abilita o disabilita l'ordinamento
- Mostra o nasconde i parametri delle funzioni
- Espande o collassa la modalità ad albero
- Auto-aggiorna dopo i cambiamenti
- L'analisi del codice è basata sull'infrastruttura di evidenziazione della sintassi di &kde-frameworks;

### Struttura del menu

&Ctrl;\ Visualizza Vista degli strumenti Mostra lista dei simboli

- Commuta la vista della lista di simboli di &kate; visualizzando alternativamente le funzioni, le macro e le strutture del codice sorgente del documento attivo.

### Configurazione

Visore di simboli

Scegli le opzioni di elaborazione predefinite

## Estensione Strumento visivo per terminale

L'emulatore di terminale integrato è, per tua comodità, una copia dell'applicazione di terminale &konsole; di &kde;. È disponibile alla voce di menu Visualizza Viste degli strumenti Mostra il pannello del terminale, e acquisirà il fuoco nel momento in cui viene visualizzato. In aggiunta, se l'opzione Sincronizza automaticamente il terminale con il documento attuale quando possibile è abilitata, passerà alla cartella del documento attuale quando viene visualizzato, se è possibile, oppure quando il documento corrente cambia.

La posizione predefinita nella finestra di &kate; è in basso, sotto l'area di modifica.

Puoi configurare &konsole; utilizzando il menu del &RMB;; per ulteriori informazioni vedi il manuale di &konsole;.

L'emulatore di terminale incorporato è fornito dall'estensione Strumento visivo per terminale.

### Struttura del menu

Visualizza Viste degli strumenti Mostra il pannello del terminale

- Mostra o nasconde l'emulatore di terminale integrato.

  Il terminale sarà creato alla prima attivazione.

  Quando l'emulatore di terminale viene visualizzato, il fuoco si sposterà su di esso, in modo che tu possa digitare immediatamente i comandi. Se l'opzione Sincronizza automaticamente il terminale con il documento attuale quando possibile è abilitata nella pagina Terminale della finestra principale di configurazione, la sessione della shell passerà alla cartella del documento attuale, se questo è un file locale.

Strumenti Incanala al terminale

- Passa il testo selezionato all'emulatore di terminale integrato. Non viene aggiunto alcun carattere di fine riga dopo il testo.

Strumenti Sincronizza terminale con il documento attuale

- Ciò avrà come effetto l'esecuzione del comando `cd` da parte del terminale incorporato, nella cartella del documento attivo.

  In alternativa puoi configurare &kate; in modo che mantenga sempre il terminale sincronizzato con il documento attuale, vedi konsole-config per ulteriori informazioni.

Strumenti Esegui il documento attuale

- Esegui il documento attuale in &konsole;. Possono essere eseguiti solo i documenti locali. &kate; mostrerà un avviso prima di eseguire i documenti, perché questa azione può essere una seria minaccia alla sicurezza.

Strumenti Attiva/Disattiva il pannello del terminale

- Passa il fuoco dal documento attuale al terminale e viceversa.

### Configurazione

Puoi configurare l'estensione Strumento visivo per terminale dalla pagina Terminale della finestra di configurazione.

Sono disponibili le seguenti opzioni:

Sincronizza automaticamente, quando è possibile, il terminale con il documento attuale

- Ciò comporterà l'esecuzione nel terminale integrato del comando `cd` nella cartella del documento attivo al momento dell'avvio e quando un nuovo documento acquisisce il fuoco. Se non è abilitata, sarà necessario eseguire manualmente tutta la navigazione nel terminale.

Impostare la variabile d'ambiente EDITOR a «kate -b»

- Questa opzione imposta la variabile d'ambiente `EDITOR` in modo che i programmi eseguiti nel terminale integrato che aprono file in un editor li aprano in &kate; invece che nell'editor predefinito configurato nella tua shell. Affinché il programma che lo ha invocato sappia che la modifica del file è terminata, non sarà possibile continuare a utilizzare il terminale fino alla chiusura del file in &kate;.

Nascondi &konsole; se viene premuto «Esc»

- Ciò permette di chiudere il terminale incorporato premendo il tasto &Esc;. Può causare dei problemi con le applicazioni di terminale che utilizzano il tasto &Esc;, ⪚ vim. Aggiungi queste applicazioni nella casella qui sotto. Le voci in questo elenco dovrebbero essere separate da virgole.

## L'estensione Filtro di testo

### Usare l'estensione Filtro di testo

Puoi usare questa estensione per elaborare il testo selezionato usando i comandi da terminale. La selezione sarà utilizzata come input per il comando, e il risultato rimpiazzerà la selezione o sarà copiato negli appunti, a seconda delle preferenze dell'utente.

### Esempi:

- `less /etc/fstab` - incolla il contenuto di questo file o lo copia negli appunti

- `wc` - conta le righe, le parole e i caratteri della selezione e li incolla nel documento, o li copia negli appunti

- `sort` - ordina le righe della selezione e incolla il risultato nel documento, o lo copia negli appunti

### Struttura del menu

&Ctrl;\ Strumenti Filtro di testo

- Apre la finestra Filtro di testo:

  La finestra Filtro di testo

  Inserisce il comando da shell nella casella combinata, oppure seleziona dalla cronologia un comando usato in precedenza.

  Copia il risultato invece di incollarlo

- Copia il risultato negli appunti senza modificare il documento.

Unisce STDOUT a STDERR

- Se selezionato verranno fusi i risultati da STDOUT e STDERR, e non saranno riportati gli errori. Diversamente STDERR sarà visualizzato come un messaggio passivo.

## Validazione &XML;

Questa estensione controlla che i file &XML; siano validi e siano scritti correttamente.

L'estensione controlla il file attuale: sul fondo della finestra principale di &kate; apparirà un elenco con gli avvertimenti e gli errori; puoi fare clic su un messaggio d'errore per saltare al punto corrispondente nel file. Se il file ha un DOCTYPE, allora per controllarne la validità si userà il DTD dato da questo. Ci si aspetta che il DTD sia in una posizione relativa al file attuale: per esempio, se il doctype si riferisce a `DTD/xhtml1-transitional.dtd` e il file è `/home/pippo/prova.xml`, allora ci si aspetta che il DTD sia a `/home/pippo/DTD/xhtml1-transitional.dtd`. Sono comunque supportati anche i DTD remoti specificati con http.

Se il file non ha un doctype, ne sarà controllata la corretta formattazione.

Per saperne di più su &XML;, vedi le pagine ufficiali del W3C su &XML;.

Internamente questa estensione chiama il comando esterno `xmllint`, che fa parte di libxml2; l'estensione non funzionerà se questo comando non è correttamente installato nel tuo sistema.

Per caricare questa estensione apri la finestra di configurazione di &kate; in Impostazioni Configura &kate;. Seleziona quindi Validazione &XML;, che apparirà nella sezione Estensioni, in Applicazione, e chiudi la finestra.

### Struttura del menu

&XML; Convalida &XML;

- Questo avvierà il controllo, come descritto sopra.

### Ringraziamenti e riconoscimenti

Estensione di &kate; Validazione &XML;, copyright 2002 di &Daniel.Naber; &Daniel.Naber.mail;.

Copyright 2002 della documentazione di &Daniel.Naber;

## Completamento &XML;

Questa estensione suggerisce cosa è ammissibile in un certo punto di un file &XML;, secondo la DTD del file. Saranno elencati i possibili elementi, gli attributi, i valori degli attributi o le entità, a seconda della posizione del cursore (per esempio, se il carattere a sinistra del cursore è &, vengono elencate tutte le entità). È anche possibile chiudere l'ultimo tag aperto a sinistra.

La DTD deve esistere in formato &XML;, come prodotta dal programma Perl `dtdparse`; indicheremo una tale DTD come meta-DTD. Sono fornite alcune meta-DTD, che sono installate in `katexmltools/` in ``qtpaths` `--paths GenericDataLocation`` ; questa è anche la cartella predefinita alla selezione di Assegna meta-DTD. Per produrre le tue meta-DTD recupera `dtdparse` da questo indirizzo.

### Uso

Avvia &kate; e apri la finestra di configurazione da Impostazioni Configura &kate;.... Seleziona quindi Completamento &XML;, che apparirà nella sezione Estensioni sotto Applicazione, e chiudi la finestra, dopodiché seleziona &XML;Assegna meta-DTD.... Se il documento non contiene alcun DOCTYPE o questo è sconosciuto, dovrai selezionare una meta-DTD dal filesystem, altrimenti sarà automaticamente caricata la meta-DTD corrispondente al DOCTYPE del documento attuale.

Puoi ora usare l'estensione mentre scrivi del testo:

< (minore)

- Questo attiverà un elenco di elementi possibili, a meno che il cursore sia già dentro a un tag. Nota che attualmente non puoi usarlo per inserire degli elementi di massimo livello (per esempio <html>).

</ (minore e sbarra)

- Inserendo questi caratteri avrai la possibilità di chiudere l'elemento attuale (l'ultimo aperto a sinistra del cursore); premi &Enter; per accettare il suggerimento. Contrariamente all'elemento del menu Chiudi elemento questo funziona solo quando è stata assegnata una DTD.

" (virgolette)

- Il tasto delle virgolette attiverà un elenco di valori possibili per gli attributi (se ce ne sono), se sei all'interno di un tag.

(spazio)

- Questo tasto attiverà un elenco di attributi possibili per l'elemento attuale, se sei dentro a un tag.

& (e commerciale)

- Questo tasto attiverà un elenco di entità.

### Funzionalità e limitazioni

Puoi provare tutte le funzioni e le limitazioni caricando in &kate; `katexmltools/testcases.xml` in ``qtpaths` `--paths GenericDataLocation`` e seguendo le istruzioni.

### Struttura del menu

&Ctrl;&Enter; &XML; Inserisci elemento...

- Questo aprirà una finestra che ti permette di inserire un elemento &XML;, mentre saranno inseriti automaticamente i caratteri <, > e il tag di chiusura. Il testo sarà incluso tra i tag di apertura e chiusura se lo avevi selezionato al momento della selezione di questo elemento del menu. Se hai assegnato una meta-DTD con Assegna meta-DTD... la finestra offre il completamento per tutti gli elementi che possono essere inseriti alla posizione attuale del cursore.

&Ctrl;< &XML; Chiudi elemento

- Questo cercherà nel testo un tag non ancora chiuso, e lo chiuderà inserendone il tag di chiusura corrispondente. La ricerca inizia dalla posizione del cursore e va verso sinistra. Se non è possibile trovare un tag aperto non succederà nulla.

&XML; Assegna meta-DTD...

- Questo dirà all'estensione quale meta-DTD usare per il documento attuale. Nota che questa assegnazione non verrà salvata, dovrai ripeterla al prossimo riavvio di &kate;.

### Ringraziamenti e riconoscimenti

Estensione di &kate; Completamento XML, copyright 2001, 2002 di &Daniel.Naber; &Daniel.Naber.mail;.

Copyright della versione per &kde; SC 4 2010 di Tomáš Trnka

Copyright 2001, 2002 della documentazione di &Daniel.Naber;

## L'estensione Esploratore del compilatore

L'estensione Esploratore del compilatore ti permette di usare direttamente in Kate l'esploratore del compilatore. Questo strumento è di solito limitato solamente a un file, ed è difficile vedere il codice generato di un file nel progetto. Questa estensione mira a semplificare questo processo, rilevando automaticamente i comandi di compilazione del tuo file.

### Uso

La prima cosa che devi fare è aprire una scheda dell'esploratore del compilatore: premi &Ctrl;&Alt;I per aprire la barra dei comandi, poi cerca «Apri il file corrente nell'Esploratore del compilatore» e premi Invio. Potresti anche voler aggiungere questa azione alla barra degli strumenti, oppure assegnarle una scorciatoia per un accesso più semplice.

Successivamente devi impostare un'istanza locale dell'esploratore del compilatore, oppure di usare quella pubblica https://godbolt.org/ instance. Vedi https://github.com/compiler-explorer/compiler-explorer. Dopo averla aggiunta, fai clic sulla casella combinata Option nella scheda dell'esploratore del compilatore che avevi aperto in precedenza, poi seleziona Modifica Url.... Inserisci quindi l'url del server dell'esploratore del compilatore.

Se devi vedere il codice generato di un file nel progetto hai bisogno anche di un compile_commands.json, diversamente puoi saltare questa parte. Questo può essere ottenuto facilmente se stai utilizzando un sistema di compilazione moderno, ad esempio CMake o Meson. Per CMake è sufficiente passare `-DCMAKE_EXPORT_COMPILE_COMMANDS=ON` quando si invoca cmake. Il `compile_commands.json` dovrebbe essere messo nella radice del progetto. Chiudi la scheda dell'esploratore del compilatore: quando la riapri dovrebbe essere così. Chiudi la scheda dell'esploratore del compilatore in Kate: quando la riapri dovrebbe mostrare i comandi di compilazione necessari per compilare il file.

Se stai usando l'esploratore del compilatore solo per vedere il codice generato per qualcosa di temporaneo, puoi semplicemente scrivere i comandi di compilazione per il tuo file e poi fare clic su Compila. Nota che la ricompilazione automatica alla modifica non è supportata: devi fare clic su Compila ogni volta che vuoi ricompilare.

Quando il file è stato compilato, nella parte destra dovresti vedere il codice generato. Puoi fare clic col tasto destro e selezionare Rivela il codice collegato per vedere il codice generato di una particolare riga. In maniera simile, nella parte destra puoi fare clic col tasto destro e selezionare Scorri al sorgente per vedere il codice sorgente di una certa riga di codice generato.

## L'estensione Formattazione

L'estensione di formattazione permette di formattare il codice in maniera semplice. L'estensione mira a preservare la cronologia degli annullamenti e la posizione del cursore utente durante la formattazione del codice, in modo che l'azione non disturbi il lavoro dell'utente. Questo è particolarmente importante per la formattazione automatica al salvataggio.

### Uso

Permette all'utente di usare il formattatore del codice in due modi:

- Manualmente, usando l'azione «Formatta documento».

- Automaticamente al salvataggio

Per un accesso più semplice puoi cercare questa azione nella barra dei comandi, e poi associargli una scorciatoia

### Linguaggi e formattatori supportati

L'elenco attuale delle lingue e dei formattatori comprende:

- C/C++/ObjectiveC/ObjectiveC++/Protobuf/GLSL/Java - `clang-format`

- Javascript/Typescript/JSX/TSX - `prettier`

- JSON

  - `prettier`

  - `clang-format`

  - `jq`

- Dart - `dartfmt`

- Rust - `rustfmt`

- Go - `gofmt`

- XML - `xmllint`

- Zig - `zigfmt`

- CMake - `cmake-format`

- D - `dfmt`

- Fish Shell - `fish_indent`

- Bash - `shfmt`

- Nix - `nixfmt`

- QML - `qmlformat`

- HTML - `prettier`

- Swift - `swiftformat`

- Erlang - `erlfmt`

- Godot Script - `gdformat`

- Python

  - `autopep8`

  - `ruff`

- YAML

  - `yamlfmt`

  - `prettier`

### Configurazione

L'estensione può essere configurata in due modi:

- Globalmente, dalla finestra Configura

- Per progetto, usando il file `.kateproject`

Alla lettura della configurazione l'estensione prova prima a leggerla dal file `.kateproject`, quindi legge quella globale. Esempio:

    {
        "formatOnSave": true,
        "formatterForJson": "jq",
        "cmake-format": {
            "formatOnSave": false
        },
        "autopep8": {
            "formatOnSave": false
        }
    }

Quanto sopra:

- abilita "format on save" globalmente

- specifica "jq" come il formattatore per JSON

- disabilita "format on save" per cmake-format e per autopep8

Per configurare il formattatore per un progetto, crea prima un file `.kateproject` e poi aggiungigli un oggetto `"formattatore"`. Qui dentro puoi specificare le impostazioni, come mostrato nell'esempio precedente. Esempio:

Affinché funzioni devi abilitare l'Estensione di progetto

    {
        "name": "My Cool Project",
        "files": [
            {
                "git": 1
            }
        ],
        "formatting": {
            "formatterForJson": "clang-format",
            "autopep8": {
                "formatOnSave": false
            }
        }
    }

### Disabilitare temporaneamente la formattazione al salvataggio

Mentre lavori, potresti aver spesso bisogno di disabilitare temporaneamente il formattatore per vari di motivi. Puoi farlo dalla barra dei menu, Strumenti Formattazione al salvataggio. Puoi anche innescare questa azione dalla Barra dei comandi.