# Werken met plug-ins

U kunt de individuele plug-ins inschakelen in de instellingendialoog, die ook toegang biedt tot extra instellingenopties voor plug-ins die dat vereisen.

## &kate;-programma-plugins

&kate;-plugins zijn additionele functies voor &kate; Ze kunnen extra menu's en sneltoetsen toevoegen en de mogelijkheden van &kate; uitbreiden. U kunt er vanuit &kate; net zo veel installeren als u wilt. Open het configuratiedialoogvenster van &kate; door het menu Instellingen &kate; instellen... te kiezen. Kies dan Toepassing Plugins om de gewenste plugins te vinden.

De beschikbare plugins voor de toepassing zijn:

- Externe hulpmiddelen - externe hulpmiddelen en toepassingen uitvoeren

- Backtrace browser - Hulpmiddelweergave voor C/C++ backtrace navigatie

- Bouwplug-in - Compileren of Make uitvoeren en foutboodschappen ontleden

- Behalve/zoals sluiten - sluit een groep documenten gebaseerd op een gemeenschappelijk pad of een extensie van een bestand

- Kleurenkiezer - Voorbeeld voor bekende kleurennamen tonen

- Gekleurde blokhaakjes - Gekleurde blokhaakjes voor leesbaarheid

- CTags - Definities/declaraties opzoeken met CTags

- Documentvoorbeeld - toont het document in het doelformaat.

- Documentomschakelaar - snel document omschakelen met &Alt; gedrag

- Bestandssysteembrowser - Hulpmiddelenweergave voor bladeren door het bestandssysteem

- Boomstructuurweergave van documenten - Toont de open bestanden in een boomstructuur

- &gdb; - levert een eenvoudige &gdb;-frontend

- Plug-in voor project - Integratie met &git; en andere beheersystemen voor broncode

- Replicode - Constructivist AI taal en runtime

- LSP-client - LSP-client biedt codenavigatie en codeaanvulling voor vele talen

- Zoeken & vervangen - Zoeken en vervangen in documenten, mappen of projecten

- Scripts & Tekstfragmenten hulpmiddelenweergave - Maak of download codetekstfragmenten en bewerkerscripts

- Toetsenbordmacro's - Neem toetsenbordmacro's op en speel ze af (d.w.z., toetsenbordactiereeksen)

- SQL-plugin - Voer zoekopdracht op SQL-database uit

- Symboolviewer - Referentiesymbolen uit de broncode halen en tonen

- Terminalhulpmiddelweergave - Een terminal gereed hebben, met &konsole;-widget van &kde;

- Tekstfilter - Tekst bewerken met terminalopdrachten

- &XML;-aanvulling - Somt &XML;-elementen, -attributen, -attribuutwaarden en -entiteiten op die door de DTD zijn toegestaan

- Validatie van &XML;- Valideert -bestanden met behulp van xmllint

- Compiler-verkenner- Interface naar hulpmiddel compiler-verkenner

- Formattering- Plug-in voor formatteren van code

## Externe hulpmiddelen

De plug-in Externe hulpmiddelen biedt het aanroepen van externe toepassingen met gegevens gerelateerd met het huidige document, bijvoorbeeld zijn URL, map, tekst of selectie. Na te zijn ingeschakeld, verschijnt er een configuratiepagina zoals onderstaand aangegeven die in staat stelt om bestaande hulpmiddelen te wijzigen of te verwijderen. Evenzo kunnen nieuwe hulpmiddelen naar uw wensen worden toegevoegd. De hulpmiddelen zullen daarna verschijnen in het submenu Externe hulpmiddelen van het menu Hulpmiddelen van de toepassing.

De configuratiepagina biedt het toevoegen van nieuwe externe hulpmiddelen door te klikken op de knop Toevoegen. In dat geval verschijnt er een pop-up-menu waar u ofwel een nieuw extern hulpmiddel kan toevoegen of een bestaand hulpmiddel uit een voorgedefinieerde lijst of een nieuwe categorie om de externe hulpmiddelen in categorieën te organiseren. Evenzo kunnen bestaande hulpmiddelen gewijzigd worden door ofwel dubbelklikken of door Bewerken... te gebruiken en Verwijderen verwijdert de geselecteerde hulpmiddelen.

### Externe hulpmiddelen configureren

Een hulpmiddel bewerken opent een configuratiedialoogvenster die verfijnde configuratie van het hulpmiddel biedt:

Zoals is te zien kunnen veel details gedefinieerd worden, namelijk:

- `Naam`, de naam van het hulpmiddel, die later in het menu zal verschijnen.

  `Pictogram`, optioneel pictogram dat zichtbaar is in het menu.

  `Uitvoerbaar programma`, uitvoerbaar programma inclusief ofwel een volledig pad of uw uitvouwbare programma moet in de omgevingsvariabele `PATH` aanwezig zijn.

  `Argumenten`, optionele argumenten die aan het uitvoerbare programma worden meegegeven.

  `Invoer`, optionele invoer die aan het proces wordt doorgegeven via stdin.

  `Werkmap`, de werkmap waarin het hulpmiddel zal worden gestart. Indien leeg zal de werkmap ingesteld worden op het huidige pad van het document.

  `Mime-types`, indien ingesteld is het hulpmiddel alleen actief als het mime-type van het huidige document overeenkomt.

  `Opslaan`, bij aanroepen, slaat geen, het huidige document of alle documenten op.

  `Trigger`, een trigger om dit hulpmiddel uit te voeren. Een trigger zal alleen het huidige actieve document betreffen en zal alleen worden uitgevoerd als het mime-type van het huidige actieve document overeenkomt met het mime-type van het externe hulpmiddel.

  De volgende triggers zijn beschikbaar:

- `Geen`, dit is de standaard, het betekent dat het hulpmiddel geen trigger heeft.

  `Vóór opslaan`, deze trigger zal uitgevoerd worden direct voordat het document wordt opgeslagen.

  `Na opslaan`, deze trigger zal door het hulpmiddel uitgevoerd worden nadat het document is opgeslagen.

`Huidig document opnieuw laden na uitvoeren`, nuttig wanneer het huidige bestand op schijf is gewijzigd.

`Uitvoer`, de uitvoer definieert het doel van stdout. Het is ofwel ingesteld op `Negeren`, `Invoegen op de cursorpositie`, `Geselecteerde tekst vervangen`, `Huidig document vervangen`, `Achtervoegen aan huidig document`, `Invoegen in nieuw document`, `Naar klembord kopiëren` of `In paneel tonen`.

`Berwerkingsopdracht`, optionele opdracht die gebruikt kan worden om het externe hulpmiddel via de ingebouwde opdrachtregel aan te roepen.

De knop Standaarden is alleen zichtbaar voor hulpmiddelen die geleverd zijn met Kate. Bij erop klikken worden alle instellingen van de hulpmiddelen teruggedraaid naar de standaard (aka factory) waarden.

### Expansie van variabelen

Sommige velden voor bewerking zoals Uitvoerbaar programma, Argumenten, Invoer en Werkmap ondersteunen variabelen die geëxpandeerd worden bij aanroepen van het hulpmiddel. Dit wordt aangegeven met het pictogram {} dat verschijnt op het moment dat een van deze tekstinvoervelden focus heeft (zie rode cirkel):

Zweven boven een van deze tekstinvoervelden toont ook een tekstballon met de nu geëxpandeerde tekst. Voorts, klikken op de actie {} zal een dialoog openen die alle beschikbare variabelen zal tonen:

Deze functie biedt heel wat flexibiliteit bij het definiëren van een extern hulpmiddel omdat alle variabelen van de vorm `%{...}` geëxpandeerd zijn wanneer het hulpmiddel wordt aangeroepen. Er worden twee soorten variabelen ondersteund:

- `%{variable-name}`

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

De eerste vorm `%{variable-name}` vervangt eenvoudig de variabele met zijn inhoud. Bijvoorbeeld, de variabele `%{Document:FileName}` wordt vervangen door de bestandsnaam van het huidige document zonder zijn pad. De tweede vorm `%{variable-name:<value>}` krijgt `<value>` als inhoud. Bijvoorbeeld, dit kan gebruikt worden om een omgevingsvariabele in te voegen met `%{ENV:HOME}` of men kan de huidige datum in het formaat met voorkeur verkrijgen zoals `%{Date:yyyy-MM-dd}`.

Ondersteunde variabelen omvatten:

- `Document:FileBaseName`: basisnaam van bestand zonder pad en achtervoegsel van het huidige document.

  `Document:FileExtension`: bestandsextensie van het huidige document.

  `Document:FileName`: bestandsnaam zonder pad van het huidige document.

  `Document:FilePath`: volledige pad van het huidige document inclusief de bestandsnaam

  `Document:Text`: inhoud van het huidige document.

  `Document:Path`: volledige pad van het huidige document exclusief de bestandsnaam.

  `Document:NativeFilePath`: volledige pad van document inclusief bestandsnaam, met inheems scheidingsteken van pad (backslash op Windows).

  `Document:NativePath`: volledige pad van document exclusief bestandsnaam, met inheems scheidingsteken van pad (backslash op Windows).

  `Document:Cursor:Line`: regelnummer van de positie van de tekstcursor in het huidige document (begint met 0).

  `Document:Cursor:Column`: kolomnummer van de positie van de tekstcursor in het huidige document (begint met 0).

  `Document:Cursor:XPos`: x-component in globale schermcoördinaten van de cursorpositie.

  `Document:Cursor:YPos`: y-component in globale schermcoördinaten van de cursorpositie.

  `Document:Selection:Text`: tekstselectie van het huidige document.

  `Document:Selection:StartLine`: beginregel van geselecteerde tekst van het huidige document.

  `Document:Selection:StartColomn`: beginkolom van geselecteerde tekst van het huidige document.

  `Document:Selection:EndLine`: eindregel van geselecteerde tekst van het huidige document.

  `Document:Selection:EndColomn`: eindkolom van geselecteerde tekst van het huidige document.

  `Document:RowCount`: aantal rijen van het huidige document.

  `Document:Variable:<variable>`: expandeer willekeurige documentvariabelen.

  `Date:Locale`: de huidige datum volgens uw lokale opmaak.

  `Date:ISO`: de huidige datum (ISO).

  `Date:<value>`: de huidige datum (QDate formaattekenreeks).

  `Time:Locale`: De huidige tijd volgens uw lokale opmaak.

  `Time:ISO`: de huidige tijd (ISO).

  `Time:<value>`: de huidige tijd (QTime formaattekenreeks).

  `ENV:<value>`: toegang tot omgevingsvariabelen.

  `JS:<expressie>`: eenvoudige JavaScript statements uitvoeren.

  `PercentEncoded:<text>`: procent gecodeerde tekst.

  `UUID`: een nieuwe UUID genereren.

### Lijst met standaard hulpmiddelen

Verschillende hulpmiddelen worden standaard geleverd. Als u echter meer nuttige hulpmiddelen hebt draag ze dan bij op our GitLab project zodat we ze aan deze lijst kunnen toevoegen. Alle standaard hulpmiddelen zijn standaard zichtbaar in de lijstweergave. Alle hulpmiddelen kunnen naar uw wensen gewijzigd worden, inclusief de categorie of zelfs hulpmiddelen verwijderen. Verwijderde hulpmiddelen kunnen opnieuw terug toegevoegd worden door te klikken op de knop Toevoegen in de configuratiepagina zoals boven beschreven.

### git-cola

git-cola is een grafische git-client die u in staat stelt om gemakkelijk wijzigingen te "stagen" en te "committen". Als het is geïnstalleerd is het ook beschikbaar via de opdrachtregel door `git-cola` te typen

- `Naam`: git-cola

  `Pictogram`: git-cola

  `Uitvoerbaar programma`: git-cola

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

  `Opdracht in editor`: git-cola

### gitk

gitk is ook een git-client die biedt om mooi de git-geschiedenis te visualiseren.

- `Naam`: gitk

  `Pictogram`: git-gui

  `Uitvoerbaar programma`: gitk

  `Werkmap`: %{Document:Path}

  `Opdracht in editor`: gitk

### git-blame

Start git-blame om gemakkelijk de git-wijzigingen in het huidige bestand te volgen.

- `Naam`: git blame

  `Uitvoerbaar programma`: git

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

  `Save`: Huidig document

  `Werkmap`: %{Document:Path}

  `Opdracht in editor`: git-blame

### Shell-script uitvoeren

Start een extern konsole waarin het huidige document wordt uitgevoerd. Het script moet de interpretator aangeven in de eerste regel via een shebang `#!/pad/interpretator`.

- `Naam`: Shell-script uitvoeren

  `Pictogram`: system-run

  `Uitvoerbaar programma`: konsole

  `Argumenten`: -e sh -c "cd %{Document:Path} && pwd && chmod -vc a+x %{Document:FileName} && ./%{Document:FileName} ; echo Press any key to continue. && read -n 1"

  `Save`: Huidig document

  `Werkmap`: %{Document:Path}

  `Opdracht in editor`: run-script

### Google geselecteerde tekst

In Google naar geselecteerde tekst zoeken.

- `Naam`: Google geselecteerde tekst

  `Pictogram`: globe

  `Uitvoerbaar bestand`: xdg-open

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

  `Opdracht in editor`: google

### UUID invoegen

Een nieuwe UUID invoegen elke keer wanneer deze actie wordt aangeroepen.

- `Naam`: UUID invoegen

  `Uitvoerbaar programma`: echo

  `Argumenten`: %{UUID}

  `Uitvoer`: op cursorpositie invoegen

  `Opdracht in editor`: uuid

### Clang-formaat volledig bestand

Voert clang-format uit op het huidige bestand op schijf. Het document wordt daarna opnieuw geladen.

- `Naam`: Clang Format volledig bestand

  `Uitvoerbaar programma`: clang-format

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

  `Werkmap`: %{Document:Path}

  `Save`: Huidig document

  `Herladen`: ja

  `Opdracht in editor`: clang-format-file

### Clang-formaat geselecteerde tekst

clang-format wordt uitgevoerd alleen op de geselecteerde tekst in het huidige document.

- `Naam`: Clang Format geselecteerde tekst

  `Uitvoerbaar programma`: clang-format

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

  `Werkmap`: %{Document:Path}

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

  `Uitvoer`: geselecteerde tekst vervangen

  `Opdracht in editor`: clang-format-selection

### Qt Quick 2 voorbeeld (qmlscene)

Bekijkt het huidige qml-bestand in qmlscene.

- `Naam`: Qt Quick 2 voorbeeld (qmlscene)

  `Uitvoerbaar programma`: qmlscene

  `Argumenten`: %{Document:FileName}

  `Save`: Huidig document

  `Werkmap`: %{Document:Path}

  `Opdracht in editor`: qml-preview

### JSON-formaat volledig bestand

Het gehele JSON-bestand formatteren.

- `Naam`: JSON-formatteren volledig bestand

  `Pictogram`: application-json

  `Uitvoerbaar programma`: jq

  `Argumenten`: %{Document:FileName}

  `Save`: Huidig document

  `Werkmap`: %{Document:Path}

  `Uitvoer`: huidig document vervangen

  `Opdracht in editor`: json-format-file

### XML-formaat volledig bestand

Het gehele XML-bestand formatteren.

- `Naam`: XML-formaat volledig bestand

  `Pictogram`: application-xml

  `Uitvoerbaar programma`: xmllint

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

  `Save`: Huidig document

  `Werkmap`: %{Document:Path}

  `Uitvoer`: huidig document vervangen

  `Opdracht in editor`: xml-format-file

## Plug-in Backtrace Browser

### De Plug-in Backtrace browser gebruiken

Deze plug-in is bedoeld voor ontwikkelaars en waarschijnlijk van weinig nut voor gebruikers. Het toont een backtrace geleverd door gdb in een lijstweergave in hulpmiddelenweergave van &kate;. Klikken op een item opent het geselecteerde bestand en springt naar het juiste regelnummer. Het werkt voor backtraces gegenereerd op uw eigen machine, maar het zal ook werken voor backtraces van andere mensen, &ie; met `/home/dummy/qt-copy/…/qwidget.cpp` zal het nog steeds gevonden worden op andere machines. Om dat te laten werken moet u de mappen waar de broncode zich bevindt indexeren.

