# Treballar amb els connectors

Podeu activar els connectors individualment en el diàleg de configuració, el qual també proveeix accés a les opcions de configuració addicionals per als connectors que ho requereixin.

## Connectors de l'aplicació &kate;

Els connectors del &kate; són funcionalitats addicionals per a l'editor &kate;. Poden afegir menús extres i dreceres, i estendre les característiques del &kate;. Podeu instal·lar-ne tants com vulgueu, des del &kate;. Obriu el diàleg de configuració del &kate; amb Arranjament Configura el &kate;.... Seleccioneu Aplicació Connectors per a escollir els connectors que requeriu.

Els connectors d'aplicació disponibles són:

- Eines externes: Executa les eines i les aplicacions externes

- Navegador de traça inversa: Vista d'eina del navegador de traça inversa per a C/C++

- Connector de construcció: Compila o construeix amb Make i analitza els missatges d'error

- Tanca excepte/com: Tanca un grup de documents basats en un camí comú o en l'extensió del fitxer

- Selector de color: Mostra la vista prèvia dels noms de color coneguts

- Claus amb color - Claus amb color per a llegir millor

- CTags: Cerca definicions/declaracions amb CTags

- Vista prèvia del document: Previsualitza el document en el format de destinació.

- Commutador de documents: Canvia ràpidament de document amb el comportament d'&Alt;

- Navegador del sistema de fitxers: Vista d'eina del navegador del sistema de fitxers

- Vista en arbre de documents: Mostra els documents oberts en un arbre de fitxers

- &gdb;: Proporciona un frontal senzill del &gdb;

- Connector de projecte: Integració amb &git; i altres sistemes de control de codi font

- Replicode: Llenguatge IA constructivista i en temps d'execució

- Client LSP: El client LSP proporciona navegació i finalització de codi per a molts llenguatges

- Cerca i substitueix: Cerca i substitueix en els documents, carpetes o projectes

- Vista d'eina de scripts i retalls: Crea o baixa retalls de codi i scripts de l'editor

- Macros de teclat - Enregistra i reprodueix macros de teclat (és a dir, una seqüència d'acció de teclat)

- Connector SQL: Executa consultes a bases de dades SQL

- Visualitzador de símbols: Extreu i visualitza símbols de referència des del codi font

- Vista d'eina del terminal: Tindreu un terminal a punt, utilitzant el giny del &konsole; del &kde;

- Filtre de text: Processareu el text emprant ordres de terminal

- Compleció &XML;: Llista els elements, atributs, valors dels atributs i entitats &XML; permeses per la DTD

- Validació &XML;: Valida els fitxers en &XML; utilitzant el «xmllint»

- Explorador del compilador: Interfície a l'eina d'exploració del compilador

- Doina format: Connector de donar format al codi

## Eines externes

El connector Eines externes permet invocar aplicacions externes amb dades relacionades amb el document actual, per exemple, el seu &URL;, directori, text o selecció. Un cop habilitat, apareix una pàgina de configuració com es mostra a continuació que permetrà canviar o eliminar les eines existents. De la mateixa manera, es poden afegir eines noves al vostre gust. Les eines apareixeran en el submenú Eines externes del menú Eines de l'aplicació.

La pàgina de configuració permet afegir eines externes noves fent clic sobre el botó Afegeix. En aquest cas, apareixerà un menú emergent on es podrà afegir una eina externa nova, afegir una eina existent a partir d'una llista predefinida o afegir una categoria nova per a organitzar-les en categories. De la mateixa manera, les eines existents es podran modificar fent doble clic o invocant Edita... i Elimina sobre les eines seleccionades.

### Configurar les eines externes

L'edició d'una eina obrirà un diàleg de configuració que permetrà una configuració detallada de l'eina:

Com es pot veure, es poden definir molts detalls, com:

- El `Nom` de l'eina, el qual apareixerà després en el menú.

  La `Icona` opcional que estarà visible en el menú.

  L'`Executable` incloent un camí complet, o l'executable haurà d'estar a la variable d'entorn `PATH`.

  Els `Arguments` opcionals que es passen a l'executable.

  Una `Entrada` opcional que es passarà al procés a través de l'entrada estàndard.

  El `Directori de treball` on s'iniciarà l'eina. Si està buit, el directori de treball s'establirà en el camí cap al document actual.

  Un `Tipus &MIME;`, si està establert, l'eina només estarà activa si coincideix amb el tipus &MIME; del document actual.

  `Desa`, quan s'invoca, no es desarà res, el document actual o tots els documents.

  `Activador`, un activador per a executar aquesta eina. Un activador només afectarà el document actiu actualment i només s'executarà si el tipus MIME del document actiu actual coincideix amb el tipus MIME de l'eina externa.

  Hi ha disponibles els activadors següents:

- `Cap`, aquest és el predeterminat, i vol dir que l'eina no té cap activador.

  `Abans de desar`, aquest activador s'executarà just abans de desar el document.

  `Després de desar`, aquest activador executarà l'eina després de desar el document.

`Recarrega el document actual després de l'execució`, útil quan es modifica en el disc el fitxer actual.

`Sortida`, la sortida defineix la destinació de la sortida estàndard. S'estableix a `Ignorat`, `Insereix a la posició del cursor`, `Substitució del text seleccionat`, `Substitueix en el document actual`, `Afegeix al document actual`, `Insereix en un document nou`, `Copia al porta-retalls` o `Mostra en una subfinestra`.

Una `Ordre de l'editor` opcional que es pot utilitzar per a invocar l'eina externa a través de la línia d'ordres integrada.

El botó Per omissió només estarà visible per a les eines que s'envien amb el &kate;. Quan s'hi fa clic, totes les opcions de configuració de l'eina tornaran als valors predeterminats (també coneguts com, de fàbrica).

### L'expansió de les variables

Alguns camps d'edició com Executable, Arguments, Entrada i Directori de treball admeten variables que s'expandeixen en la invocació de les eines. Això s'indica amb la icona {} que apareix una vegada que un d'aquests camps d'entrada de text té el focus (vegeu el cercle vermell):

En passar el cursor per sobre un d'aquests camps d'entrada de text, també es mostrarà un consell d'eina amb el text actual expandit. A més, en fer clic sobre l'acció {}, s'obrirà un diàleg que llistarà totes les variables disponibles:

Aquesta característica proporciona molta flexibilitat quan es defineix una eina externa, ja que totes les variables de la forma `%{...}` s'expandiran quan s'invoqui l'eina. Hi ha dos tipus de variables admeses:

- `%{nom_variable}`

- `%{nom_variable:<value>}`

La primera forma `%{nom_variable}` senzillament substituirà la variable amb el seu contingut. Per exemple, la variable `%{Document:FileName}` se substituirà pel nom de fitxer del document actual sense el seu camí. La segona forma, `%{nom_variable:<value>}` obté el `<valor>` com a contingut. Per exemple, això es pot utilitzar per a expandir una variable d'entorn amb `%{ENV:HOME}`, o es pot obtenir la data actual en el format preferit com `%{Date:yyyy-MM-dd}`.

Les variables admeses inclouen:

- `Document:FileBaseName`: Nom base del fitxer sense el camí ni el sufix del document actual.

  `Document:FileExtension`: Extensió de fitxer del document actual.

  `Document:FileName`: Nom del fitxer sense el camí del document actual.

  `Document:FilePath`: Camí complet del document actual incloent el nom de fitxer

  `Document:Text`: Contingut del document actual.

  `Document:Path`: Camí complet del document actual excloent el nom de fitxer.

  `Document:NativeFilePath`: Camí complet del document incloent el nom de fitxer, amb el separador de camí natiu (barra inversa a Windows).

  `Document:NativePath`: Camí complet del document excloent el nom de fitxer, amb el separador de camí natiu (barra inversa a Windows).

  `Document:Cursor:Line`: Número de línia de la posició del cursor de text al document actual (comença per 0).

  `Document:Cursor:Column`: Número de columna de la posició del cursor de text al document actual (comença per 0).

  `Document:Cursor:XPos`: Component X de les coordenades de la pantalla global de la posició del cursor.

  `Document:Cursor:YPos`: Component Y de les coordenades de la pantalla global de la posició del cursor.

  `Document:Selection:Text`: Selecció de text del document actual.

  `Document:Selection:StartLine`: Línia d'inici del text seleccionat del document actual.

  `Document:Selection:StartColumn`: Columna inicial del text seleccionat del document actual.

  `Document:Selection:EndLine`: Final de línia del text seleccionat del document actual.

  `Document:Selection:EndColumn`: Final de columna del text seleccionat del document actual.

  `Document:RowCount`: Nombre de files del document actual.

  `Document:Variable:<variable>`: Expandeix arbitràriament les variables de document.

  `Date:Locale`: La data actual en la configuració regional actual.

  `Date:ISO`: La data actual (ISO).

  `Date:<value>`: La data actual (format de cadena QDate).

  `Time:Locale`: L'hora actual en la configuració regional actual.

  `Time:ISO`: L'hora actual (ISO).

  `Time:<value>`: L'hora actual (format de cadena QTime).

  `ENV:<value>`: Accés a les variables d'entorn.

  `JS:<expression>`: Avalua una sentència JavaScript senzilla.

  `PercentEncoded:<text>`: Percentatge de text codificat.

  `UUID`: Genera un UUID nou.

### Llista de les eines predeterminades

De manera predeterminada es distribueixen diverses eines. No obstant això, si teniu més eines útils, col·laboreu amb elles al nostre projecte de GitLab perquè puguem afegir-les a aquesta llista. De manera predeterminada totes les eines predeterminades estan visibles a la vista de llista. No obstant això, totes les eines es podran canviar al vostre gust, inclosa la categoria o fins i tot suprimir-les. Les eines suprimides es podran tornar a afegir fent clic al botó Afegeix que hi ha a la pàgina de configuració com s'ha descrit anteriorment.

### git-cola

El git-cola és un client gràfic de Git que permet organitzar i cometre amb facilitat els canvis. Si està instal·lat, també estarà disponible a través de la línia d'ordres escrivint `git-cola`

- `Nom`: git-cola

  `Icona`: git-cola

  `Executable`: git-cola

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

  `Ordre de l'editor`: git-cola

### gitk

El gitk també és un client de Git que permet visualitzar molt bé l'historial de Git.

- `Nom`: gitk

  `Icona`: git-gui

  `Executable`: gitk

  `Directori de treball`: %{Document:Path}

  `Ordre de l'editor`: gitk

### git blame

Inicia «git blame» per a seguir amb facilitat els canvis de Git en el fitxer actual.

- `Nom`: git blame

  `Executable`: git

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

  `Desa`: el document actual

  `Directori de treball`: %{Document:Path}

  `Ordre de l'editor`: git-blame

### Executar l'script de l'intèrpret d'ordes

Inicia una consola externa en la qual s'executa el document actual. L'script haurà d'indicar l'intèrpret en la primera línia mitjançant `#!/camí/intèrpret`.

- `Nom`: Executa l'script de l'intèrpret d'ordes

  `Icona`: system-run

  `Executable`: konsole

  `Arguments`: -e sh -c "cd %{Document:Path} && pwd && chmod -vc a+x %{Document:FileName} && ./%{Document:FileName} ; echo Premeu qualsevol tecla per a continuar. && read -n 1"

  `Desa`: el document actual

  `Directori de treball`: %{Document:Path}

  `Ordre de l'editor`: run-script

### Cercar a Google el text seleccionat

Cerca a Google el text seleccionat.

- `Nom`: Text seleccionat de Google

  `Icona`: globe

  `Executable`: xdg-open

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

  `Ordre de l'editor`: google

### Inserir l'UUID

Insereix un UUID nou cada vegada que s'invoca aquesta acció.

- `Nom`: Insereix un UUID

  `Executable`: echo

  `Arguments`: %{UUID}

  `Sortida`: Insereix a la posició del cursor

  `Ordre de l'editor`: uuid

### Format Clang en tot el fitxer

Executa «clang-format» sobre el fitxer actual en el disc. Després, el document es tornarà a carregar.

- `Nom`: Format Clang en tot el fitxer

  `Executable`: clang-format

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

  `Directori de treball`: %{Document:Path}

  `Desa`: el document actual

  `Reload`: Sí

  `Ordre de l'editor`: clang-format-file

### Format Clang en el text seleccionat

Executa «clang-format» només sobre el text seleccionat en el document actual.

- `Nom`: Format Clang en el text seleccionat

  `Executable`: clang-format

  `Arguments`: -assume-fileName: %{Document:FileName}

  `Directori de treball`: %{Document:Path}

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

  `Sortida`: Substitueix el text seleccionat

  `Ordre de l'editor`: clang-format-selection

### Vista prèvia del Qt Quick 2 (qmlscene)

Mostra una vista prèvia del fitxer QML actual en el «qmlscene».

- `Nom`: Vista prèvia Qt Quick 2 (qmlscene)

  `Executable`: qmlscene

  `Arguments`: %{Document:FileName}

  `Desa`: el document actual

  `Directori de treball`: %{Document:Path}

  `Ordre de l'editor`: qml-preview

### Format JSON en tot el fitxer

Dona format JSON en tot el fitxer.

- `Nom`: Format JSON en tot el fitxer

  `Icona`: application-json

  `Executable`: jq

  `Arguments`: %{Document:FileName}

  `Desa`: el document actual

  `Directori de treball`: %{Document:Path}

  `Sortida`: Substitueix en el document actual

  `Ordre de l'editor`: json-format-file

### Format XML en tot el fitxer

Dona format XML en tot el fitxer.

- `Nom`: Format XML en tot el fitxer

  `Icona`: application-xml

  `Executable`: xmllint

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

  `Desa`: el document actual

  `Directori de treball`: %{Document:Path}

  `Sortida`: Substitueix en el document actual

  `Ordre de l'editor`: xml-format-file

## Connector del navegador de traça inversa

### Ús del connector del navegador de traça inversa

Aquest connector és per a desenvolupadors i probablement de poca utilitat per als usuaris. Mostra una traça enrere de «gdb» en una vista de llista en una vista d'eina del &kate;. En fer clic sobre un element, s'obrirà el fitxer seleccionat i saltarà al número de línia correcta. Funciona per a traces enrere generades en la vostra pròpia màquina, si no que també funcionarà per a traces enrere d'altra gent, &ead;, amb `/home/dummy/qt-copy/…/qwidget.cpp` encara es trobarà en altres màquines. Perquè això funcioni, haureu d'indexar els directoris on es troba el codi font.

A vegades hi ha diversos fitxers amb el mateix nom, &pex;

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

Per a escollir la millor opció, el connector escull les dues últimes parts de l'&URL;, en aquest cas, això seria

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

I després, generalment el connector troba el correcte.

Indexar el «master» i algunes branques, òbviament donarà lloc a un conflicte.

### Configuració

A la pàgina de configuració, afegeix les carpetes que contenen el codi font.

Navegador de traça inversa
Configura els camins a la vista d'eina Navegador de traça inversa

En fer clic a D'acord s'iniciarà la indexació. Un cop finalitzada, obriu la vista d'eina Navegador de traça inversa.

Ara podeu carregar una traça inversa des del porta-retalls (&pex;, fent clic a Copia al porta-retalls al &drkonqi;) o des d'un fitxer.

## Connector de construcció

### Introducció

El connector Construeix permet executar accions com construir, netejar i compilar un projecte. També podeu executar automàticament les aplicacions generades. Bàsicament, el connector us dona una manera de configurar conjunts d'ordres a executar i pot analitzar la sortida per a enllaços a fitxers i línies i columnes específiques en aquests fitxers. Per tant, fins i tot si el connector es crea originalment per compilar C/C++ i es prova principalment amb ell, el connector també pot ser útil per a altres propòsits i llenguatges.

### Ús del connector de construcció

El connector de construcció afegeix una vista d'eina Construeix a la part inferior i un menú Construeix a la barra de menús. La vista d'eina es pot utilitzar per a seleccionar i configurar els objectius a construir, mentre que el menú i les seves dreceres es poden utilitzar per a seleccionar i executar les ordres configurades de l'intèrpret.

Sortida de la construcció

La vista d'eina Construeix disposa dues pestanyes estàtiques:

- Arranjament de l'objectiu

- Sortida

#### La pestanya Arranjament de l'objectiu

La pestanya arranjament de l'objectiu es pot utilitzar per a configurar diversos objectius de construcció i definir conjunts d'objectius.

Un conjunt de destinació és un grup d'ordres que es poden executar en un directori de treball especificat. Els conjunts de destinació es poden afegir a Projectes o Sessió. Els conjunts de destinació personalitzats afegits a Projectes s'emmagatzemen en un fitxer .kateproject.build al directori arrel del projecte i es restauren quan el projecte es torna a obrir. Els conjunts de destinació afegits a la Sessió s'emmagatzemen a la configuració de la sessió actual del Kate.

La primera fila, en un conjunt de destinació, conté un nom per al conjunt a la columna u, i a la columna dos tenim el directori on s'han d'executar les ordres. A cada fila següent, tenim un nom d'ordre a la columna u, una ordre de construcció a la columna dos i una ordre d'execució a la columna tres. Per a editar-ne un, feu doble clic a l'entrada o utilitzeu la drecera d'edició (sovint F2).

Directori de treball

- La segona columna de la primera fila en un conjunt de destinació, s'utilitza per a configurar el directori de treball utilitzat per a compilar i executar ordres. Si el connector del projecte està habilitat, la cadena del directori de treball també pot contenir espais reservats per al camí del directori base del projecte: %B i nom: %b

Ordre de construcció

- La segona columna de les «files no primeres», conté l'ordre de l'intèrpret que s'executarà al directori de treball. Fixeu-vos en la paraula intèrpret. Gairebé qualsevol ordre de l'intèrpret ho farà. L'ordre de construcció pot contenir variables de substitució. %f per al fitxer actual, %d per al directori del fitxer actual i %n per al nom base del fitxer actual (nom de fitxer sense sufix).

Executa una ordre

- La tercera columna de les «files no primeres», pot contenir una ordre de l'intèrpret d'ordres per a l'execució en un terminal real en el directori de treball de destinació. El terminal s'obre com a pestanya. El connector intentarà reutilitzar la pestanya del terminal, si s'executa la mateixa ordre i l'aplicació anterior ha sortit.

A la part superior de la pestanya Arranjament de l'objectiu hi ha una barra d'eines un filtre d'objectius i els botons següents:

- Construeix l'objectiu seleccionat
- Construeix i executa l'objectiu seleccionat
- Afegeix un objectiu de construcció nou
- Crea un conjunt nou d'objectius
- Copia l'ordre o el conjunt d'objectius
- Suprimeix l'ordre actual o el conjunt d'objectius

#### La pestanya Sortida

La pestanya Sortida mostra la sortida de la consola generada per l'ordre d'execució (construcció). Si una línia conté una ubicació de fitxer, es podrà fer clic en aquesta línia. Si la línia a la sortida també mostra un error o un avís, la línia tindrà un color diferent.

Si l'opció Afegeix errors i avisos als diagnòstics està activada a la pàgina de configuració del connector a la configuració del Kate, els errors i avisos també s'afegiran a la vista de diagnòstic. Per a navegar cap a l'error anterior a la vista de diagnòstics, premeu &Alt;&Maj;&Left;. Per a navegar cap a l'error següent, premeu &Alt;&Maj;&Right;.

### Estructura del menú

Construeix Selecciona l'objectiu…

- El filtre de selecció de destinació està enfocat a la pestanya Configuració de destinació. En escriure un nom s'ocultaran els objectius que no coincideixin amb la cadena escrita. També és possible utilitzar les tecles de fletxa per a navegar per l'arbre d'objectius. Quan se selecciona l'objectiu desitjat, en prémer Retorn o Entrada s'executarà i executarà l'objectiu seleccionat.

Construeix Construeix l'objectiu seleccionat

- Construeix l'últim objectiu seleccionat. Si no se n'ha seleccionat cap, funciona com a Selecciona l'objectiu…

Construeix Construeix i executa l'objectiu seleccionat

- Construeix l'últim objectiu seleccionat i executa l'ordre d'execució després que l'ordre de construcció hagi finalitzat correctament.

Construeix Compila el fitxer actual

- Intenta compilar el fitxer actual cercant una ordre en un possible «compile_commands.json».

Construeix Atura

- Atura la construcció d'un objectiu.

Construeix Focus a la pestanya següent de l'esquerra

- Enfoca la pestanya següent del connector de construcció a l'esquerra. O obre la vista d'eina del connector de construcció si està oculta.

Construeix Focus a la pestanya següent de la dreta

- Enfoca la pestanya següent del connector de construcció a la dreta. O obriu la vista d'eina del connector de construcció si està oculta.

Construeix Carrega els objectius des del directori de construcció del CMake

- Obre el diàleg de fitxers i permet a l'usuari seleccionar un CMakeCache.txt. Quan se selecciona un fitxer, el connector genera objectius d'ordres de construcció del CMake que es poden executar al directori de construcció del projecte basat en el CMake.

### Agraïments i reconeixements

El connector construcció del &kate; va ser escrit per en Kåre Särs.

Un agraïment especial a la Google Code-in 2011, a la participant Salma Sultana per escriure gran part d'aquesta secció.

## Connector de tancament excepte/com

### Introducció

Aquest connector permet tancar un grup de documents en funció de la seva extensió i el camí.

### Ús del connector de tancament excepte/com

Suposeu que teniu aquests documents oberts al &kate;:

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

Llavors teniu les opcions següents per a tancar documents com es mostra a la captura de pantalla:

Tanca excepte

Utilitzeu la casella de selecció en l'últim element de la llista per a activar o desactivar un diàleg de confirmació. L'opció seleccionada s'aplicarà en ambdues accions de tancar.

### Estructura del menú

Fitxer Tanca excepte

- Tanca tots els documents oberts, excepte aquells que coincideixin amb el camí o extensió de fitxer seleccionat en el submenú.

Fitxer Tanca com

- Tanca tots els documents oberts que coincideixin amb el camí o extensió de fitxer seleccionat en el submenú.

## Connector Selector de color

### Introducció

Aquest connector afegeix una vista prèvia/selector de color inclòs als colors en el text (&pex;, `#FFFFFF`, `white`).

Per a carregar aquest connector obriu el diàleg de configuració del &kate; a Arranjament Configura el &kate;.... A continuació, seleccioneu Selector de color i tanqueu el diàleg.

### Configuració

A la pàgina de configuració del Selector de color a la configuració del &kate;, podreu configurar les opcions següents de comportament del connector.

Mostra la vista prèvia dels noms de color coneguts

- Si es mostrarà el selector de color per als noms de color coneguts (&pex;, `skyblue`). Per a la llista dels colors, vegeu aquesta pàgina.

Col·loca la vista prèvia després del color del text

- Si es col·locarà la vista prèvia inclosa després del color del text en el text.

Coincidència de color hexadecimal

- Aquí podreu triar la millor opció de coincidència per als colors utilitzats en el vostre codi.

## Claus amb color

### Introducció

El connector de claus amb color acoloreix els parells de claus que concorden en colors diferents per a millorar la llegibilitat. No obstant això, no s'acoloreixen totes les claus. S'ignorarà la clau quan la clau concordant d'obertura o tancament no sigui visible. De la mateixa manera, no s'acolorirà un parell de claus que sigui l'únic parell de claudàtors d'una línia.

### Configuració

El connector no proporciona cap configuració.

## Connector de CTags

### Introducció

CTags genera un fitxer d'índex (o d'etiquetes) dels objectes del llenguatge trobats en els fitxers de codi font, permet que aquests elements estiguin ubicats de forma ràpida i fàcil utilitzant aquest connector al &kate;.

