home *** CD-ROM | disk | FTP | other *** search
- TURBO EDITOR MACRO COMPILER (TEMC)
-
-
- In dieser Datei finden Sie Hinweise zur Benutzung von TEMC.EXE, dem Turbo
- Editor Makro Compiler, und eine Darstellung der Turbo-Editor-Makrosprache
- TEML.
-
- Inhalt:
- -------
- 1. Was ist TEMC?
- 2. Kommandozeilenoptionen von TEMC
- 3. TEMC-Syntax
- 4. Vordefinierte Editorbefehle
-
-
- 1. Was ist TEMC?
- ----------------
-
- TEMC.EXE ist ein Compiler für Editormakros in der integrierten Entwicklungs-
- umgebung unter Windows. TEMC erstellt eine Makrodatei, die Editormakros und
- Tastenzuweisungen definiert. Außerdem wird eine Konfigurationsdatei erstellt.
- Diese wird von der IDE gelesen, um die Auswirkungen von Tastaturbefehlen im
- Editor festzulegen.
-
- Jedesmal, wenn in der IDE (über Options/Preferences/Command Set) der alter-
- native Befehlssatz gewählt wird, sucht Turbo Pascal nach der Datei TPWALT.CMD,
- und zwar in dem Verzeichnis, in dem auch TPW.EXE gespeichert ist. Wird diese
- Datei gefunden, liest Turbo sie ein und überschreibt die aktuellen Funktions-
- tastenbelegungen mit den in der Datei enthaltenen Befehlen.
-
- Die in die IDE eingebauten Makrodefinitionen und Tastenzuweisungen sind in der
- Datei TPWALT.TEM enthalten. Sie dient als Beispielmakro und als Grund-
- lage der Editoranpassung.
-
-
- 2. Kommandozeilenoptionen von TEMC
- ----------------------------------
-
- TEMC wird von der DOS-Kommandozeile aus gestartet. Geben Sie den Befehl
-
- temc [-c] <Makrodatei> <Konfigurationsdatei>
-
- ein. Die Erweiterung der Makrodatei ist .TEM, wenn Sie nichts anderes vor-
- geben. Für die Konfigurationsdatei geht TEMC von der Erweiterung .TEM aus.
-
- Die Konfigurationsdatei muß nicht existieren, sie wird dann aber erzeugt. Der
- optionale Parameter -c kann auch als /c angegeben werden. Er kann an jeder
- Position in der Kommandozeile verwendet werden. Benutzen Sie diesen Parameter,
- so werden existierende Kommandotabellen in der Konfigurationsdatei verworfen,
- bevor die Makrodatei bearbeitet wird. Wird der Parameter -c nicht verwendet,
- verbindet TEMC die Tastenzuweisungen aus Konfigurations- und Makrodatei.
-
-
- TEMC-Syntax
- -----------
-
- Die Syntax zur Definition eines Makros sieht so aus:
-
- MACRO <Makroname> <Befehl1>; [ <Befehl2>; ... ] END;
-
- <Makroname> kann jedes gültige C-Symbol sein, <Befehl> der Name eines vordefi-
- nierten Makros oder eines vordefinierten TEMC-Editorbefehls. Eine Tabelle
- dieser Befehle und ihrer Auswirkungen findet sich am Ende dieses Anhangs.
-
- Bei der Definition eines Makros sind folgende Punkte zu beachten:
-
- 1. Eine Anweisung definiert ein benanntes Makro oder eine Tastenzuweisung.
-
- 2. Leerstellen und Zeilenschaltungen können optional verwendet werden.
-
- 3. Kommentare werden (wie in C) in die Symbole /* ... */ eingeschlossen.
-
- 4. Im Unterschied zu C berücksichtigt TEMC Groß- und Kleinschreibung nicht.
-
- 5. Einige Editorbefehle haben eine Syntax, die einem Funktionsaufruf unter C
- mit einem Argument gleichen:
-
- SetMark(5);
-
- In Abhängigkeit vom Befehl ist das Argument entweder eine Dezimal-Integer-
- konstante, eine Zeichenkonstante oder ein literaler String. Sie werden unter
- Verwendung der C-Syntax festgelegt.
-
- Hier das Beispiel einer Makrodefinition (aus TPWALT.TEM):
-
- MACRO MacPageUp
- FixSreenPos;
- PageUp;
- FixCursorPos;
- END;
-
- Die Syntax dür Tastaturzuweisungen lautet
-
- <Tastenfolge>: <Befehl>;
-
- oder
-
- <Tastenfolge>: BEGIN <Befehl1>; [ <Befehl2>; ... ] END;
-
- <Tastenfolge> kann entweder eine Zeichentaste sein, die zusammen mit Ctrl oder
- Alt gedrückt wird, oder eine Folge von Tasten, die durch ein Plus (+) getrennt
- werden. Die Festlegung der Zeichentasten selbst muß unter Berücksichtigung der
- Klein- bzw. Großschreibung vorgenommen werden. Ctrl-k+B ist eine andere Tasten-
- folge als Ctrl-k+b, letztere jedoch identisch mit CTRL-K+b.
-
- Whitespaces zwischen Doppelpunkt und <Tastenfolge> sind erlaubt. Jeder <Befehl>
- kann entweder der Name eines bereits definierten Makros oder eines vordefinier-
- ten Editorbefehls sein.
-
- Einige Tasten können nicht direkt in eine TEMC-Makrodatei eingegeben werden.
- Auf diese Tasten kann aber über ihre Namen nach Maßgabe der folgenden Tabelle
- zugegriffen werden.
-
- Jeder Taste in einer Tastenfolge (außer der ersten) kann ein ^ oder ein @
- vorangestellt werden. Das Zirkumflex (^) zeigt an, daß beim Drücken der Taste
- jede beliebige Kombination von Shift und Ctrl verwendet werden kann. Das
- Zeichen @ bezieht sich dagegen nur auf die Shift-Taste:
-
- Ctrl-k+b legt ein Ctrl-K, gefolgt von einem kleinen b, fest.
-
- Ctrl-k+^b legt ein Ctrl-K, gefolgt von b, B oder Ctrl-B, fest.
-
- Ctrl-k+@b legt ein Ctrl-K, gefolgt von b oder B, fest.
-
- Enter, Return und Spacebar können an jeder beliebigen Position nach der ersten
- Taste einer Tastenfolge auftreten. Das gilt für alle anderen Zeichen nicht.
-
- Tasten werden durch Buchstaben, Ziffern oder Zeichen festgelegt. Ihnen kann
- jeweils ein Ctrl- oder ein Alt- vorangehen. Die folgenden Namen bestimmen
- Tasten, die in der TEMC-Syntax nicht als sie selbst eingegeben werden können.
-
-
- 4. Vordefinierte Editorbefehle
- ------------------------------
-
- TEMC erlaubt die Verwendung eingebauter Editorbefehle und benutzerdefinierter
- Makros auch als Befehle innerhalb von Makros. Dabei dürfen allerdings keine
- Schleifen erzeugt werden, in denen sich zwei Makros gegenseitig aufrufen.
- Beachten Sie, daß einige Befehle aus dem Editor aussteigen und in die IDE
- zurückspringen. Es gibt dann keine Möglichkeit, aus dem Makro heraus wieder in
- den Editor zu gelangen. Ein solcher Befehl muß also der letzte innerhalb eines
- Makros sein. Wird diese Regel bei der Makrodefinition nicht beachtet, erhalten
- Sie eine Fehlermeldung.
-
- Es folgt eine Liste aller vordefinierten TEMC-Editorbefehle. Danach folgen
- Befehle, die aus dem Editor aussteigen.
-
-
- BackspaceDelete Löscht das Zeichen links vom Cursor.
-
- BottomOfScreen Bewegt den Cursor in die letzte Zeile des aktuellen
- Fensters. Die Spaltenposition bleibt unverändert.
-
- CenterFixScreenPos Paßt die Bildschirmanzeige so an, daß der Cursor
- sichtbar wird. Benutzen Sie diese Anpassung, wenn
- die Cursorposition nicht im sichtbaren Bereich
- liegen könnte. Anschließend befindet sich der
- Cursor ungefähr in der Mitte des Bildschirms.
-
- CopyBlock Existiert ein gültiger markierter Textblock, wird
- dieser an die aktuelle Cursorposition kopiert.
-
- CursorCharLeft Bewegt den Cursor ein Zeichen nach links.
- Tabulatoren und das Zeilenende der vorherigen Zeile
- werden übersprungen.
-
- CursorCharRight Bewegt den Cursor ein Zeichen nach rechts.
- Tabulatoren und das Zeilenende der aktuellen Zeile
- werden übersprungen.
-
- CursorDown Cursor eine Zeile nach unten bewegen.
-
- CursorLeft Cursor eine Spalte nach links bewegen.
-
- CursorRight Cursor eine Spalte nach rechts bewegen.
-
- CursorSwitchedLeft Wie CursorLeft, berücksichtigt aber Tabulatorein-
- stellungen (vgl. SetCursorThroughTabMode).
-
- CursorSwitchedRight Wie CursorRight, berücksichtigt aber Tabulatorein-
- stellungen (vgl. SetCursorThroughTabMode).
-
- CursorUp Bewegt den Cursor eine Zeile nach oben
-
- DeleteBlock Existiert ein gültig markierter Textblock, wird
- er gelöscht.
-
- DeleteChar Löscht das Zeichen auf dem der Cursor steht.
-
- DeleteLine Löscht die aktuelle Zeile.
-
- DeleteToEOL Löscht alle Zeichen aus der aktuellen Zeile, es
- bleibt eine Leerzeile zurück.
-
- DeleteWord Löscht von der Cursorposition bis zum nächsten
- Wort.
-
- EndCursor Bewegt den Cursor ans Ende des Dateipuffers.
-
- FixCursorPos Stellt sicher, daß der Cursorwert eine Zeile
- zwischen 1 und der Anzahl von Zeilen im Puffer dar-
- stellt und daß die Spalte größer als 0 ist. Ist die
- Option »Cursor through tab« nicht gesetzt, wird der
- Cursor nicht in die Mitte eines Tabulators gesetzt.
-
- FixScreenPos Paßt die Bildschirmanzeige an, um den Cursor sicht-
- bar zu machen.
-
- FullPaintScreen Zeichnet das gesamte Fenster neu, ohne die alten
- Inhalte zu übernehmen.
-
- HideBlock Setzt ein Flag, das anzeigt, daß der ausgewählte
- Block nicht markiert werden soll.
-
- HighlightBlock Setzt ein Flag, das bei gültigen Textmarkierungen
- für die Hervorhebung der markierten Blöcke sorgt.
-
- HomeCursor Bewegt den Cursor an den Anfang des Dateipuffers.
-
- IndentBlock Fügt ein Leerzeichen am Anfang jeder Zeile des mar-
- kierten (ausgewählten) Textes ein.
-
- InsertText Fügt den literalen String im Puffer an der
- aktuellen Cursorposition ein. Die Aufrufsyntax
- lautet InsertText(String)
-
- LeftOfLine Bewegt den Cursor an den Anfang der aktuellen
- Zeile.
-
- LiteralChar Fügt ein Zeichen an der aktuellen Cursorposition
- ein, ohne daß Zeichen wie Tabulatoren, Zeichen-
- schaltungen usw. gesondert bearbeitet werden. Die
- Syntax lautet LiteralChar(c), wobei c ein Zeichen
- oder ein Integerwert sein kann.
-
- MarkBufModified Setzt ein Flag, das anzeigt, daß der Inhalt des
- Puffers nicht mehr mit der entsprechenden Datei auf
- dem Datenträger übereinstimmt.
-
- MarkBufUnModified Löscht ein Flag und zeigt so an, daß von der Iden-
- tität von Puffer und der Datei auf dem Datenträger
- ausgegangen werden kann.
-
- MatchPairBackward Wie MatchPairForward. Allerdings wird ausgehend von
- einem ' oder einem " rückwärts gesucht.
-
- MatchPairForward Steht der Cursor auf einem der Zeichen (, ), {, },
- [, ] oder auf einem der ersten Zeichen der Zeichen-
- paare /* oder *,/ wird in der entsprechenden Rich-
- tung nach einem passenden Begrenzer gesucht. Steht
- der Cursor auf einem ' oder ", wird vorwärts ge-
- sucht. Der Cursor wird auf die nächste Entsprechung
- gesetzt, wenn eine gefunden werden kann.
-
- MoveBlock Wie CopyBlock, jedoch wird das Original des
- ausgewählten Textes gelöscht.
-
- MoveToBlockBegin Bewegt den Cursor an den Anfang des ausgewählten
- Textes.
-
- MoveToBlockEnd Bewegt den Cursor ans Ende des ausgewählten Textes.
-
- MoveToMark Bewegt den Cursor an die Position, die durch den
- Befehl SetMark(n) gesichert wurde. Verwenden Sie
- die Syntax MoveToMark(n). n ist eine einstellige
- Zahl zwischen 0 und 9.
-
- MoveToPrevPos Bewegt den Cursor an die durch »previous position
- marker« bezeichnete Position.
-
- MoveToTempPos Bewegt den Cursor zu einer gesicherten temporären
- Markierung.
-
- OutdentBlock Löscht führende Leerzeichen vom Anfang jeder Zeile
- des markierten (ausgewählten) Textes.
-
- PageDown Bewegt den Cursor um die Anzahl der Zeilen im
- Fenster nach unten.
-
- PageScreenDown Bildlauf um die Anzahl der Zeilen im Fenster nach
- unten. Die Cursorposition bleibt unverändert.
-
- PageScreenUp Bildlauf um die Anzahl der Zeilen im Fenster nach
- oben. Die Cursorposition bleibt unverändert.
-
- PageUp Bewegt den Cursor um die Anzahl der Zeilen im
- Fenster nach oben.
-
- PaintScreen Zeichnet das Fenster neu und geht dabei davon aus,
- daß der Bildschirm die letzten Änderungen durch den
- Editor richtig dargestellt werden.
-
- ReDo Führt eine Wiederholung durch. Die genauen Auswir-
- kungen hängen von den Parametereinstellungen ab.
-
- RightOfLine Bewegt den Cursor an das Ende der Zeile.
-
- RightOfWord Bewegt den Cursor in die dem Ende eines Wortes fol-
- gende Spalte.
-
- ScrollScreenDown Führt einen Bildlauf um eine Zeile nach unten
- durch, ohne die Cursorposition zu verändern.
-
- ScrollScreenUp Führt einen Bildlauf um eine Zeile nach oben durch,
- ohne die Cursorposition zu verändern.
-
- SetAutoIndent Schaltet die Option Auto Indent ein.
-
- SetAutoOutdent Schaltet die Option Backspace Unindents ein.
-
- SetBlockBeg Setzt das erste Zeichen des ausgewählten Textes als
- aktuelle Cursorposition.
-
- SetBlockEnd Setzt das letzte Zeichen des ausgewählten Textes
- als aktuelle Cursorposition.
-
- SetCursorThroughTabMode Schaltet die Option »Cursor Through Tabs« ein.
-
- SetInsertMode Schaltet den Einfügemodus ein.
-
- SetMark Setzt eine Markierung auf das Zeichen der aktuellen
- Cursorposition, so daß ein nachfolgender Befehl
- MoveToMark(n) den Cursor wiederherstellen kann.
- Verwenden Sie die Syntax SetMark(n). n ist eine
- einstellige Zahl zwischen 0 und 9.
-
- SetOptimalFillMode Schaltet die Option »Set Optimal Fill« ein.
-
- SetPrevPos Setzt eine Markierung (»previous position marker«)
- auf die aktuelle Cursorposition. Diese Markierung
- wird nur durch einen Aufruf von SetPrevPos oder
- SwapPrevPos verändert.
-
- SetTabbingMode Schaltet die Option »Use Tab Char« ein.
-
- SetTempPos Sichert die Cursorposition in einer temporären Mar-
- kierung, die von einigen internen Editorbefehlen
- verwendet wird. In benutzerdefinierten Makros
- sollte stattdessen SetMark verwendet wirden.
-
- SmartRefreshScreen Stellt das Fenster neu dar und übergeht dabei alle
- Teile, die der Editor als unverändert seit der
- letzten Neudarstellung meldet.
-
- SmartTab Fügt Leerzeichen bzw. Tabulatoren entsprechend der
- Einstellung der Tabulatorbreite in »Use Tab Char«
- ein.
-
- SwapPrevPos Tauscht den Wert des Cursors und des »previous
- position marker« gegeneinander aus.
-
- ToggleAutoIndent Schaltet den Status der Option »Auto Indent« um.
-
- ToggleAutoOutdent Schaltet den Status der Option »Backspace
- Unindents« um.
-
- ToggleCursorThroughTabMode Schaltet den Status der Option »Cursor Through
- Tabs« um.
-
- ToggleHideBlock Schaltet den Status des Flags des markierten
- (ausgewählten) Textes um.
-
- ToggleInsert Schaltet den Status der Option Insert/Overwrite um.
-
- ToggleOptimalFillMode Schaltet den Status der Option »Optimal Fill« um.
-
- ToggleTabbingMode Schaltet den Status der Option »Use Tab Char« um.
-
- TopOfScreen Bewegt den Cursor in die erste Zeile des aktuell
- dargestellten Fensters. Die Spalte bleibt unverän-
- dert.
-
- UnDo Führt eine Undo-Operation (Rückgängig machen)
- durch. Die Auswirkungen hängen von den Parameter-
- einstellungen ab.
-
- WordLeft Bewegt den Cursor auf den Anfang des vorhergehenden
- Wortes bzw. das Ende der vorhergehenden Zeile, je
- nach dem, was zuerst gefunden wird.
-
- WordRight Bewegt den Cursor auf den Anfang des nächsten Wor-
- tes bzw. das Ende der aktuellen Zeile, je nach dem,
- was zuerst gefunden wird.
-
-
-
- Die folgenden Befehle verursachen den Ausstieg aus dem Editor und dürfen des-
- halb nur als letzter Befehl in einem Makro auftauchen:
-
- ClipClear Löscht ausgewählten Text.
-
- ClipCopy Kopiert ausgewählten Text in die Zwischenablage.
-
- ClipCut Verschiebt ausgewählten Text in die Zwischenablage.
-
- ClipPaste Schreibt den Inhalt der Zwischenablage an der
- Cursorposition in den Puffer.
-
- CompilerOptions Kopiert die aktuellen Compiler-Optionen an den
- Anfang des Textes im Editorpuffer.
-
- GetFindString Öffnet das Dialogfenster für Such-Operationen.
-
- QuoteChar Das folgende Steuerzeichen wird in den Editor-
- puffer eingefügt.
-
- ReadBlock Öffnet ein Dialogfenster, das die Eingabe eines
- Dateinamens erwartet. Die Datei wird an der
- aktuellen Cursorposition in den Puffer gelesen
- und als Textblock markiert.
-
- RepeatSearch Wiederholt eine Suche mit den vorhergehenden
- Parametern.
-
- Replace Öffnet ein Dialogfenster für die Funktion Replace
- (Ersetzen).
-
- SaveFile Sichert den aktuellen Editorpuffer.
-
- ShiftOff Beendet den Textmarkierungsmodus und macht die
- Markierung ausgewählten Textes wieder rückgängig.
-
- ShiftOffWithCopy Kopiert ausgewählten Text in die Zwischenablage
- und beendet den Textmarkierungsmodus.
-
- ShiftOffWithCut Verschiebt ausgewählten Text in die Zwischenablage
- und beendet den Textmarkierungsmodus.
-
- ShiftOn Schaltet den Textmarkierungsmodus ein.
-
- ShowLastError Zeigt den zuletzt aufgetreten Compilierungs-
- fehler erneut an.
-
- ToggleAutoIndent Schaltet den Einrückmodus um.
-
- ToggleAutoOutdent Schaltet den Ausrückmodus (mittels Backspace) um.
-
- ToggleCursorThroughTabMode Schaltet die Option um, die bestimmt, wie der
- Cursor sich verhält, wenn er über ein Tab-Zeichen
- bewegt wird.
-
- ToggleOptimalFillMode Schaltet die Verwendung von Tab/Leerzeichen um.
-
- ToggleTabbingMode Schaltet zwischen Einfügen von Tabulator- oder
- Leerzeichen um.
-
- WriteBlock Öffnet ein Dialogfenster, in dem die Angabe einer
- Datei erwartet wird, in die dann der ausgewählte
- Text geschrieben wird.
-
-