Soms zijn er een aantal bestanden met dezelfde naam, ⪚

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

Om de juiste keuze te maken pakt de plug-in de laatste twee delen van de &URL;, in dit geval zou dat zijn

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

En dan vindt de plug-in zoals gebruikelijk de juiste.

Indexeren van de master en een branch zal natuurlijk tot een botsing leiden.

### Configuratie

Op de instellingenpagina voegt u de mappen toe die de broncode bevatten.

Backtrace browser
Paden in hulpmiddelenweergave van Backtrace browser configureren

Op OK klikken zal indexering starten. Wanneer indexering gereed is, open dan het weergavehulpmiddel Backtrace browser.

Nu kunt u een backtrace uit het klembord laden (⪚. wanneer u op Naar klembord kopiëren klikt in &drkonqi;) of uit een bestand.

## Bouwplug-in

### Inleiding

De plug-in Build biedt u het uitvoeren van acties zoals bouwen, wissen en compileren op een project. U kunt ook automatisch de gegenereerde toepassing uitvoeren. De plug-in geeft in de basis u een manier om sets van uit te voeren commando's te configureren en het kan de uitvoer doorzoeken op koppelingen naar bestanden en specifieke regels en kolommen in die bestanden. Dus zelfs als de plug-in oorspronkelijk is gemaakt voor het compileren van C/C++ en het meest daarmee is getest, kan de plug-in ook nuttig zijn voor andere doelen en talen.

### De Bouwplug-in gebruiken

De plug-in Build voegt een weergavehulpmiddel Build onderaan toe en een menu Build op de menubalk. Het weergavehulpmiddel kan worden gebruikt om bouwdoelen te selecteren en te configureren, terwijl het menu en zijn sneltoetsen gebruikt kunnen worden om de geconfigureerde shell-opdrachten uit te voeren.

Bouwuitvoer

Het weergavehulpmiddel Build heeft twee statische tabbladen:

- Instellingen van doel

- Uitvoer

#### Tabblad Instellingen van doel

Het tabblad Instellingen van doel kan gebruikt worden om verschillende bouwdoelen te configureren en sets doelen te definiëren.

Een doel-set is een groep opdrachten die uitgevoerd kunnen worden in een gespecificeerde werkmap. Doel-sets kunnen toegevoegd worden onder ofwel Projecten of Sessie. De aangepaste doel-sets toegevoegd onder Projecten worden opgeslagen in een bestand .kateproject.build in de project basismap en worden hersteld wanneer het project opnieuw wordt geopend. De doel-sets toegevoegd onder Sessie worden opgeslagen in de huidige sessieconfiguratie van Kate.

De eerste rij, in een doel-set, bevat een naam voor de set in kolom een en in kolom twee hebben we de map waar de opdrachten uitgevoerd zouden moeten worden. Op elke volgende rij hebben we een naam voor het commando in kolom een, een bouwopdracht in kolom twee en een uitvoeropdracht in kolom drie. Om een va deze te bewerken, dubbelklik op het item of gebruik de sneltoets bewerken (vaak F2).

Werkmap

- De tweede kolom van de eerste rij in een doel-set, wordt gebruikt om de werkmap gebruikt voor compileren en uitvoeren van opdrachten. Als de project-plug-in is ingeschakeld kan de werkmaptekenreeks ook plaatshouders voor het basismappad van het project bevatten: %B en naam: %b

Bouwcommando

- De tweede kolom in de "niet-eerste rijen", bevat de shell-opdrachten om uit te voeren in de werkmap. Let op het woord shell. Bijna elke shell-opdracht is goed. De bouwopdracht kan plaatshouders bevatten. %f voor het huidige bestand, %d voor de map van het huidige bestand en %n voor de basisnaam van de huidige bestandsnaam (zonder achtervoegsel).

Commando uitvoeren

- De derde kolom in de "niet-eerste rijen" kan een shell-opdracht bevatten voor uitvoeren in een actuele terminal in de werkmap van de doel-set. De terminal is geopend als een tabblad. De plug-in zal proberen het terminal tabblad te hergebruiken, als dezelfde opdracht wordt uitgevoerd en de vorige toepassing is geëindigd.

Bovenaan het tabblad Doelinstellingen hebben we een werkbalk met een doelfilter en de volgende knoppen:

- Bouw het geselecteerde doel
- Bouw het geselecteerde doel
- Een nieuw bouwdoel toevoegen
- Een nieuwe set doelen aanmaken
- Kopieer een set commando's of doelen
- De huidige set commando's of doelen verwijderen

#### Tabblad Uitvoer

Het tabblad Uitvoer toont de uitvoer op het console gegenereerd door de draaiende (bouw) opdracht. Als een regel een locatie van een bestand bevat, zal op die regel geklikt kunnen worden. Als de regel in de uitvoer ook een fout of waarschuwing toont, zal de regel een andere kleur hebben.

Als de optie Fouten en waarschuwingen aan Diagnostiek toevoegen is ingeschakeld in de instellingenpagina van de plug-in in instellingen van Kate, zullen de fouten en waarschuwingen ook toegevoegd worden aan de diagnostiekweergave. Om naar de vorige fout te gaan drukt u op &Alt;&Shift;&Left;. Om naar de volgende fout te gaan drukt u op &Alt;&Shift;&Right;.

### Menustructuur

Bouwen Doel selecteren...

- Het doelselectiefilter heeft focus in het tabblad Doelinstellingen. Invoeren van een naam zal doelen uitfilteren die niet overeenkomen met de ingevoerde tekenreeks. Het is ook mogelijk de pijltjestoetsen te gebruiken om te navigeren in de boomstructuur van doelen. Wanneer het gewenste doel is geselecteerd, drukken op Return of Enter zal het geselecteerde doel uitvoeren.

Bouwen Geselecteerd doel bouwen

- Bouwt het laatst geselecteerde doel. Als er niets was geselecteerd, werkt het als Doel selecteren...

Bouwen Geselecteerd doel bouwen en uitvoeren

- Bouwt het laatst geselecteerde doel en voert de uitvoeropdracht uit nadat de bouwopdracht met succes is beëindigd.

Bouwen Huidig bestand compileren

- Probeer het huidige bestand te compileren door te zoeken naar een opdracht in een mogelijk compile_commands.json.

Bouwen Stoppen

- Stop met bouwen van een doel.

Bouwen Focusseer het volgende tabblad links

- Focusseer het volgende tabblad bouwplug-in links. Of open de hulpmiddelweergave bouwplug-in als het verborgen is.

Bouwen Focusseer het volgende tabblad rechts

- Focusseer het volgende tabblad bouwplug-in rechts. Of open de hulpmiddelweergave bouwplug-in als het verborgen is.

Bouwen Doelen uit bouwmap van CMake laden

- Opent de bestandsdialoog en laat de gebruiker een CMakeCache.txt selecteren. Wanneer een bestand is geselecteerd, genereert de plug-in cmake-bouwopdrachtdoelen die uitgevoerd kunnen worden in de bouwmap voor het op CMake gebaseerde project.

### Dankbetuigingen en licentie

De plug-in Build (Bouwen) van &kate; is geschreven door Kåre Särs.

Speciale dank gaat naar de deelnemer van Google Code-In 2011 Salma Sultana voor het schrijven van veel van deze sectie.

## Plug-in voor sluiten Behalve/Like

### Inleiding

De plugin biedt u de mogelijkheid om een groep van documenten gebaseerd op hun extensie en pad te sluiten

### De plug-in Behalve/zoals sluiten gebruiken

Aangenomen dat u deze documenten hebt geopend in &kate;:

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

U hebt dan de volgende opties om documenten te sluiten zoals getoond in de schermafdruk:

Sluiten behalve

Gebruik het keuzevakje in het laatste item van de lijst om een bevestigingsdialoog in of uit te schakelen. De geselecteerde optie zal toegepast worden op beide afsluitacties.

### Menustructuur

Bestand Uitzonderingen sluiten

- Sluiten alle open documenten, behalve diegenen die overeenkomen met het pad of de bestandsextensie geselecteerd uit het submenu.

Bestand Sluiten zoals

- Sluiten alle open documenten die overeenkomen met het pad of de bestandsextensie geselecteerd uit het submenu.

## Plug-in voor kleurenkiezer

### Inleiding

Deze plug-in voegt een inline kleurenvoorbeeld/kiezer toe aan kleuren in de tekst (⪚, `#FFFFFF`, `wit`).

Om deze plugin te laden opent u de instellingendialoog van &kate; onder Instellingen &kate; instellen.... Selecteer daarna Kleurenkiezer en sluit de dialoog.

### Configuratie

Op de instellingenpagina van de kleurenkiezer in de configuratie van &kate; kunt u de volgende opties selecteren voor het gedrag van de plug-in.

Voorbeeld voor bekende kleurennamen tonen

- Ofwel de kleurenkiezer tonen voor bekende kleurnamen (⪚, `hemelsblauw`). Zie deze pagina voor de lijst met kleuren.

Voorbeeld na tekstkleur plaatsen

- Ofwel het inline voorbeeld plaatsen na tekstkleur in de tekst.

Overeenkomst maken met hex-kleur

- Hier kunt u de best overeenkomende optie kiezen voor de kleuren die in uw code worden gebruikt.

## Gekleurde blokhaakjes

### Inleiding

Plug-in voor gekleurde blokhaakjes voor bij elkaar horende paren in verschillende kleuren om leesbaarheid te vergroten. Er worden, echter, niet alle blokhaakjes gekleurd. Een blokhaakje waarvan het bijbehorende opener of sluiter niet zichtbaar is zal genegeerd worden. Evenzo zal een blokhaakjespaar die het enige paar is in een regel niet gekleurd worden.

### Configuratie

De plug-in biedt geen enkele configuratie.

## CTags plug-in

### Inleiding

CTags genereert een index- (of tag-)bestand van taalobjecten gevonden in broncodebestanden die het mogelijk maken deze items snel en gemakkelijk te lokaliseren met deze plug-in in &kate;.

Een tag geeft een taalobject aan waarvoor een index-item beschikbaar is (of, anders, het index-item gemaakt voor dat object).

Tag-generatie wordt ondersteund voor deze programmeertalen.

### Configuratie

De CTags-plug-in gebruikt twee verschillende databasebestanden voor de index.

Op de instellingenpagina van CTags in de configuratie van &kate; kunt u mappen met de broncode toevoegen of verwijderen en de gezamenlijke CTags-database genereren.

#### Gemeenschappelijke index

CTags-instellingen
Globale database voor CTags instellen

Onderaan de instellingenpagina kunt u het CTags-commando aanpassen.

Voor meer informatie over alle beschikbare opties kunt u de manpagina van CTags raadplegen. Deze manpagina is beschikbaar in &khelpcenter; en u kunt ook de &URL; man:/ctags direct in &konqueror; invoeren.

Klikken op Bijwerken zal indexering starten. Wanneer indexering gereed is, sluit dan de dialoog.

#### Sessie-index

Om de sessie-index in te stellen opent u de weergave CTags.

Doelen van index

- Op dit tabblad kunt u mappen met broncode toevoegen of verwijderen en handmatig de sessie-specifieke CTags database opnieuw genereren.

Database

- Instellingen van database
  Sessie-database voor CTags instellen

  Selecteer een ander CTags-databasebestand, stel het CTags-commando in of keer terug naar het standaard commando.

### De CTags plug-in gebruiken

U plaatst de muiscursor op het programmeertaalobject zoals functie, symbool &etc; waarin u bent geïnteresseerd en selecteer daarna een van de acties in het menu CTags om te springen naar de regel en het bestand waar het object is gedefinieerd of gedeclareerd.

Standaard zijn er aan de acties in het menu CTags geen sneltoetsen toegekend. Gebruik de sneltoetsbewerker om uw eigen sneltoetsen in te stellen.

Als alternatief kunt u het zoekveld in het tabblad Opzoeken van de CTags weergave.

Tekens invoeren in het zoekveld zal het zoeken starten en overeenkomende namen van programmeertaalobjecten zoals functies, klassen, symbolen &etc; tonen samen met het type en de bestandsnaam.

Selecteer een item in de lijst om naar de bijbehorende regel in het broncodebestand te springen.

### Menustructuur

CTags Een stap teruggaan

- Navigeer terug in de geschiedenis naar de laatst bezochte tag.

CTags Huidige tekst opzoeken

- Opent het tabblad Opzoeken van de CTags weergave en toont alle programmeertaalobjecten die overeenkomen met de huidige tekstselectie in de lijst.

CTags Ga naar declaratie

- Als de cursor zich in een definitieobject bevindt dan opent dat het document met de bijbehorende declaratie, indien nodig wordt zijn weergave geactiveerd en wordt de cursor aan het begin van de declaratie geplaatst.

CTags Ga naar definitie

- Als de cursor zich in een declaratieobject bevindt dan opent dat het document met de bijbehorende definitie, indien nodig wordt zijn weergave geactiveerd en wordt de cursor aan het begin van de definitie geplaatst.

## Plug-in voor documentvoorbeeld

### Inleiding

De plug-in schakelt een live voorbeeld in van het nu bewerkte tekstdocument in het uiteindelijke formaat in de zijbalk. Dus bij bewerken van ⪚ een &Markdown;-tekst of een &SVG;-afbeelding, is het resultaat onmiddellijk zichtbaar naast de brontekst.

Voor het tonen gebruikt de plug-in die &kparts;-plug-in die nu is geselecteerd als die met voorkeur voor het &MIME;-type van het document. Als er geen &kparts;-plug-in is voor dat type, dan is geen voorbeeld mogelijk.

Om de plug-in met voorkeur voor openen te wijzigen is de module Bestandsassociaties in de &systemsettings; beschikbaar en bewerking van de volgorde op Diensten voor dit bestandstype op het tabblad Inbedding.

### Enkele beschikbare &kparts;-plug-ins

&MIME;-type | &kparts;-plug-in
&Markdown;-tekst | KMarkdownWebViewPart of OkularPart
&SVG;-afbeelding | SVGPart
&Qt; UI bestanden | KUIViewerPart
&DOT;-graph bestanden | KGraphviewerPart

### Menustructuur

Beeld Hulpmiddelenweergaven Voorbeeld tonen

- Toont of verbergt het Documentvoorbeeld van &kate; in een zijbalk

### Interface

De knoppen bovenaan het voorbeeldvenster biedt deze acties:

- Het voorbeeld vergrendelen van een gegeven document. Deze optie selecteren verzekert dat als de focus wordt omgeschakeld naar het beeld van een ander document in hetzelfde &kate; venster, dat het voorbeeld niet volgt naar dat document, maar het voorbeeld van dit document blijft tonen.

- Schakelt in of uit het bijwerken van het voorbeeld van de huidige inhoud van het document

- Werk handmatig het voorbeeld van de huidige inhoud van het document bij

- Een afrolmenu met acties uit de &kparts;-plug-in

## Plug-in voor document wisselen

### Menustructuur

&Ctrl; Beeld Laatst gebruikte weergaven

&Ctrl;&Shift; Beeld Laatst gebruikte weergaven (omgekeerd)

- Opent een lijst met de laatst bekeken documenten:

  Laatst bekeken documenten

  Houd de toets &Ctrl; ingedrukt en gebruik de toets om voorwaarts door de lijst te gaan. Druk ook de toets &Shift; in om de richting om te keren.

  Houd de sneltoets &Ctrl; ingedrukt en u kunt de toetsen &Up;, &Down;, &Home; of &End; gebruiken om in de lijst te navigeren. Vervolgens drukken op een tekentoets zal u door alle items laten lopen waarvan het eerste teken in the lijst overeenkomt. Als u de sneltoetsen loslaat zal de weergave springen naar het geselecteerde document in de lijst.

## Bestandssysteembrowser

In de bestandssysteembrowser kunt u de inhoud van mappen bekijken en bestanden uit een geopende map in het huidige frame openen.

### Menustructuur

Beeld Hulpmiddelenweergaven Bestandssysteembrowser tonen

- Toont of verbergt de Bestandssysteembrowser van &kate;

### Interface

De Bestandssysteembrowser heeft, van boven naar beneden, de volgende elementen:

Een werkbalk

- Deze bevat de standaard navigatieknoppen:

  Terug