Una etiqueta significa un objecte del llenguatge per a la qual hi ha disponible una entrada d'índex (o, si no, es crearà una entrada d'índex per a aquest objecte).

La generació d'etiquetes és acceptada amb aquests llenguatges de programació.

### Configuració

El connector de CTags utilitza dos fitxers de bases de dades diferents per a l'índex.

A la pàgina de configuració de CTags a la configuració del &kate;, podeu afegir o eliminar directoris que contenen el codi font i regenerar la base de dades de CTags comuna.

#### Índex comú

Arranjament de CTags
Configura la base de dades global de CTags

A la part inferior de la pàgina de configuració podeu adaptar l'Ordre de CTags.

Per a obtenir més informació sobre totes les opcions disponibles, si us plau, llegiu la pàgina man de CTags. Aquesta pàgina man està disponible al &khelpcenter; i també podeu introduir l'&URL; man:/ctags directament al &konqueror;

En fer clic a Actualitza s'iniciarà la indexació. Un cop finalitzada, es tancarà el diàleg.

#### Índex de la sessió

Per a configurar l'índex de la sessió, obriu la vista de CTags.

Objectius de l'índex

- En aquesta pestanya podeu afegir o eliminar els directoris que contenen el codi font i regenerar manualment la base de dades específica de la sessió de CTags.

Base de dades

- Arranjament de la base de dades
  Configurant la base de dades de la sessió de CTags

  Seleccioneu un altre fitxer de base de dades de CTags, configureu l'ordre de CTags o torneu a l'ordre predeterminada.

### Ús del connector de CTags

Situeu el cursor del ratolí sobre l'objecte del llenguatge com una funció, símbol, &etc; que us interessa i després seleccioneu una de les accions en el Menú de CTags per a saltar a la línia i al fitxer on es defineix o declara aquest objecte.

De manera predeterminada, les accions al menú CTags no tenen dreceres assignades. Utilitzeu l'editor de dreceres de teclat per a configurar les vostres pròpies dreceres.

Alternativament, podeu utilitzar el camp de cerca a la pestanya Cerca de la vista de CTags.

En introduir caràcters en el camp de cerca s'iniciarà la cerca i mostrarà els noms dels objectes del llenguatge que coincideixen com funcions, classes, símbols, &etc; juntament amb el tipus i nom de fitxer.

Seleccioneu un element a la llista per a saltar a la línia corresponent al fitxer de codi font.

### Estructura del menú

CTags Fes un pas enrere

- Navega cap enrere en l'historial de l'última etiqueta visitada.

CTags Cerca el text actual

- Obre la pestanya Cerca de la vista de CTags i mostra a la llista tots els objectes del llenguatge que concordin amb la selecció de text actual.

CTags Ves a la declaració

- Si el cursor està en un objecte de definició, si cal, això obrirà el document que conté la declaració corresponent, activarà la seva vista i situarà el cursor al començament de la declaració.

CTags Ves a la definició

- Si el cursor està en un objecte de declaració, si cal, això obrirà el document que conté la definició corresponent, activarà la seva vista i situarà el cursor al començament de la definició.

## Connector de Vista prèvia del document

### Introducció

El connector permet una vista prèvia en viu a la barra lateral del document de text actualment editat en el format final. De manera que quan editeu &pex;, un text de &Markdown; o una imatge &SVG;, el resultat serà immediatament visible al costat del text d'origen.

Per a la visualització, el connector utilitza el connector &kparts;, el qual està seleccionat com a preferit per al tipus &MIME; del document. Si no hi ha cap connector de &kparts; per a aquest tipus, no hi haurà cap vista prèvia.

Per a canviar el connector preferit, obriu el mòdul Associacions de fitxer a l'&systemsettings; i editeu Ordre de preferència dels serveis a la pestanya Incrustat.

### Alguns connectors disponibles de la &kparts;

Tipus &MIME; | Connector de la &kparts;
Text de &Markdown; | KMarkdownWebViewPart o OkularPart
Imatge &SVG; | SVGPart
Fitxers UI de les &Qt; | KUIViewerPart
Fitxers de grafs &DOT; | KGraphviewerPart

### Estructura del menú

Visualitza Vistes d'eina Mostra la vista prèvia

- Mostra o oculta la vista prèvia del document del &kate; a la barra lateral.

### Interfície

Els botons a la part superior de la finestra de vista prèvia proporcionen aquestes accions:

- Bloqueja la vista prèvia en un document determinat. Si seleccioneu aquesta opció, assegurareu que si es canvia el focus a un altre document a la mateixa finestra del &kate;, la vista prèvia no seguirà a aquest document, sinó que continuarà previsualitzant aquest document.

- Habilita o inhabilita les actualitzacions de la vista prèvia del contingut del document actual

- Actualitzeu manualment la vista prèvia del contingut del document actual

- Un menú desplegable amb accions del connector de la &kparts;

## Connector del commutador de documents

### Estructura del menú

&Ctrl; Visualitza Vistes emprades per darrera vegada

