Fremhævningsdefinitionen XML-format |
forrige | Arbejde med Fremhævning | næste |
Dette afsnit er et overblik over fremhævningsdefinitionen XML-format. Det vil beskrive hovedkomponenterne og deres betydning og brug, baseret på et lille eksempel. Næste afsnit vil gå i detaljer angående fremhævningsdetektionsreglerne.
Den formelle definition, også kendt som DTD gemmes i filen language.dtd
som skal være installeret på dit system i mappen $
. KDEDIR
/share/apps/katepart/syntax
Hovedafsnit i Kate's fremhævningsdefinitioner
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE language SYSTEM "language.dtd">
language
. Følgende egenskaber er tilgængelige:Egenskaber som kræves:
section
angiver kategorien.
extensions
definerer filendelser, som "*.cpp;*.h".
Valgfrie egenskaber:
mimetype
tilknytter filer baseret på MIME-type.
version
angiver definitionsfilens nuværende version.
kateversion
angiver seneste version af Kate som understøttes.
casesensitive
definerer om nøgleord er versalfølsomme eller ej.
priority
kræves hvis en anden syntaksfremhævelsesfil bruger samme filendelse. Den højeste prioritet vinder.
author
indeholder forfatterens navn og e-mail-adresse.
license
indeholder licensen, oftest LGPL, Artistic, GPL og andre.
hidden
definerer om navnet skal vises i Kates menuer.
Næste linje kan altså se sådan her ud:
<language name="C++" version="1.00" kateversion="2.4" section="Sources" extensions="*.cpp;*.h" />
highlighting
som indeholder det valgfrie element list
og de krævede elementer contexts
og itemDatas
.list
elementer indeholder en liste med nøgleord. I dette tilfælde er nøgleordene class og const. Du kan tilføje så mange lister som du behøver.
Elementet contexts
indeholder alle sammenhænge. Den første sammenhæng er standard som start for fremhævelsen. Der er to regler i sammenhængen Normal Text som matcher listen af nøgleord med navnet et-navn og en regel som detekterer et citationstegn og skifter sammenhæng til string. For at lære dig mere om regler, læs næste kapitel.
Den tredje del er elementet itemDatas
. Det indeholder alle farver og skrifttypestiler som behøves af sammenhængen og reglerne. I dette eksempel bruges itemData
Normal Text, String og Keyword.
<highlighting> <list name="somename"> <item> class </item> <item> const </item> </list> <contexts> <context attribute="Normal Text" lineEndContext="#pop" name="Normal Text" > <keyword attribute="Keyword" context="#stay" String="somename" /> <DetectChar attribute="String" context="string" char=""" /> </context> <context attribute="String" lineEndContext="#stay" name="string" > <DetectChar attribute="String" context="#pop" char=""" /> </context> </contexts> <itemDatas> <itemData name="Normal Text" defStyleNum="dsNormal" /> <itemData name="Keyword" defStyleNum="dsKeyword" /> <itemData name="String" defStyleNum="dsString" /> </itemDatas> </highlighting>
general
. Det kan indeholde information om nøgleord, kodefoldning, kommentarer og indentering.Afsnittet comment
definerer den streng som kommentarer på en linje indledes med. Du kan også definere kommentarer på flere linjer med multiLine og den yderligere egenskab end. Dette er nyttigt når brugeren trykker på genvejstaster som svarer til kommentér/afkommentér.
Afsnittet keywords
definerer om lister med nøgleord er versalfølsomme eller ej. Andre egenskaber forklares senere.
<general> <comments> <comment name="singleLine" start="#"/> </comments> <keywords casesensitive="1"/> </general> </language>
Denne del beskriver alle tilgængelige egenskaber for sammenhæng, itemData, nøgleord, kommentarer, kodefoldning og indentering.
context
hører til gruppen contexts
. Selve sammenhænget definerer sammenhængsspecifikke regler, såsom hvad der skal ske hvis fremhævelsessystemet når slutningen på en linje. Tilgængelige egenskaber er:name
er sammenhængens navn. Regler bruger navnet til at angive sammenhængen at skifte til hvis reglen matcher.
lineEndContext
definerer sammenhængen som fremhævelsessystemet skifter til hvis det når til et linjebrud. Det kan enten være navnet på en andet sammenhæng, #stay
for ikke at skifte sammenhæng (dvs. gøre ingenting) eller #pop
som gør at sammenhængen forlades. Det er for eksempel muligt at bruge #pop#pop#pop
for at gå tre skridt tilbage.
lineBeginContext
definerer sammenhængen hvis begyndelsen på en linje mødes. Standard: #stay.
fallthrough
definerer om fremhævelsessystemet skifter til sammenhængen som angives i fallthroughContext hvis ingen regel matcher. Standard: false.
fallthroughContext
angiver næste sammenhæng hvis ingen regel matcher.
dynamic
hvis true husker sammenhængen strenge/pladsmarkører som gemt af dynamiske regler. Det behøves for eksempel for HERE-dokumenter. Standard: false.
itemData
er i gruppen itemDatas
. Det definerer skrifttypestilen og farverne. Det er altså muligt at definere egne stiler og farver, men vi anbefaler dog at du holder dig til standardstil om muligt, så brugeren altid ser samme farver brugt i forskellige sprog. Sommetider er der dog ingen anden måde, og det er nødvendigt at ændre farve- og tegnegenskaber. Egenskabens navn og defStyleNum kræves, øvrige er valgfrie. Tilgængelige egenskaber er:name
angiver navnet på itemData. Sammenhæng og regler bruger navnet i egenskaben attribute til at referere til itemData.
defStyleNum
definerer hvilken standardstil som skal bruges. Tilgængelige standardstiler forklares i detalje senere.
color
definerer en farve. Gyldige formater er '#rrggbb' eller '#rgb'.
selColor
definerer markeringens farve.
italic
hvis true, er teksten kursiv.
bold
hvis true, er teksten i fede typer.
underline
hvis true, er teksten understreget.
strikeout
hvis true, er teksten overstreget.
keywords
i gruppen general
definerer nøgleordenes egenskaber. Tilgængelige egenskaber er:casesensitive
kan være true eller false. Hvis det er true, matches alle nøgleord versalfølsomt.
weakDeliminator
er en liste med tegn som ikke fungerer som ordgrænser. Punktum '.'
er for eksempel en ordgrænse. Antag at et nøgleord i en list
indeholder et punktum, så matcher det kun hvis du angiver at punktummet er en svag afgrænser.
additionalDeliminator
definerer yderligere grænser.
wordWrapDeliminator
definerer tegn som et linjeskift kan ske efter.
Standardgrænser og linjeskiftgrænser er tegnene .():!+,-<=>%&*/;?[]^{|}~\
, mellemrum (' '
) og tabulator ('\t'
).
comment
i gruppen comments
definerer kommentaregenskaber som bruges for -> og ->. Tilgængelige egenskaber er:name
er enten singleLine eller multiLine. Hvis du vælger multiLine kræves egenskaberne end og region.
start
definerer strengen som bruges til at indlede en kommentar. I C++ ville det være "/*".
end
definerer strengen som bruges til at afslutte en kommentar. I C++ ville det være "*/".
region
skal være navnet på den foldelige kommentar på flere linjer. Antag at du har beginRegion="Comment" ... endRegion="Comment" i dine regler, så skal du bruge region="Comment". På denne måde fungerer afkommentering også selvom du ikke markerer al tekst i en kommentar på flere linjer. Markøren skal blot være inde i multilinjekommentaren.
folding
i gruppen general
definerer kodefoldningsegenskaber. Tilgængelige egenskaber er:indentationsensitive
hvis true tilføjes kodefoldningsmarkørerne baseret på indentering, ligesom i scriptsproget Python. Som regel behøver du ikke angive det, eftersom det har standardværdien false.
indentation
i gruppen general
definerer hvilken identerer som skal bruges, selvom vi stærkt anbefaler at udelade elementet, eftersom intentereren oftest angives ved at definere en filtype eller ved at tilføje tilstandslinjer i tekstfilen. Hvis du alligevel angiver en indenterer, tvinger du brugeren til at bruge en specifik indentering, hvilket måske ikke værdsættes over hovedet. Tilgængelige egenskaber er:mode
er navnet på indentereren. Indenterere som for øjeblikket er tilgængelige er:normal, cstyle, csands, xml, python og varindent.
Standardstiler er allerede forklaret. En kort sammenfatning: Standardstiler er fordefinerede stiler for skrifttype og farver.
dsNormal
, bruges til normal tekst.
dsKeyword
, bruges til nøgleord.
dsDataType
, bruges til datatyper.
dsDecVal
, bruges til decimale værdier.
dsBaseN
, bruges til værdier med en basis andet end 10.
dsFloat
, bruges til decimaltal.
dsChar
, bruges til et tegn.
dsString
, bruges til strenge.
dsComment
, bruges til kommentarer.
dsOthers
, bruges til 'andre' ting.
dsAlert
, bruges til advarselsmeddelelser.
dsFunction
, bruges til funktionskald.
dsRegionMarker
, bruges til områdesmarkeringer.
dsError
, bruges til fremhævning af fejl og forkert syntaks.
forrige | hjem | næste |
Kate's syntaksfremhævning-system | op | Fremhævningsdetektionsregler |