- Wanneer u op deze knop klikt, wordt het commando `cd` naar de vorige map in de geschiedenis uitgevoerd. Deze knop is niet beschikbaar als er geen vorig item is.

Vooruit

- Wanneer u op deze knop klikt, wordt het commando `cd` naar de volgende map in de geschiedenis uitgevoerd. Deze knop is niet beschikbaar als er geen volgend item is.

Bladwijzers

- Opent een submenu om bladwijzers te bewerken en toe te voegen en een nieuwe map voor bladwijzers.

Map van huidig document

- Wanneer u op deze knop klikt, wordt het commando `cd` naar de map waarin het huidige document zich bevindt (indien mogelijk) uitgevoerd. Deze knop is niet beschikbaar als het document een nieuw, onopgeslagen bestand is of als de map waarin het bestand zich bevindt niet bepaald kan worden.

Opties

- Beknopte weergave

- Alleen bestandsnamen tonen

Gedetailleerde weergave

- Naam, Datum en Grootte van de bestanden tonen.

Boomstructuurweergave

- Zoals Beknopte weergave, maar mappen kunnen worden uitgevouwen om hun inhoud te bekijken.

Gedetailleerde boomweergave

- Dit stelt u ook in staat om mappen uit te vouwen, maar toont extra kolommen beschikbaar in Gedetailleerde weergave.

Verborgen bestanden tonen

- Toont bestanden die normaal verborgen zijn door uw &OS;.

Automatisch synchroniseren met huidig document

- Wanneer deze optie is ingeschakeld zal de bestandssysteembrowser automatisch een `cd` uitvoeren naar de map van het document dat nu geopend is in het bewerkingsgebied elke keer als het wijzigt.

Een locatie-item

- Dit toont een broodkruimelnavigatie naar de huidige geopende map, zoals in &dolphin;. U kunt op elke map klikken om het door te bladeren of klik op een van de pijlen, links van de map, om een onderliggende map te selecteren. U kunt ook uit Plaatsen kiezen door op het meest linkse pictogram in de broodkruimelnavigatie te klikken, die een pictogram toont die uw huidige Plaats toont.

  U kunt ook rechts van de broodkruimels klikken on ze te wijzigen waar u het pad naar een map, die u wilt zien, kunt intypen. Het &URL;-invoerveld houdt een lijst bij van eerder ingetypte paden. Klik op de pijlknop rechts van het invoerveld om een pad te kiezen.

  Het &URL;-invoerveld maakt gebruik van automatische aanvulling. De methode kan ingesteld worden in het contextmenu dat verschijnt wanneer u met de &RMB; op de tekst klikt.

Een mapweergave

- Dit is een standaard mapweergave van &kde;.

Een filterinvoerveld

- In het filterinvoerveld kunt u het filter voor de bestanden die u wilt zien intypen. Het filter gebruikt de standaard jokertekens; items moeten worden gescheiden door een spatie. Voorbeeld: `*.cpp *.h *.moc`

  Om alle bestanden te kunnen zien, typt u een enkele asterisk `*` in.

  Het filterinvoerveld houdt een lijst bij van de laatste tien filters. Klik op de pijlknop rechts van het invoerveld om het gewenste filter te kiezen. U kunt het filter uitschakelen door op de knop Tekst wissen te klikken links van de pijlknop voor automatisch aanvullen.

### Configuratie

Deze plugin kan worden geconfigureerd op de pagina Bestandssysteembrowser van instellingen van &kate;.

Werkbalk

- Stel deze knoppen in op de werkbalk van de Bestandssysteembrowser door diegene, die u wil inschakelen, te verplaatsen naar de lijst Geselecteerde acties en sorteer ze met de pijlknoppen naast de lijst.

## De documentenlijst

### Inleiding

De documentenlijst toont een lijst met alle bestanden die momenteel in &kate; geopend zijn. Gewijzigde bestanden worden gemarkeerd met een diskette-pictogram links van de naam om de status aan te geven.

Bovenaan deze lijst met documenten is een werkbalk met de volgende knoppen:

- Nieuw document aanmaken
- Open een bestaand document
- Vorig document
- Volgend document
- Het huidige document opslaan
- Sla het huidige document op onder een nieuwe naam

Standaard wordt de documentenlijst in Boomstructuurmodus getoond, die de mappenstructuur rond alle nu geopende documenten toont. Ook is de Lijstmodus beschikbaar, die een eenvoudige lijst met alle open documenten toont. U kunt van modus wisselen door rechts te klikken op de lijst en een keuze te maken uit het menu Weergavemodus menu.

Als er twee of meer bestanden met dezelfde naam (in verschillende mappen) geopend zijn in Modus Lijst, wordt de naam van het tweede bestand aangeduid met (2), enzovoort. In de tekstballon wordt de volledige naam met het pad vermeld, zodat u het gewenste bestand kunt vinden.

Om een document in het momenteel actieve frame weer te geven, klikt u op de naam in de bestandenlijst.

Het contextmenu heeft enige gemeenschappelijke acties uit het menu Bestand.

Daarnaast zijn er bestandsbeheerderacties om het bestand te hernoemen of te verwijderen. Met Locatie kopiëren kunt u het volledige pad van het document naar het klembord kopiëren.

U kunt de lijst op verschillende manieren sorteren door in de lijst rechts te klikken en Sorteren op in het contextmenu te kiezen. U kunt kiezen uit de volgende opties:

Documentnaam

- Sorteert de documenten alfabetisch op naam

Documentenpad

- Sorteert de documenten alfabetisch op het pad ernaar.

Volgorde van openen

- Sorteert de documenten in de volgorde waarin ze geopend zijn.

De documentenlijst zal standaard de geschiedenis bijhouden door de bestanden die het laatst geopend zijn een achtergrondkleur te geven. Als het document bewerkt is, wordt er een extra kleur aan toegevoegd. Het document dat het laatst geopend is heeft de sterkste achtergrondkleur, zodat u gemakkelijk de documenten waar u aan werkt kun vinden. Deze functie kan uitgeschakeld worden doorDocumenten in het dialoogvenster "Instellingen".

De standaardlocatie van de documentenlijst in het venster van &kate; is links van het bewerker-gedeelte.

### Menustructuur

&Alt;&Up; Beeld Vorig document

- Opent het document getoond boven het huidige geopende document in de Documentenlijst.

&Alt;&Up; Beeld Volgend document

- Opent het document getoond onder het huidige geopende document in de Documentenlijst.

Beeld Actieve tonen

- Toont het huidige geopende document in de Documentenlijst.

### Configuratie

Achtergrondschaduw

- Deze sectie stelt u in staat om de visualisatie van de achtergrondschaduwvan uw recente activiteit in of uit te schakelen en te kiezen welke kleuren te gebruiken indien ingeschakeld.

Sorteren op

- Stelt in hoe u de lijst met documenten wilt hebben gesorteerd. Dit kan ook gezet worden met het &RMB; menu in de lijst met documenten.

Weergavemodus

- Dit biedt twee opties die invloed hebben op de weergave van het hulpmiddel voor documenten. De optie Boomstructuurweergave zal de documenten tonen in een boomstructuur onder de mappen waarin ze zich bevinden, terwijl de optie Lijstweergave een vlakke lijst met documenten laat zien.

Volledig pad tonen

- Wanneer Boomstructuurweergave en deze optie zijn ingeschakeld, zullen de mappen in het hulpmiddel voor documentweergave getoond worden met het volledige pad in het bestandssysteem naar de map naast de naam van de map. Het heeft geen effect in de Lijstweergave.

Werkbalk tonen

- Wanneer broomstructuurweergave en deze optie zijn ingeschakeld zal een werkbalk getoond worden met acties zoals Opslaan boven de lijst met documenten. Deze optie deactiveren, als de werkbalk verborgen moet zijn.

Sluitknop tonen

- Wanneer deze optie ingeschakeld is, zal &kate; een sluitknop voor geopende documenten bij erboven zweven tonen.

## &gdb;-plug-in

### Inleiding

De &gdb;-plug-in van &kate; levert een eenvoudige frontend voor elke debugger die het Debugger Adapter Protocol ondersteunt. Speciaal, die de GNU Project Debugger omvat, aka GDB, als hier aangegeven.

Eerdere ervaring met &gdb; is zeer aanbevolen. Voor meer informatie over het gebruik van &gdb; bezoekt u de website van &gdb;.

U kunt de &gdb;-plug-in inschakelen in de sectie met plug-ins in de instellingen van &kate;.

Als u compileert met &gcc;/`g++` dan zou u het argument op de opdrachtregel ``-ggdb`` willen gebruiken.

Nadat deze voorbereidingen zijn gedaan, opent u het bestand met de broncode in &kate;, selecteer het "debuggerprofiel", voer het pad naar het uitvoerbare programma in in het tabblad Instellingen van de hulpmiddelenweergave Debugweergave en selecteert u Debug Debugging starten uit het menu om te beginnen.

Het "debuggerprofiel" selecteert de te gebruiken DAP-server (bijv. GDB) en de manier waarop deze server te starten. Een typisch geval is om de server een proces te laten starten zoals boven gespecificeerd, maar het kan ook aankoppelen aan een actief proces (in welk geval een PID gespecificeerd moet worden in plaats van een uitvoerbaar programma). Er kunnen ook andere modi zijn die specifiek zijn voor de taal en de DAP-server. Zie ook later voor extra achtergrond en configuratiedetails hierover.

### Structuur van menu en werkbalk

Al deze opties zijn beschikbaar in de menu's van &kate; en er zijn er ook veel beschikbaar op de werkbalk Debug.

Beeld Hulpmiddelenweergaven Debugweergave tonen

- Toont een hulpmiddelenweergave met &gdb;-uitvoer, de gebruikte opdrachtregel van &gdb; en andere instellingen.

Beeld Hulpmiddelenweergave Localen en stack tonen

- Toont een lijst met alle nu geladen variabelen en hun waarden en een &gdb; backtrace.

Debug Doelen