&Ctrl;&Maj; Visualitza Vistes emprades per darrera vegada (a l'inrevés)

- Obre una llista amb els últims documents visualitzats:

  Últims documents visualitzats

  Manteniu premudes les tecles &Ctrl; i per a avançar a través de la llista. A més, premeu la tecla &Maj; per a invertir la direcció.

  Manteniu premuda la drecera &Ctrl; i podeu utilitzar les tecles &Up;, &Down;, &Home; o &End; per a navegar per la llista. En prémer una tecla de caràcter se circularà consecutivament a través de tots els elements amb la primera coincidència de la llista. Si deixeu anar les tecles de drecera, la vista canviarà al document seleccionat a la llista.

## Navegador del sistema de fitxers

El navegador del sistema de fitxers és un visualitzador de carpetes, permet obrir fitxers d'una carpeta que es mostren en el marc actual.

### Estructura del menú

Visualitza Vistes d'eina Mostra Navegador del sistema de fitxers

- Mostra o oculta la presència del navegador del sistema de fitxers del &kate;.

### Interfície

De dalt a baix, el navegador del sistema de fitxers consta dels elements següents:

Una barra d'eines

- Aquesta conté els botons d'eines per a la navegació estàndard:

  Enrere

- Fa que la vista de carpeta faci un `cd` a la carpeta que s'ha mostrat anteriorment en l'historial. Aquest botó està desactivat, si no hi ha un element anterior.

Endavant

- Fa que la vista de carpeta faci un `cd` a la carpeta que s'ha mostrat seguidament en l'historial. Aquest botó està desactivat, si no hi ha un element següent.

Punts

- Obre un submenú per a editar o afegir punts i afegir una nova carpeta de punts.

Carpeta de documents actual

- Aquest botó farà que la vista de carpeta faci un `cd` a la carpeta del document actiu, si és possible. Aquest botó estarà desactivat, si el document actiu és un fitxer nou i sense desar, o resideix en una carpeta sobre la qual no es pot decidir.

Opcions

- Vista breu

- Només mostra els noms de fitxer.

Vista detallada

- Mostra el Nom, Data i Mida dels fitxers.

Vista en arbre

- Com una vista breu, però les carpetes es poden expandir per a veure'n el contingut.

Vista en arbre detallada

- Això també permet que les carpetes s'expandeixin, però mostra les columnes addicionals disponibles a la vista detallada.

Mostra els fitxers ocults

- Mostra els fitxers normalment ocults pel vostre &SO;.

Sincronitza automàticament amb el document actual

- Quan aquesta opció està habilitada, el navegador del sistema de fitxers automàticament farà `cd` a la carpeta del document obert actualment en l'àrea d'edició cada vegada que aquest canvia.

Una entrada de la ubicació

- Mostra un camí de navegació cap a la carpeta oberta, similar al &dolphin;. Podeu fer clic sobre una carpeta qualsevol per a anar-hi, o fer clic sobre una de les fletxes a l'esquerra d'una carpeta per a seleccionar les carpetes de sota. També podeu seleccionar des de la llista de llocs fent clic sobre la icona de l'esquerra en el camí de navegació, el qual mostrarà una icona que representarà el lloc actual.

  També podeu fer clic a la dreta del camí per a canviar a un quadre de text on podreu escriure el camí d'una carpeta per a navegar. L'entrada de l'&URL; manté una llista dels camins que heu escrit. Per a triar-ne un, utilitzeu el botó de fletxa a la dreta de l'entrada.

  L'entrada de l'&URL; disposa de compleció automàtica. El mètode de compleció es pot ajustar mitjançant el menú del &BDR; de l'entrada de text.

Una vista de carpeta

- Aquesta és una vista de carpeta estàndard del &kde;.

Una entrada de filtre

- L'entrada de filtre permet introduir un filtre per als fitxers mostrats a la vista de carpeta. El filtre utilitza llenguatge estàndard, els patrons han d'estar separats per espais en blanc. Exemple: `*.cpp *.h *.moc`

  Per a mostrar tots els fitxers, escriviu un asterisc `*`.

  L'entrada de filtre desa els últims 10 filtres d'entrada entre les sessions. Per a utilitzar-lo, premeu la fletxa a la dreta de l'entrada i seleccioneu la cadena de filtre desitjada. Podeu desactivar el filtre prement el botó Neteja el text a l'esquerra de la fletxa de compleció automàtica.

### Configuració

Aquest connector es pot configurar a la pàgina Navegador del sistema de fitxers de la configuració del &kate;.

Barra d'eines

- Configura els botons de la barra d'eines del navegador del sistema de fitxers movent els que vulgueu activar cap a la llista Accions seleccionades, i el seu ordre utilitzant els botons de fletxa al costat de la llista.

## La llista Documents

### Introducció

La llista Documents mostra una llista de tots els documents actualment oberts al &kate;. Els fitxers modificats tindran una petita icona d'un disquet a la seva esquerra per a indicar el seu estat.

A la part superior de la llista Documents hi ha una barra d'eines amb els botons següents:

- Crea un document nou
- Obre un document existent
- Document anterior
- Document següent
- Desa el document actual
- Desa el document actual sota un nom nou

De manera predeterminada, la llista Documents apareix en el Mode en arbre, la qual mostra l'estructura de les carpetes envoltant tots els documents oberts. També està disponible el Mode de llista, que mostra una llista simple de tots els documents oberts. Podeu canviar els modes fent clic dret sobre la llista i seleccionant-ho des del menú Mode de vista.

Si s'obren dos o més fitxers amb el mateix nom (ubicats en diferents carpetes) en el Mode de llista, el nom del segon prendrà la forma «(2)» i així successivament. El consell d'eina per al fitxer mostrarà el seu nom complet incloent el camí, permetent-vos escollir el que vulgueu.

Per a mostrar un document en el marc actiu, feu clic al nom del document en la llista.

El menú contextual té algunes accions comunes al menú Fitxer.

A més, hi ha accions del gestor de fitxers per a reanomenar o suprimir el fitxer. Amb Copia la ubicació podreu copiar el camí complet del document al porta-retalls.

Podeu ordenar la llista de diferents formes fent clic amb el botó dret en la llista i seleccionant la desitjada des del menú Ordena per. Les opcions són:

Nom del document

- Llista els documents segons l'ordre alfabètic del seu nom.

Camí del document

- Llista els documents segons l'ordre alfabètic del seu camí.

Ordre d'obertura

- Llista els documents en l'ordre d'obertura.

La llista documents, de forma predeterminada mostrarà el vostre historial ombrejant les entrades dels documents més recents amb un color de fons. Si el document fou editat, s'utilitzarà una combinació de colors. Els documents més recents tindran colors més intensos, de forma que pugueu trobar amb més facilitat els documents amb els quals heu treballat. Aquesta característica es pot desactivar a la pàgina Documents del diàleg de configuració.

La ubicació predeterminada de la llista Documents a la finestra del &kate; es troba a l'esquerra de l'àrea d'edició.

### Estructura del menú

&Alt;&Up; Visualitza Document anterior

- Obre el document mostrant-lo per sobre del document obert actualment a la llista Documents.

&Alt;&Down; Visualitza Document següent

- Obre el document mostrant-lo per sota del document obert actualment a la llista Documents.

Visualitza Mostra els actius

- Mostra el document obert a la llista Documents.

### Configuració

Ombra del fons

- Aquesta secció permet activar o desactivar la visualització de l'ombra del fons de la vostra activitat recent, i triar quins colors utilitzar si està activada.

Ordena per

- Estableix la manera com s'ordenarà la llista Documents. Això també es pot configurar des del menú del &BDR; a la llista Documents.

Mode de vista

- Ofereix dues opcions que afecten la visualització de la vista d'eina Documents. L'opció Vista en arbre mostrarà els documents en un arbre sota les carpetes on es trobin, mentre que l'opció Vista de llista mostrarà una llista plana dels documents.

Mostra el camí sencer

- Quan la vista en arbre i aquesta opció estan activades, les entrades de carpeta mostrades a la vista d'eina Documents mostrarà el camí complet cap als fitxers de la carpeta, a més del nom de la carpeta. No té cap efecte a la vista de llista.

Mostra la barra d'eines

- Quan està habilitada, es mostrarà una barra d'eines amb accions com Desa a sobre de la llista de documents. Desmarqueu aquesta opció si la barra d'eines ha d'estar oculta.

Mostra el botó de tancament

- Quan està habilitada, el &kate; mostrarà un botó de tancament en passar el ratolí per sobre dels documents oberts.

## Connector de &gdb;

### Introducció

El connector &gdb; del &kate; proporciona un frontal únic a qualsevol depurador que admeti el Debugger Adapter Protocol. En particular, això inclou el Depurador del projecte GNU, també anomenat GDB, com s'explica aquí.

L'experiència prèvia amb &gdb; és molt recomanable. Per a obtenir més informació sobre l'ús de &gdb;, visiteu el lloc web de &gdb;.

Podeu activar el connector de &gdb; a la secció Connectors de la configuració del &kate;.

Si compileu amb &gcc;/`g++` és possible que vulgueu utilitzar l'argument de la línia d'ordres ``-ggdb``.

Una vegada fets aquests preparatius, obriu el fitxer d'origen en el &kate;, seleccioneu el «perfil del depurador», introduïu el camí cap a l'executable a la pestanya Arranjament de la vista d'eina Vista del depurador i seleccioneu Depura Inicia la depuració des del menú per a començar.

El «perfil del depurador» selecciona el servidor DAP a utilitzar (p. ex., GDB) i la forma en què s'ha de llançar aquest servidor. Un cas típic és que el servidor llanci un procés tal com s'ha especificat anteriorment, però també es pot adjuntar a un procés en execució (en aquest cas s'haurà d'especificar un PID en lloc d'un executable). També pot haver-hi altres modes que siguin específics del llenguatge i del servidor DAP. Vegeu també més endavant per obtenir més detalls sobre el fons i la configuració.

### Estructura del menú i de la barra d'eines

Totes aquestes opcions estan disponibles en els menús del &kate;, i moltes estan disponibles a la barra d'eines de depuració, així.

Visualitza Vista d'eina Mostra Vista del depurador

- Mostra una vista d'eina que conté la sortida de &gdb;, la línia d'ordres de &gdb; utilitzada, i altres opcions de configuració.

Visualitza Vista d'eina Mostra Locals i pila

- Mostra una llista de totes les variables actualment carregades, els seus valors i les traces enrere del &gdb;.

Depura Objectius

- Un submenú que conté una llista d'objectius (executables).

Depura Inicia la depuració

- Inicia el &gdb; amb un objectiu.

Depura Mata/atura la depuració

- Atura el &gdb;.

Depura Reinicia la depuració

- Reinicia el &gdb;.

Depura Commuta entre punt d'interrupció/interrupció

- Estableix un punt d'interrupció a la ubicació actual del cursor.

Depura Avança per dins

- Executa la sentència present (la crida a la funció serà depurada).

Depura Passa per sobre

- Executa la sentència present (la crida a la funció no serà depurada).

Depura Avança per fora

- Reprèn l'execució fins que finalitza el programa que s'està executant.

Depura Mou el CP

- Mou el comptador del programa (propera execució).

Depura Executa fins al cursor

- Executa el programa fins que arriba a la posició actual del cursor.

Depura Continua

- Ignora qualsevol punt d'interrupció i executa el programa fins que acaba (amb èxit o no).

Depura Imprimeix el valor

- Imprimeix el valor de la variable a la qual està apuntant el cursor.

Arranjament Barres d'eines mostrades Connector de &gdb;

- Mostra la barra d'eines de depuració.

### La vista del depurador

La vista d'eina Vista del depurador consisteix en diverses pestanyes:

Sortida del &gdb;

- Conté la sortida del &gdb; i una línia d'ordres del &gdb;.

  La pestanya Sortida La pestanya Sortida.

  La pestanya Sortida mostra la sortida des d'una sessió de depuració.

Arranjament

- Executable

- Camí cap a l'objectiu (executable) per a la depuració.

Directori de treball

- El directori de treball actual que proporciona l'objectiu.

Arguments

- Arguments passats al programa.

Mantén el focus

- Mantén el focus a la línia d'ordres del &gdb;.

Redirigeix la E/S

- Obre una nova pestanya E/S a la Vista del depurador on podreu veure la sortida i proveir entrades al programa en execució.

El diàleg d'arranjament El diàleg d'arranjament

El diàleg Arranjament mostra la configuració d'una sessió de depuració.

ES

- Conté una àrea que mostra la sortida del programa en execució i una línia d'ordres des d'on podeu proveir entrades en aquest.

  La pestanya ES La pestanya ES.

  La pestanya ES mostra la sortida des d'una prova simple del programa.

### La pila de crides i locals

La vista d'eina Pila de crides conté una llista amb format de traces inverses retornada pel &gdb;.

La vista d'eina Pila de crides del &gdb; La vista d'eina Pila de crides.

La vista d'eina Pila de crides del connector de &gdb;.

La vista d'eina Locals conté una llista de totes les variables actualment carregades i els seus valors corresponents.

La vista d'eina Locals del &gdb; La vista d'eina Locals.

La vista d'eina Locals del connector de &gdb;.

### Agraïments i reconeixements

Un agraïment especial a la Google Code-in 2011, al participant Martin Gergov per escriure gran part d'aquesta secció.

### Configuració

La pàgina de configuració del connector defineix els «perfils del depurador» que es poden seleccionar. Aquí es mostra la configuració predeterminada (JSON) i un usuari la pot «substituir» proporcionant una forma semblant. Seguidament hi ha un extracte d'exemple:

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

Cadascuna de les entrades de `configurations` es combina amb les dades `run` i forma un «perfil». Això especifica el servidor DAP a llançar junt amb els seus arguments, a on els darrers són específics al perfil (`commandArgs`). Les altres parts especifiquen la petició del protocol DAP (`launch` o `attach`), junt amb les extensions específiques del DAP.

Per descomptat, el servidor especificat s'ha d'instal·lar (i normalment també en el `PATH` per a una execució correcta).

S'apliquen diverses etapes de sobreescriptura/fusió; la configuració de l'usuari (carregada des del fitxer) substitueix la configuració predeterminada (interna) i, al seu torn l'entrada «dap» substitueix a la configuració del projecte `.kateproject`.

#### Configuració de l'entorn d'execució

Es poden trobar més detalls i explicacions a la secció Entorn d'execució del client LSP a continuació. Però n'hi ha prou amb dir aquí que pot ser necessari executar el procés de depuració (i el servidor DAP) en un «entorn especial», ja sigui simplement definit per variables d'entorn o algun contenidor (aportant les dependències i circumstàncies requerides per a una execució correcta).

Similar a l'exemple de la secció referenciada, la configuració següent es pot proporcionar en un `.kateproject`.

    {
        // això també pot ser una matriu d'objectes
        "exec": {
            "hostname": "foobar"
            // l'ordre també podria ser una matriu de cadenes
            "prefix": "podman exec -i foobarcontainer",
            "mapRemoteRoot": true,
            "pathMappings": [
                // són possibles qualsevol de les formes següents
                // també existeix una alternativa més automàgica, vegeu la secció referenciada
                [ "/dir/on/host", "/mounted/in/container" ]
                { "localRoot": "/local/dir", "remoteRoot": "/remote/dir" }
            ]
        },
        "dap": {
            "debugpy": {
                "run": {
                    // en aquesta secció, s'aplica a totes les configuracions
                    // que coincidiran/es fusionaran amb l'objecte de més amunt
                    "exec": { "hostname": "foobar" },
                    // si el servidor hi està connectat,
                    // opcionalment especifica un port explícit (que està publicat/reenviat de manera adequada)
                    "port": 5678,
                    // el servidor també podria acceptar més que la màquina local
                    "host": "0.0.0.0"
                }
            }
        }
    }

La secció referenciada s'ha de consultar per als detalls, però en essència, es preposarà el `prefix` abans que la línia d'ordres del servidor DAP especificada en un altre lloc. L'efecte és que el servidor s'executa dins del contenidor especificat i després al seu torn també el procés llançat. El `pathMapping` organitza la transformació dels camins de fitxer entre la vista de l'editor i la vista del servidor DAP (contenidor), p. ex., quan es tracta de la configuració dels punts d'interrupció o la gestió de les traces inverses informades. Tingueu en compte que aquest mapatge és opcional i pot ser o no útil. Quan es tracta amb el codi C/C++ que es compila a «host», la informació dels símbols fa referència als fitxers de codi font de l'amfitrió que no existeixen en absolut a l'altre entorn. No obstant això, en altres circumstàncies de creació de scripts (p. ex. python), es fa referència als fitxers reals en temps d'execució (en l'altre entorn).

Evidentment, cal tenir en compte el següent.

- El servidor DAP ha d'estar present a l'entorn/contenidor, el qual s'ha de configurar per a permetre una operació de depuració adequada (capacitats privilegiades, si calen).

- Cal que sigui possible la comunicació entre editor i el DAP. En el cas d'un contenidor, aquest últim hauria d'utilitzar la xarxa de l'amfitrió, o proporcionar un port adequat mapat/publicat juntament amb el fragment corresponent de configuració com a l'exemple anterior (com un de seleccionat automàticament en el cas del port 0 no ho faria a través seu).

- Un executable/PID especificat hauria d'estar en la perspectiva del «contenidor», així com qualsevol argument (executable de depuració).

També, com en el cas de LSP, s'estableixen algunes variables d'entorn; `KATE_EXEC_PLUGIN` s'estableix a `dap`, `KATE_EXEC_SERVER` s'estableix al tipus de depurador/llenguatge (p. ex. `python`) i `KATE_EXEC_PROFILE` s'estableix a l'entrada de la configuració (p. ex. `launch`).

## Connector de projecte

### Introducció

La idea bàsica del connector Projecte és tenir una llista estructurada dels fitxers que pertanyen al projecte amb les propietats següents:

1. Proporciona una vista estructurada dels fitxers

2. Fa que sigui molt fàcil i ràpid obrir i canviar de projecte

3. Implementa la cerca i substitució per a un projecte

4. Proporciona una compleció automàtica simple

5. Fa que sigui senzill obrir ràpidament fitxers en el projecte

6. Implementa la construcció del projecte

### Vista estructurada dels fitxers

Una vegada es carrega el connector Projecte a la pàgina de configuració del &kate;, obriu un fitxer en un projecte i apareixerà una barra lateral que llistarà tots els projectes, així com els fitxers de projecte de la manera següent:

Vista del projecte

Com podeu veure, el projecte actualment actiu és el «Kate», i el seu contingut apareix a la vista en arbre. En fer clic sobre algun dels fitxers a la vista en arbre, aquest s'obrirà a l'editor. A més, proporciona un menú contextual amb el qual podreu obrir els fitxers amb altres aplicacions, com per exemple un fitxer `.ui` amb el Qt Designer.

Podeu filtrar els elements escrivint parts del nom de fitxer que esteu cercant a la barra de cerca a la part inferior de la llista.

### Canviar de projecte

La idea és que mai hàgiu d'obrir un projecte de forma manual, això encara no s'admet en absolut. Per tant, què passa si obriu un fitxer, el connector Projecte ràpidament escanejarà la carpeta i les seves carpetes pare per a un fitxer `.kateproject`. Si el troba, el projecte serà carregat automàticament.

D'altra banda, si obriu un altre document al &kate;, que pertanyi a un altre projecte, el connector Projecte canviarà automàticament el projecte actual. Fent-ho de manera intuïtiva, sempre restarà actiu el projecte correcte. Per descomptat, també podeu canviar el projecte actiu en aquest moment utilitzant el quadre combinat.

### Cerca i substitueix en projectes

El &kate; té un connector Cerca i substitueix que apareix a la barra lateral inferior. Si es carrega un projecte, s'obrirà la barra lateral Cerca i substitueix, i canviarà al mode de cerca i substitueix al projecte actual:

Cerca en projectes

### Compleció automàtica simple

Amb el coneixement de tots els fitxers pertanyents a un projecte, el connector Projecte proporciona instal·lacions per a la compleció automàtica senzilla basada en CTags. Si s'obre un projecte inicialment, el CTags analitzarà tots els fitxers de projecte en un fil en segon pla i desarà la informació CTags a `/tmp`. Aquest fitxer s'utilitza per a emplenar la finestra emergent de compleció automàtica al &kate;.

Per contra, sense aquesta compleció automàtica, el &kate; només serà capaç de mostrar els elements de compleció automàtica a partir de les paraules del fitxer actual. Pel que la compleció automàtica proporcionada pel connector Projecte és molt més potent.

Compleció en projectes

Si no es troba CTags, una finestra emergent passiva advertirà sobre aquest problema. També és notable, que el fitxer CTags a `/tmp` es netejarà quan se surti del &kate;, de manera que el connector no contaminarà cap carpeta amb fitxers no desitjats.

### Implementar la construcció del projecte

Una altra característica és tenir implementat el connector Construeix, el qual es configura correctament de forma automàtica.

### Crear projectes

#### Carregar automàticament els projectes

El connector Projecte té una característica de càrrega automàtica. Podeu llegir la llista de fitxers des del sistema de control de versions. Amb aquesta finalitat, la càrrega automàtica per al sistema de control de versions respectiu necessita ser activada a la configuració (activada de manera predeterminada):

Configuració de connector Projecte

#### Crear projectes manualment

Només haureu de crear un fitxer `.kateproject` a la carpeta arrel del projecte. Per exemple, el fitxer `.kateproject` del «Kate» es veu així:

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

El contingut del fitxer s'escriu en la sintaxi &JSON;. El nom del projecte és «Kate», i els fitxers continguts s'han de llegir des de &git;.

També en comptes de `git` hi ha implementats el subversion a través de `svn` i el mercurial a través de `hg`. Si no voleu llegir els fitxers des d'un sistema de control de versions, podeu invocar el Kate des de la línia d'ordres com:

    kate /path/to/folder

o dir-li que carregui els fitxers de forma recursiva des dels directoris com segueix:

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

Aquí, les subcarpetes i els filtres defineixen què és part del projecte. També podeu barrejar el control de versions i fitxers basats en filtres. Els fitxers ocults no es recuperaran si l'opció `"hidden"` és 0. `"exclude_patterns"` és una llista de patrons d'expressió regular que es poden utilitzar per a excloure carpetes i fitxers de l'arbre del projecte. En aquest exemple, s'exclouran tots els fitxers i carpetes d'un directori `build` des de l'arrel.

Si voleu afegir implementació per a la construcció, podeu escriure un `.kateproject` com aquest:

    {
      "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"
          }
        ]
      }
    }

