Eigenes Syntaxhighlighting für Quanta+

13/03/2013 - 11:55 von Tim Erzmann | Report spam
Hallo Newsgruppe!

Ich wollte schon immer für meine Konfigurationsdateien ein eigenes
Syntaxhighlighting haben. Vor kurzem fand ich heraus, dass das mit
meinem Editor (Quanta 3.5.10) möglich ist. Der Editor làuft unter
FreeBSD 9 und KDE 3.5.10.

Zufàllig fand ich nàmlich die Definitionen in:

~/.kde/share/apps/katepart/syntax/

Bei meiner Suche nach Hilfe um eine solche Datei erstellen zu können,
fand ich diese hilfreiche Seite:

http://kate-editor.org/2005/03/24/w...ting-file/

Nach anfànglichen Schwierigkeiten, bin ich jetzt an einem Punkt, an dem
ich nicht mehr weiterkomme und ich Hilfe benötige. Ich habe eine Liste
mit Keywords die ich mit defStyleNum="dsKeyword" hervorheben möchte. Das
funktioniert auch wunderbar.

Meine Liste:

<list name="keywords">
<item> CONNECTION </item>
<item> USER </item>
<item> PASS </item>
<item> TYPE </item>
<item> DEFAULT </item>
<item> QUERY </item>
<item> HANDLER </item>
<item> BIND-DATA-TYPE </item>
<item> SINGLE_VALUE </item>
<item> SINGLE </item>
<item> MULTI </item>
<item> LIST </item>
<item> MORE_THAN </item>
<item> NOT_NULL </item>
<item> CSV_EXPORT </item>
<item> true </item>
</list>

Das funktioniert auch, zumindestens fast. "BIND-DATA-TYPE" wird nicht
korrekt hervorgehoben so wie es alle anderen Keywords werden. Gelöst
habe ich das so:

<StringDetect String="BIND-DATA-TYPE" attribute="Keyword" />

Gibt es noch eine schöndere Lösung?

Kommen wir nun zu meinem eigentlichen Problem. Ich möchte gerne eine
Zeichenkette hervorheben. Innerhalb dieser Zeichenkette kommen Keywords
vor, die ich auch hervorheben möchte. Deswegen mache ich sowas:

Ein Ausschnitt meiner Keywords:

<list name="sql">
<item> SELECT </item>
<item> FROM </item>
<item> WHERE </item>
<item> INSERT </item>
<item> INNER </item>
<item> JOIN </item>
<item> USING </item>
</list>

<contexts>

<context name="default" attribute="Normal" >
<IncludeRules context="keywords" />
<DetectChar char="&quot;" attribute="String" context="query" />
<StringDetect String="BIND-DATA-TYPE" attribute="Keyword" />
</context>

<context name="query" attribute="String" >
<IncludeRules context="sql" />
<DetectChar char="&quot;" attribute="String" context="#pop" />
</context>

<context name="sql" attribute="Keyword" >
<keyword String="sql" attribute="Keyword" />
</context>

<context name="keywords" attribute="Keyword" >
<keyword String="keywords" attribute="Keyword" />
</context>

</contexts>
<itemDatas>
<itemData name="Keyword" defStyleNum="dsKeyword" />
<itemData name="Normal" defStyleNum="dsNormal" />
<itemData name="String" defStyleNum="dsOthers" />
</itemDatas>

Jetzt werden sowohl die Anführungszeichen und alles was dazwischen steht
als ein String hervorgehoben. Dadurch dass ich in der Regel "query"
vorher noch die Regel "sql" aufrufe, werden meine Keywords als solche
hervorgehoben. Leider nur nicht alle.

Beispiel:

"SELECT id, name FROM table WHERE age = ?"

FROM und WHERE werden korrekt hervorgehoben, leider aber nicht SELECT
und ich kann mir darauf keinen Reim machen. Es verhàlt sich auch so,
wenn am Ende des Strings, also "...WHERE" steht. Offensichtlich werden
die Schlüsselwörter nicht hervorgehoben sobald unmittelbar davor oder
danach ein Anführungszeichen steht.