- Een submenu die een lijst met doelen bevat (uitvoerbare programma's).

Debug Met debuggen beginnen

- Start &gdb; met een doel.

Debug Afbreken / Stoppen van debugging

- Stopt &gdb;.

Debug Debugging opnieuw starten

- Start &gdb; opnieuw.

Debug Breekpunt omschakelen

- Een breekpunt op de huidige cursorpositie instellen.

Debug Instappen

- Het huidige statement uitvoeren (functie-aanroep zal worden gedebugd).

Debug Overslaan

- Het huidige statement uitvoeren (functie-aanroep zal niet worden gedebugd).

Debug Uitstappen

- Uitvoering hernemen totdat het programma in uitvoering zich beëindigd.

Debug PC verplaatsen

- Programcounter (PC) verplaatsen (volgende uitvoeren).

Debug Uitvoeren tot de cursor

- Voert het programma uit totdat het de huidige cursorpositie bereikt.

Debug Doorgaan

- Negeert elk breekpunt en voert het programma uit totdat het zich beëindigd (al of niet met succes).

Debug Waarde afdrukken

- Drukt de waarde van de variabele af waar de cursor nu naar wijst.

Instellingen Getoonde werkbalken&gdb;-plug-in

- De debug-werkbalk tonen.

### Debugweergave

Het hulpmiddel Debugweergave heeft een aantal tabbladen:

&gdb;-uitvoer

- Bevat uitvoer van &gdb; en een &gdb;-commandoregel.

  Het tabblad Uitvoer Het tabblad Uitvoer.

  Het tabblad Uitvoer toont de uitvoer van een debug-sessie.

Instellingen

- Uitvoerbaar programma

- Pad naar het doel (uitvoerbaar programma) voor debugging.

Werkmap

- De huidige werkmap geleverd aan het doel.

Argumenten

- Argumenten aan het programma gegeven.

Focus behouden

- De focus op de &gdb;-commandoregel houden.

IO omleiden

- Opent een nieuw tabblad IO in de Debugweergave waar u uitvoer kunt zien en invoer kunt leveren aan het programma in uitvoering.

De instellingendialoog De instellingendialoog

De dialoog Instellingen toont de configuratie van een debug-sessie.

IO

- Bevat een gebied die uitvoer weergeeft van het in uitvoering zijnde programma en een commandoregel waar u invoer aan het programma kunt leveren.

  Het tabblad IO Het tabblad IO.

  Het tabblad IO met uitvoer van een eenvoudig testprogramma.

### Aanroepstapel en lokale waarden

Het hulpmiddel Aanroepstapel bevat een lijst van de geformatteerde backtrace komende uit &gdb;.

Het hulpmiddel voor het weergeven van de aanroepstapel van &gdb; Het hulpmiddel voor het weergeven van de aanroepstapel.

Het hulpmiddel voor het weergeven van de Aanroepstapel met de &gdb;-plug-in.

Het hulpmiddel voor de weergave van Lokale variabelen bevat een lijst met alle nu geladen variabelen uit het programma en de bijbehorende waarden.

Het hulpmiddel voor weergave van lokale variabelen van &gdb; Het hulpmiddel voor weergave van lokale variabelen.

Het hulpmiddel voor het weergeven van Lokale variabelen met de &gdb;-plug-in.

### Dankbetuigingen en licentie

Speciale dank gaat naar de deelnemer van Google Code-In 2011 Martin Gergov voor het schrijven van veel van deze sectie.

### Configuratie

De configuratiepagina van de plugin definieert de "debuggerprofielen" die geselecteerd kunnen worden. De standaard configuratie (JSON) is daar getoond en daar kan een door de gebruiker geleverde van gelijke vorm overheen gelegd worden. Een voorbeeld is als volgt:

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

Elk van de items in de `configuraties` wordt gecombineerd met de `run` gegevens en vormt een "profiel". Dit specificeert de DAP-server om samen met zijn argumenten te starten, waar de laatsten specifiek zijn voor het profiel (`commandArgs`). De andere delen specificeren het DAP-protocolverzoek (`starten` of `aankoppelen`), samen met DAP-specifieke extensies.

Natuurlijk zou de gespecificeerde server geïnstalleerd moeten zijn (en typisch ook in `PATH` voor juiste uitvoering).

Verschillende stadia van overschrijven/mengen worden toegepast; gebruikersconfiguratie (geladen uit bestand) overschrijft (interne) standaard configuratie en het "dap" item in de `.kateproject` projectconfiguratie overschrijft op zijn beurt.

#### Opzet uitvoeromgeving

Meer achtergrond en specifieke zaken zijn te vinden in de onderstaande sectie LSP Client uitvoeromgeving. Maar het is voldoende om hier te zeggen dat het nodig kan zijn om het debugproces (en de DAP-server) in een "speciale omgeving" uit te voeren, ofwel hoofdzakelijk gedefinieerd door omgevingsvariabelen of een container (die de vereiste afhankelijkheden en omstandigheden voor juiste uitvoering leveren).

Gelijk als in het voorbeeld in de gerefereerde sectie, kan de volgende configuratie geleverd zijn in een `.kateproject`.

    {
        // dit kan ook een array van objecten zijn
        "exec": {
            "hostname": "foobar"
            // het commando zou ook een array van tekenreeksen kunnen zijn
            "prefix": "podman exec -i foobarcontainer",
            "mapRemoteRoot": true,
            "pathMappings": [
                // elk van de volgende vormen zijn mogelijk
                // een meer auto-magisch alternatief bestaat ook, zie sectie waarnaar verwezen wordt
                [ "/dir/on/host", "/mounted/in/container" ]
                { "localRoot": "/local/dir", "remoteRoot": "/remote/dir" }
            ]
        },
        "dap": {
            "debugpy": {
                "run": {
                    // in deze sectie, is het op alle configuraties van toepassing
                    // dit zal overeen komen/meedoen met het bovenstaande object
                    "exec": { "hostname": "foobar" },
                    // als server er mee is verbonden,
                    //  specificeer expliciet de poort (die geschikt is gepubliceerd/doorgestuurd)
                    "port": 5678,
                    // de server kan dan ook meer dan localhost moeten accepteren
                    "host": "0.0.0.0"
                }
            }
        }
    }

De sectie waarnaar gerefereerd zou geconsulteerd moeten worden voor details, maar in essentie zal het `voorvoegsel` voorgevoegd worden alvorens de opdrachtregel van de DAP-server elders wordt gespecificeerd. Het effect is dat de server draait in de gespecificeerde container en daarna op zijn beurt ook het gestarte proces. De `pathMapping` zorgt voor transformatie van bestandspaden tussen weergave van de bewerker en de weergave van de DAP-server (container), bijv. wanneer gewerkt wordt met instelling van breakpoints of behandeling van gerapporteerde backtraces. Merk op dat zulke koppeling optioneel is en al dan niet nuttig kan zijn. Bij werken met C/C++ code die op de "host" is gecompileerd, refereert de symboleninformatie van bronbestanden op de host die helemaal niet bestaat in de andere omgeving. Echter, in andere gescripte (bijv. python) omstandigheden, worden actuele runtime bestanden gerefereerd (op de andere omgeving).

Het volgende moet duidelijk in gedachten gehouden worden.

- De DAP-server moet aanwezig zijn in de omgeving/container, die geconfigureerd moet zijn om de debuggerbewerking juist te ondersteunen (dus, indien nodig, geprivilegieerd, mogelijkheden).

- Communicatie tussen bewerker en DAP moet mogelijk zijn. In het geval van een container zou de laatste ofwel hostnetwerking moeten gebruiken of een geschikte gekoppelde/gepubliceerde poort samen met een bijbehorend configuratiefragment zoals in bovenstaand voorbeeld (omdat een automatisch geselecteerde poort als poort 0 niet door komt).

- Een gespecificeerd uitvoerbaar bestand/PID zou in het perspectief van de "container" , evenals elk argument (debuggee uitvoerbaar bestand).

Ook, als in het LSP-geval, enige omgevingsvariabelen zijn gezet; `KATE_EXEC_PLUGIN` is gezet op `dap`, `KATE_EXEC_SERVER` is gezet op het debugger-/taaltype (bijv. `python`) en `KATE_EXEC_PROFILE` is gezet op het configuratie-item (bijv. `launch`).

## Projectplug-in

### Inleiding

Her basis idee van de projectplug-in is om een gestructureerde lijst met bestanden te hebben die bij het project behoren met de volgende eigenschappen:

1. Bied een gestructureerde weergave van de bestanden

2. Maak het gemakkelijk en zeer snel om projecten te openen en naar om te schakelen

3. Zoeken en vervangen voor een project ondersteunen

4. Eenvoudige automatische aanvulling bieden

5. Het eenvoudig maken om snel bestanden te openen in het project

6. Ondersteuning voor het bouwen van het project

### Gestructureerde weergave van de bestanden

Nadat de project-plug-in is geladen in de instellingenpagina van &kate;, open dan een bestand in een project en er verschijnt een zijbalk met een lijst van alle projecten evenals de projectbestanden als volgt:

Projectweergave

Zoals u kunt zien is het nu actieve project Kate en zijn inhoud wordt getoond in de boomstructuur. Klikken op bestanden in de boomstructuur opent het bestand in de bewerker. Verder wordt er een contextmenu getoond waarmee u bestanden kunt openen met andere toepassingen, zoals een `.ui` bestand met Qt Designer.

U kunt de items filteren door delen van de bestandsnaam waarnaar u zoekt in de zoekbalk aan de onderkant van de lijst in te typen.

### Omschakelen van projecten

Het idee is dat u nooit een project handmatig hoeft te openen, dit wordt zelfs helemaal niet ondersteund. Dus, wat gebeurt er als u een bestand opent, dan scant de project-plug-in snel de map en zijn bovenliggende mappen naar een `.kateproject` bestand. Indien gevonden, zal het project automatisch worden geladen.

Verder zal, als u een ander document in &kate; opent, dat behoort bij een ander project, de project-plug-in automatisch het huidige project omschakelen. Dus is intuïtief altijd het juiste project actief. Natuurlijk kunt u ook het nu actieve project omschakelen met de keuzelijst.

### Zoeken en vervangen in projecten

&kate; heeft een plug-in voor zoeken vervangen die verschijnt in de onderste zijbalk. Als een project is geladen, open dan de zijbalk zoeken en vervangen en schakel om naar de modus om te zoeken en te vervangen in het huidige project:

Zoeken in projecten

### Eenvoudige automatische aanvulling

Met de kennis van alle bestanden behorende tot een project, biedt de project-plug-in eenvoudige mogelijkheden voor automatisch aanvullen gebaseerd op CTags. Als een project initieel is geopend, ontleed CTags alle projectbestanden in een achtergrond thread en slaat de CTags-informatie op in `/tmp`. Dit bestand wordt daarna gebruikt om de pop-up voor automatische aanvulling popup in &kate; te bevolken.

In tegenstelling hiermee, zonder deze automatische aanvulling, is &kate; alleen in staat om items voor automatische aanvulling gebaseerd op de woorden in het huidige bestand. De automatische aanvulling geleverd door de project-plug-in is veel krachtiger.

Aanvullen in projecten

Als CTags ontbreken zal een passieve pop-up u hierover waarschuwen. Het is ook goed op te merken dat het CTags bestand in `/tmp` gewist wordt wanneer &kate; eindigt, de plug-in vervuilt dus geen enkele map met ongewenste bestanden.

### Ondersteuning voor het bouwen van het project

Een andere functie is het hebben van ondersteuning voor de Bouw-plug-in, zodat het automatisch juist is geconfigureerd.

### Projecten aanmaken

#### Projecten automatisch laden

De project-plug-in heeft een functie automatisch laden. U kunt de lijst met bestanden in uit het versiecontrolesysteem. Op dit moment moet automatisch laden voor de respectievelijke versiecontrolesysteem worden ingeschakeld in de instellingen (standaard ingeschakeld):

Instellingen van project-plug-in

#### Projecten handmatig aanmaken

U hoeft alleen maar een bestand `.kateproject` in de hoofdmap van het project aan te maken. Bijvoorbeeld het `.kateproject` bestand van Kate ziet er uit zoals dit:

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

De inhoud van het bestand is in de &JSON;-syntaxis geschreven. De projectnaam is Kate en de bestanden erin zouden uit &git; gelezen moeten worden.

Ook wordt in plaats van `git` subversion ondersteund via `svn` en mercurial via `hg`. Als u geen bestanden wilt lezen uit een versiecontrolesysteem, dan kunt u kate aanroepen vanaf de opdrachtregel als:

    kate /pad/naar/map/

of kunt u het vertellen om bestanden recursief te laden uit mappen als volgt:

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

Submappen en filters definiëren hier wat onderdeel is van het project. U kunt ook controle op versie en bestanden gebaseerd op filters mengen. Verborgen bestanden zullen niet opgehaald worden als de optie `"hidden"` 0 is. `"exclude_patterns"` is een lijst met regex patronen die gebruikt kunnen worden om mappen en bestanden uit te sluiten van de projectboom. In dit voorbeeld zullen alle bestanden en mappen in een map `build` in de hoofdmap uitgesloten worden.

Als u ondersteuning voor bouwen wilt toevoegen, dan kunt u een `.kateproject` schrijven zoals dit:

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

De bovenstaand gespecificeerde doelen zullen daarna verschijnen in de Bouwplug-in onder "Projectplug-in doelen". Als het `"doelen"` array is gespecificeerd dan worden `"build"`, `"clean"` en `"install"` genegeerd. Elk element in het array specificeert een doel. `"name"` is de naam van het doel, `"build_cmd"` zal gebruikt worden om het doel te bouwen, `"run_cmd"` zal gebruikt worden om het doel uit te voeren. Het belangrijkste van alles is `"directory"`, dit is waar de commando's uitgevoerd zullen worden.

In het geval dat u een bestand `.kateproject` hebt gevolgd door een versiecontrolesysteem, maar u wilt de configuratie voor een specifieke werkruimte aanpassen, dan kunt u die wijzigingen opslaan in een apart bestand genaamd `.kateproject.local`. De inhoud van dit bestand gaat boven die in `.kateproject`.

### Huidige project

Met &Alt;1 Projecten Ga naar kunt u de weergave van het Huidige Project onderaan het bewerkingsvenster openen met vier tabbladen:

Huidige project

Terminalpaneel

- Een Terminalemulator starten in de hoofdmap van het project.

Code-index

- Tekens invoeren in de zoekbalk zal het zoeken starten en overeenkomende namen van van functies, klassen, symbolen &etc; tonen samen met soort, bestandsnaam en regelnummer.

  Selecteer een item in de lijst om naar de bijbehorende regel in het broncodebestand te springen.

Code analyse

- Klik op Analyse starten om een statische analyse van broncode voor C en C++ met `cppcheck` uit te voeren en om een rapport te maken met bestandsnaam, regelnummer, ernst (stijl, waarschuwing &etc;) en de gevonden problemen.

  Selecteer een item in de lijst om naar de bijbehorende regel in het broncodebestand te springen.

Notities

- Ingevoerde tekst in dit tabblad zal opgeslagen worden in het bestand `.kateproject.notes`.

### Het menu Projecten

Het menu Projecten stelt u in staat om te schakelen tussen nu open projecten. Het wordt getoond door de plug-in Project.

&Ctrl;&Alt;&Left; Projecten Terug

- Schakel naar het vorige project.

&Ctrl;&Alt;&Right; Projecten Verder

- Schakel naar het volgende project.

&Alt;1 Projecten Ga naar

- Open de weergave Huidig project onderaan het bewerkingsvenster.

## LSP-clientplug-in

De LSP-clientplug-in biedt vele talenfuncties zoals codeaanvulling, codenavigatie of het zoeken naar verwijzingen gebaseerd op het Talenserverprotocol.

Als u eenmaal de LSP-client in de plug-inpagina hebt ingeschakeld, zal een nieuwe pagina, genaamd LSP-client, verschijnen in de instellingendialoog van &kate;.

### Menustructuur

Indien van toepassing, een overeenkomstig LSP-commando wordt ook genoemd in de onderstaande uitleg, waarvan de documentatie dan misschien extra achtergrond en interpretatie biedt, hoewel het kan variëren afhankelijk van de actuele taal. De uitdrukking 'huidig symbool' verwijst naar het symbool overeenkomend met de huidige cursorpositie, zoals bepaalt door de implementatie van taal en server.

LSP-client Ga naar definitie

- [textDocument/definition] Ga naar huidige symbooldefinitie.

LSP-client Ga naar declaratie

- [textDocument/declaration] Ga naar huidige symbooldefinitie.

LSP-client Ga naar type-definitie

- [textDocument/typeDefinition] Ga naar huidige symbooltypedefinitie.

LSP-client Referenties zoeken

- [textDocument/references] Zoek naar referenties naar huidige symbool.

LSP-client Implementaties zoeken

- [textDocument/implementation] implementaties van huidige symbool zoeken.

LSP-client Accentueren

- [textDocument/documentHighlight] Huidige symboolreferenties accentueren in huidige document.

LSP-client Er boven zweven

- [textDocument/hover] Boven informatie zweven voor huidige symbool.

LSP-client Formatteren

- [textDocument/formatting] [textDocument/rangeFormatting] Formatteer het huidige document of huidige selectie.

LSP-client Hernoemen

- [textDocument/rename] Huidige symbool hernoemen.

LSP-client Snelle reparatie

- [textDocument/codeAction, workspace/executeCommand] Berekent en past een snelle reparatie toe voor een diagnose op de huidige positie (of regel).

LSP-client Geselecteerde voltooide documentatie tonen

- Documentatie voor een geselecteerd item tonen in de lijst met voltooingen.

LSP-client hulp bij handtekening met automatische aanvulling inschakelen

- Ook hulp bij handtekening in de lijst voor aanvullen tonen.

LSP-client Declaratie in referentiees invoegen

- Verzoek om een declaratie van een symbool in te voegen bij aanvragen van een referentie.

LSP-client Haakjes toevoegen bij aanvullen van functie

- Automatisch een paar haakjes toevoegen na aanvullen van een functie.

LSP-client Informatie voor er boven zweven tonen

- Informatie tonen bij er boven zweven wanneer (muiscursor) er boven wordt gezweefd. Onafhankelijk van deze instelling kan het verzoek altijd handmatig geïnitieerd worden.

LSP-client Formatteren tijdens typen

- [document/onTypeFormatting] Formatteert delen van het document tijdens typen van bepaalde actietekens. Dit kan van toepassing zijn bij inspringen bij een nieuwe regel of zoals anders bepaald door de LSP-server. Merk op dat inspringscripts van bewerkers hetzelfde proberen te doen (afhankelijk van de modus) en dus kan het niet aan te raden zijn om beiden tegelijk ingeschakeld te hebben.

LSP-client Incrementele documentsynchronisatie

- Gedeelten van bewerking van document verzenden om de server bij te werken in plaats van de gehele documenttekst (indien ondersteund).

LSP-client Ga-naar-locatie accentueren

- Een voorbijgaande visuele pijl leveren na uitvoeren van een ga-naar naar een locatie (van definitie, declaratie, etc.).

LSP-client Diagnostische meldingen tonen

- [textDocument/publishDiagnostics] Diagnostische meldingen verwerken en tonen verzonden door de server.

LSP-client Diagnostische accentueringen tonen

- Accentueringen van tekst toevoegen voor reeksen aangegeven in diagnostiek.

LSP-client Diagnostische markeringen tonen

- Documentmarkeringen toevoegen voor regels aangegeven in diagnostiek.

LSP-client Naar tabblad diagnostiek omschakelen

- Naar het tabblad diagnostiek omschakelen in de plug-in hulpmiddelenweergave.

LSP-client Alle niet-diagnostische tabbladen sluiten

- Alle niet-diagnostische tabbladen (⪚ referenties) in plug-in weergavehulpmiddel.

LSP-client LSP-server opnieuw starten

- LSP-server van huidige document herstarten.

LSP-client Alle LSP-servers opnieuw starten

- Alle LSP-servers stoppen die daarna, indien nodig, (opnieuw) zullen worden gestart.

### Ga naar ondersteuning van symbolen

LSP Client kan u helpen naar elk symbool te springen in uw project of huidige bestand. Om naar een symbool in het bestand te springen, gebruik de hulpmiddelweergave "LSP Client Symbooloutline" op de rechter rand van kate. Deze hulpmiddelweergave geeft een lijst met alle symbolen die zijn gevonden door de server in het huidige document.

#### LSP Client Symbooloutline configureren

Standaard worden de symbolen gesorteerd op hun voorkomen in het document maar u kunt het sorteren wijzigen naar alfabetisch. Om dat te doen, klik rechts in de hulpmiddelweergave en activeer "Alfabetisch sorteren".

De hulpmiddelweergave toont de symbolen standaard in modus boomstructuur, u kunt dat wijzigen naar een lijst met het contextmenu.

#### Globale Ga naar ondersteuning van symbolen

Om naar een symbool in uw project te springen, kunt u de dialoog ga naar symbool openen met &Ctrl;&Alt;p. De dialoog is leeg wanneer het wordt geopend maar zodra u iets typt zal de dialoog starten en u overeenkomende symbolen tonen. De kwaliteit van overeenkomsten evenals filtermogelijkheden hangen af van de server die u gebruikt. Bijvoorbeeld, clangd ondersteunt vage filtering maar een andere server misschien niet.

### Andere mogelijkheden

Commando voor omschakelen van bronkop van clangd wordt ondersteund. Om bronkop om te schakelen in een C of C++ project gebruik ofwel de optie "Bronkop omschakelen" uit het contextmenu of de sneltoets F12.

U kunt snel naar een symbool springen door uw muis op het symbool te plaatsen en daarna op &Ctrl; + linker muisknop te drukken.

### Configuratie

De configuratiepagina van de plug-in biedt meestal blijvende configuratie van sommige van de bovenstaande menu-items. Er is echter één extra item om het serverconfiguratiebestand te specificeren. Dit is een &JSON;-bestand dat gebruikt kan worden om de LSP-server te specificeren om te starten (en dan ermee te communiceren over stdin/stdout). Voor het gemak is er enige standaard configuratie meegenomen, die geïnspecteerd kan worden in de configuratiepagina van de plugin. Om te helpen in de onderstaande uitleg wordt een voorbeeld van die configuratie hier gegeven:

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

Merk op dat elk "commando" een array of een tekenreeks kan zijn (in welk geval het gesplitst wordt in een array). Ook een item op het hoogste niveau "global" (volgens op "server") wordt ook meegenomen (zie verder onderstaand). Het gespecificeerde binaire bestand wordt gezocht op de gebruikelijke manier, bijv. met `PATH`. Als het geïnstalleerd is in een aangepaste locatie, zal de laatste mogelijk uitgebreid moeten worden. Of anders, een (symbolische) koppeling of omslagscript kan gebruikt worden in een locatie die binnen het gebruikelijke `PATH` valt. Zoals bovenstaand geïllustreerd, kan ook een "pad" gespecificeerd worden waarin gezocht zal worden na de standaard locaties.

Alle items in "commando", "root" en "pad" zijn onderworpen aan expansie van variabelen.

De "highlightingModeRegex" wordt gebruikt om de modus accentuering overeen te laten komen zoals gebruikt door &kate; naar de taal-id van de server. Als geen reguliere expressie is gegeven, wordt de taal-id zelf gebruikt. Als een "documentLanguageId" item is gezet op false, dan wordt geen taal-id aan de server geleverd bij openen van het document. Dit kan betere resultaten geven voor sommige servers die meer precies zijn in bepalen van het type document dan dat te doen op basis van een kate-modus.

Uit het bovenstaande is de boodschap waarschijnlijk helder. Bovendien kan elk item-object van de server ook een "initializationOptions" item hebben, die gezamenlijk wordt doorgegeven aan de server als onderdeel van de 'initialisatie' methode. Indien aanwezig wordt een item "instellingen" doorgegeven aan de server doormiddel van de melding 'workspace/didChangeConfiguration'. Of "completionTriggerCharacters" of "signatureTriggerCharacters" mag gespecificeerd worden als een JSON-object met leden avn de tekenreeks "exclude" en/of "include". Deze zullen gebruikt worden om respectievelijk enige teken uit te sluiten of toe te voegen aan de respectievelijk gezette trigger zoals geleverd door de server.

Verschillende stadia van overschrijven/mengen worden toegepast;

- gebruikersconfiguratie (geladen uit bestand) overschrijft de (interne) standaard configuratie

- "lspclient" item in `.kateproject` projectconfiguratie overschrijft het bovenstaande

- het resulterende "globale" item wordt gebruikt om aan te vullen (niet overschrijven) elk server-item

Eén exemplaar van de server wordt gebruikt per combinatie (root, servertype). Als "root" is gespecificeerd als een absoluut pad, dan wordt het gebruikt zoals-het-is, anders is het relatief tot de projectBase (zoals bepaald door de Projectplug-in), indien van toepassing of anders relatief tot de map van de documentatie. Indien niet gespecificeerd en "rootIndicationFileNames" is een array als bestandsnamen, dan wordt een oudermap van het huidige document die zo'n bestand bevat geselecteerd. Alternatief, als "root" niet gespecificeerd is en "rootIndicationFilePatterns" is een array van bestandspatronen, dan wordt een oudermap van het huidige document overeenkomend met het bestandsprofiel geselecteerd. Als een laatste terugval, wordt de thuismap geselecteerd als "root". Voor elk document bepaalt dan de resulterende "root" wel of niet een apart exemplaar nodig heeft. Zo ja, de "root" wordt doorgegeven als rootUri/rootPath.

In het algemeen wordt aanbevolen om de root niet te specificeren, omdat het niet zo belangrijk is voor een server (kan voor u anders zijn). Minder exemplaren van de server zijn natuurlijk efficiënter en ze hebben ook een 'bredere' blik dan de blik van vele gescheiden exemplaren.

Zoals bovenstaand genoemd, zijn verschillende items onderwerp van expansie van variabelen. Een geschikte toepassing ervan gecombineerd met een "omslagscript" biedt het aanpassen aan een groot aantal omstandigheden. Neem, bijvoorbeeld, een ontwikkeling van een python-scenario dat bestaat uit meerdere projecten (bijv. git repos), elk met zijn eigen virtuele omgeving. Met de standaard configuratie is de python taalserver niet bekend met de virtuele omgeving. Dat kan echter verholpen worden met de volgende benadering. Eerst, het volgende fragment kan ingevoerd worden in "User Server Settings" van de LSPClient-plug-in:

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

Het bovenstaande root-item is relatief ten opzichte van de projectmap en verzekert dat een aparte taalserver gestart wordt voor elk project, wat nodig is in dit geval omdat elk een aparte virtuele omgeving heeft.

`pylsp_in_env` is een klein "omslagscript" dat geplaatst zou moeten worden in `PATH` met de volgende (aan-te-passen) inhoud:

    #!/bin/bash
    cd $1
    # draai de server (python-lsp-server) in de virtuele omgeving
    # (d.w.z. met instellen van virtuele omgevingsvariabelen)
    # dus gebruik source met de virtuele omgekeerd
    source XYZ
    # lengte van de server of argumenten kunnen variëren
    exec myserver

Dit is slechts een voorbeeld van een algemener patroon die een beetje comfortabeler behandeld kan worden zoals uitgelegd in de onderstaande sectie Uitvoeromgeving.

#### LSP-serverconfiguratie

Elke specifieke LSP-server heeft zijn eigen manier van aanpassen en kan taal/hulpmiddel specifieke manieren voor configuratie gebruiken, ⪚ `tox.ini` (o.a. voor python), `.clang-format` voor C++ stijl formaat. Zo'n configuratie kan dan ook gebruikt worden door andere (niet-LSP) hulpmiddelen (zoals dan tox of clang-format). Sommige LSP-servers laden bovendien ook configuratie uit eigen bestanden (⪚ `.ccls`). Eigen server-configuratie kan verder ook doorgegeven worden via LSP (protocol), zie de eerder genoemde "initializationOptions" en "instellingen" items in de serverconfiguratie.

Omdat er verschillende niveaus van overschrijven/samenvoegen worden toegepast, past het volgende voorbeeld van gebruiker gespecificeerde client-configuratie een configuratie van een python-language-server.

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

Helaas is de LSP-serverconfiguratie/aanpassing vaak niet zo goed gedocumenteerd, op manieren die alleen bekijken van de broncode de benaderingen toont en de beschikbare set van configuratieopties. Het bovenstaande voorbeeld van een server ondersteunt zeer veel meer opties in "instellingen". Zie documentation van een andere LSP-client voor verschillende andere voorbeelden van een taalserver and overeenkomende instellingen, die gemakkelijk en eenvoudig getransformeerd kunnen worden naar de &JSON;-configuratie die hier is gebruikt en bovenstaand besproken.

#### LSP-serverformaat bij opslaan

U kunt "formaat bij opslaan" uit LSP-instellingen in configuratiedialooginschakelen.

#### Onderdrukking van diagnostiek van LSP-server

Het kan zijn dat diagnostiek gerapporteerd wordt die niet erg nuttig is. Dit kan tamelijk vervelend zijn, speciaal als er veel zijn (vaak van dezelfde soort). In sommige gevallen kan dit aangepast zijn op een specifieke manier per taal(server). Het clangd configuratiemechanisme biedt bijvoorbeeld aanpassen van sommige diagnostische aspecten. In algemeen, echter, kan het niet altijd duidelijk zijn hoe dat zo te doen of het kan zelfs helemaal niet mogelijk zijn op de gewenste manier vanwege beperkingen op de server of een bug.

Op zich ondersteunt de plug-in onderdrukking van diagnostiek gelijkend op bijv. onderdrukkingen in valgrind. De meest fijn afgestemde configuratie kan geleverd worden in een "onderdrukkingen" sleutel in de (samengevoegde) &JSON; configuratie.

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

Elke (geldige) regel heeft een willekeurige naam en wordt gedefinieerd door een array met lengte 2 of 3 die een reguliere expressie levert om overeen te komen tegen de (volledige) bestandsnaam, een reguliere expressie om overeen te komen met de diagnostische tekst en een optionele reguliere expressie overeenkomend met de (broncodereeks) tekst waar het diagnostische bericht op van toepassing is.

Naast de bovenstaande fijn afgestemde configuratie, biedt het contextmenu in het tabblad diagnostische meldingen ook ondersteuning voor toevoegen/verwijderen van onderdrukkingen die exact overeenkomen met een bepaalde diagnostische tekst, ofwel globaal (elk bestand) of lokaal (het specifieke bestand in kwestie). Deze onderdrukkingen worden opgeslagen in en geladen uit sessieconfiguraties.

#### Probleemoplossing in LSP-server

Het is een ding om te beschrijven hoe een (aangepaste) LSP-server voor een specifieke taal te configureren, het is iets anders om te eindigen met het gladjes draaien van de server. Gelukkig is dat laatste meestal het geval. Soms zijn er echter problemen vanwege ofwel een "malle" misconfiguratie of een meer fundamenteel probleem met de server zelf. Dat laatste kan zich typisch voordoen als een paar pogingen met het starten van de server, zoals gerapporteerd in tabblad &kate; uitvoer. Dat laatste is echter slechts bedoeld om berichten van een hoger niveau of voortgang te rapporteren in plaats van gedetailleerde diagnostiek door te geven en nog minder over wat in feite een ander proces is (de LSP-server).

De gebruikelijke manier om dit te diagnosticeren is om (een) vlag(gen) aan het opstartcommando (van de taalserver) teo te voegen die (extra) logging inschakelt (naar een bestand of standaardfoutuitvoer), als het dat al niet standaard doet. Als &kate; dan wordt gestart op de opdrachtregel, dan zou men in staat kunnen zijn om meer (in)zicht te krijgen in wat er fout gaat.

Het kan ook informatief zijn om de protocoluitwisseling tussen de LSP-client van &kate; en de LSP-server. Nog eens, de laatste heeft daar gewoonlijk manieren voor. De LSP-client biedt ook extra debuguitvoer (naar stderr) wanneer &kate; is aangeroepen met het volgende `LSPCLIENT_DEBUG=1`, gedefinieerd met commando `export`.

#### Opzet uitvoeromgeving

Het bovenstaande voorbeeld van python virtualenv is slechts een voorbeeld van een "uitvoeromgeving" die werkt in en afgesloten en afgescheiden manier van de gebruiker omgeving op de host. Dit zou bereikt kunnen worden door verschillende instellingen van variabelen (bijv. virtualenv) of een (s)chroot opzet (omschakelen naar een andere map als nieuwe root), een container (bijv. podman, docker) of een ssh-sessie naar een andere host. In elk geval, de "andere omgeving" is gedefinieerd door een "uitvoervoorvoegsel". Dat betekent dat een programma aangeroepen/uitgevoerd kan worden in de andere omgeving door middel van een "voorvoegsel" (een programma en argumenten) achtergevoegd met de bedoelde aanroep. Bijvoorbeeld, `podman exec -i containername` of `ssh user@host`.

Speciaal, zoals in het eerdere voorbeeld van virtualenv, kan men kiezen/nodig hebben een LSP-server te draaien is zo'n aparte omgeving (bijv. een container met alle afhankelijkheden nodig voor een project). De "handmatige" benadering bovenstaand uitgelegd heeft als nadeel dat het de standaard LSP-opdrachtregel vervangt, die dan opnieuw gespecificeerd en gedupliceerd moet worden in het omslagscript. Ook, in enige van de andere voorbeelden bovenstaand genoemd kan de "padnaamruimte" van de host (zoals gezien door de bewerker) verschillen van die van de omgeving. Om deze zaken op een meer systematische manier aan te pakken (dan een "aangepaste" benadering), kan enige extra configuratie gespecificeerd worden.

Bijvoorbeeld, het volgende kan gespecificeerd worden in een `.kateproject` configuratie. Natuurlijk zouden de "valse" commentaren niet ingevoegd moeten worden.

    {
        // dit kan ook een array van objecten zijn
        "exec": {
            "hostname": "foobar"
            // het commando zou ook een array van tekenreeksen kunnen zijn
            "prefix": "podman exec -i foobarcontainer",
            "mapRemoteRoot": true,
            "pathMappings": [
                // een van de volgende vormen is mogelijk
                // een meer auto-magisch alternatief bestaat ook, zie later/onderstaand
                [ "/map/op/host", "/aangekoppeld/in/container" ]
                { "localRoot": "/local/dir", "remoteRoot": "/remote/dir" }
            ]
        },
        "lspclient": {
            "servers": {
                "python": {
                    // dit zal overeenkomen/meedoen met het bovenstaande object
                    "exec": { "hostname": "foobar" },
                    // beperkt deze server tot deze project root,
                    // zodat het niet wordt gebruikt voor andere projecten die geopend kunnen worden
                    // (andere servers kunnen al specifieke roots gebruiken, maar python in het algemeen niet)
                    "root": "."
                },
                "c": {
                    // zoals boven
                    "exec": { "hostname": "foobar" },
                    "root": "."
                }
            }
        }
    }

Dus, wat gebeurt er als een resultaat van het bovenstaande? Zoals genoemd, het gedeelte `lspclient` van het bovenstaande wordt gemengd in de globale configuratie, dus een sectie `exec` wordt gevonden (voor gespecificeerde talen). Er wordt gezocht naar een ander object (dat specificeert overeenkomst met `hostname`) in ofwel de sectie `exec` of `lspclient` en een overeenkomende is als een basis voor een menging. Als een resultaat, een LSP-server (voor C en python) zullen zijn opdrachtregel achtergevoegd hebben aan het gespecificeerde (variabelen gesubstitueerd) voorvoegsel en zal daarom gestart worden in de gegeven container. Natuurlijk moet de container aangemaakt zijn, in een juist gestarte status en voorzien van de juiste LSP-servers. Men zou verleid kunnen zijn om de `globale` sectie te gebruiken (binnen `lspclient`.) Dat zou ook kunnen werken, maar dan zouden alle LSP-servers gestart moeten zijn met dat voorvoegsel, inclusief die voor bijv. Markdown, Bash-script of JSON. Het is waarschijnlijker dat de gebruikelijke host deze nog steeds zal bieden (indien in gebruik). Dus, zoals altijd, het hangt af van uw specifieke opzet.

De LSP-server kan nu echter verschillende paden (op afstand) observeren dan de lokalen die gezien wordt en gebruikt door de bewerker. De gespecificeerde `pathMappings` worden gebruikt om tussen hen heen en terug te vertalen in de communicatie met de LSP-server. Dat is, natuurlijk, zoveel als mogelijk. Het is helder dat niet alle lokale paden een representatie hebben op afstand, maar de ontbrekenden worden ook niet gezien (door de server) en veroorzaken geen problemen. Omgekeerd, echter, de server (op afstand) kan nu verwijzingen zien en leveren in de "root op afstand" die niet evident/gemakkelijk gerepresenteerd worden in het lokale systeem. De ingeschakelde `mapRemoteRoot` koppelt impliciet de root op afstand op een "lokale URL" `exec://foobar/`, die dan wordt behandeld door een gewoon-en-eenvoudig KIO-protocol. De laatste gebruikt essentieel (bijv.) `podman exec -i foobarcontainer cat somefile"` voor kopiëren van afstand naar lokaal (en andere zulke variaties met gebruik van hulpmiddelen uit de suite `coreutils`). Genoeg te zeggen het is niet bedoeld voor algemeen gebruik en claimt geen enkele prestatie, maar het is voldoende o een verwezen bestand snel en gemakkelijk in de bewerker te laden.

Het is nu gemakkelijk in te zien dat en vereenvoudigde versie van de bovenstaande configuratie (zonder `hostname` of `pathMappings`) gebruikt zou kunnen worden om de virtualenv te behandelen zonder de opdrachtregel van de server te dupliceren (in het omslagscript).

Het volgende kan niet zo gemakkelijk begrepen worden, dus wordt het hier expliciet genoemd.

- Zowel een `hostname` en de actuele `prefix` definiëren de uitvoeringsomgeving (de eerste op naam, de laatste op inhoud). Binnen een exemplaar van een bewerkerproces, zou dezelfde `hostname` niet geassocieerd moeten worden met verschillende `prefix`, omdat dat leidt tot ongedefinieerd gedrag (zonder vereiste diagnostiek).

- Zowel `prefix` en `pathMappings` zijn onderworpen aan (bewerker) expansie van variabelen (maar denk aan de het eerdere item).

- Op het moment van uitvoeren zijn sommige omgevingsvariabelen ook gezet, die gebruikt kunnen worden om (subtiel) het gedrag van de "prefix starter" aan te passen (hou opnieuw het eerste item in gedachten). Speciaal, `KATE_EXEC_PLUGIN` is gezet op `lspclient` en `KATE_EXEC_SERVER` is gezet op de id van de server (bijv. `python`).

- Speciaal, ook `KATE_EXEC_INSPECT` is gezet op `1`. Dit geeft aan aan de "prefix-starter" dat de ontvanger (Kate-plug-in) enige out-of-band/protocol gegevens accepteert. Dit biedt de starter enige middelen te gebruiken om padkoppelingen te bepalen (bijv. `podman inspect`) en om dit te communiceren in geschikt formaat. Dit zal dan verwijderd worden uit de anders aan de LSP-protocol conforme stream en gebruikt om enige gedefinieerde padkoppeling uit te breiden. Dit kan dienen als een alternatief om bijv. verbonden aankoppelingen expliciet (opnieuw, de definitie van de container te dupliceren) te specificeren. Concreet, het bovenstaande tekstfragment zou dan, in plaats daarvan, gebruikt worden;

      {
          // ...
          "exec": {
              "hostname": "foobar"
              // onfortuinlijke herhaling van naam, maar het hulpscript is gewoon-en-eenvoudig
              "prefix": "exec_inspect.sh foobarcontainer podman exec -i foobarcontainer",
              "mapRemoteRoot": true,
              "pathMappings": []
          }
          // ...
      }

Tenslotte, wat als de benadering "terugval KIO" niet als adequaat beschouwd zou worden? Het is in de praktijk vaak mogelijke om de root op afstand "aan te koppelen" in het lokale bestandssysteem en dan de laatste in een `pathMappings` te specificeren. Voor beginners, het welbekende `sshfs` (fuse) bestandssysteem kan een (echt) systeem op afstand in het lokale systeem aankoppelen. Voor een container (podman/docker) ondersteunen de meeste opzetten met (bestandssysteemstuurprogramma) de volgende truc;

    $ rootdir=/proc/`podman inspect --format '{{.State.Pid}}' containername`/root
    # sommige symbolische koppelingen kunnen problemen veroorzaken, zie ook alternatief onderstaand
    $ sudo mount --bind $rootdir /somewhere/containername

Als dat mislukt, dan kan men terugvallen op `sshfs`, of in feite een subset daarvan om de root op afstand/container aan te koppelen;

    # zie de respectievelijke man-pages; sftp-server is voldoende voor het actuele (onversleutelde) bestandstoegangsprotocol
    $ socat 'exec:podman exec -i containername /usr/lib/openssh/sftp-server'
       'exec:sshfs -o transform_symlinks -o passive \:/ /somewhere/containername'
    # ...
    $ fusermount -u /somewhere/containername

Merk op dat zo'n aankoppeling van root op afstand in het hostbestandssysteem is waarschijnlijk handmatig te specificeren en expliciet in een sectie `pathMappings` (die een erg intelligente prefix-starter blokkeert die alles zoiets automagisch arrangeert).

## Zoeken & vervangen

### Inleiding

De plug-in Zoeken & vervangen van &kate; stelt u in staat naar tekst of reguliere expressies te zoeken in veel verschillende bestanden tegelijk. U kunt in alle open bestanden zoeken, alle bestanden in één map met als optie zijn submappen of in het actieve bestand. U kunt zelfs filteren op bestandsnaam, bijvoorbeeld alleen in bestanden zoeken die eindigen op een specifieke bestandsextensie.

### Interface

#### Zoekopdracht

De volgende opties worden altijd getoond bovenaan de hulpmiddelenweergave Zoeken in bestanden:

- U kunt zoveel zoekopdrachten tegelijk open hebben als u wilt. Klik gewoon op de knop Nieuw tabblad in de linkerbovenhoek van de hulpmiddelweergave Zoeken en een nieuw tabblad voor resultaten zal worden geopend waarmee u een andere zoekopdracht kunt geven.

- De knop in de rechterbovenhoek van het venster van hulpmiddel Zoeken in bestanden zal de onderste helft van dat venster omschakelen tussen het weergeven van extra opties voor de modus Zoeken in map en de resultaten van uw zoekopdracht.

Zoeken

- Dit is waar u intypt wat u wilt vinden. U kunt standaard tekst invoeren of een reguliere expressie, indien ingeschakeld.

Vervangen (tekstvak)

- Vervangende tekst die zal worden toegevoegd aan bestanden in plaats van de tekst in het tekstvak Zoeken.

Zoeken

- Wanneer u klaar bent met alles in te stellen drukt u gewoon op de knop Zoeken om uw zoekopdracht uit te voeren; om de zoekopdracht in een nieuw tabblad uit te voeren, houd &Ctrl; ingedrukt alvorens de knop Zoeken in te drukken. U kunt ook op &Enter; drukken in het tekstvak voor Zoeken om hetzelfde te doen.

Vervangen

- Wanneer u klaar bent met alles in te stellen drukt u gewoon op de knop Vervangen om de tekst ingevoerd in het tekstvak Zoeken te vervangen door dat wat in het tekstvak Vervangen staat. U kunt ook op &Enter; drukken in het tekstvak om hetzelfde te doen.

Volgende

- Ga naar volgende overeenkomst met uw zoekopdracht, indien nodig met omschakelen naar andere bestanden.

Aangevinkt vervangen

- Hetzelfde als Vervangen, zal echter alleen vervanging uitvoeren in bestanden die in het onderstaande paneel zijn geactiveerd.

#### Opties van Zoeken in map

Deze opties worden getoond onder de hier voor genoemde zoekopties. Als in plaats hiervan zoekresultaten worden getoond, druk dan op de knop om ze weer te geven.

Zoeken in

- Deze heeft drie opties. Selecteer Open bestanden om in alle nu in &kate; geopende bestanden te zoeken. Selecteer Map om in een map en optioneel zijn submappen te zoeken. Selecteer Huidig bestand om in alleen in het actieve bestand te zoeken.

  Als de plug-in Projecten is geladen kunt u ook in het Huidige project zoeken of in Alle open projecten.

Hoofdlettergevoelig

- Beperkt zoekresultaten tot alleen die exact dezelfde combinatie van hoofd- en kleine letters hebben als in uw zoekopdracht.

Reguliere expressies

- Staat u toe om reguliere expressies te gebruiken in plaats van eenvoudige tekst als uw zoekopdracht.

Resultaten uitvouwen

- Toont alle gevonden resultaten in elk bestand, in plaats van alleen een lijst van bestanden die voldoen aan de zoekopdracht.

Map

- U kunt het pad van de map waarin u wilt zoeken invoeren. U wilt bijvoorbeeld `~/development/kde/kate/` invoeren als u in de broncode van &kate; wilt zoeken. Deze optie is alleen beschikbaar wanneer u de modus In map gebruikt.

Bestandsdialoog openen

- Gebruik deze knop om de map op te zoeken met de browser van uw bureaubladmap. Deze knop werkt alleen in de modus Map.

- Gebruik deze knop om de Map naar de naast hogere van de geselecteerde map te wijzigen.Deze knop werkt alleen in de modus Map.

- Gebruik deze knop om het Map-item op de map in te stellen waarin het nu geopende document zich bevindt. Deze knop werkt alleen in de modus Map.

Filter

- Dit stelt u in staat om alleen bestandsnamen te zoeken die aan een bepaald patroon voldoen. Om bijvoorbeeld alleen bestanden geschreven in C++ te zoeken, wijzigt u het in `*.cpp`. Om naar bestanden te zoeken die met `kate` beginnen, wijzigt u het naar `kate*`. U kunt meerdere filters invoeren gescheiden door een komma (`,`). Deze optie is niet beschikbaar in de modus Open bestanden.

Uitsluiten

- Het omgekeerde van Filter, dit voorkomt dat &kate; zoekt in bestanden die overeenkomen met de gespecificeerde patronen. Zoals met Filter kunt u meerdere patronen, gescheiden met een komma (`,`) invoeren. Deze optie is niet beschikbaar bij gebruikt van de modus Open bestanden.

Recursief

- Bij activering van deze optie zal &kate; ook in alle submappen van de geselecteerde map zoeken. Deze optie is alleen beschikbaar bij gebruik van de modus Map.

Verborgen bestanden meenemen

- Bij activering van deze optie zal &kate; ook in bestanden of mappen zoeken die typisch verborgen zijn door uw &OS;. Deze optie is alleen beschikbaar bij gebruik van de modus Map.

Symbolische koppelingen volgen

- De plug-in Zoeken in bestanden volgt typisch geen symbolische koppelingen. Wanneer deze optie is ingeschakeld zal de plug-in deze volgen en zoeken in de bestanden of mappen waarnaar ze verwijzen. Deze optie is alleen beschikbaar bij gebruik van de modus Map.

  Het is mogelijk bij symbolische koppelingen om naar een map te verwijzen die hoger in hiërarchie van de mappen ligt dan de map waarin nu wordt gezocht of andere mappen die symbolische koppelingen bevatten naar een map hoger in de hiërarchie. Als zich zo'n koppeling in de map waarin gezocht bevindt en deze optie is inschakeld, dan zal &kate; bij herhaling de koppeling volgen en in de map zoeken waarna de zoekopdracht nooit zal eindigen.

Inclusief binaire bestanden

- Bij activering van deze optie zal &kate; ook in alle bestanden zoeken die er niet uitzien als tekstbestanden.

#### Zoekresultaten

De resultaten van uw zoekopdracht worden hieronder getoond in de zoekopties. Als opties voor de modus Zoeken in map getoond worden, druk dan gewoon op de knop om ze te tonen. Ze zullen ook automatisch worden getoond zodra een zoekopdracht wordt uitgevoerd.

Het zoekresultaat toont een lijst met bestanden die de tekst bevat in uw zoekopdracht, gevolgd door het aantal gevonden overeenkomsten in dat bestand.

Om een lijst met overeenkomsten in dat bestand te zien, klik gewoon op de expansiepijl links van de bestandsnaam. (Als u de optie Resultaten expanderen hebt geselecteerd, dan zal dit al voor u zijn gedaan). Het regelnummer van elke gevonden overeenkomst zal worden getoond, gevolgd door de inhoud van die regel, met gezochte tekst aangegeven in vette tekst.

Om het bestand te openen waarin het gezochte is gevonden, is dubbelklikken voldoende. &kate; zal het bestand zo nodig openen. U kunt de cursor ook verplaatsen naar een specifieke overeenkomst door dubbel te klikken op zijn inhoud in plaats van de bestandsnaam.

### Menustructuur

&Ctrl;&Alt;F Bewerken In bestanden zoeken

- Start de weergave van het hulpmiddel Zoeken en vervangen

Bewerken Ga naar de volgende overeenkomst

- Ga naar de volgende overeenkomst met uw zoekopdracht uitgevoerd door de plug-in Zoeken en vervangen.

Bewerken Ga naar vorige overeenkomst

- Ga naar de vorige overeenkomst met uw zoekopdracht uitgevoerd door de plug-in Zoeken en vervangen.

Beeld Hulpmiddelenweergaven Zoeken en vervangen tonen

- Toont of verbergt het hulpmiddel van &kate; Zoeken en vervangen.

## &kate; Scripts & tekstfragmenten

### Inleiding

De plugin van &kate; Scripts & tekstfragmenten biedt u het toevoegen en beheren van uw eigen stukjes automatisering. Dit kan gaan over statische opnieuw bruikbare stukjes gewone tekst, over geavanceerde sjablonen met aanpasbare geautomatiseerde en te velden met scripts, tot volledig aangepaste &javascript; scripts om de inhoud van uw document aan te passen.

In de meeste gevallen worden deze typen inhoud beheerd op exact dezelfde manier. Daarom, voor gemakkelijk lezen, maakt de volgende discussie geen onderscheid tussen statische tekstfragmenten, gescripte tekstfragmenten en scripts. In plaats daarvan wordt de term tekstfragment gebruikt om naar allen te verwijzen.

De plug-in ondersteunt ook toekennen van sneltoetsen en invoegen van tekstfragmenten via code aanvullen. Verder kunt u verzamelingen van tekstfragmenten downloaden (uit zogenaamde opslagruimten) van het internet.

### Menustructuur

Beeld Hulpmiddelenweergaven Fragmenten tonen

- Toont het fragmentenpaneel met alle fragmenten in uw opslag voor het huidige geopende bestandstype.

Hulpmiddelen Fragment maken

- Een nieuw fragment maken, wat een herbruikbaar stuk tekst is dat u in elk deel van elk document kan invoegen of een klein script.

### Paneel voor fragmenten

Paneel voor fragmenten van &kate; Het paneel voor fragmenten van &kate;.

Het paneel voor fragmenten van &kate;.

In het paneel zou u een lijst met opslagruimten voor fragmenten moeten zien, samen met opties om uw eigen ruimten aan te maken, ze van het internet te halen of te laden uit een lokaal bestand. Elke opslagruimte heeft een keuzevakje dat gebruikt kan worden om het te activeren of te deactiveren. Er zijn ook knoppen om bestaande opslagruimten te bewerken en te verwijderen.

#### Fragment-opslagruimte-bestanden laden

U kunt fragment-opslagruimten van het internet downloaden. Klik eenvoudig op Nieuwe fragmenten ophalen en er opent zich een venster met een lijst met fragment-opslagruimten. Controleer na het downloaden van het gewenste fragment of het is geactiveerd.

#### Opslagruimten aanmaken en bewerken

Om een nieuwe fragment-opslagruimte aan te maken klikt u op Opslagruimte toevoegen. U zou nu een dialoog moeten zien die naar de naam van het fragmentenbestand, de licentie en auteur vraagt. Na het kiezen van de gewenste opties, klikt u op OK.

Bewerker van fragmenten De bewerker van opslagruimten.

Het interface van de bewerker van opslagruimten.

De bewerker van opslagruimten voor fragmenten bevat de volgende opties:

Naam

- Verschijnt in de lijst met fragmenten in de hulpmiddelenweergave en wordt ook doorzocht bij het gebruiken van de functie code-aanvullen.

Naamruimte

- Gebruikt voorvoegsel bij gebruik van aanvulling van code.

Licentie

- Selecteer de licentie voor uw fragment-opslagruimte.

Auteurs

- Voer de na(a)m(en) in van de auteur(s) van het fragmentenbestand.

Bestandstypen

- Selecteer het/de bestandstype(n) waarop de fragment-opslagruimte moet worden toegepast. Het is standaard ingesteld op , dus is de opslagruimte op alle bestanden van toepassing. U kunt het bijvoorbeeld wijzigen in zoiets als `C++` of iets uit een lijst selecteren door op de items te drukken. U kunt meer dan één bestandstype selecteren door &Shift; in te drukken bij het toevoegen van typen.

#### Fragmenten aanmaken en bewerken

Bewerker van fragmenten De bewerker van fragmenten.

Het interface van de bewerker van fragmenten.

Naam

- De naam zoals getoond in de lijst met tekstfragmenten en de lijst voor aanvullen (vereist).

Type

- Tekstfragmenten kunnen ofwel gedefinieerd worden als tekstsjabloon of scripts. Beide typen bieden het gebruik van &javascript; functies (zie onderstaand voor details) en kunnen dus gebruikt worden met een gelijk effect. Echter, als een vuistregel, tekstsjablonen zullen geschikter zijn als u meestal tekst wilt invoegen, terwijl scripts vaak een gemakkelijker oplossing zijn als u tekst wilt wijzigen).

  Kate moet gecompileerd worden tegen KTextEditor versie 6.15.0 of hoger, om deze functie beschikbaar te maken. Voor eerdere versies kunnen alleen tekstsjabloon tekstfragmenten gebruikt worden.

