Добавил:
Tushkan
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Turbo Pascal 7.0 / TP7 / DOC / TEMC
.DOC TURBO EDITOR MACRO COMPILER (TEMC)
----------------------------------
This file explains how to use TEMC.EXE, the Turbo Editor Macro Compiler,
and documents the Turbo Editor Macro Language, TEML.
Table of Contents
-----------------
1. What is TEMC?
2. The TEMC Command line
3. TEMC Syntax
4. Predefined editor commands
1. What is TEMC?
-----------------
TEMC is an editor macro compiler for the Turbo Pascal for Windows IDE.
It processes a script file that defines editor macros and key bindings
and produces a command file that is read by the IDE to define the effects
of keyboard commands in the editor.
Anytime the IDE is set to use the Alternate Command Set (using menu
item <Options><Preferences><Command Set>, it looks for a file called
TPWALT.CMD in the same directory as the program file, TPW.EXE. If this
command file is found, its contents are read into memory to replace the
default editor key bindings.
The file TPWALT.TEM contains the factory default macro definitions
and key bindings that are built into the IDE editor. It serves as an
example script, as well as a base from which to customize the editor.
2. The TEMC command line
-------------------------
TEMC is invoked from the DOS command line using
temc [-c] <script file> <command file>
The extension of the script file is assumed to be .TEM if it is not
specified. The command file need not exist. It will be created if it does
not. The optional -c switch can also be specified as /c, and can
appear in any argument position on the command line. If it appears, it
specifies that any existing commands the command file are to
be thrown away before processing the script file. When -c is not used,
the key bindings in the script file are merged with those already
defined in the command file.
3. TEMC syntax
---------------
Comments are in C style /* ... */ pairs.
A statement defines either a named macro or a key binding.
The syntax to define a macro is
MACRO <macroname> <command1>; [ <command2>; ... ] END;
Spaces and newlines are optional. The macroname can consist of anything
that is a legal symbol in C. Note, that unlike C, TEMC's language is
case insensitive. A command can be either the name of another macro
that has already been defined, or an editor command that has been
predefined in TEMC. A list of those and what they do is below.
Some of the predefined editor commands have a syntax that looks like
a C function call with one argument, for example
SetMark(5);
Depending on the command, the argumenmt is either a decimal integer constant,
a character constant, or a string literal. All are specified using C syntax.
Here's an example of a macro definition from the TPWALT.TEM file:
MACRO MacPageUp
FixScreenPos;
PageUp;
FixCursorPos;
END;
The syntax to define a key binding is:
<key-sequence>: <command>;
or
<key-sequence>: BEGIN <command1>; [ <comand2>; ... ] END;
The <key-sequence> is either a key, which is a character optionally
preceded by "ctrl-" (not in quotes), or a series of keys
separated by the character "+". Note that the specification of the
key characters themselves is case sensitive, e.g. ctrl-k+B is different
than ctrl-k+b, even though the latter is the same as CTRL-K+b.
Any key in a sequence, other than the first one may be preceded by
one of the characters "^" or "@". The "^" indicates that any combination
of case and ctrl can be used to type the key, i.e., lower case, upper
case, or control characters. The "@" is used to indicate that the
case does not matter for that character, although ctrl will not
be accepted. For example, ctrl-k+b specifies a Ctrl-K followed by a
lower case b. ctrl-k+^b specifies a ctrl-K followed by any of b, B,
or ctrl-B. ctrl-k+@b specifies ctrl-K followed by either b or B.
Whitespace is allowed between the key-sequence and the ":".
Each <command> can be either the name of a previously defined macro,
or one of the predefined editor commands listed below.
4. Predefined editor commands
------------------------------
The following is the list of all editor commands that are predefined in
TEMC. TEMC allows you to use built-in editor commands and user-defined
macros as commands within macros interchangeably, as long as you do not
create any loops by having two macros calling each other, even via
intermediate macros. Note that some commands cause an escape from the
editor to the surrounding IDE. There is no provision for returning
control to the editor once that is done. Thus, if one of those
commands is part of a macro, it must be the last command in the
macro. TEMC will produce an error message if a macro definition
violates this restriction. Commands that cause an escape from the
editor are grouped at the end of the following list.
TEMC editor command name What it causes the editor to do
------------------------ -------------------------------
BackspaceDelete Delete the character before the cursor
BottomOfScreen Move cursor to the bottom line
currently displayed in the window,
leaving column unchanged
CenterFixScreenPos Adjust the screen display to ensure that the
cursor location is visible. If any adjustment
is necessary, adjust the display so the cursor
is close to being centered in the window.
CursorCharLeft Move cursor left over one character.
This will skip over a tab character and
will move to the end of the previous
line from the beginning of a line.
CursorCharRight Move cursor right over one character.
This will skip over a tab character and
will advance to the beginning of the next
line from the end of a line.
CursorDown Move cursor down one row
CursorLeft Move cursor left one screen column
CursorRight Move cursor right one screen column
CursorUp Move cursor up one row
CursorSwitchedLeft Like CursorLeft, but pays attention to
Cursor Through Tab option setting
CursorSwitchedRight Like CursorRight, but pays attention to
Cursor Through Tab option setting
DeleteChar Delete the character at the current
cursor location
DeleteLine Delete the current line
DeleteToEOL Delete from the current column to the end
of the current line
DeleteWord Delete from cursor to beginning of next word
EndCursor Move cursor to end of file buffer
FixCursorPos Insure that cursor value specifies a
row between 1 and the number of lines in
the buffer, a column greater than 0, and
that if the cursor through tabs option is
not set, that it is not placed in the
middle of a tab character.
FixScreenPos Adjust the screen display to ensure that the
cursor location is visible
FullPaintScreen Redraw the entire window, making no
assumptions about what is on the screen
HomeCursor Move cursor to beginning of file buffer
IndentBlock Insert a space at the beginning of each
line in the selected text.
InsertText Called using the syntax InsertText("string")
Inserts the literal "string" in the buffer
at the current cursor location.
LeftOfLine Move cursor to beginning of current line
LiteralChar Called using the syntax LiteralChar('c'),
where 'c' is a character or integer value.
Inserts the character at the current cursor
location, without doing any special processing
for newline, tab characters, etc.
MarkBufModified Set a flag indicating that the contents
of the buffer are different than what is
in the corresponding disk file
MarkBufUnmodified Clear a flag, thus indicating that the
contents of the buffer can be assumed
to be identical to what is in the disk file
MatchPairBackward Same as MatchPairForward, except that if the
cursor is on a ' or " then search backward
for the matching one.
MatchPairForward If the cursor is on one of the characters
(, ), {, }, [, ], or on the first character
of one of the pairs (*, *), (. or .), then
search in the appropriate direction for the
closest instance of the matching delimiter.
If the cursor is on the character ' or ",
then search forward for the matching one.
If a match is found, place the cursor there.
MoveToMark Called using the syntax MoveToMark(n),
where "n" is a one digit number, 0-9.
Moves the cursor to the location saved with
SetMark(n) command.
MoveToTempPos Move the cursor to the saved temporary marker.
OutdentBlock Delete a leading space from the beginning
of each line in the selected text
that begins with a space.
PageScreenDown Scroll screen down by number of lines in the
window, leaving cursor position unchanged
PageScreenUp Scroll screen up by number of lines in the
window, leaving cursor position unchanged
PaintScreen Redraw the entire window, assuming that
the screen still correctly displays what
the editor last drew on it
PageDown Move cursor down by number of lines in
the window
PageUp Move cursor up by number of lines in
the window
ReDo Perform an Redo operation. Exactly what
happens depends on the option settings
RightOfLine Move cursor to end of current line
RightOfWord Move cursor to the next column that follows
the end of a word
ScrollScreenDown Scroll screen down one line, leaving cursor
position unchanged
ScrollScreenUp Scroll screen up one line, leaving cursor
position unchanged
SetMark Called using the syntax SetMark(n),
where "n" is one digit number, 0-9.
Sets a marker to point to the character at
the current cursor location, so a later
MoveToMark(n) comand can restore the cursor
SetTempPos Save the cursor location in a temporary
marker that may be used by some internal
editor commands. This is not usually practical
to use in user-defined macros, which should
instead use SetMark.
SmartRefreshScreen Redraw the window, skipping any portions
that the editor is sure are unmodified
since it was last drawn.
SmartTab Insert space and/or tab characters in
accordance with the current settings of
the Use Tab Char option, and Tab Width
ToggleInsert Toggle state of insert/overwrite option
TopOfScreen Move cursor to the top line
currently displayed in the window,
leaving column unchanged
UnDo Perform an Undo operation. Exactly what
happens depends on the option settings
WordLeft Move cursor to beginning of previous word,
or to end of previous line, whichever is
found first
WordRight Move cursor to beginning of next word,
or to the end of a line, whichever is
found first
The following commands cause an exit from the editor, and so can
only appear as the last command of a macro:
ClipClear Delete selected text
ClipCopy Copy selected text to clipboard
ClipCut Cut selected text to clipboard
ClipPaste Paste clipboard into buffer at cursor
CompilerOptions Insert the current compiler options at the
start of the edit buffer
GetFindString Open a dialog for a text search operation
QuoteChar Next control character typed by user will
be directly inserted into buffer
ReadBlock Open dialog requesting a file name
which will be read into the buffer
at the cursor location
RepeatSearch Search again, using previous parameters
Replace Open an dialog for a search/replace operation
SaveFile Save current editor buffer
ShiftOff Turn off text selection mode and clear
current block, if any
ShiftOffWithCopy Copy current block to clipboard and turn
off text selection mode
ShiftOffWithCut Cut current block to clipboard and turn
off text selection mode
ShiftOn Turn on text selection mode
ShowLastError Redisplay the last compiler error reported
ToggleAutoIndent Toggle the state of the Auto Indent option
ToggleAutoOutdent Toggle the state of the Backspace Unindents
option
ToggleCursorThroughTabMode Toggle the state of the Cursor Through Tabs
option
ToggleOptimalFillMode Toggle state of Optimal Fill option
ToggleTabbingMode Toggle state of Use Tab Char option
WriteBlock Open dialog requesting a file name to
which the selected text will be written
Соседние файлы в папке DOC