Els objectius especificats abans apareixeran al Connector de construcció sota «Objectius del connector de projectes». Si s'especifica la matriu `"targets"`, llavors s'ignoren `"build"`, `"clean"` i `"install"`. Cada element de la matriu especifica un objectiu. `"name"` és el nom de l'objectiu, `"build_cmd"` s'usarà per a construir l'objectiu, `"run_cmd"` s'usarà per a executar l'objectiu. El més important de tot és `"directory"`, és a on s'executaran les ordres.

En cas que tingueu un fitxer `.kateproject` seguit per un sistema de control de versions, però necessiteu canviar la configuració per a un espai de treball en particular, podreu desar aquests canvis en un fitxer separat anomenat `.kateproject.local`. El seu contingut tindrà prioritat sobre `.kateproject`.

### Projecte actual

Utilitzant &Alt;1 Projectes Ves a obrireu la vista Projecte actual a la part inferior de la finestra de l'editor amb quatre pestanyes:

Projecte actual

Plafó del terminal

- Un emulador de terminal començant a la carpeta arrel del projecte.

Índex del codi

- En introduir caràcters a la barra de cerca s'iniciarà la cerca i mostrarà els noms coincidents de les funcions, classes, símbols, &etc;, juntament amb el tipus, nom de fitxer i número de línia.

  Seleccioneu un element a la llista per a saltar a la línia corresponent al fitxer de codi font.

Anàlisi del codi

- Feu clic a Inicia l'anàlisi per a realitzar una anàlisi estàtica del codi per a C i C++ utilitzant el `cppcheck` i generar un informe que mostri el nom de fitxer, número de la línia, la severitat (estil, avís, &etc;) i el problema trobat.

  Seleccioneu un element a la llista per a saltar a la línia corresponent al fitxer de codi font.

Notes

- El text introduït en aquesta pestanya es desa al fitxer `.kateproject.notes`.

### El menú Projectes

El menú Projectes permet canviar entre els projectes actualment oberts. És mostrat pel connector Projecte.

&Ctrl;&Alt;&Left; Projectes Enrere

- Canvia al projecte anterior.

&Ctrl;&Alt;&Right; Projectes Endavant

- Canvia al projecte següent.

&Alt;1 Projectes Ves a

- Obre la vista Projecte actual a la part inferior de la finestra de l'editor.

## Connector del client LSP

El connector del client LSP proporciona moltes característiques de llenguatge com ara la finalització de codi, la navegació de codi o la cerca de referències basades en el protocol del servidor del llenguatge (Language Server Protocol -LSP-).

Una vegada hàgiu activat el client LSP a la pàgina del connector, apareixerà una pàgina nova anomenada Client LSP al vostre diàleg de configuració del &kate;.

### Estructura del menú

Si correspon, l'ordre LSP corresponent també s'esmentarà a l'explicació a continuació, la documentació pot proporcionar antecedents i interpretacions addicionals, encara que pot variar segons el llenguatge real. La frase «símbol actual» es refereix al símbol corresponent a la posició actual del cursor, segons el que determini la implementació del llenguatge i del servidor.

Client LSP Ves a la definició

- [textDocument/definition] Va a la definició del símbol actual.

Client LSP Ves a la declaració

- [textDocument/declaration] Va a la declaració del símbol actual.

Client LSP Ves a la definició del tipus

- [textDocument/typeDefinition] Va a la definició de tipus del símbol actual.

Client LSP Troba les referències

- [textDocument/references] Cerca les referències al símbol actual.

LSP Client Troba les implementacions

- [textDocument/implementation] Cerca les implementacions del símbol actual.

Client LSP Ressaltat

- [textDocument/documentHighlight] Ressalta les referències del símbol actual en el document actual.

Client LSP En passar per sobre

- [textDocument/hover] Ofereix informació en passar per sobre per al símbol actual.

Client LSP Format

- [textDocument/formatting] [textDocument/rangeFormatting] Dona format al document actual o a la selecció actual.

Client LSP Reanomena

- [textDocument/rename] Canvia el nom del símbol actual.

Client LSP Esmena ràpida

- [textDocument/codeAction, workspace/executeCommand] Calcula i aplica una solució ràpida per a un diagnòstic a la posició (o línia) actual.

Client LSP Mostra la documentació de compleció seleccionada

- Mostra la documentació per a un element seleccionat a la llista de compleció.

Client LSP Activa l'ajuda de signatures amb la compleció automàtica

- També es mostrarà ajuda de la signatura a la llista de compleció.

Client LSP Inclou la declaració a les referències

- Sol·licita incloure la declaració d'un símbol quan se sol·liciten les referències.

Client LSP Afegeix un parèntesi a la finalització de la funció

- Afegeix automàticament una parella de parèntesis després de completar una funció.

Client LSP Mostra la informació en passar per sobre

- Mostra informació en passar per sobre (cursor del ratolí). Independentment d'aquesta opció de configuració, la sol·licitud sempre es podrà iniciar manualment.

Client LSP Format per a escriure

- [document/onTypeFormatting] Dona format a parts del document en escriure certs caràcters desencadenants. Per exemple, es podria aplicar sagnat a la línia nova, o segons ho determini el servidor LSP. Recordeu que els scripts de sagnat de l'editor podrien estar intentant fer el mateix (segons el mode) i, per tant, podria no ser recomanable tenir ambdós habilitats alhora.

Client LSP Sincronització incremental de la documentació

- Envia edicions parcials del document per a actualitzar el servidor en lloc de tot el text del document (si està admès).

Client LSP Ressalta la ubicació «goto»

- Proporciona una indicació visual transitòria després de realitzar un «goto» a una ubicació (de definició, declaració, etc.).

Client LSP Mostra les notificacions de diagnòstic

- [textDocument/publishDiagnostics] Processa i mostra les notificacions de diagnòstic enviades pel servidor.

Client LSP Mostra els ressaltats de diagnòstic

- Afegeix ressaltat del text per als intervals indicats en el diagnòstic.

Client LSP Mostra les marques de diagnòstic

- Afegeix marques al document per a les línies indicades en el diagnòstic.

Client LSP Canvia a la pestanya diagnòstic

- Canvia a la pestanya de diagnòstic en la vista d'eina del connector.

Client LSP Tanca totes les pestanyes que no siguin de diagnòstic

- Tanca totes les pestanyes no siguin de diagnòstic (&pex;, referències) a la vista d'eina del connector.

Client LSP Reinicia el servidor LSP

- Torna a iniciar el servidor LSP del document actual.

Client LSP Reinicia tots els servidors LSP

- Atura tots els servidors LSP que després es tornaran a iniciar o només iniciar segons calgui.

### Implementació del símbol «goto»

El client LSP pot ajudar-vos a saltar a qualsevol símbol en el vostre projecte o fitxer actual. Per a saltar a qualsevol símbol del fitxer, useu la vista d'eina «Client LSP de símbols d'esquema» a la vora dreta del Kate. Aquesta vista d'eina llista tots els símbols trobats pel servidor en el document actual.

#### Configuració del client LSP de símbols d'esquema

De manera predeterminada, els símbols s'ordenen per la seva aparició en el document, però podeu canviar l'ordenació perquè sigui alfabètica. Per a fer-ho, feu clic dret a la vista d'eina i marqueu «Ordena alfabèticament».

La vista d'eina mostra els símbols en mode arbre de manera predeterminada, però podeu canviar-ho a una llista utilitzant el menú contextual.

#### Implementació del símbol «goto» global

Per a saltar a qualsevol símbol del projecte, podeu obrir el diàleg del símbol «goto» utilitzant &Ctrl;&Alt;p. El diàleg està buit quan s'obre però tan aviat com escriviu alguna cosa el diàleg començarà a mostrar-vos símbols coincidents. La qualitat de les coincidències i les capacitats de filtratge depenen del servidor que utilitzeu. Per exemple, el «clangd» admet un filtratge aproximat, però pot ser que altres servidors no.

### Altres característiques

S'admet l'ordre de la capçalera del codi font de commutació del «clangd». Per a canviar la capçalera d'origen en un projecte de C o C++ utilitzeu l'opció «Commuta la capçalera del codi font» des del menú contextual o la drecera F12.

Podeu saltar a un símbol ràpidament posant el ratolí sobre el símbol i després prement &Ctrl; + botó esquerre del ratolí.

### Configuració