Sneltoets

- Op deze sneltoets drukken zal het fragment in het huidige document invoegen (of uitvoeren) .

Tekstfragmenten (type `Tekstsjabloon`)

- De tekst die uw fragment zal invoegen in het document.

  Een fragment kan bewerkbare velden bevatten. Deze kunnen doorlopen worden door op te drukken. De volgende uitdrukkingen kunnen gebruikt worden in de tekst van het sjabloon om velden aan te maken:

  `${`veldnaam`}` maakt een eenvoudig, bewerkbaar veld aan. Alle volgende exemplaren van dezelfde `veldnaam` maken velden die dezelfde inhoud hebben als de eerste tijdens bewerking.

  Veldnamen kunnen elk teken bevatten behalve de sluit-accolade(`}`).

  Om `${text}` letterlijk in een tekstfragment te voegen, escape het `$` teken met een backslash: `\${text}`. The tekst zal dan niet verandert worden in een veld. Om letterlijk een backslash voor een veld in te voegen, escape elke individuele backslash: `\\${field}`, `\\\\${field}` enzovoort.

  `${func(`ander_veld1`, `ander_veld2`, ...)}` maakt een veld die een &javascript;-functie evalueert bij elke bewerking en wordt vervangen door de teruggeven waarde van de functie. Zie het tabblad Scriptbibliotheek voor meer informatie.

  `${`veldnaam=default`}` stelt een standaard waarde in voor het veld. `standaard` is een &javascript;-expressie. Gebruik aanhalingstekens (`${`veld_naam`=`"tekst"`}`) om een vaste tekenreeks als de standaard waarde te specificeren.

  Bij gebruik van standaard waarden (`${`veld_naam=standaard`}`), bedenk dat de standaard waarde onmiddellijk wordt geëvalueerd wanneer het tekstfragment wordt ingevoegd in het document en het later niet wordt bijgewerkt wanneer velden worden gewijzigd.

  U kunt naar andere velden verwijzen in standaard waarden als ze gedefinieerd worden voor de standaard waarde die wordt geëvalueerd. Dit zal u alleen toegang geven tot de standaard waarde van deze velden.

  Als geen aangepaste standaard waarde is gedefinieerd, dan is de standaard waarde is de naam van het veld.

  `${cursor}` markeert de eindpositie van de cursor na al het andere dat is ingevuld. Tekst invullen op die positie zal bewerken beëindigen. Plus na indrukken van &Esc; om bewerken te beëindigen, zal de cursor naar deze positie springen.

