Basic Makro - Syntax Highlighting

Hallo *,

wen es interessiert:

+ Das Makro "SyntaxHighlighting.bas" basiert auf der Nutzung der BasicMakro-Funktionalität 'replaceAll' in Kombination mit regulären Ausdrücken.
+ Das Eingabe-/Ausgabe-Medium ist eine LibreOffice WRITER-Datei.
+ Zur Syntax-Kolorierung von 2500 BasicMakroCode-Zeilen werden zirka 8 Sekunden benötigt.
+ Das Makro beinhaltet eine sehr ausführliche Dokumentation.

Entstanden ist die Idee zu diesem Makro aus anfänglichem "ein wenig experimentieren/spielen" mit der BasicMakro-Funktionalität 'replaceAll', beschrieben in:

BASIC-Makros für OpenOffice und LibreOffice
4.7.3. Erweitertes Suchen und Ersetzen

http://www.uni-due.de/~abi070/count.php?id=OOME_3_0_deutsch.pdf [Pitonyak/Lenhardt 20.02.2018 ]

Diese Meinung muss man sicherlich nicht teilen, aber ich persönlich finde es schon erstaunlich, wie (sehr) viel man da mit ein paar regulären Ausdrücken, in der richtigen Reihenfolge, erreichen kann.

[1] Algorithmus

1 Dokumentzeilen
1.1 Alle rechtsbündigen Leerzeichen entfernen
1.2 Schriftart, Schriftgröße und Schriftfarbe, alles auf GRÜN, setzen
2 Ziffern
2.1 Ziffern färben
2.2 Ziffern in Variablen rückfärben
3 Schlüsselwörter
3.1 Schlüsselwörter färben
4 Nicht-alphanumerische Zeichen
4.1 Nicht-alphanumerischen Zeichen färben
5 Zeichenketten
5.1 "-Folgen färben
5.2 Nicht leere Zeichenketten "..." färben
6 Kommentarzeilen
6.1 "'"-Kommentarzeilen färben
6.2 "REM"-Kommentarzeilen färben
6.3 '" und "' rückfärben (wenn optioniert)

[2] Anwendung

1. Neues WRITER-Dokument öffnen.
2. Zu bearbeitenden BasicMakroCode in das WRITER-Dokument kopieren.
3. Makro 'SyntaxHighlighting' starten.

[3] Nutzbare Steuer-Parameter im Makro-Abschnitt "BENUTZERBEREICH"

1. [ ja | nein ] Groß-Klein-Schreibung bei Schlüsselwörtern beachten ?
2. [ ja | nein ] Zeitmessung anzeigen ?
3. [ ja | nein ] Zusätzlich RegExp ".*(""'|'""|'.'|.'.).*" anwenden ?
4. Andere Schriftart als "Liberation Mono".
5. Andere Schriftgröße als "8".
6. [ ja | nein ] Benutzer-definierte Farben verwenden ?

[4] Download-Link

https://www.magentacloud.de/share/vtd8687phn

beinhaltend:

1. Makro

+ SyntaxHighlighting.txt

2. Anwendungsbeispiele

+ SyntaxHighlighting - Parameter IDE-Standard.odt
+ SyntaxHighlighting - Parameter benutzerdefiniert.odt
+ CoronaNewsV2 - Parameter IDE-Standard.odt
+ CoronaNewsV2 - Parameter benutzerdefiniert.odt

Feedback, Hinweise auf Fehler, Anregungen sind willkommen ...

Viele Grüße
Hans-Werner :-))

Hallo Hans-Werner,

das bedeutet, dass mit dem Makro für mich die umständliche Prozedur
entfallen würde, jedes Makro in z.B. das Base-Handbuch einzulesen und
dann die Zeilen einzeln nach ein festgelegten Vorlage zu bearbeiten?

Gruß

Robert

Hallo Robert,

im Detail verstehe ich Deine Arbeitsschritte nicht wirklich, aber egal.

Mein Makro benutzt als Eingabe-/Ausgabe-Medium eine geöffnete WRITER-Datei (eine neue oder eine bereits existierende) und erwartet dort BasicMakroCode.

In der konkreten Anwendung kannst Du also so vorgehen:

1. Aus der Basic-IDE oder einer anderen Datei, beispielsweise WRITER, den BasicMakroCode (mit der Maus via Zwischenablage) kopieren und einfügen.
2. Das Makro starten.
3. Den nun kolorierten BasicMakroCode (mit der Maus via Zwischenablage) kopieren und einfügen, wo auch immer Du willst.

Das Makro interessiert sich nur für die WRITER-Datei mit dem zu kolorierenden BasicMakroCode, benötigt aber wegen "ThisComponent" den Fokus auf diese Makro-Datei - bevor es gestartet wird.