La pàgina de configuració del connector permet principalment la configuració persistent d'alguns dels elements de menú anteriors. No obstant això, hi ha una entrada addicional per a especificar el fitxer de configuració del servidor. Aquest és un fitxer &JSON; que es pot utilitzar per a especificar el servidor LSP a iniciar (i després s'hi comunica sobre l'entrada/sortida estàndard). Per comoditat, s'inclou alguna configuració predeterminada, el qual es pot inspeccionar en la pàgina de configuració del connector. Per a ajudar en l'explicació a sota, aquí es proporciona un extracte d'aquesta configuració:

    {
        "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.*$"
            }
        }
    }

Cal tenir en compte que cada «command» pot ser una matriu o una cadena (en aquest cas es divideix en una matriu). A més, una entrada «global» de nivell superior (al costat de «server») també es considerarà (vegeu més a baix). El binari especificat és la cerca de la forma habitual, &pex;, utilitzant `PATH`. Si està instal·lat en una ubicació personalitzada, és possible que s'hagi d'estendre aquest últim. O de manera alternativa, es pot utilitzar un enllaç (simbòlic) o un script d'embolcall en una ubicació que estigui dins del `PATH` habitual. Com s'il·lustra a dalt, també es pot especificar un «camí» que se cercarà després de les ubicacions estàndard.

Totes les entrades a «command», «root» i «path» estan subjectes a l'expansió de les variables.

El «highlightingModeRegex» s'utilitza per a mapar el mode de ressaltat emprat pel &kate; amb l'ID d'idioma de servidor. Si no es proporciona una expressió regular, s'utilitzarà l'ID de l'idioma. Si s'estableix a fals una entrada «documentLanguageId», no es proporcionarà cap ID d'idioma al servidor en obrir el document. Això pot tenir millors resultats per a alguns servidors que són més precisos determinant el tipus de document que fer-ho basant-se en un mode del &kate;.

A partir de l'exemple anterior, se suposa que l'essència és clara. A més, cada objecte d'entrada del servidor també podrà tenir una entrada «initializationOptions», la qual es passarà al servidor com a part del mètode «initialize». Si està present, es passarà una entrada «settings» al servidor mitjançant la notificació «workspace/didChangeConfiguration». Es poden especificar tant «completionTriggerCharacters» o «signatureTriggerCharacters» com un objecte JSON amb membres de cadena "exclude" i/o "include". S'utilitzaran per a excloure o afegir alguns caràcters al joc d'activadors respectiu tal com el proporciona el servidor.

S'apliquen diverses etapes de superposició/fusió;

- configuració de l'usuari (carregada des del fitxer) superposa la configuració predeterminada (interna)

- entrada «lspclient» a la configuració del projecte `.kateproject` anul·la l'anterior

- l'entrada «global» resultant s'utilitzarà per a complementar (no anul·lar) qualsevol entrada del servidor

S'utilitza una instància del servidor per combinació (arrel, tipus de servidor). Si s'especifica «root» com un camí absolut, llavors s'utilitzarà com està, en cas contrari serà relatiu a «projectBase» (segons ho determini el connector Projecte) si escau, o d'una altra manera relativa al directori del document. Si no s'especifica i «rootIndicationFileNames» és una matriu com noms de fitxer, llavors se selecciona un directori pare del document actual que conté aquest fitxer. Alternativament, si no s'especifica «root» i «rootIndicationFilePatterns» és una matriu de patrons de fitxers, llavors se selecciona un directori pare del document actual que coincideixi amb el patró de fitxer. Com a últim recurs, se seleccionarà el directori inicial com a «root». Per a qualsevol document, el «root» resultant determinarà si es necessita o no una instància separada. Si és així, el «root» es passarà com a rootUri/rootPath.

En general, es recomana deixar l'arrel sense especificar, ja que no és tan important per a un servidor (encara que la vostra experiència pot variar). Òbviament, menys instàncies del servidor serà més eficient, i també tindreu una vista «més àmplia» que amb la vista de moltes instàncies separades.

Com s'ha esmentat anteriorment, diverses entrades estan subjectes a una expansió variable. Una aplicació adequada de la combinació amb els enfocaments «script embolcall» permet personalitzar en moltes circumstàncies. Per exemple, considereu un escenari de desenvolupament en Python format per múltiples projectes (p. ex., repositors Git), cadascun amb la seva pròpia configuració de «virtualenv». Utilitzant la configuració predeterminada, el servidor de llenguatge Python no serà conscient de l'entorn virtual. No obstant això, es pot solucionar amb l'enfocament següent. En primer lloc, es pot introduir el fragment següent «User Server Settings» en el connector de LSPClient:

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

L'entrada arrel de dalt és relativa al directori del projecte i garanteix que s'inicia un servidor de llenguatge a part per a cada projecte, el qual és necessari en aquest cas, ja que cadascun té un entorn virtual diferent.

`pylsp_in_env` és un petit «script d'embolcall» que s'hauria de col·locar en la `PATH` amb el contingut següent (per a ajustar):

    #!/bin/bash
    cd $1
    # Executa el servidor (python-lsp-server) dins del «virtualenv»
    # (és a dir, amb les variables de «virtualenv» configurades),
    # de manera que es fonamenta el «virtualenv»source XYZ
    # El quilometratge o els arguments del servidor poden variar
    exec myserver

Aquest és un exemple d'un patró més general que es pot gestionar d'una manera una mica més confortablement com s'indica en la secció de sota Entorn d'execució.

#### Configuració del servidor LSP

Cada servidor LSP particular té la seva pròpia manera de personalització i podreu utilitzar mitjans específics del llenguatge/eina per a la configuració, &pex;, `tox.ini` (a.o. al python), `.clang-format` per al format d'estil en C++. Aquesta configuració també es pot utilitzar per a altres eines (no LSP) (com el format tox o Clang). A més d'això, alguns servidors LSP també carreguen la configuració des de fitxers personalitzats (&pex;, `.ccls`). A més, la configuració personalitzada del servidor també es pot passar a través de LSP (protocol), consulteu les entrades esmentades anteriorment «initializationOptions» i «settings» a la configuració del servidor.

Atès que s'apliquen diversos nivells de superposició/fusió, l'exemple següent de configuració de client especificada per l'usuari modifica algunes configuracions de servidor del llenguatge Python.

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

Malauradament, la configuració/personalització del servidor LSP sovint no està tan ben documentada, de manera que només examinar el codi font ens mostrarà els enfocaments i com establir les opcions de configuració disponibles. En particular, el servidor de l'anterior exemple admet moltes més opcions a «settings». Vegeu la documentació d'un altre client LSP per a veure altres exemples de servidors de llenguatge i la configuració corresponent, la qual pot transformar-se amb facilitat a la configuració &JSON; que s'utilitza aquí i que s'ha descrit anteriorment.

#### Format per a desar del servidor LSP

Podeu activar el «format per a desar» dels paràmetres del LSP en el diàleg de configuració.

#### Supressió del diagnòstic del servidor LSP

Pot passar que s'informi que els diagnòstics que no són prou útils. Això pot ser molt molest, especialment si n'hi ha molts (sovint del mateix tipus). En alguns casos, això es pot afinar mitjançant específics (servidor) del llenguatge. Per exemple, el mecanisme de configuració de «clangd» permet afinar alguns aspectes del diagnòstic. No obstant això, en general podria ser que no sempre sigui evident com fer-ho o pot ser que no sigui possible en les formes desitjades a causa de les limitacions dels servidors o de l'error.

Com a tal, el connector admet la supressió de diagnòstics similar a, &pex;, les supressions de «valgrind». La configuració detallada es pot subministrar en una clau «suppressions» en la configuració en &JSON; (fusionada).

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

Cada regla (vàlida) té un nom arbitrari i es defineix per una matriu de longitud 2 o 3, la qual proporciona una expressió regular que coincidirà amb el nom de fitxer (complet), una expressió regular perquè coincideixi amb el diagnòstic (text) i una expressió regular opcional que coincideixi amb el text (interval del codi font de) al qual s'aplica el diagnòstic.

A més de la configuració detallada anterior, el menú contextual a la pestanya de diagnòstic també admet afegir/eliminar les supressions que coincideixin exactament amb un diagnòstic (text) en particular, sigui globalment (qualsevol fitxer) o sigui localment (el fitxer específic en qüestió). Aquestes supressions s'emmagatzemen i es carregaran des de la configuració de la sessió.

#### Solució de problemes del servidor LSP

Una cosa és descriure com configurar un servidor LSP (a mida) per a qualsevol idioma en particular, i una altra és acabar amb el servidor funcionant sense problemes. En general, afortunadament aquest últim és el cas. A vegades, però, poden sorgir problemes a causa d'una mala configuració «ximple» o un problema més fonamental amb el servidor en si. Aquest últim normalment pot manifestar-se com un parell d'intents en iniciar el servidor, com s'informa a la pestanya Sortida del &kate;. No obstant això, aquesta pestanya només està destinada a transmetre missatges d'alt nivell o de progrés en lloc de proporcionar un diagnòstic detallat, i menys encara per al que de fet és un altre procés (el servidor LSP).

La forma habitual de diagnosticar-ho és afegir alguna/es etiqueta/es a l'ordre d'inici (del servidor d'idioma) que habilita el registre (addicional) (a algun fitxer o error estàndard), en la mesura que no ho faci de manera predeterminada. Si el &kate; s'inicia a la línia d'ordres, aleshores podríem obtenir més informació (a la vista) del que podria estar sortint malament.

També pot ser informatiu examinar l'intercanvi de protocols entre el client LSP del &kate; i el servidor LSP. De nou, aquest últim generalment té formes per a rastrejar-ho. El client LSP també proporciona un seguiment de depuració addicional (a la sortida d'error estàndard) quan s'invoca el &kate; amb el següent `export` `LSPCLIENT_DEBUG=1` adequat.

#### Configuració de l'entorn d'execució

L'exemple de «python virtualenv» anterior és només un exemple d'un «entorn d'execució» que opera d'una manera diferent i separada de l'entorn amfitrió habitual. Això es pot aconseguir amb diferents opcions de configuració de variables (p. ex. virtualenv), o una configuració de (s)chroot (canviant a un altre directori com a arrel nova), un contenidor (p. ex. podman, docker), o una sessió ssh a un altre amfitrió. En cada cas, l'«altre entorn» es defineix amb un «prefix d'execució». És a dir, algun programa es pot invocar/executar en l'altre entorn mitjançant un «prefix» (un programa i arguments) afegit amb la invocació prevista. Per exemple, `podman exec -i nomcontenidor` o `ssh user@host`.

En particular, com en l'exemple anterior de «virtualenv», es pot triar/necessitar executar un servidor LSP en un entorn separat (p. ex. un contenidor amb totes les dependències necessàries per a algun projecte). L'enfocament «manual» descrit anteriorment té com a desavantatge que substitueix la línia d'ordres LSP estàndard, que després s'ha d'especificar i duplicar de nou en l'script d'embolcall. A més, en alguns dels altres exemples esmentats anteriorment, l'«espai de noms de camí» de l'amfitrió (tal com l'ha vist l'editor) pot ser diferent del de l'entorn. Per a abordar aquestes qüestions d'una manera més sistemàtica (que un enfocament «personalitzat»), es pot especificar alguna configuració addicional.

Per exemple, es pot especificar el següent en una configuració `.kateproject`. Evidentment, no s'han d'incloure els comentaris «falsos».

    {
        // això també pot ser una matriu d'objectes
        "exec": {
            "hostname": "foobar"
            // l'ordre també podria ser una matriu de cadenes
            "prefix": "podman exec -i foobarcontainer",
            "mapRemoteRoot": true,
            "pathMappings": [
                // són possibles qualsevol de les formes següents
                // també existeix una alternativa més automàgica, vegeu a continuació/sota
                [ "/dir/on/host", "/mounted/in/container" ]
                { "localRoot": "/local/dir", "remoteRoot": "/remote/dir" }
            ]
        },
        "lspclient": {
            "servers": {
                "python": {
                    // això coincidirà/s'unirà amb l'objecte d'abans
                    "exec": { "hostname": "foobar" },
                    // confina aquest servidor a l'arrel d'aquest projecte,
                    // així que no s'utilitza en altres projectes que es puguin obrir
                    // (altres servidors ja poden fer servir arrels específics, però el python generalment molt)
                    "root": "."
                },
                "c": {
                    // com anteriorment
                    "exec": { "hostname": "foobar" },
                    "root": "."
                }
            }
        }
    }

Llavors, què passa com a resultat de l'anterior? Com s'ha esmentat, la part `lspclient` de l'anterior es fusiona a la configuració global, per tant es troba una secció `exec` (per a llenguatges especificats). Es realitza una cerca d'altre objecte (que especifica que coincideix amb `hostname`) en qualsevol de les seccions `exec` o `lspclient`, i una coincidència és com a base per a una fusió. Com a resultat, un servidor LSP (per a C i Python) tindrà la seva línia d'ordres annexada al prefix especificat (variable substituïda), i per tant s'iniciarà dins del contenidor donat. Per descomptat, el contenidor cal que s'hagi creat, en un estat d'inici adequat i equipat amb servidors LSP adequats. Hom podria haver estat temptat d'utilitzar la secció `global` (dins de `lspclient`.) Això també podria funcionar, però llavors tots els servidors LSP s'iniciarien amb aquest prefix, inclosos els de, per exemple, Markdown, scripts de Bash o JSON. És més probable que l'amfitrió habitual continuï subministrant aquests (si s'utilitzen). Per tant, com sempre, depèn de la vostra configuració particular.

No obstant això, el servidor LSP ara pot observar camins diferents (remots) que els (locals) que l'editor veu i utilitza. Els `pathMappings` especificats s'utilitzen per traduir cap enrere i endavant entre qualsevol de les comunicacions amb el servidor LSP. Això és, per descomptat, en la mesura que sigui possible. Clarament, no tots els camins locals tenen una representació remota, però els que falten tampoc es veuen (pel servidor) i no plantegen cap problema. Per contra, però, el servidor (remot) ara pot veure i proporcionar referències a l'«arrel remota» que no estan representades de manera evident / fàcil en el sistema local. La `mapRemoteRoot` habilitada assigna implícitament l'arrel remota a un «URL local» `exec://foobar/`, que després es gestiona mitjançant un protocol KIO simple i senzill. Aquest últim utilitza essencialment (p. ex.) `podman exec -i foobarcontainer cat somefile` per a copiar des del remot al local (i altres variacions d'aquest tipus utilitzant eines del paquet `coreutils`). N'hi ha prou amb dir que no està destinat a ús general i no assegura cap rendiment, però sí que n'hi ha prou amb obtenir un fitxer referenciat de forma ràpida i fàcil de carregar a l'editor.

Ara es veu fàcilment que una versió simplificada de la configuració anterior (sense `hostname` o `pathMappings`) es podria utilitzar per gestionar el «virtualenv» sense haver de duplicar la línia d'ordres del servidor (a l'script d'embolcall).

És possible que no es vegi tan fàcilment el següent, per la qual cosa aquí s'esmenta explícitament.

- Tant un `hostname` com el `prefix` real defineixen l'entorn d'execució (el primer pel nom, el segon pel contingut). Dins d'una instància de procés de l'editor, el mateix `hostname` no s'ha d'associar amb un `prefix` diferent, com a tal condueix a un comportament indefinit (sense necessitat de diagnòstic).

- Tant `prefix` com `pathMappings` estan subjectes a l'expansió de variables (editor) (però tingueu en compte l'element anterior).