Tekstfragmenten (type `Script`)

- De te evalueren &javascript; code voor dit tekstfragment.

  Als deze code een statement `return` bevat, zal de teruggegeven tekenreeks ingevoegd worden op de huidige cursorpositie. U kunt ook de &kate; scripting API gebruiken om het document direct te wijzigen.

  Bovendien kan uw code functies gebruiken gedefinieerd in het tabblad Scriptbibliotheek, die gedeeld wordt tussen alle tekstfragmenten in een opslagruimte.

Scriptbibliotheek

- Te gebruiken &javascript; hulpfuncties in uw tekstfragmenten. Deze functies worden gedeeld tussen alle tekstfragmenten in een opslagruimte.

  U kunt de scripting API van &kate; gebruiken om de geselecteerde tekst, de volledige tekst, de bestandsnaam en meer te verkrijgen door de van toepassing zijnde methoden van de objecten van het `document` en `weergave` te gebruiken. Kijk in de documentatie van de scripting API voor meer informatie.

  Wanneer een functie wordt aangeroepen in een veld van een `Tekstsjabloon`-tekstfragment, wordt zijn terugkeerwaarde ingevoegd in de tekst.

  Functies gebruiken in `Tekstsjabloon`-tekstfragmenten:

  - Functies kunnen toegang hebben tot de up-to-date inhoud van alle velden via het `fields`-object: gebruik `fields.mijn_veld` of `fields["mijn_veld"]`. Bij gebruik van een functie als de standaard waarde voor een veld, zijn alleen velden gedefinieerd in de tekst ervoor beschikbaar.

  - Velden kunnen doorgegeven worden als argumenten van functies. De veldnaam kan direct gebruikt worden als het een geldige &javascript; identifier is en geen variabele met die naam bestaat. Gebruik anders het `fields`-object: `${func(field)}`, `${func(fields.document)}`, `${func(fields["my field"])}`

  - Functievelden (bijv. `${func()}`) worden opnieuw geëvalueerd elke keer dat elke inhoud van het veld wordt gewijzigd. Dit is echter niet van toepassing op functie aanroepen in standaard waarden: ze worden slechts eenmaal geëvalueerd wanneer het tekstfragment wordt ingevoegd in het document.

  - Voor complexere scripts kan het belangrijk zijn om te begrijpen dat eerst, het ruwe tekstfragment in het document wordt ingevoegd en daarna functies geëvalueerd worden. Bijv., als een functie de tekst ophaalt op de regel waar het tekstfragment wordt ingevoegd, dat die tekst ook `${functionCall()}` zal bevatten. Waar dit complicaties veroorzaakt, overweeg, in plaats daarvan, een type `Script` te gebruiken.

  - Om eenvoudige de nu geselecteerde tekst in te pakken in tags gebruik: `<strong>${view.selectedText()}</strong>`

  - Bedenkt dat alleen de terugkeerwaarde van een functie wordt ingevoegd in een veld.