Ich habe es auch schon mit einer RegEx versucht, da ich aber lànger
SQL-Statements über mehrere Zeilen breche funktioniert das nicht mehr.

Mit "brechen" meine ich sowas:

SELECT id, name
FROM table
WHERE age = ?

Hat jemand einen Tipp für mich?

Beste Grüße,
Tim Erzmann
 

Lesen sie die antworten

#1 Thomas PointedEars Lahn
13/03/2013 - 12:57 | Warnen spam
Tim Erzmann wrote:

Ich wollte schon immer für meine Konfigurationsdateien ein eigenes
Syntaxhighlighting haben. Vor kurzem fand ich heraus, dass das mit
meinem Editor (Quanta 3.5.10) möglich ist. Der Editor làuft unter
FreeBSD 9 und KDE 3.5.10.

Zufàllig fand ich nàmlich die Definitionen in:

~/.kde/share/apps/katepart/syntax/

Bei meiner Suche nach Hilfe um eine solche Datei erstellen zu können,
fand ich diese hilfreiche Seite:

http://kate-editor.org/2005/03/24/w...ting-file/


^^^^
Ist dir ist klar, wie *alt* (in Worten: A-L-T) das ist?

Nach anfànglichen Schwierigkeiten, bin ich jetzt an einem Punkt, an dem
ich nicht mehr weiterkomme und ich Hilfe benötige. Ich habe eine Liste
mit Keywords die ich mit defStyleNum="dsKeyword" hervorheben möchte.
[…]
Beispiel:

"SELECT id, name FROM table WHERE age = ?"

FROM und WHERE werden korrekt hervorgehoben, leider aber nicht SELECT
und ich kann mir darauf keinen Reim machen. Es verhàlt sich auch so,
wenn am Ende des Strings, also "...WHERE" steht. Offensichtlich werden
die Schlüsselwörter nicht hervorgehoben sobald unmittelbar davor oder
danach ein Anführungszeichen steht.

Ich habe es auch schon mit einer RegEx versucht, da ich aber lànger
SQL-Statements über mehrere Zeilen breche funktioniert das nicht mehr.

Mit "brechen" meine ich sowas:

SELECT id, name
FROM table
WHERE age = ?

Hat jemand einen Tipp für mich?



Lass es sein; das ist Zeitverschwendung. Du verwendest veraltete Software,
die folglich nicht zu einem halbwegs sicheren System führen kann. Das
letzte echte Release von Quanta, 3.5.9, gab es am 20. Februar 2008. Aktuell
(stabil) sind FreeBSD 9.1 (4. Dezember 2012) und KDE SC 4.10 (5. Februar
2012) aufwàrts.

Syntax-Highlighting für (My)SQL und andere Sprachen findest Du in vielen
aktuellen Editoren, zum Beispiel mit Eclipse bei der Data Tools Platform
(DTP) sowie Eclipse Colorer, der trotz seines Alters sogar noch mit Eclipse
4.3 M5 làuft.

Vim unterstützt (My)SQL-SHL ebenfalls und hat auch ein konfigurierbares SHL
(siehe syntax/*.vim); Emacs wahrscheinlich auch. Für beide gibt es auch
grafische Frontends. Ich bin damals (ca. 2002) von HomeSite (Windows) zu
Quanta Plus (GNU/Linux, KDE) und von Quanta Plus zu Eclipse (2006) und Vim
(beides unter GNU/Linux und Windows) gewechselt.

Sinnvoller ist es auch, eigene Konfigurationsdateien in einem weithin
unterstützten Format zu halten, da man dann die Tools dafür nutzen kann, die
es dafür schon gibt. Dies gilt sowohl für die Ver- als auch die Bearbeitung
der Eintràge.

PointedEars

Ähnliche fragen