- En temps d'execució, també s'estableixen algunes variables d'entorn, que es poden utilitzar per ajustar (subtilment) el comportament del «prefix de llançador» (encara que tingueu en compte el primer element). En particular, `KATE_EXEC_PLUGIN` està establert a `lspclient` i `KATE_EXEC_SERVER` està establert a l'identificador del servidor (p. ex. `python`).

- En particular, també `KATE_EXEC_INSPECT` està establert a `1`. Això notifica al «prefix de llançador» que el receptor (connector del Kate) accepta algunes dades fora de banda/protocol. Això permet al llançador utilitzar alguns mitjans per determinar les assignacions de camins (p. ex. `podman inspect`) i per comunicar-ho en el format adequat. Això s'eliminarà del flux conforme al protocol LSP d'altra manera i s'utilitzarà per estendre qualsevol mapatge de camí definit. Això pot servir com a alternativa a especificar, per exemple, les muntures d'unió explícitament (una vegada més, duplicant la definició del contenidor). En concret, el fragment anterior es podria utilitzar en el seu lloc;

      {
          // ...
          "exec": {
              "hostname": "foobar"
              // repetició poc afortunada de nom, però l'script d'ajuda és cal i senzill
              "prefix": "exec_inspect.sh foobarcontainer podman exec -i foobarcontainer",
              "mapRemoteRoot": true,
              "pathMappings": []
          }
          // ...
      }