Wenn Du möchtest, kannst Du mir gerne ein paar schön umfangreiche und "gemeine" ("gemein" im Sinne von: viele Kombinationen aus " und ' im MakroCode enthahltend) Makros senden, womit ich dann wunderbar testen könnte, ob die regulären Ausdrücke "einen guten Job" machen oder "das Handtuch werfen" ...

Zusendung, wenn möglich an die Liste und mit CC: an mich. So können andere Interessierte zumindest die fachlichen Aspekte mitlesen.

Zusätzlich zu der in meiner letzten Mail erwähnten "Farbsuche", wodurch das Problem - Kombination von Anführungszeichen " und einfachen Anführungszeichen ' im BasicMakroCode - wohl recht gut eingedämmt werden kann, habe ich noch eine weitere Idee zur verbesserten Schlüsselwort-Erkennung:

Bis jetzt kann man nur "Groß-Klein-Schreibung" ein- oder ausschalten. Da Du, wie ich im dBase-Handbuch gesehen habe, Schlüsselwörter grundsätzlich groß schreibst, könnte es zu Fehl-Findungen kommen von besonders kurzen Schlüsselwörtern in anderem Kontext, da ja in Deinem Fall "Groß-Klein-Schreibung" abgeschaltet sein müsste - reguläre Ausdrücke sind da ziemlich erbarmungslos. Aber da kann man noch etwas verbessern:

Bei eingeschalteter Groß-Klein-Schreibung kann man auch noch "fein" auswählen, wenn man möchte, zwischen (nur) [:lower:] oder (nur) [:upper:]. Damit könnte man dann ganz gezielt nach Schlüsselwörtern suchen, die nur groß oder nur klein geschrieben sind.

Wie das alles konkret im BasicMakroCode umzusetzen ist, muss ich erst mal sehen. Es kann also etwas Zeit dauern, bis ich ein "SyntaxHighlightingV2" anbieten kann.

Bis dahin,
viele Grüße
Hans-Werner :-))

------ Originalnachricht ------

Hallo Hans-Werner,

teste doch einmal an dem Code von
http://www.familiegrosskopf.de/robert/base_beispiele/Beispiel_Combobox_Listfeld_Firebird.odb

Gerade die Geschichte mit den ' innerhalb von Text kommt ja bei
Datenbanken häufiger vor, weil in einfache Anführungszeichen die
abzufragenden Inhalte (Text) gesetzt werden.

Schicke mir einmal eine so erzeugte Writer-Datei, damit ich sehen kann,
ob ich so etwas gut weiter nutzen kann. Es geht vor allem darum, den
Code demnächst in einem Rutsch anzugeben wie in dem Buch zu den
Beispieldatenbanken. Dann füge ich über die Nummerierung Zeilennummern
davor und beziehe mich mit dem Text auf die Zeilennummern.

Gruß

Robert

Hallo Robert,

mache ich gerne, aber der Link liefert nur ein "Objekt nicht gefunden!".

Grüße
Hans-Werner :-))

------ Originalnachricht ------

mache ich gerne, aber der Link liefert nur ein "Objekt nicht gefunden!".

Doch. Die Datei gibt es.
Versuch es mal über den folgenden Link:
<
https://www.familiegrosskopf.de/robert/base_beispiele/Beispiel_Combobox_Listfeld_Firebird.odb

Evtl. möchte Dein Browser ja einfach keine unverschlüsselten Seiten öffnen?

- --

MfG Richi

Hallo Hans-Werner,

mache ich gerne, aber der Link liefert nur ein "Objekt nicht gefunden!".

Wird der Link bei Dir umgebrochen?
Wenn ich auf das Klicke, was deine Mail an die Liste enthält, dann wird
die Datei bei mir zum Download angeboten.

Du kannst auch auf meiner Homepage auf LibreOffice → Beispieldatenbanken
gehen. Da steht die Datei in dem Kasten "Beispieldatenbanken" zum
Download bereit.

Gruß

Robert

So isser nun mal der FireFox ...

Danke für den Hinweis ... so funktioniert der Link.

Grüße
Hans-Werner :-))

------ Originalnachricht ------

Richi hat geholfen:

Das fehlende s bei http://www.familiegrosskopf.de/robert/base_beispiele/Beispiel_Combobox_Listfeld_Firebird.odb hat den FireFox gestört.

Download hat geklappt ...

------ Originalnachricht ------

Hallo Richard,

Doch. Die Datei gibt es.
Versuch es mal über den folgenden Link:
<
https://www.familiegrosskopf.de/robert/base_beispiele/Beispiel_Combobox_Listfeld_Firebird.odb

Ich habe mir so etwas ähnliches gedacht, als ich den Link sah und dann
wusste, dass die Seite ja selbst über https zu erreichen ist. Ich habe
jetzt schnell die Scripte in jedem Verzeichnis angepasst, aus dem direkt
die Dateien ausgelesen werden. Jetzt werden auch die https-Links direkt
angegeben.

Gruß

Robert