home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / pascal / tpw / doc / temc.doc < prev    next >
Text File  |  1991-05-20  |  20KB  |  451 lines

  1.                        TURBO EDITOR MACRO COMPILER (TEMC)
  2.  
  3.  
  4. In dieser Datei finden Sie Hinweise zur Benutzung von TEMC.EXE, dem Turbo
  5. Editor Makro Compiler, und eine Darstellung der Turbo-Editor-Makrosprache
  6. TEML.
  7.  
  8. Inhalt:
  9. -------
  10. 1. Was ist TEMC?
  11. 2. Kommandozeilenoptionen von TEMC
  12. 3. TEMC-Syntax
  13. 4. Vordefinierte Editorbefehle
  14.  
  15.  
  16. 1. Was ist TEMC?
  17. ----------------
  18.  
  19. TEMC.EXE ist ein Compiler für Editormakros in der integrierten Entwicklungs-
  20. umgebung unter Windows. TEMC erstellt eine Makrodatei, die Editormakros und 
  21. Tastenzuweisungen definiert. Außerdem wird eine Konfigurationsdatei erstellt.
  22. Diese wird von der IDE gelesen, um die Auswirkungen von Tastaturbefehlen im 
  23. Editor festzulegen.
  24.  
  25. Jedesmal, wenn in der IDE (über Options/Preferences/Command Set) der alter-
  26. native Befehlssatz gewählt wird, sucht Turbo Pascal nach der Datei TPWALT.CMD,
  27. und zwar in dem Verzeichnis, in dem auch TPW.EXE gespeichert ist. Wird diese
  28. Datei gefunden, liest Turbo sie ein und überschreibt die aktuellen Funktions-
  29. tastenbelegungen mit den in der Datei enthaltenen Befehlen.
  30.  
  31. Die in die IDE eingebauten Makrodefinitionen und Tastenzuweisungen sind in der
  32. Datei TPWALT.TEM enthalten. Sie dient als Beispielmakro und als Grund-
  33. lage der Editoranpassung.
  34.  
  35.  
  36. 2. Kommandozeilenoptionen von TEMC
  37. ----------------------------------
  38.  
  39. TEMC wird von der DOS-Kommandozeile aus gestartet. Geben Sie den Befehl
  40.  
  41.   temc [-c] <Makrodatei> <Konfigurationsdatei>
  42.  
  43. ein. Die Erweiterung der Makrodatei ist .TEM, wenn Sie nichts anderes vor-
  44. geben. Für die Konfigurationsdatei geht TEMC von der Erweiterung .TEM aus.
  45.  
  46. Die Konfigurationsdatei muß nicht existieren, sie wird dann aber erzeugt. Der
  47. optionale Parameter -c kann auch als /c angegeben werden. Er kann an jeder
  48. Position in der Kommandozeile verwendet werden. Benutzen Sie diesen Parameter,
  49. so werden existierende Kommandotabellen in der Konfigurationsdatei verworfen,
  50. bevor die Makrodatei bearbeitet wird. Wird der Parameter -c nicht verwendet,
  51. verbindet TEMC die Tastenzuweisungen aus Konfigurations- und Makrodatei.
  52.  
  53.  
  54. TEMC-Syntax
  55. -----------
  56.  
  57. Die Syntax zur Definition eines Makros sieht so aus:
  58.  
  59.   MACRO <Makroname> <Befehl1>; [ <Befehl2>; ... ] END;
  60.  
  61. <Makroname> kann jedes gültige C-Symbol sein, <Befehl> der Name eines vordefi-
  62. nierten Makros oder eines vordefinierten TEMC-Editorbefehls. Eine Tabelle
  63. dieser Befehle und ihrer Auswirkungen findet sich am Ende dieses Anhangs.
  64.  
  65. Bei der Definition eines Makros sind folgende Punkte zu beachten:
  66.  
  67. 1. Eine Anweisung definiert ein benanntes Makro oder eine Tastenzuweisung.
  68.  
  69. 2. Leerstellen und Zeilenschaltungen können optional verwendet werden.
  70.  
  71. 3. Kommentare werden (wie in C) in die Symbole /* ... */ eingeschlossen.
  72.  
  73. 4. Im Unterschied zu C berücksichtigt TEMC Groß- und Kleinschreibung nicht.
  74.  
  75. 5. Einige Editorbefehle haben eine Syntax, die einem Funktionsaufruf unter C
  76.    mit einem Argument gleichen:
  77.  
  78.       SetMark(5);
  79.  
  80.    In Abhängigkeit vom Befehl ist das Argument entweder eine Dezimal-Integer-
  81.    konstante, eine Zeichenkonstante oder ein literaler String. Sie werden unter
  82.    Verwendung der C-Syntax festgelegt.
  83.  
  84. Hier das Beispiel einer Makrodefinition (aus TPWALT.TEM):
  85.  
  86.   MACRO MacPageUp
  87.         FixSreenPos;
  88.         PageUp;
  89.         FixCursorPos;
  90.   END;
  91.  
  92. Die Syntax dür Tastaturzuweisungen lautet
  93.  
  94.   <Tastenfolge>: <Befehl>;
  95.  
  96. oder
  97.  
  98.   <Tastenfolge>: BEGIN <Befehl1>; [ <Befehl2>; ... ] END;
  99.  
  100. <Tastenfolge> kann entweder eine Zeichentaste sein, die zusammen mit Ctrl oder
  101. Alt gedrückt wird, oder eine Folge von Tasten, die durch ein Plus (+) getrennt
  102. werden. Die Festlegung der Zeichentasten selbst muß unter Berücksichtigung der
  103. Klein- bzw. Großschreibung vorgenommen werden. Ctrl-k+B ist eine andere Tasten-
  104. folge als Ctrl-k+b, letztere jedoch identisch mit CTRL-K+b.
  105.  
  106. Whitespaces zwischen Doppelpunkt und <Tastenfolge> sind erlaubt. Jeder <Befehl>
  107. kann entweder der Name eines bereits definierten Makros oder eines vordefinier-
  108. ten Editorbefehls sein.
  109.  
  110. Einige Tasten können nicht direkt in eine TEMC-Makrodatei eingegeben werden.
  111. Auf diese Tasten kann aber über ihre Namen nach Maßgabe der folgenden Tabelle
  112. zugegriffen werden.
  113.  
  114. Jeder Taste in einer Tastenfolge (außer der ersten) kann ein ^ oder ein @
  115. vorangestellt werden. Das Zirkumflex (^) zeigt an, daß beim Drücken der Taste
  116. jede beliebige Kombination von Shift und Ctrl verwendet werden kann. Das
  117. Zeichen @ bezieht sich dagegen nur auf die Shift-Taste:
  118.  
  119. Ctrl-k+b legt ein Ctrl-K, gefolgt von einem kleinen b, fest.
  120.  
  121. Ctrl-k+^b legt ein Ctrl-K, gefolgt von b, B oder Ctrl-B, fest.
  122.  
  123. Ctrl-k+@b legt ein Ctrl-K, gefolgt von b oder B, fest.
  124.  
  125. Enter, Return und Spacebar können an jeder beliebigen Position nach der ersten
  126. Taste einer Tastenfolge auftreten. Das gilt für alle anderen Zeichen nicht.
  127.  
  128. Tasten werden durch Buchstaben, Ziffern oder Zeichen festgelegt. Ihnen kann
  129. jeweils ein Ctrl- oder ein Alt- vorangehen. Die folgenden Namen bestimmen
  130. Tasten, die in der TEMC-Syntax nicht als sie selbst eingegeben werden können.
  131.  
  132.  
  133. 4. Vordefinierte Editorbefehle
  134. ------------------------------
  135.  
  136. TEMC erlaubt die Verwendung eingebauter Editorbefehle und benutzerdefinierter
  137. Makros auch als Befehle innerhalb von Makros. Dabei dürfen allerdings keine
  138. Schleifen erzeugt werden, in denen sich zwei Makros gegenseitig aufrufen.
  139. Beachten Sie, daß einige Befehle aus dem Editor aussteigen und in die IDE
  140. zurückspringen. Es gibt dann keine Möglichkeit, aus dem Makro heraus wieder in
  141. den Editor zu gelangen. Ein solcher Befehl muß also der letzte innerhalb eines
  142. Makros sein. Wird diese Regel bei der Makrodefinition nicht beachtet, erhalten
  143. Sie eine Fehlermeldung.
  144.  
  145. Es folgt eine Liste aller vordefinierten TEMC-Editorbefehle. Danach folgen
  146. Befehle, die aus dem Editor aussteigen.
  147.  
  148.  
  149. BackspaceDelete             Löscht das Zeichen links vom Cursor.
  150.  
  151. BottomOfScreen              Bewegt den Cursor in die letzte Zeile des aktuellen
  152.                             Fensters. Die Spaltenposition bleibt unverändert.
  153.  
  154. CenterFixScreenPos          Paßt die Bildschirmanzeige so an, daß der Cursor
  155.                             sichtbar wird. Benutzen Sie diese Anpassung, wenn
  156.                             die Cursorposition nicht im sichtbaren Bereich
  157.                             liegen könnte. Anschließend befindet sich der
  158.                             Cursor ungefähr in der Mitte des Bildschirms.
  159.  
  160. CopyBlock                   Existiert ein gültiger markierter Textblock, wird
  161.                             dieser an die aktuelle Cursorposition kopiert.
  162.  
  163. CursorCharLeft              Bewegt den Cursor ein Zeichen nach links.
  164.                             Tabulatoren und das Zeilenende der vorherigen Zeile
  165.                             werden übersprungen.
  166.  
  167. CursorCharRight             Bewegt den Cursor ein Zeichen nach rechts.
  168.                             Tabulatoren und das Zeilenende der aktuellen Zeile
  169.                             werden übersprungen.
  170.  
  171. CursorDown                  Cursor eine Zeile nach unten bewegen.
  172.  
  173. CursorLeft                  Cursor eine Spalte nach links bewegen.
  174.  
  175. CursorRight                 Cursor eine Spalte nach rechts bewegen.
  176.  
  177. CursorSwitchedLeft          Wie CursorLeft, berücksichtigt aber Tabulatorein-
  178.                             stellungen (vgl. SetCursorThroughTabMode).
  179.  
  180. CursorSwitchedRight         Wie CursorRight, berücksichtigt aber Tabulatorein-
  181.                             stellungen (vgl. SetCursorThroughTabMode).
  182.  
  183. CursorUp                    Bewegt den Cursor eine Zeile nach oben
  184.  
  185. DeleteBlock                 Existiert ein gültig markierter Textblock, wird
  186.                             er gelöscht.
  187.  
  188. DeleteChar                  Löscht das Zeichen auf dem der Cursor steht.
  189.  
  190. DeleteLine                  Löscht die aktuelle Zeile.
  191.  
  192. DeleteToEOL                 Löscht alle Zeichen aus der aktuellen Zeile, es
  193.                             bleibt eine Leerzeile zurück.
  194.  
  195. DeleteWord                  Löscht von der Cursorposition bis zum nächsten
  196.                             Wort.
  197.  
  198. EndCursor                   Bewegt den Cursor ans Ende des Dateipuffers.
  199.  
  200. FixCursorPos                Stellt sicher, daß der Cursorwert eine Zeile
  201.                             zwischen 1 und der Anzahl von Zeilen im Puffer dar-
  202.                             stellt und daß die Spalte größer als 0 ist. Ist die
  203.                             Option »Cursor through tab« nicht gesetzt, wird der
  204.                             Cursor nicht in die Mitte eines Tabulators gesetzt.
  205.  
  206. FixScreenPos                Paßt die Bildschirmanzeige an, um den Cursor sicht-
  207.                             bar zu machen.
  208.  
  209. FullPaintScreen             Zeichnet das gesamte Fenster neu, ohne die alten
  210.                             Inhalte zu übernehmen.
  211.  
  212. HideBlock                   Setzt ein Flag, das anzeigt, daß der ausgewählte
  213.                             Block nicht markiert werden soll.
  214.  
  215. HighlightBlock              Setzt ein Flag, das bei gültigen Textmarkierungen
  216.                             für die Hervorhebung der markierten Blöcke sorgt.
  217.  
  218. HomeCursor                  Bewegt den Cursor an den Anfang des Dateipuffers.
  219.  
  220. IndentBlock                 Fügt ein Leerzeichen am Anfang jeder Zeile des mar-
  221.                             kierten (ausgewählten) Textes ein.
  222.  
  223. InsertText                  Fügt den literalen String im Puffer an der
  224.                             aktuellen Cursorposition ein. Die Aufrufsyntax
  225.                             lautet InsertText(String)
  226.  
  227. LeftOfLine                  Bewegt den Cursor an den Anfang der aktuellen
  228.                             Zeile.
  229.  
  230. LiteralChar                 Fügt ein Zeichen an der aktuellen Cursorposition
  231.                             ein, ohne daß Zeichen wie Tabulatoren, Zeichen-
  232.                             schaltungen usw. gesondert bearbeitet werden. Die
  233.                             Syntax lautet LiteralChar(c), wobei c ein Zeichen
  234.                             oder ein Integerwert sein kann.
  235.  
  236. MarkBufModified             Setzt ein Flag, das anzeigt, daß der Inhalt des
  237.                             Puffers nicht mehr mit der entsprechenden Datei auf
  238.                             dem Datenträger übereinstimmt.
  239.  
  240. MarkBufUnModified           Löscht ein Flag und zeigt so an, daß von der Iden-
  241.                             tität von Puffer und der Datei auf dem Datenträger
  242.                             ausgegangen werden kann.
  243.  
  244. MatchPairBackward           Wie MatchPairForward. Allerdings wird ausgehend von
  245.                             einem ' oder einem " rückwärts gesucht.
  246.  
  247. MatchPairForward            Steht der Cursor auf einem der Zeichen (, ), {, },
  248.                             [, ] oder auf einem der ersten Zeichen der Zeichen-
  249.                             paare /* oder *,/ wird in der entsprechenden Rich-
  250.                             tung nach einem passenden Begrenzer gesucht. Steht
  251.                             der Cursor auf einem ' oder ", wird vorwärts ge-
  252.                             sucht. Der Cursor wird auf die nächste Entsprechung
  253.                             gesetzt, wenn eine gefunden werden kann.
  254.  
  255. MoveBlock                   Wie CopyBlock, jedoch wird das Original des
  256.                             ausgewählten Textes gelöscht.
  257.  
  258. MoveToBlockBegin            Bewegt den Cursor an den Anfang des ausgewählten
  259.                             Textes.
  260.  
  261. MoveToBlockEnd              Bewegt den Cursor ans Ende des ausgewählten Textes.
  262.  
  263. MoveToMark                  Bewegt den Cursor an die Position, die durch den
  264.                             Befehl SetMark(n) gesichert wurde. Verwenden Sie
  265.                             die Syntax MoveToMark(n). n ist eine einstellige
  266.                             Zahl zwischen 0 und 9.
  267.  
  268. MoveToPrevPos               Bewegt den Cursor an die durch »previous position
  269.                             marker« bezeichnete Position.
  270.  
  271. MoveToTempPos               Bewegt den Cursor zu einer gesicherten temporären
  272.                             Markierung.
  273.  
  274. OutdentBlock                Löscht führende Leerzeichen vom Anfang jeder Zeile
  275.                             des markierten (ausgewählten) Textes.
  276.  
  277. PageDown                    Bewegt den Cursor um die Anzahl der Zeilen im
  278.                             Fenster nach unten.
  279.  
  280. PageScreenDown              Bildlauf um die Anzahl der Zeilen im Fenster nach
  281.                             unten. Die Cursorposition bleibt unverändert.
  282.  
  283. PageScreenUp                Bildlauf um die Anzahl der Zeilen im Fenster nach
  284.                             oben. Die Cursorposition bleibt unverändert.
  285.  
  286. PageUp                      Bewegt den Cursor um die Anzahl der Zeilen im
  287.                             Fenster nach oben.
  288.  
  289. PaintScreen                 Zeichnet das Fenster neu und geht dabei davon aus,
  290.                             daß der Bildschirm die letzten Änderungen durch den
  291.                             Editor richtig dargestellt werden.
  292.  
  293. ReDo                        Führt eine Wiederholung durch. Die genauen Auswir-
  294.                             kungen hängen von den Parametereinstellungen ab.
  295.  
  296. RightOfLine                 Bewegt den Cursor an das Ende der Zeile.
  297.  
  298. RightOfWord                 Bewegt den Cursor in die dem Ende eines Wortes fol-
  299.                             gende Spalte.
  300.  
  301. ScrollScreenDown            Führt einen Bildlauf um eine Zeile nach unten
  302.                             durch, ohne die Cursorposition zu verändern.
  303.  
  304. ScrollScreenUp              Führt einen Bildlauf um eine Zeile nach oben durch,
  305.                             ohne die Cursorposition zu verändern.
  306.  
  307. SetAutoIndent               Schaltet die Option Auto Indent ein.
  308.  
  309. SetAutoOutdent              Schaltet die Option Backspace Unindents ein.
  310.  
  311. SetBlockBeg                 Setzt das erste Zeichen des ausgewählten Textes als
  312.                             aktuelle Cursorposition.
  313.  
  314. SetBlockEnd                 Setzt das letzte Zeichen des ausgewählten Textes
  315.                             als aktuelle Cursorposition.
  316.  
  317. SetCursorThroughTabMode     Schaltet die Option »Cursor Through Tabs« ein.
  318.  
  319. SetInsertMode               Schaltet den Einfügemodus ein.
  320.  
  321. SetMark                     Setzt eine Markierung auf das Zeichen der aktuellen
  322.                             Cursorposition, so daß ein nachfolgender Befehl
  323.                             MoveToMark(n) den Cursor wiederherstellen kann.
  324.                             Verwenden Sie die Syntax SetMark(n). n ist eine
  325.                             einstellige Zahl zwischen 0 und 9.
  326.  
  327. SetOptimalFillMode          Schaltet die Option »Set Optimal Fill« ein.
  328.  
  329. SetPrevPos                  Setzt eine Markierung (»previous position marker«)
  330.                             auf die aktuelle Cursorposition. Diese Markierung
  331.                             wird nur durch einen Aufruf von SetPrevPos oder
  332.                             SwapPrevPos verändert.
  333.  
  334. SetTabbingMode              Schaltet die Option »Use Tab Char« ein.
  335.  
  336. SetTempPos                  Sichert die Cursorposition in einer temporären Mar-
  337.                             kierung, die von einigen internen Editorbefehlen
  338.                             verwendet wird. In benutzerdefinierten Makros
  339.                             sollte stattdessen SetMark verwendet wirden.
  340.  
  341. SmartRefreshScreen          Stellt das Fenster neu dar und übergeht dabei alle
  342.                             Teile, die der Editor als unverändert seit der
  343.                             letzten Neudarstellung meldet.
  344.  
  345. SmartTab                    Fügt Leerzeichen bzw. Tabulatoren entsprechend der
  346.                             Einstellung der Tabulatorbreite in »Use Tab Char«
  347.                             ein.
  348.  
  349. SwapPrevPos                 Tauscht den Wert des Cursors und des »previous
  350.                             position marker« gegeneinander aus.
  351.  
  352. ToggleAutoIndent            Schaltet den Status der Option »Auto Indent« um.
  353.  
  354. ToggleAutoOutdent           Schaltet den Status der Option »Backspace
  355.                             Unindents« um.
  356.  
  357. ToggleCursorThroughTabMode  Schaltet den Status der Option »Cursor Through
  358.                             Tabs« um.
  359.  
  360. ToggleHideBlock             Schaltet den Status des Flags des markierten
  361.                             (ausgewählten) Textes um.
  362.  
  363. ToggleInsert                Schaltet den Status der Option Insert/Overwrite um.
  364.  
  365. ToggleOptimalFillMode       Schaltet den Status der Option »Optimal Fill« um.
  366.  
  367. ToggleTabbingMode           Schaltet den Status der Option »Use Tab Char« um.
  368.  
  369. TopOfScreen                 Bewegt den Cursor in die erste Zeile des aktuell
  370.                             dargestellten Fensters. Die Spalte bleibt unverän-
  371.                             dert.
  372.  
  373. UnDo                        Führt eine Undo-Operation (Rückgängig machen)
  374.                             durch. Die Auswirkungen hängen von den Parameter-
  375.                             einstellungen ab.
  376.  
  377. WordLeft                    Bewegt den Cursor auf den Anfang des vorhergehenden
  378.                             Wortes bzw. das Ende der vorhergehenden Zeile, je
  379.                             nach dem, was zuerst gefunden wird.
  380.  
  381. WordRight                   Bewegt den Cursor auf den Anfang des nächsten Wor-
  382.                             tes bzw. das Ende der aktuellen Zeile, je nach dem,
  383.                             was zuerst gefunden wird.
  384.  
  385.  
  386.  
  387. Die folgenden Befehle verursachen den Ausstieg aus dem Editor und dürfen des-
  388. halb nur als letzter Befehl in einem Makro auftauchen:
  389.  
  390. ClipClear                   Löscht ausgewählten Text.
  391.  
  392. ClipCopy                    Kopiert ausgewählten Text in die Zwischenablage.
  393.  
  394. ClipCut                     Verschiebt ausgewählten Text in die Zwischenablage.
  395.  
  396. ClipPaste                   Schreibt den Inhalt der Zwischenablage an der
  397.                             Cursorposition in den Puffer.
  398.  
  399. CompilerOptions             Kopiert die aktuellen Compiler-Optionen an den
  400.                             Anfang des Textes im Editorpuffer.
  401.  
  402. GetFindString               Öffnet das Dialogfenster für Such-Operationen.
  403.  
  404. QuoteChar                   Das folgende Steuerzeichen wird in den Editor-
  405.                             puffer eingefügt.
  406.  
  407. ReadBlock                   Öffnet ein Dialogfenster, das die Eingabe eines
  408.                             Dateinamens erwartet. Die Datei wird an der
  409.                             aktuellen Cursorposition in den Puffer gelesen 
  410.                             und als Textblock markiert.
  411.  
  412. RepeatSearch                Wiederholt eine Suche mit den vorhergehenden
  413.                             Parametern.
  414.  
  415. Replace                     Öffnet ein Dialogfenster für die Funktion Replace
  416.                             (Ersetzen).
  417.  
  418. SaveFile                    Sichert den aktuellen Editorpuffer.
  419.  
  420. ShiftOff                    Beendet den Textmarkierungsmodus und macht die
  421.                             Markierung ausgewählten Textes wieder rückgängig.
  422.  
  423. ShiftOffWithCopy            Kopiert ausgewählten Text in die Zwischenablage
  424.                             und beendet den Textmarkierungsmodus.
  425.  
  426. ShiftOffWithCut             Verschiebt ausgewählten Text in die Zwischenablage
  427.                             und beendet den Textmarkierungsmodus.
  428.  
  429. ShiftOn                     Schaltet den Textmarkierungsmodus ein.
  430.  
  431. ShowLastError               Zeigt den zuletzt aufgetreten Compilierungs-
  432.                             fehler erneut an.
  433.  
  434. ToggleAutoIndent            Schaltet den Einrückmodus um.
  435.  
  436. ToggleAutoOutdent           Schaltet den Ausrückmodus (mittels Backspace) um.
  437.  
  438. ToggleCursorThroughTabMode  Schaltet die Option um, die bestimmt, wie der
  439.                             Cursor sich verhält, wenn er über ein Tab-Zeichen
  440.                             bewegt wird.
  441.  
  442. ToggleOptimalFillMode       Schaltet die Verwendung von Tab/Leerzeichen um.
  443.  
  444. ToggleTabbingMode           Schaltet zwischen Einfügen von Tabulator- oder
  445.                             Leerzeichen um.
  446.  
  447. WriteBlock                  Öffnet ein Dialogfenster, in dem die Angabe einer
  448.                             Datei erwartet wird, in die dann der ausgewählte
  449.                             Text geschrieben wird.
  450.  
  451.