Finalment, però no menys important, què passa si l'enfocament de «KIO alternativa» no es considera suficient? A la pràctica sovint és possible «muntar» l'arrel remota al sistema de fitxers local i després especificar-la en un `pathMappings`. Per als iniciadors, el conegut sistema de fitxers `sshfs` (fuse) pot muntar un sistema remot (realment) en el local. Per a un contenidor (podman/docker), la majoria de les configuracions (controlador del sistema de fitxers) admeten el truc següent;

    $ rootdir./proc/.podman inspect --format '{{.State.Pid}}' containername`/root
    # alguns enllaços simbòlics poden causar problemes, vegeu també alternativa a continuació
    $ sudo mount --bind $rootdir /somewhere/containername

Si això falla, llavors es podria recórrer a `sshfs`, o de fet un subconjunt seu per a muntar l'arrel del contenidor/ remot;

    # vegeu les pàgines respectives de man; sftp-server és suficient per al protocol d'operació de fitxer real (no xifrat)
    $ socat 'exec:podman exec -i nomcontenidor /usr/lib/openssh/sftp-server'
       'exec:sshfs -o transform_symlinks -o passive \:/ /somewhere/containername'
    ...
    $ fusermount -u /somewhere/containername

Tingueu en compte que aquest muntatge d'arrel remota en el sistema de fitxers amfitrió és probable que s'especifiqui manualment i explícitament en una secció `pathMappings` (exceptuant un prefix de llançador molt intel·ligent que organitza tot això de manera automàtica).

## Cercar i substituir

### Introducció

El connector Cerca i substitueix del &kate; permet fer cerques de text o amb expressions regulars en diferents fitxers a la vegada. Podeu cercar a tots els fitxers oberts, o a tots els fitxers en un directori, i de manera opcional els seus subdirectoris, o en tots els fitxers al projecte actual. Fins i tot es poden filtrar per nom de fitxer, per exemple, cercar només als fitxers que acabin amb una extensió de fitxer en particular.

### Interfície

#### Consulta de la cerca

Les opcions següents estan sempre a la part superior de la vista d'eina cerca en fitxers:

- Podeu tenir tantes cerques com vulgueu obrir alhora. Simplement feu clic al botó de pestanya nova a la part superior esquerra de la vista d'eina de cerca i s'obrirà una pestanya de resultats, de manera que podreu fer una altra cerca.

- El botó a la cantonada superior dreta de la vista d'eina cerca en fitxers, commutarà la meitat inferior de la vista d'eina entre veure les opcions addicionals per al mode cerca en carpeta i veure els resultats de la cerca.

Cerca

- Aquí és on escriviu el que es vol trobar. Podeu introduir text estàndard, o una expressió regular si està activat.

Substitueix (quadre de text)

- El text de substitució que s'afegirà al/s fitxer/s, en lloc del text al quadre de text Cerca.

Cerca

- En acabar de configurar-ho tot, només haureu de prémer el botó Cerca per a realitzar la cerca; premeu i manteniu premuda la tecla &Ctrl; abans de prémer el botó Cerca per a realitzar la cerca en una pestanya nova. També podeu prémer &Intro; en el quadre de text de Cerca per fer el mateix (prement de manera similar &Ctrl;&Intro; es realitzarà la cerca en una pestanya nova).

Substitueix

- En acabar de configurar-ho tot, només haureu de prémer el botó Substitueix per a realitzar la substitució entre els quadres de text Cerca amb el que heu introduït a Substitueix. Podeu prémer la tecla &Intro; en el quadre de text Substitueix per a fer el mateix.

Següent

- Va a la coincidència següent de la vostra consulta de cerca, si és necessari alterna entre els fitxers.

Substitueix les marcades

- El mateix que Substitueix, però només realitzarà les substitucions en els fitxers que es comproven a la subfinestra de sota.

#### Opcions de cerca en carpeta

Aquestes opcions que es mostren a sota, esmenten les opcions per a la consulta. Si en el seu lloc es mostren els resultats de cerca, premeu el botó per a mostrar-les.

Cerca a

- Hi ha tres opcions. Seleccioneu Als fitxers oberts per a cercar a tots els fitxers oberts actualment al &kate;. Seleccioneu A la carpeta per a cercar dins d'una carpeta i, opcionalment, les seves subcarpetes. Seleccioneu Al fitxer actual per a només cercar al fitxer actiu.

  Si està carregat el connector Projectes, també podeu cercar en el Projecte actual o a Tots els projectes oberts.

Coincidència de majúscules

- Restringeix els resultats de cerca a aquells que tenen la combinació exacta de majúscules i minúscules, com la vostra consulta de cerca.

Expressions regulars

- Permet utilitzar expressions regulars en lloc de text simple com a consulta de cerca.

Expandeix els resultats

- Mostra tots els resultats trobats en cada fitxer, en lloc de només una llista dels fitxers que contenen la consulta de cerca.

Carpeta

- Podeu introduir el camí de la carpeta en la qual voleu cercar. Per exemple, podeu introduir `~/development/kde/kate/` si voleu cercar al codi font del &kate;. Aquesta opció només estarà disponible quan s'utilitzi el mode de Carpeta.

Diàleg d'obrir fitxers

- Premeu aquest botó per a localitzar la carpeta al navegador de carpetes de l'escriptori. Aquest botó només estarà disponible quan s'utilitzi el mode de Carpeta.

- Premeu aquest botó per a canviar Carpeta a la carpeta pare actualment seleccionada. Aquest botó només estarà disponible quan s'utilitzi el mode de Carpeta.

- Aquest botó establirà l'entrada Carpeta a la carpeta on es troba el document actualment obert. Aquest botó només estarà disponible quan s'utilitzi el mode de Carpeta.

Filtre

- Permet cercar només els noms de fitxer que coincideixen amb un patró en particular. Per exemple, per a cercar només als fitxers escrits en C++, canvieu-la a `*.cpp`. Per a cercar només als fitxers que comencin amb `kate`, canvieu-la a `kate*`. Podeu introduir múltiples filtres separats amb una coma (`,`). Per a utilitzar-ho per a excloure fitxers de la cerca, afegiu un signe menys (`-`) a la llista. Aquesta opció només estarà disponible quan s'utilitzi el mode de Fitxers oberts.

Excloure

- Al contrari de Filtre, aquest impedeix que el &kate; cerqui als fitxers que coincideixin amb els patrons especificats. Com amb Filtre, podeu introduir múltiples patrons separats per una coma (`,`). Aquesta opció només estarà disponible quan s'utilitzi el mode de Fitxers oberts.

Recursiu

- Si aquesta opció està activada, el &kate; també cercarà a totes les subcarpetes de la carpeta seleccionada. Aquesta opció només estarà disponible quan s'utilitzi el mode de Carpeta.

Inclou els ocults

- Si aquesta opció està activada, el &kate; també cercarà als fitxers o carpetes que normalment resten ocults/es pel vostre &SO;. Aquesta opció només estarà disponible quan s'utilitzi el mode de Carpeta.

Segueix els enllaços simbòlics

- El connector cerca en fitxers, en general no segueix els enllaços simbòlics. Quan aquesta opció està activada, el connector els seguirà al seu lloc i cercarà dins dels fitxers o carpetes als que fan referència. Aquesta opció només estarà disponible quan s'utilitzi el mode de Carpeta.

  És possible que els enllaços simbòlics facin referència a una carpeta que sigui la pare de la carpeta on se cerca, o a altres carpetes que continguin enllaços simbòlics a la seva carpeta pare. Si hi ha un enllaç a la carpeta on se cerca i aquesta opció està activada, el &kate; seguirà l'enllaç de manera repetida (en bucle) i cercarà a la carpeta, de manera que la cerca mai es completarà.

Inclou els fitxers binaris

- Si està activada, el &kate; també cercarà a tots els fitxers que no aparenten ser fitxers de text.

#### Resultats de la cerca

Els resultats de la cerca es mostren a sota de les opcions de consulta. Si es mostren les opcions del mode cerca en carpeta, simplement premeu el botó per a mostrar-los. També es mostraran automàticament tan bon punt es realitzi una cerca.

Els resultats de cerca mostren una llista de fitxers que contenen el text que coincideix amb la consulta de cerca, seguit pel nombre de coincidències trobades en aquest fitxer.

Per a veure una llista de les coincidències en aquest fitxer, simplement feu clic a la fletxa d'expansió a l'esquerra del nom de fitxer. (Si heu seleccionat l'opció Expandeix els resultats, això ja es farà automàticament). Es mostrarà el número de línia per a cada coincidència, seguit pel contingut d'aquesta línia, amb la consulta de cerca indicada en negreta.

Per a obrir el fitxer del vostre resultant de la cerca, simplement feu doble clic s'obre seu. Si cal, el &kate; obrirà el fitxer. També podeu moure el cursor a la ubicació d'una coincidència en particular fent-hi doble clic en lloc del nom de fitxer.

### Estructura del menú

&Ctrl;&Alt;E Edita Cerca en fitxers

- Llança una vista d'eina Cerca i substitueix.

Edita Ves a la coincidència següent

- Va a la coincidència següent en una cerca realitzada pel connector Cerca i substitueix.

Edita Ves a la coincidència anterior

- Va a la coincidència anterior en una cerca realitzada pel connector Cerca i substitueix.

Visualitza Vistes d'eina Mostra Cerca i substitueix

- Canvia la pantalla del &kate; a l'eina Cerca i substitueix.

## Scripts i retalls del &kate;

### Introducció

El connector Scripts i retalls del &kate; permet afegir i gestionar els vostres propis trossos d'automatització. Això abasta des de peces estàtiques reutilitzables de text pla, plantilles sofisticades amb camps personalitzats automatitzats i que permeten scripts, fins a scripts de &javascript; completament personalitzats per a modificar el contingut del document.

En la seva major part, aquest tipus de contingut es gestiona exactament de la mateixa manera. Per tant, per facilitar la lectura, el debat següent no diferencia entre retalls estàtics, retalls amb scripts i scripts. Més aviat, el terme «retall» s'utilitza per referir-se a tots ells.

El connector també admet l'assignació de dreceres de teclat i la inserció de retalls mitjançant la compleció de codi. A més, podeu descarregar col·leccions de retalls (els anomenats repositoris) d'Internet.

### Estructura del menú

Visualitza Vistes d'eina Mostra Retalls

- Mostra el plafó de retalls, el qual conté tots els retalls en el vostre repositori que són per al tipus de fitxer actualment obert.

Eines Crea un retall

- Crea un retall nou, el qual és un fragment reutilitzable de text que podeu inserir en qualsevol part de qualsevol document, o un script petit.

### Plafó de retalls

Plafó de retalls del &kate; El plafó de retalls del &kate;.

El plafó per als retalls del &kate;.

Al plafó hauríeu de veure una llista dels repositoris de retalls, juntament amb les opcions per a crear el vostre, obtenir-los des d'Internet o carregar-los des d'un fitxer local. Cada repositori té una casella de selecció que es pot utilitzar per a activar o desactivar. També hi ha botons per a editar i suprimir els repositoris existents.

#### Carregar fitxers des del repositori de retalls

Podeu baixar repositoris de retalls des d'Internet. Simplement feu clic a Obtén retalls nous i s'obrirà una finestra amb una llista amb repositoris de retalls. Després de baixar el retall desitjat, assegureu-vos que l'heu activat.

#### Crear i editar els repositoris

Per a crear un repositori nou de retalls, feu clic a Afegeix un repositori. Ara s'hauria de mostrar un diàleg que demani pel nom del fitxer de retall, la llicència i l'autor. Després de triar les opcions desitjades, feu clic D'acord.

Editor de retalls L'editor del repositori.

La interfície de l'editor del repositori.

L'editor per al repositori de retalls conté les opcions següents:

Nom

- Apareix a la llista dels retalls a la vista d'eina i també se cercarà quan s'utilitzi la característica de compleció del codi.

Espai de nom

- Prefix utilitzat durant l'ús de la compleció de codi.

Llicència

- Selecciona la llicència per al vostre repositori de retalls.

Autors

- Introduïu el/s nom/s de l'autor/s del fitxer de retall.

Tipus de fitxer

- Seleccioneu el/s tipus de fitxer/s que voleu aplicar al repositori de retalls. De manera predeterminada s'estableix a «» -es deixa buit-, de manera que el repositori ho aplicarà a tots els fitxers. Podeu canviar-ho a quelcom com C++, o seleccionar des d'una llista fent clic en els elements. Podeu especificar més d'un tipus de fitxer prement la tecla &Maj; mentre s'afegeixen els tipus.

#### Crear i editar els retalls

Editor de retalls L'editor de retalls.

La interfície de l'editor de retalls.

Nom

- El nom es mostrarà a la llista de retalls i a la llista de compleció (necessari).

Tipus

- Els retalls es poden definir com a plantilles de text o scripts. Ambdós tipus permeten utilitzar funcions de &javascript; (vegeu més avall els detalls), i per tant es poden utilitzar amb un efecte similar. Tanmateix, com a regla general, les plantilles de text seran més adequades si voleu inserir text, mentre que els scripts són sovint una solució més fàcil si voleu modificar text).

  El Kate s'ha de compilar amb la versió 6.15.0 o superior del KTextEditor perquè aquesta característica estigui disponible. Per a versions anteriors, només es poden utilitzar retalls de plantilla de text.

Drecera

- En prémer aquesta drecera s'inserirà (o executarà) el retall en el document actual.

Retall (tipus `Plantilla de text`)

- El text que heu retallat s'inserirà en el document.

  Un retall pot contenir camps editables. Es poden alternar prement la tecla . Es poden utilitzar les expressions següents en el text de la plantilla per a crear camps:

  `${`nom_camp`}` crea un camp senzill i editable. Totes les ocurrències posteriors crearan camps que reflecteixin el contingut del primer durant l'edició.

  Els noms de camp poden contenir qualsevol caràcter excepte la clau de tancament (`}`).

  Per a inserir `${text}` literalment en un retall, escapeu el signe `$` amb una barra inversa: `\${text}`. Llavors els text no es convertirà en un camp. Per a inserir barres inverses literals abans d'un camp, escapeu cada barra inversa individual: `\\${camp}`, `\\\\${camp}`, i així successivament.

  `${func(`altre_camp_1`, `altre_camp_2`, ...)}` crea un camp que avalua una funció de &javascript; en cada edició i se substitueix pel valor de retorn de la funció. Vegeu la pestanya Biblioteca de scripts per a més informació.

  `${`nom_camp=predeterminat`}` estableix un valor predeterminat per al camp. Utilitzeu cometes (`${`nom_camp`=`"text"`}`) per a especificar una cadena fixa com a valor predeterminat.

  Quan s'utilitzen valors predeterminats (`${`nom_camp=predeterminat`}`), tingueu en compte que el valor predeterminat s'avalua immediatament quan s'insereix el retall al document, i no s'actualitza més tard quan es canvien els camps.

  Podeu fer referència a altres camps en valors predeterminats si es defineixen abans del valor predeterminat que s'està avaluant. Tanmateix, això només us donarà accés al valor predeterminat d'aquests camps.

  Si no es defineix cap valor predeterminat personalitzat, el valor predeterminat és el nom d'un camp.

  `${cursor}` marca la posició final del cursor després d'omplir tota la resta. Inserir text en aquesta posició acabarà l'edició. A més, després de prémer &Esc; per acabar l'edició, el cursor saltarà a aquesta posició.

Retall (tipus `Script`)

- El codi en &javascript; a avaluar per a aquest retall

  Si aquest codi conté una declaració `return`, la cadena retornada s'inserirà a la posició actual del cursor. També podeu utilitzar l'API de creació de scripts del &kate; per a modificar directament el document.

  A més, el vostre codi pot utilitzar funcions definides a la pestanya Biblioteca de scripts, que es comparteixen entre tots els retalls d'un repositori.

Biblioteca de scripts

- Funcions auxiliars en &javascript; per a utilitzar en els vostres retalls. Aquestes funcions es comparteixen entre tots els retalls d'un repositori.

  Podeu utilitzar l'API per a crear scripts del &kate; per a obtenir el text seleccionat, el text complet, el nom del fitxer i més utilitzant els mètodes apropiats dels objectes `document` i `vista`. Consulteu la documentació de l'API per a la creació de scripts per a obtenir més informació.

  Quan es crida una funció en un camp d'un retall d'una `plantilla de text`, el seu valor de retorn s'insereix en el text.

  Ús de funcions en el retalls de `Plantilla de text`:

  - Les funcions poden accedir al contingut actualitzat de tots els camps a través de l'objecte `fields`: useu `fields.meu_camp` o `fields["meu_camp"]`. Quan s'utilitza una funció com a valor predeterminat d'un camp, només hi ha disponibles els camps definits en el text anterior.

  - Els camps es poden passar com a arguments a funcions. El nom del camp es pot utilitzar directament si és un identificador vàlid de &javascript; i no existeix cap variable amb aquest nom. En cas contrari, utilitzeu l'objecte `fields`: `${func(camp)}`, `${func(fields.document)}`, `${func(fields["meu camp"])}`

  - Els camps de funció (p. ex. `${func()}`) es tornen a avaluar cada vegada que es canvia el contingut de qualsevol camp. Tanmateix, això no s'aplica a les crides de funció en valors predeterminats: només s'avaluen una vegada que el retall s'insereix en el document.

  - Per als scripts més complexos, pot ser important entendre que primer s'insereix el retall en brut en el document, i després s'avaluen les funcions. P. ex., si una funció recupera el text a la línia a on s'ha inserit el retall, aquest text també contindrà `${functionCall()}`. A on això provoqui complicacions, en el seu lloc considereu fer servir un retall de tipus `Script`.

  - Per a embolcallar el text actualment seleccionat entre etiquetes, useu: `<strong>${view.selectedText()}</strong>`

  - Recordeu que només s'insereix el valor de retorn d'una funció en un camp.

Descripció

- Una descripció opcional del que fa aquest retall. Això es mostrarà als consells d'eina. La descripció pot contenir format HTML bàsic.

Exemple d'ús

- L'exemple següent invoca un script que embolcalla el text seleccionat, o, si no hi ha selecció, un text per defecte, entre etiquetes (tipus de retall `Script`):

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

### Ús dels retalls

Retalls del &kate; en acció Accedint als retalls del &kate; des d'una vista d'eina i una llista desplegable.

Seleccionant des d'una llista de retalls.

Podeu cridar als retalls de diverses maneres:

- Fent clic al retall des de la vista d'eina.

- Utilitzant una drecera de teclat, si n'heu assignat una.

- Mentre escriviu, podeu prémer &Ctrl;&Space;, el qual mostrarà tots els retalls en una finestra útil des de la qual podreu escollir. Aquesta combinació de tecles proporciona una funcionalitat similar a la compleció del codi.

Si el retall conté variables (a més de `${cursor}`), el cursor passarà automàticament a la primera ocurrència d'una variable i esperarà perquè escriviu quelcom. En acabar, podeu prémer per a passar a la variable següent, i així successivament.

### Agraïments i reconeixements

Els retalls del &kate; han estat escrits per en Joseph Wenninger.

Un agraïment especial a la Google Code-in 2011, al participant Martin Gergov per escriure gran part d'aquesta secció.

## Connector de macros de teclat

### Introducció

Enregistra i reprodueix macros de teclat (és a dir, una seqüència d'acció de teclat).

### Ús bàsic

#### Per a començar l'enregistrament d'una macro de teclat:

Eines Macros de teclat Enregistra una macro... (&Ctrl;&Maj;K).

El connector enregistrarà cada pulsació de tecla fins que finalitzeu l'enregistrament.

#### Per a finalitzar l'enregistrament:

Eines Macros de teclat Finalitza l'enregistrament de la macro (&Ctrl;&Maj;K).

El connector aturarà l'enregistrament de les pulsacions de tecles i desarà la seqüència com a macro actual.

#### Per a cancel·lar l'enregistrament:

Eines Macros de teclat Cancel·la l'enregistrament de la macro (&Ctrl;&Alt;&Maj;K).

El connector aturarà l'enregistrament de les pulsacions de tecles, però no canviarà la macro actual.

#### Per a reproduir la macro actual:

Eines Macros de teclat Reprodueix la macro (&Ctrl;&Alt;K).

El connector reproduirà la macro actual.

L'ordre `kmplay` sense cap argument també reproduirà la macro actual.

### Macros amb nom

És possible desar macros de teclat donant-les un nom.

Les macros amb nom són permanents entre sessions del Kate, es desen en el fitxer `keyboardmacros.json` en el directori de dades d'usuari del Kate (normalment `~/.local/share/kate/`).

#### Per a desar la macro actual:

Eines Macros de teclat Desa la macro actual (&Alt;&Maj;K).

El connector demanarà un nom i desarà la macro amb aquest.

L'ordre `kmsave `nom`` desarà la macro actual amb el nom ``nom``.

#### Per a carregar una macro desada com a macro actual:

Eines Macros de teclat Carrega una macro amb nom....

El connector llista les macros desades com a elements en aquest submenú. En activar un element es carregarà la macro corresponent com a l'actual.

L'ordre `kmload `nom`` carregarà la macro desada amb el nom ``nom`` com a l'actual.

#### Per a reproduir una macro desada sense carregar-la:

Eines Macros de teclat Reprodueix una macro amb nom....

El connector llista les macros desades com a elements en aquest submenú. En activar un element es reproduirà la macro corresponent sense carregar-la.

Tingueu en compte que cada macro desada és una acció que forma part de la col·lecció d'accions actuals, de manera que s'hi pot assignar una drecera personalitzada a través de la interfície Arranjament Configura les dreceres de teclat....

L'ordre `kmplay `nom`` reproduirà la macro desada amb el nom ``nom`` sense carregar-la.

#### Per a esborrar (és a dir, suprimir) una macro desada:

Eines Macros de teclat Esborra una macro amb nom....

El connector llista les macros desades com a elements en aquest submenú. En activar un element s'esborrarà (és a dir, se suprimirà) la macro corresponent.

L'ordre `kmwipe `nom`` esborrarà la macro desada amb el nom ``nom``.

#### Consells per a les ordres:

Tingueu en compte després del prefix `km`, totes aquestes ordres usen una lletra diferent de manera que les podeu invocar amb eficiència usant la compleció amb el tabulador!

### Limitacions

Per ara, les macros de teclat no es poden reproduir correctament si s'utilitzen alguns tipus de ginys de la IGU: QMenu, QuickOpenLineEdit, o TabSwitcherTreeView, per exemple. No estic segur de per què, però la meva primera suposició seria que aquests ginys funcionen d'una manera no estàndard pel que fa als esdeveniments de teclat.

## Connector SQL

### Introducció

El llenguatge de consulta estructurada (Structured Query Language - SQL) és un llenguatge especialitzat per a actualitzar, suprimir i demanar informació des de bases de dades.

El connector SQL del &kate; us permet:

- Crear una base de dades

- Connectar a una base de dades existent

- Inserir i suprimir dades des d'una base de dades

- Executar consultes

- Mostrar els resultats en una taula

### Connectar amb una base de dades

Seleccioneu Afegeix una connexió des del menú SQL o des de la barra d'eines, i llavors seleccioneu el controlador de bases de dades de les &Qt; que voleu utilitzar (incloses QSQLITE, QMYSQL3, QMYSQL, QODBC3, QODBC, QPSQL7 i QPSQL). Si no podeu veure el controlador desitjat, caldrà que l'instal·leu. A continuació, premeu Següent.

Si la base de dades seleccionada utilitza un fitxer, simplement indiqueu la ubicació de la base de dades i premeu el botó Següent. Si requereix connectar amb un servidor, introduïu el nom del servidor, nom d'usuari i contrasenya, i qualsevol altra informació que aquest controlador en particular pugui requerir. A continuació, premeu Següent.

Finalment, doneu-li un nom a la vostra connexió, i premeu Acaba.

### Executar les consultes

#### INSERT/DELETE/UPDATE

Podeu inserir, suprimir i actualitzar dades utilitzant el connector SQL just com ho faríeu des de la línia d'ordres o des d'un programa. Simplement cal introduir una consulta i prémer el botó Executa una consulta a la barra d'eines o utilitzar SQL Executa una consulta (&Ctrl;E).

##### Algunes consultes d'exemple

`INSERT`

-     INSERT INTO nom_taula ("característica1", "característica2", "característica3", "característica4", "característica5")
      VALUES ("valor1", "valor2", "valor3", "valor4", "valor5" )

`DELETE`

-     DELETE FROM nom_taula WHERE name = "text"

`UPDATE`

-     UPDATE nom_taula SET "característica1" = "text", "característica2" = "text", "característica3" = "text", "característica4" = "text", "característica5" = "text"

#### SELECT

Després d'executar una consulta `SELECT`, podeu veure els resultats com una taula que apareixerà a la vista d'eina Sortida de dades SQL a la part inferior del &kate;, o com a text a la vista d'eina Sortida de text SQL. Si hi ha un error, es podrà veure a la sortida de text.

##### Exemple de consulta `SELECT`

    SELECT * FROM nom_taula

La vista d'eina Sortida de dades SQL disposa de diversos botons:

Redimensiona les columnes al contingut

- Canvia la mida de les columnes per a ajustar-les al seu contingut.

Redimensiona les files al contingut

- Canvia la mida de les files per a ajustar-les al seu contingut.

Copia

- Selecciona tots els continguts de la taula i els copia al cau del porta-retalls.

Exporta

- Exporta tots els continguts de la taula a un fitxer, al porta-retalls, o al document actual en el format de valors separats per comes.

Neteja

- Ho elimina tot de la vista de taula.

Ara podeu canviar els colors mostrats en la taula a la secció SQL de Arranjament Configura el &kate;... .

### Navegar

Podeu navegar per la base de dades utilitzant la vista d'eina Esquema de la base de dades del navegador a l'esquerra. La informació que mostra variarà en funció del controlador de base de dades que esteu utilitzant.

Per a actualitzar aquesta llista, feu clic dret a qualsevol lloc en la vista d'eina i seleccioneu Actualitza. Per a generar una consulta sobre qualsevol entrada a la llista, feu clic sobre una entrada, seleccioneu Genera, i seleccioneu el tipus de consulta (SELECT, UPDATE, INSERT o DELETE) des del submenú que aparegui.

### Estructura del menú

SQL Afegeix una connexió...

- Afegeix una nova connexió utilitzant qualsevol controlador de base de dades.

SQL Elimina la connexió

- Elimina la connexió seleccionada.

SQL Edita la connexió...

- Edita la configuració de la connexió actual.

Connexions

- Totes les connexions de base de dades que heu creat s'enumeren entre els elements de menú Edita la connexió i Executa una consulta. Seleccioneu-ne una per a executar consultes o fer-hi modificacions.

&Ctrl;E SQL Executa una consulta

- Executa la vostra consulta.

### Agraïments i reconeixements

El connector SQL va ser escrit per en Marco Mentasti.

Un agraïment especial a la Google Code-in 2011, al participant Ömer Faruk ORUÇ per escriure gran part d'aquesta secció.

## Connector Visualitzador de símbols

### Ús del connector de tancament excepte/com

Permet als desenvolupadors veure els símbols (funcions, macros i estructures) des del codi font.

En fer clic, amb la informació analitzada es podrà explorar amb facilitat el codi.

De moment s'admeten els llenguatges següents:

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

Llista de característiques:

- Mode de llista/en arbre
- Activa/desactiva l'ordenació
- Mostra/oculta els paràmetres de les funcions
- Desplega/plega l'arbre de carpetes
- Actualitza automàticament els canvis en el document
- Analitza el codi en base a l'entorn de treball de ressaltat de la sintaxi dels &kde-frameworks;

### Estructura del menú

&Ctrl;\ Visualitza Vistes d'eina Mostra Llista de símbols

- Mostra o oculta la presència de la llista de símbols del &kate; per a mostrar les funcions, macros i estructures del codi font en el document actiu.

### Configuració

Visualitzador de símbols

Escull les opcions predeterminades de l'analitzador

## Connector per a la vista d'eina del terminal

L'emulador de terminal integrat és una còpia de l'aplicació de terminal &konsole; del &kde;, per a la vostra comoditat. Està disponible des de l'element de menú Visualitza Vistes d'eina Mostra el plafó del terminal i n'obtindreu el focus quan es mostri. De forma addicional, si teniu activada l'opció Sincronitza automàticament el terminal amb el document actual quan sigui possible, aquesta farà que es canviï cap al directori del document actual en el cas d'existir o quan aquest canviï.

La seva ubicació predeterminada a la finestra del &kate; es troba a la part inferior, a sota de l'àrea d'edició.

Podeu configurar el &konsole; emprant el seu menú en el &BDR;, per a més informació, vegeu el manual del &konsole;.

L'emulador de terminal integrat és proporcionat pel connector Vista d'eina del terminal.

### Estructura del menú

Visualitza Vistes d'eina Mostra el plafó del terminal

- Mostra o oculta la presència de l'emulador de terminal integrat.

  Quan s'activa la primera vegada, es crearà el terminal.

  Quan es mostra l'emulador de terminal, aquest obtindrà el focus, de manera que pugueu començar a introduir ordres immediatament. Si l'opció Sincronitza automàticament el terminal amb el document actual quan sigui possible està activada a la pàgina Terminal del diàleg principal de configuració, la sessió de l'intèrpret d'ordres se situarà en el directori del document actiu, si aquest és un fitxer local.

Eines Condueix al terminal

- Envia el text seleccionat cap a l'emulador de terminal integrat. No s'afegirà una línia nova després del text.

Eines Sincronitza el terminal amb el document actual

- Això farà que el terminal integrat faci `cd` al directori del document actiu.

  Altrament podeu configurar el &kate; per a mantenir sincronitzat sempre el terminal amb el document actual. Per a més informació, vegeu konsole-config.

Eines Executa el document actual

- Executa el document actual en el &konsole;. Només es poden executar els documents locals. El &kate; mostrarà un avís abans d'executar el document perquè aquesta acció pot ser una amenaça seriosa de seguretat.

Eines [Dona el focus al/Treu el focus del] plafó del terminal

- Canvia el focus des del document actual al terminal i viceversa.

### Configuració

Podeu configurar el connector per a la vista d'eina Terminal a la pàgina Terminal del diàleg de configuració.

Hi ha disponibles les opcions següents:

Sincronitza automàticament el terminal amb el document actual quan sigui possible

- Això causarà que el terminal integrat canviï al directori del document actiu en iniciar-se i que quan se seleccioni un document nou doni el focus a aquest directori. Si no està activada, haureu de navegar pel vostre compte en el terminal.

Estableix la variable d'entorn EDITOR a «kate -b»

- Estableix la variable d'entorn `EDITOR` de manera que els programes que s'executin en el terminal integrat, obrin automàticament un fitxer a l'editor, obrint-lo en el &kate; en lloc de l'editor predeterminat configurat en el vostre intèrpret d'ordres. No podreu seguir utilitzant el terminal fins que tanqueu el fitxer al &kate;, de manera que el programa cridat reconeix que l'heu acabat d'editar.

Oculta el &konsole; en prémer «Esc»

- Permet tancar el terminal integrat prement la tecla &Esc;. Pot causar problemes amb les aplicacions de terminal que fan servir la tecla &Esc;, &pex;, el vim. Afegiu aquestes aplicacions en el quadre d'entrada de text que hi ha a continuació. Els elements de la llista s'hauran de separar amb comes.

## Connector de filtre de text

### Ús del connector Filtre de text

Podeu utilitzar aquest connector per a processar el text seleccionat emprant les ordres del terminal. La selecció s'utilitzarà com a entrada per a l'ordre, i la sortida substituirà la selecció o serà copiada al porta-retalls, tot dependrà de la preferència de l'usuari.

### Exemples:

- `less /etc/fstab` - enganxa el contingut d'aquest fitxer o el copia al porta-retalls

- `wc` - compta les línies, paraules i caràcters de la selecció i ho enganxa en el document, o ho copia al porta-retalls

- `sort` - ordena les línies de la selecció i enganxa el resultat en el document, o el copia al porta-retalls

### Estructura del menú

&Ctrl;\ Eines Filtre de text

- Obre el diàleg Filtre de text:

  Diàleg del filtre de text

  Introduïu una ordre de l'intèrpret d'ordres al quadre combinat o seleccioneu una ordre anterior de l'historial.

  Copia el resultat en lloc d'enganxar-lo

- Copia el resultat al porta-retalls, deixant el document sense canvis.

Fusiona STDOUT i STDERR

- Si està activada, es fusionarà la sortida de STDOUT i STDERR, i no s'informarà de cap error. En cas contrari, STDERR es mostrarà com un missatge passiu.

## Validació &XML;

Aquest connector comprova que els fitxers &XML; estiguin ben formats i que són vàlids.

Aquest connector comprova el fitxer actual. A la part inferior de la finestra principal del &kate; apareixerà una llista d'avisos i errors. Podeu fer clic sobre un missatge d'error per a saltar al lloc corresponent en el fitxer. Si el fitxer té una «DOCTYPE», la DTD indicada amb aquest tipus de document serà utilitzada per a comprovar la validesa del fitxer. S'espera que la DTD estigui al lloc corresponent en el fitxer actual, &pex; si el tipus de document fa referència a «DTD/xhtml1-transitional.dtd» i el fitxer és `/home/pere/prova.xml`, s'esperarà que la DTD es trobi a `/home/pere/DTD/xhtml1-transitional.dtd`. De tota manera, també es poden especificar DTD remotes a través d'http.

Si el fitxer no té un tipus de document (doctype), es comprovarà que estigui format correctament.

Per a aprendre més sobre &XML; reviseu les pàgines oficials de l'&XML; del W3C.

Internament. aquest connector crida a l'ordre externa `xmllint`, la qual forma part de la biblioteca libxml2. Si aquesta ordre no està correctament instal·lada al vostre sistema, el connector no funcionarà.

Per a carregar aquest connector obriu el diàleg de configuració del &kate; a Arranjament Configura el &kate;.... A continuació, seleccioneu Validació &XML; que apareixerà a la secció Aplicació / Connectors i tanqueu el diàleg.

### Estructura del menú

&XML; Valida l'&XML;

- Aquest iniciarà la comprovació, tal com s'ha descrit.

### Agraïments i reconeixements

Copyright del connector «Validació &XML;» del &kate;, 2002 per en &Daniel.Naber; &Daniel.Naber.mail;.

Copyright de la documentació, 2002 per en &Daniel.Naber;

## Compleció &XML;

Aquest connector ofereix consells sobre el que està permès en una determinada posició en un fitxer &XML;, segons la DTD del fitxer. Es mostrarà una llista de possibles elements, atributs, valors d'atributs o entitats, en funció de la posició del cursor (&pex;, totes les entitats seran llistades si el caràcter a l'esquerra del cursor és «&»). També és possible tancar l'etiqueta d'obertura més propera a l'esquerra.

La DTD ha d'existir en format &XML;, presentada pel programa `dtdparse` de Perl. Cridarem una DTD en aquest format «meta DTD». Se subministren algunes meta DTD. Es troben instal·lades a `katexmltools/` a ``qtpaths` `--paths GenericDataLocation``, la qual també és la carpeta predeterminada quan trieu Assigna la meta DTD.... Per a produir la vostra pròpia meta DTD, aconseguiu l'ordre `dtdparse` des de http://dtdparse.sourceforge.net.

### Com usar-la

Inicieu el &kate; i obriu el diàleg de configuració a Arranjament Configura el &kate;.... A continuació, seleccioneu Compleció &XML; que apareix a la pàgina Aplicació/Connectors i tanqueu el diàleg. Després d'això, seleccioneu &XML;Assigna la meta DTD.... Si el document no conté una «DOCTYPE» o el tipus de document és desconegut, haureu de triar una meta DTD des del sistema de fitxers. En cas contrari, la meta DTD que coincideixi amb el DOCTYPE del document actual serà carregada automàticament.

Ara podeu utilitzar el connector en teclejar el vostre text:

< (menys que)

- Donarà lloc a una llista de possibles elements menors al cursor que ja es troben dins d'una etiqueta. Cal tenir en compte que actualment no es pot utilitzar per a inserir l'element de nivell superior (&pex;, «<html>»).

</ (menys que + barra)

- En introduir aquests caràcters se'ns ofereix tancar l'element actual (el més proper a un obert a l'esquerra del cursor). Premeu &Intro; per a acceptar el suggeriment. A diferència de l'element de menú Tanca l'element, això només funciona amb una DTD assignada.

" (cometes dobles)

- La clau de cotització activarà una llista de possibles valors de l'atribut (si n'hi ha) si es troba dins d'una etiqueta.

(espai)

- Aquesta clau activarà una llista de possibles atributs per a l'element actual si es troba dins d'una etiqueta.

& (ampersand)

- Aquesta clau activarà una llista d'entitats amb nom.

### Característiques i limitacions

Podeu provar totes les funcions i limitacions carregant les `katexmltools/testcases.xml` a ``qtpaths` `--paths GenericDataLocation`` en el &kate; i seguint les instruccions.

### Estructura del menú

&Ctrl;&Intro; &XML; Insereix un element...

- Obre un diàleg que permet inserir un element &XML;. Els caràcters <, > i l'etiqueta de tancament s'inseriran automàticament. Si heu seleccionat text quan aquest element de menú està seleccionat, el text seleccionat serà envoltat per l'etiqueta d'obertura i de tancament. El diàleg també ofereix la compleció de tots els elements que es poden inserir a la posició actual del cursor si s'ha assignat una meta DTD mitjançant l'ús d'Assigna la meta DTD....

&Ctrl;< &XML; Tanca l'element

- Cerca el text d'una etiqueta que encara no està tancada i la tancarà mitjançant la inserció de l'etiqueta de tancament corresponent. La cerca comença a la posició del cursor i va cap a l'esquerra. Si no pot trobar una etiqueta d'obertura no fa res.

&XML; Assigna la meta DTD...

- Li indicarà al connector quina meta DTD utilitzar per al document actual. Cal tenir en compte que aquesta assignació no es desarà. Ho haureu de repetir en iniciar el &kate;.

### Agraïments i reconeixements

Copyright del connector «Compleció &XML;» del &kate;, 2001, 2002 per en &Daniel.Naber; &Daniel.Naber.mail;.

Copyright de la versió SC 4 del &kde;, 2010 per en Tomáš Trnka

Copyright de la documentació, 2001, 2002 per en &Daniel.Naber;

## Connector Explorador del compilador

El connector explorador del compilador permet utilitzar l'explorador del compilador des del Kate. L'explorador del compilador normalment es limita a només 1 fitxer i és difícil utilitzar-lo per veure el codi generat d'un fitxer en el projecte. Aquest connector té com a objectiu simplificar aquest procés detectant automàticament les ordres de compilació del fitxer.

### Ús

El primer que cal fer és obrir una pestanya de l'explorador del compilador. Premeu &Ctrl;&Alt;I per a obrir la barra d'ordres i cercar «Obre el fitxer actual a l'explorador del compilador» i premeu la tecla d'entrada. Podeu afegir aquesta acció a la barra d'eines o assignar-hi una drecera per a un accés més fàcil.

A continuació, heu de configurar una instància local de l'explorador del compilador o utilitzar la instància pública https://godbolt.org/. Vegeu https://github.com/compiler-explorer/compiler-explorer. Un cop tingueu una instància, feu clic al quadre combinat Opció a la pestanya de l'explorador del compilador que heu obert abans i seleccioneu Canvia l'URL... i després introduïu l'URL del servidor de l'explorador del compilador.

A continuació, necessitareu un «compile_commands.json» si necessiteu veure el codi generat d'un fitxer del projecte. En cas contrari, podeu ometre aquesta part. Això es pot obtenir fàcilment si utilitzeu un sistema de construcció modern com el CMake o el Meson. Per al CMake és suficient passar `-DCMAKE_EXPORT_COMPILE_COMMANDS=ON` quan s'invoca el «cmake». El `compile_commands.json` s'hauria de situar a l'arrel del projecte. Tanqueu i torneu a obrir la pestanya de l'explorador del compilador al Kate. Després de tornar a obrir la pestanya, hauria de mostrar les ordres de compilació necessàries per a compilar el fitxer

Si esteu utilitzant l'explorador del compilador per a veure el codi generat d'una cosa temporal, només podeu escriure les ordres de compilació del fitxer i fer clic a Compila. Tingueu en compte que no s'accepta la recompilació automàtica en l'edició. Cal fer clic a Compila cada vegada que vulgueu tornar a compilar el fitxer

Un cop compilat el fitxer, haureu de veure el codi generat a la dreta. Podeu fer clic amb el botó dret i seleccionar Mostra el codi enllaçat per a veure el codi generat d'una línia en particular. De la mateixa manera a la dreta, podeu fer clic dret i seleccionar Desplaça al codi font per a mostrar el codi font d'una línia donada de codi generat

## Connector de donar format

El connector de donar format permet donar format al codi fàcilment. El connector té com a objectiu conservar l'historial de desfer del document i la posició del cursor de l'usuari en donar format al codi de manera que el format del codi no pertorbi el treball de l'usuari. Això és especialment important per a donar format automàticament en desar.

### Ús

Permet a l'usuari donar format al codi de dues maneres:

- Utilitzant manualment l'acció «Dona format a un document».

- Automàticament en desar

Podeu cercar aquesta acció a la barra d'ordres i vincular-hi una drecera per a un accés més fàcil

### Llenguatges i formatadors admesos

La llista actual de llenguatges i formatadors admesos és la següent:

- 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`