Beschrijving

- Een optionele beschrijving van wat dit tekstfragment doet. Dit zal getoond worden in tekstballonnen. De beschrijving kan basis HTML formattering bevatten.

Gebruiksvoorbeeld

- Het volgende voorbeeld start een script dat de geselecteerde tekst of - als er geen selectie is - een standaard tekst invoegt in tags (type tekstfragment `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>");

### Fragmenten gebruiken

&kate;-fragmenten in actie &kate;-fragmenten gebruiken vanuit een hulpmiddelenweergave en een afrolmenu.

Uit een lijst met fragmenten kiezen.

U kunt tekstfragmenten aanroepen op verschillende manieren:

- Door op het fragment uit de hulpmiddelenweergave te klikken.

- Een sneltoets gebruiken, als u er een heeft toegekend.

- Bij het schrijven kunt u &Ctrl; &Space; indrukken, die alle fragmenten zal weergeven in een gemaksvenster waaruit u kunt kiezen. Deze toetscombinatie biedt functionaliteit gelijkend op code-aanvulling.

Als het fragment variabelen (naast `${cursor}`) bevat dan zal de cursor automatisch naar het eerste voorkomen van een variabele gaan en zal op u wachten om iets te schrijven. Als u klaar bent, drukt u op om naar de volgende variabele te gaan, enzovoort.

### Dankbetuigingen en licentie

&kate; Snippets is geschreven door Joseph Wenninger.

Speciale dank gaat naar de deelnemer van Google Code-In 2011 Martin Gergov voor het schrijven van veel van deze sectie.

## Plug-in Toetsenbordmacro's

### Inleiding

Neem toetsenbordmacro's op en speel ze af (d.w.z., toetsenbordactiereeksen).

### Beginselen van het gebruik

#### Om opnemen van een toetsenbordmacro te starten:

Hulpmiddelen Toetsenbordmacro's Macro opnemen... (&Ctrl;&Shift;K).

De plug-in zal elke ingedrukte toets opnemen totdat u opnemen beëindigd.

#### Om opnemen te beëindigen:

Hulpmiddelen Toetsenbordmacro's Einde opnemen macro (&Ctrl;&Shift;K).

De plug-in zal het opnemen van indrukken van toetsen stoppen en de reeks als de huidige macro opslaan.

#### Om opnemen te annuleren:

Hulpmiddelen Toetsenbordmacro's Opnemen macro annuleren (&Ctrl;&Alt;&Shift;K).

De plug-in zal het opnemen van indrukken van toetsen stoppen maar de huidige macro zal niet wijzigen.

#### Om de huidige macro af te spelen:

Hulpmiddelen Toetsenbordmacro's Macro afspelen (&Ctrl;&Alt;K).

De plug-in zal de huidige macro afspelen.

Het commando `kmplay` zonder een argument zal de huidige macro ook afspelen.

### Macro's met namen

Het is mogelijk toetsenbordmacro's op te slaan door ze een naam te geven.

Macro's met namen blijven bestaan tussen sessies van Kate, ze worden opgeslagen in het bestand `keyboardmacros.json` in de gebruikergegevensmap van Kate (gewoonlijk `~/.local/share/kate/`).

#### Om de huidige macro op te slaan:

Hulpmiddelen Toetsenbordmacro's Huidige macro opslaan (&Alt;&Shift;K).

De plug-in zal u vragen om een naam en de macro onder die naam opslaan.

Het commando `kmsave `naam`` zal de huidige macro onder de naam ``naam`` opslaan.

#### Om een opgeslagen macro als de huidige macro te laden:

Hulpmiddelen Toetsenbordmacro's Macro met naam laden....

De plug-in maakt een lijst met opgeslagen macro's als items in dit submenu, een item activeren zal de bijbehorende macro als de huidige laden.

Het commando `kmload `naam`` zal de onder de naam ``naam`` opgeslagen macro als de huidige laden.

#### Om een opgeslagen macro af te spelen zonder deze te laden:

Hulpmiddelen Toetsenbordmacro's Macro met naam afspelen....

De plug-in maakt een lijst met opgeslagen macro's als items in dit submenu, een item activeren zal de bijbehorende macro afspelen zonder deze te laden.

Merk op dat elke opgeslagen macro een actie is die onderdeel is van de huidige verzameling acties zodat een eigen sneltoets er aan toegekend kan worden via het interface Instellingen Sneltoetsen configureren....

Het commando `kmplay `naam`` zal de onder de naam ``naam`` opgeslagen macro afspelen zonder deze te laden.

#### Om een opgeslagen macro te wissen (d.w.z. verwijderen):

Hulpmiddelen Toetsenbordmacro's Macro met naam wissen....

De plug-in maakt een lijst met opgeslagen macro's als items in dit submenu, een item activeren zal de bijbehorende macro wissen (d.w.z., verwijderen).

Het commando `kmwipe `naam`` zal de onder de naam ``naam`` opgeslagen macro wissen.

#### Tips voor commando's:

Merk op dat na de voorloop `km`, al deze commando's een andere letter gebruiken u kunt ze efficient aanroepen met tab-aanvullen!

### Beperkingen

Vanaf nu mislukken toetsenbordmacro's om op de juiste manier af te spelen als er sommige typen GUI-widgets worden gebruikt: bijvoorbeeld, QMenu, QuickOpenLineEdit of TabSwitcherTreeView. I weet niet zeker waarom maar mijn eerste gissing zou zijn dat deze widgets op niet-standaard manier werken met betrekking tot toetsenbordgebeurtenissen.

## SQL-plug-in

### Inleiding

De Structured Query Language (SQL) is een gespecialiseerde taal voor het bijwerken, verwijderen en opvragen van informatie uit databases.

The plug-in SQL van &kate; stelt u in staat om:

- Een database aan te maken

- Te verbinden met bestaande databases

- Gegevens in de database te voegen en uit de database te verwijderen

- Zoekopdrachten uit te voeren

- Resultaten in een tabel te tonen

### Te verbinden met een database

Selecteer Verbinding toevoegen uit het menu SQL of de werkbalk en selecteer daarna het &Qt;-databasestuurprogramma dat u wilt gebruiken (inclusief QSQLITE, QMYSQL3, QMYSQL, QODBC3, QODBC, QPSQL7 en QPSQL). Als u het gewenste stuurprogramma niet ziet, dan moet u het installeren. Druk daarna op Volgende.

Als de door u geselecteerde database een bestand gebruikt, geeft dan eenvoudig de locatie van de database en druk op de knop Volgende. Als een verbinding met een server vereist is, moet u de hostnaam van de server, uw gebruikersnaam en wachtwoord invoeren en elke andere informatie die het specifieke stuurprogramma kan vereisen. Druk daarna op Volgende.

Geef tot slot een naam aan uw verbinding en druk op Beëindigen.

### Queries uitvoeren

#### INVOEGEN/VERWIJDEREN/BIJWERKEN

U kunt gegevens invoegen, verwijderen en bijwerken met de SQL-plug-in op dezelfde manier als vanaf de commandoregel of in een programma. Voer eenvoudig een query in en druk op de knop Query uitvoeren in de werkbalk of gebruik SQL Query uitvoeren (&Ctrl;E).

##### Enkele voorbeeld queries

`INSERT`

-     INSERT INTO tabelnaam ("feature1", "feature2", "feature3", "feature4", "feature5")
      VALUES ("waarde1", "waarde2", "waarde3", "waarde4", "waarde5" )

`DELETE`

-     DELETE FROM tabelnaam WHERE name = "tekst"

`UPDATE`

-     UPDATE tabelnaam SET "feature1" = "tekst", "feature2" = "tekst", "feature3" = "text", "feature4" = "tekst", "feature5" = "tekst"

#### SELECT

Na het uitvoeren van een query `SELECT`, kunt u de resultaten als een tabel bekijken die zal verschijnen in het weergavehulpmiddel SQL-gegevensuitvoer onderaan &kate; of als tekst in de SQL-tekstuitvoer. Als er een fout is ziet u dat in de tekstuitvoer.

##### Voorbeeld `SELECT` zoekopdracht

    SELECT * FROM tabelnaam

In de hulpmiddelweergave SQL-gegevensuitvoer bevinden zich een aantal knoppen:

Kolomgrootte aanpassen aan inhoud

- Wijzigt de grootte van kolommen om hun inhoud te laten passen.

Rijgrootte aanpassen aan inhoud

- Wijzigt de grootte van Rijen om hun inhoud te laten passen.

Kopiëren

- Selecteert de gehele tabelinhoud en kopieert deze naar de klembordbuffer.

Exporteren

- Exporteert de gehele tabelinhoud naar een bestand, het klembord of het huidige document in het formaat kommagescheiden waarden.

Wissen

- Verwijdert alles uit de tabelweergave.

U kunt nu de kleuren wijzigen die getoond worden in de tabel in de sectie SQL van Instellingen&kate; configureren... .

### Bladeren

U kunt door uw database bladeren met het browserweergavehulpmiddel Databaseschema links. De weergegeven informatie varieert afhankelijk van welk stuurprogramma voor de database u gebruikt.

Om deze lijst te verversen klikt u rechts ergens in het weergavehulpmiddel en selecteert u Verversen. Om een query te maken op een item in de lijst, klikt u rechts op een item, selecteert Genereren en selecteert u het type query (SELECT, UPDATE, INSERT of DELETE) uit het submenu dat verschijnt.

### Menustructuur

SQL Verbinding toevoegen...

- Voegt een nieuwe verbinding toe met elk databasestuurprogramma.

SQL Verbinding verwijderen

- Verwijdert de geselecteerde verbinding.

SQL Verbinding bewerken...

- Bewerkt de huidige verbindingsinstellingen.

Verbindingen

- Alle door u gemaakte databaseverbindingen staan in de lijst tussen de menu-items Verbinding bewerken en Query uitvoeren. Selecteer er een om queries uit te voeren of maak er wijzigingen in.

&Ctrl;E SQL Query uitvoeren

- Voer uw query uit.

### Dankbetuigingen en licentie

De SQL-plug-in is geschreven door Marco Mentasti.

Speciale dank gaat naar de deelnemer van Google Code-In 2011 Ömer Faruk ORUÇ voor het schrijven van veel van deze sectie.

## Plug-in voor Symboolviewer

### De plug-in Behalve/zoals sluiten gebruiken

Het stelt ontwikkelaars in staat om symbolen te bekijken (functies, macro's en structures) uit broncode.

Door te klikken op de ontlede informatie kunt u gemakkelijk door de code wandelen.

Op dit moment worden de volgende talen ondersteund:

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

Lijst met mogelijkheden:

- Modus Lijst/boomstructuur
- Sorteren in-/uitschakelen
- Functieparameters verbergen/tonen
- Boomstructuur uit-/invouwen
- Bij wijzigen van document automatisch bijwerken
- Ontleden van code is gebaseerd op het framework van accentueren van syntaxis uit &kde-frameworks;

### Menustructuur

&Ctrl;\ Beeld Hulpmiddelenweergaven Symbolenlijst tonen

- Schakel het tonen om, van de lijst symbolen van &kate;, die functies, macro's en structures van de broncode in het actieve document toont.

### Configuratie

Symboolviewer

Kies de standaard ontlederopties

## Plug-in voor terminalweergave

De ingebouwde terminal, een kopie van &konsole;, de terminal van &kde;, is er om het u gemakkelijk te maken. U kunt hem beschikbaar maken door het menu Beeld Hulpmiddelenweergave Terminalpaneel tonen te gebruiken, de terminal krijgt dan direct de focus. Als de optie automatisch de terminal, indien mogelijk, met het huidige document synchroniseren ingeschakeld is, zal er bovendien naar de map van het huidige bestand overgeschakeld worden (indien mogelijk) zodra het weergegeven wordt of zodra het huidige bestand gewijzigd wordt.

De standaardlocatie in het venster van &kate; is onderaan, onder het editor-gedeelte.

U kunt &konsole; instellen met behulp van het &RMB;-menu. Meer informatie kunt u vinden in het &konsole; handboek.

De ingebouwde terminalemulator wordt geleverd door de plug-in voor terminalweergave.

### Menustructuur

Beeld Hulpmiddelenweergaven Terminalpaneel tonen

- Toont of verbergt de ingebouwde terminalemulator.

  De eerste keer dat deze optie geactiveerd wordt, zal de terminal aangemaakt worden.

  De terminal krijgt de focus zodra hij weergegeven wordt, zodat u onmiddellijk commando's kunt intypen. Als de optie Terminal automatisch synchroniseren met actief document, indien mogelijk ingeschakeld is op de pagina Terminal van het hoofddialoogvenster "Instellingen"), zal de shell-sessie de map wijzigen naar de map van het actieve document als het een lokaal bestand is.

Hulpmiddelen Pipe naar terminal

- Voer de nu geselecteerde tekst in de ingebouwde terminalemulator in. Er wordt geen nieuwe-regel-teken toegevoegd na de tekst.

Hulpmiddelen De terminal synchroniseren met het huidige document

- Dit veroorzaakt dat in de ingebouwde terminal het commando `cd` wordt uitgevoerd naar de map van het actieve document.

  Als alternatief kunt u &kate; zo instellen dat het altijd de terminal gesynchroniseerd houdt met het huidige document. Zie konsole-config voor meer informatie.

Hulpmiddelen Huidig document uitvoeren

- Het huidige document in &konsole; uitvoeren. Alleen de lokale documenten kunnen uitgevoerd worden. &kate; zal een waarschuwing tonen alvorens het document uit te voeren omdat deze actie een serieuze beveiligingsdreiging kan zijn.

Hulpmiddelen Focus wel/niet op terminalpaneel

- Schakel de focus van het huidige document naar de terminal en omgekeerd.

### Configuratie

De plug-in Terminalweergave kan worden geconfigureerd op de pagina Terminal van de instellingendialoog.

De volgende opties zijn beschikbaar:

De terminal automatisch synchroniseren met het huidige document, wanneer mogelijk

- Dit heeft als gevolg dat de ingebouwde terminal een `cd` doet in de map van het actieve document wanneer gestart en wanneer een nieuw document de focus krijgt. Indien niet ingeschakeld, dan moet u al uw navigatie in de terminal zelf doen.

Stel de omgevingsvariabele EDITOR in op 'kate -b'

- Dit stelt de omgevingsvariabele `EDITOR` in zodat programma's die in de ingebouwde terminal werken die automatisch een bestand in een tekstbewerker openen deze in &kate; openen in plaats daarvan in de standaard tekstbewerker van uw shell. U zult niet in staat zijn met het gebruik van de terminal totdat u het bestand in &kate; hebt gesloten, zodat het aanroepende programma weet dat u klaar bent met het bewerken van het bestand.

&konsole; verbergen bij indrukken van 'Esc'

- Dit biedt het sluiten van de ingebouwde terminal door de toets &Esc; in te drukken. Kan probleem veroorzaken met terminaltoepassingen die toetst &Esc; gebruiken, ⪚ vim. Voeg zulke toepassingen toe aan het onderstaande tekstvak. De items in de lijst moeten gescheiden zijn door komma's.

## Plug-in Tekstfilter

### De plug-in Tekstfilter gebruiken

U kunt deze plug-in gebruiken om geselecteerde tekst te verwerken met commando's op de terminal. De selectie zal gebruikt worden als invoer voor het commando en de uitvoer zal ofwel de selectie vervangen of gekopieerd worden naar het klembord, afhankelijk van de voorkeur van de gebruiker.

### Voorbeelden:

- `less /etc/fstab` - plakt de inhoud van dit bestand of kopieert het naar het klembord

- `wc` - telt regels, woorden en tekens van de selectie en plakt dit in het document of kopieert het naar het klembord

- `sort` - sorteert regels van de selectie en plakt het resultaat in het document of kopieert het naar het klembord

### Menustructuur

&Ctrl;\ Hulpmiddelen Tekst filteren

- Opent de dialoog voor tekstfilteren:

  Dialoog van Tekstfilter

  Voer het shell-commando in in de keuzelijst of selecteer een vorig commando uit de geschiedenis.

  Kopieer het resultaat in plaats van het te plakken

- Kopieer het resultaat naar het klembord en laat een document ongewijzigd.

STDOUT en STDERR samenvoegen

- Indien geactiveerd zal uitvoer uit STDOUT en STDERR samengevoegd worden en zullen geen fouten worden gerapporteerd. Anders zal STDERR worden getoond als een passief bericht

## &XML;-validatie

Deze plug-in controleert of &XML;-bestanden geldig zijn en op de juiste manier zijn opgemaakt.

Deze plug-in controleert het huidige bestand. Een lijst met waarschuwingen en foutmeldingen zal aan de onderzijde van &kate;'s venster verschijnen. Klik op een foutmelding om naar de bijhorende plaats in het bestand te gaan. Als het bestand een DOCTYPE heeft, dan zal deze worden gebruikt om de validatie van het bestand te controleren. De DTD wordt op een relatieve positie van het bestand verwacht; dus als de DTD verwijst naar DTD/xhtml1-transitional.dtd en het bestand is `/home/rinse/test.xml`, dan wordt de DTD verwacht op `/home/rinse/DTD/xhtml1-transitional.dtd`. DTD's op afstand die zijn gespecificeerd via HTTP worden ook ondersteund.

Als het bestand geen doctype heeft, zal het worden gecontroleerd op op de juiste manier is samengesteld.

Als u meer wilt weten over &XML;, ga dan naar de officiële W3C &XML;-webpagina's.

Intern roept deze plugin het commando `xmllint` aan. Dit hulpprogramma is onderdeel van libxml2. Als dit niet correct op uw systeem is geïnstalleerd, zal deze plugin niet werken.

Om deze plugin te laden opent u de instellingendialoog van &kate; onder Instellingen &kate; instellen.... Selecteer daarna &XML;-validatie die zal verschijnen in de sectie Toepassing / Plugins en de dialoog afsluit.

### Menustructuur

&XML; &XML; valideren

- Dit start de controle, zoals hierboven beschreven.

### Dankbetuigingen en licentie

&kate;-plugin &XML; Validation copyright 2002 &Daniel.Naber; &Daniel.Naber.mail;

Documentatie copyright 2002 &Daniel.Naber;

## &XML;-aanvulling

Deze plugin geeft hints over wat is toegestaan op een bepaalde positie in een &XML;-bestand volgens de DTD van het bestand. Het toont mogelijke elementen, attributen, attribuutwaarden of entiteiten, afhankelijk van de positie van de cursor (⪚ alle entiteiten worden getoond als het teken links van de cursor een &) is. Het is ook mogelijk om de dichtstbijzijnde open tag aan de linker kant te sluiten.

De DTD moet bestaan in &XML;-formaat, zoals geproduceerd door het Perl programma `dtdparse`. We zullen een DTD in dit formaat meta DTD noemen. Sommige meta DTD's zijn meegeleverd. Zij zijn geïnstalleerd in `katexmltools/` in ``qtpaths` `--paths GenericDataLocation`` , die ook de standaard map is wanneer u kiest Meta DTD toekennen.... Om uw eigen meta DTD's te maken, haal `dtdparse` op uit http://dtdparse.sourceforge.net.

### Hoe te gebruiken

Start &kate; en open de instellingendialoog onder Instellingen &kate; instellen.... Selecteer daarna &XML;-aanvulling die zal verschijnen in de pagina Toepassing Plug-ins en de dialoog afsluit. Selecteer hierna &XML;Meta DTD toekennen.... Als uw document geen DOCTYPE bevat of de doctype is onbekend, dan moet u een meta DTD uit het bestandssysteem kiezen. Anders wordt de meta DTD, die overeenkomt met de huidige DOCTYPE van het document, automatisch geladen.

U kunt de plugin gebruiken terwijl u uw tekst intypt:

< (kleiner-dan-toets)

- Dit start een lijst met mogelijke elementen tenzij de cursor zich al in een tag bevindt. Merk op dat u dit nu niet kunt gebruiken om het element op topniveau in te voegen (⪚ <html>).

</(kleiner-dan-toets + schuine streep)

- Invoeren van deze tekens biedt het sluiten van het huidige element (het dichtst bij de geopende links van de cursor). Druk op &Enter; om de suggestie te accepteren. Anders dan met de menu-items Element sluiten, werkt dit alleen met een toegekende DTD.

" (aanhalingsteken-toets)

- De toets aanhalingsteken start een lijst met mogelijke attribuutwaarden (als die er zijn) als u zich in een tag bevindt.

(spatietoets)

- Deze toets start een lijst met mogelijke attribuutwaarden voor het huidige element als u zich in een tag bevindt.

& (ampersand-toets)

- Deze toets start een lijst met benoemde entiteiten.

### Mogelijkheden en beperkingen

U kunt alle functies en beperkingen testen door `katexmltools/testcases.xml` in ``qtpaths` `--paths GenericDataLocation`` in &kate; te laden en de instructies te volgen.

### Menustructuur

&Ctrl;&Enter; &XML; Element invoegen...

- Dit opent een dialoog die u een &XML;-element laat invoegen. De tekens <, > en de sluittag zullen automatisch worden ingevoegd. Als u tekst hebt geselecteerd wanneer dit menu-item is geselecteerd, dan zal de geselecteerde tekst worden omgeven door de openings- en sluittag. De dialoog biedt ook aanvulling van alle elementen die kunnen worden ingevoegd op de huidige positie van de cursor als u een meta DTD hebt toegekend via Meta DTD toekennen....

&Ctrl;< &XML; Element sluiten

- Hiermee wordt uw tekst doorzocht naar een tag die nog niet is gesloten en zal deze sluiten door de overeenkomstige sluittag. Het zoeken start op de positie van de cursor en gaat naar links. Als het geen open tag kan vinden dan zal er niets gebeuren.

&XML; Meta-DTD toekennen...

- Dit vertelt de plugin welke meta DTD voor het huidige document te gebruiken. Merk op dat dit toekennen niet zal worden opgeslagen. U zult het moeten herhalen wanneer u &kate; de volgende keer opstart.

### Dankbetuigingen en licentie

&kate;-plugin &XML;-aanvulling copyright 2001,2002 &Daniel.Naber; &Daniel.Naber.mail;

&kde; SC 4 versie copyright 2010 Tomáš Trnka

Documentatie copyright 2001,2002 &Daniel.Naber;

## Plug-in voor compiler-verkenner

De plug-in voor de compiler-verkenner biedt u het gebruik van de compiler-verkenner vanuit Kate. Compiler-verkenner is gewoonlijk beperkt tot slechts 1 bestand en het is moeilijk om te gebruiken voor het bekijken van de codegen van een bestand in uw project. Deze plug-in richt zich op het vereenvoudigen van dit proces door automatisch compilatiecommando's voor uw bestand te detecteren.

### Gebruik

Het eerste wat u moet doen is een tabblad compiler-verkenner openen. Druk op &Ctrl;&Alt;I om de opdrachtenbalk te openen en zoek naar "Huidig bestand in compiler-verkenner openen" en druk op Enter. U kunt deze actie toevoegen aan de werkbalk of toekennen aan een sneltoets voor gemakkelijker toegang.

Vervolgens moet u een lokaal exemplaar van de compiler-verkenner opzetten of de publieke exemplaar https://godbolt.org/ gebruiken. Zie https://github.com/compiler-explorer/compiler-explorer. Nadat u een exemplaar hebt, klik op de keuzelijst Optie in het tabblad compiler-verkenner die u eerder hebt geopend en selecteer Url wijzigen... en voer daarna de url van de server van de compiler-verkenner in.

Vervolgens hebt u een compile_commands.json nodig als u codegen wilt zien voor een bestand in uw project. Anders kunt u dit gedeelte overslaan. Dit kan gemakkelijk verkregen worden als u een modern bouwsysteem gebruikt zoals CMake of Meson. Voor CMake is het genoeg om `-DCMAKE_EXPORT_COMPILE_COMMANDS=ON` door te geven bij aanroepen van cmake. De `compile_commands.json` zou geplaatst moeten worden in de hoogste map van uw project. Sluit en open opnieuw het tabblad compiler-verkenner in Kate. Na opnieuw openen van het tabblad zou het de compilatiecommando's moeten tonen die nodig zijn om het bestand te compileren

Als u alleen de compiler-verkenner gebruikt om tijdelijk de codegen te zien, dan kunt u de compilatiecommando's voor uw bestand noteren en klikken op Compileren. Merk op dat automatisch opnieuw compileren bij bewerken niet wordt ondersteund. U moet op Compileren klikken elke keer dat u het bestand opnieuw wilt compileren

Nadat het bestand is gecompileerd zou u de codegen moeten zien aan de rechterkant. U kunt rechts klikken en Gekoppelde code onthullen selecteren om de codegen voor een specifieke regel te zien. Overeenkomstig aan de rechterkant kunt u rechts klikken en Naar broncode schuiven om de broncode te tonen voor een gegeven regel codegen

## Plug-in voor formatteren

De plug-in voor formatteren biedt het gemakkelijk formatteren van broncode. De plug-in richt zich op het behouden van de geschiedenis van het ongedaan maken van het document en de cursorpositie van de gebruiker toen formatteren van de code startte zodat het formatteren van de code het werk van de gebruiker niet verstoort. Dit is speciaal belangrijk voor automatisch formatteren bij opslaan.

### Gebruik

Het biedt de gebruiker om code op twee manieren te formatteren:

- Handmatig met de actie "Document formatteren".

- Automatisch bij opslaan

U kunt naar deze actie zoeken in de opdrachtenbalk en er een sneltoets aan verbinden voor gemakkelijker toegang

### Ondersteunde talen en formatteerders

De huidige lijst met ondersteunde talen en formatteerders is als volgt:

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

- Javascript/Typescript/JSX/TSX - `fijner`

- JSON

  - `prettier`

  - `clang-format`

  - `jq`

- Dart - `dartfmt`

- Rust - `rustfmt`

- Go - `gofmt`

- XML - `xmllint`

- Zig - `zigfmt`

- CMake - `cmake-format`

- D - `dfmt`

- Fish Shell - `fish_indent`

- Bash - `shfmt`

- Nix - `nixfmt`

- QML - `qmlformat`

- HTML - `prettier`

- Swift - `swiftformat`

- Erlang - `erlfmt`

- Godot-script - `gdformat`

- Python

  - `autopep8`

  - `ruff`

- YAML

  - `yamlfmt`

  - `prettier`

### Bezig met configureren

De plug-in kan op twee manieren geconfigureerd worden:

- Globaal, vanuit de dialoog Configureren

- Op een per project basis met het bestand `.kateproject`

Bij lezen van de configuratie, de plug-in zal eerst proberen de configuratie uit het bestand `.kateproject` te lezen en daarna de globale configuratie lezen. Voorbeeld:

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

Het bovenstaande:

- schakelt "formatteren bij opslaan" globaal in

- specificeert "jq" als de formatteerder voor JSON

- schakelt "formatteren bij opslaan" uit voor cmake-format en autopep8

Om formatteren voor een project te configureren, maak eerst een bestand `.kateproject` en voeg daarna het object `"formatting"` er aan toe. In het object `"formatting"` kunt u uw instellingen specificeren zoals getoond in het vorige voorbeeld. Voorbeeld:

U moet de Projectplug-in inschakelen om dit te laten werken

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

### Tijdelijk formatteren bij opslaan uitschakelen

Tijdens het werk zal het vaak nodig zijn het formatteren gedurende om de een of andere reden een korte tijd uit te schakelen. U kunt dit doen vanuit de menubalk, Hulpmiddelen Formatteren bij opslaan. U kunt deze actie ook starten vanuit de Opdrachtenbalk.