- Intèrpret d'ordres Fish: `fish_indent`

- Bash: `shfmt`

- Nix: `nixfmt`

- QML: `qmlformat`

- HTML: `prettier`

- Swift: `swiftformat`

- Erlang: `erlfmt`

- Godot Script: `gdformat`

- Python

  - `autopep8`

  - `ruff`

- YAML

  - `yamlfmt`

  - `prettier`

### Configuració

El connector es pot configurar dues maneres:

- Globalment, des del diàleg de configuració

- En una base per projecte utilitzant el fitxer `.kateproject`

En llegir la configuració, el connector primer intentarà llegir la configuració des del fitxer `.kateproject` i després llegirà la configuració global. Exemple:

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

L'anterior:

- activa «dona format en desar» ("format on save") globalment

- especifica «jq» com a formatador per al JSON

- desactiva «dona format en desar» ("format on save") per al cmake-format i autopep8

Per a configurar el format d'un projecte, primer creeu un fitxer `.kateproject` i després afegiu-hi un objecte `"formatting"`. A l'objecte `"formatting"` podeu especificar la vostra configuració com es mostra a l'exemple anterior. Exemple:

Cal activar el Connector de projecte per a que això funcioni

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

### Desactiva temporalment el format en desar

Mentre treballeu, sovint haureu de desactivar el format durant un temps curt per qualsevol motiu. Podeu fer-ho des de la barra de menús, Eines Format en desar. També podeu activar aquesta acció des de la barra d'ordres.