This file describes all the commands available in Z80EMACS and
also tells what the default bindings are.

See "MAPKEYS.DOC" if you don't know what I mean by "bindings".

111111111111111111111111111111111111111111111111111111111111
1                                                          1
1 ABOUT UECS                                               1
1                                                          1
111111111111111111111111111111111111111111111111111111111111

All the commands have funny names. The funny names are based
on the UECS, or Universal Editor Command Set.

The first part of each name classifies the command according to
"command-type", or category.

These are the categories used in Z80EMACS:

CI commands are "command input" commands. These commands make
your life easier when you are typing in editor commands.

DC commands are "display control" commands; you use them to control
what's on your screen.

EC commands are "editor command" commands; most commands are EC
commands.


SC commands are "session control" commands. They are concerned with
managing the list of buffers.

UI commands are "user interface" commands.

BUGS:

The categorization of the commands is not perfect.

222222222222222222222222222222222222222222222222222222222222
2                                                          2
2 COMMAND REFERENCE:                                       2
2                                                          2
222222222222222222222222222222222222222222222222222222222222

11      CI-Abort-Cancel

This has a default binding of ^G, and can be rebound ( partially ).

Abort-Cancel beeps the terminal; if a keyboard macro is being
recorded, it gets stopped; everything goes back to normal.

On the message line ( when Z80EMACS asks you for a file ),
Abort-Cancel aborts the command that asked; this usage of it can't
be rebound.

34      CI-Keyboard-Macro-Begin

Keyboard-Macro-Begin, whose default binding is ^X(, tells z80emacs
to start remembering every keystroke you type.

They will be written to a file named "KY+BD+MC.KBM", on the current
drive and user area.

35      CI-Keyboard-Macro-End

By default, ^X) == close the keyboard macro file, which thus becomes
available for execution.

36      CI-Keyboard-Macro-Execute

By default, this is M-I ( the BACKTAB key on my terminal ).
The traditional emacs binding for it is ^XE

The file "KY+BD+MC.KBM" becomes the current source of command input.
The keystrokes that were recorded are now replayed.
If any of the commands make the terminal beep, execution stops.
Any parameter to this command is ignored.
The screen is updated as the stored commands are replayed.

**      CI-Universal-Argument

^U cannot be remapped. It is the emacs parameter introducer.
Many Z80EMACS commands can use parameters. Most often the
parameter is a repetition count, e.g., "do this thing 6 times".
Sometimes the parameter modifies the command behavior in other ways.

Typing ^U gives you an argument of 4, but if you type in some
digits, they give the argument value; after that, typing ^U
again multiplies the current argument by 4.
This is so confusing to explain... just try it out, and see.

For example, to insert several A's at once:
  ^UA     gives 4 of them
  ^U2A    2 of them
  ^U^UA   16

**     CI-Universal-Negative-Argument

This is like ^U for starting arguments, but it starts with "-1"
( minus-one ). Negative arguments often have special meanings.

It is mapped as "^\" and can't be remapped.

58      DC-Discard-Other-Window

^X1 gets rid of all the windows on the screen except the current
one.

59      DC-Enlarge-Window

^Xz makes the current window larger, by taking lines away from its
neighbors.
The parameter to this command controls how many lines bigger
( or smaller, with a negative argument ) the window gets.

63      DC-Reposit-Top

This is M-! by default. It redisplays the window with the current
line at the top.
With an argument, the current line becomes line N of the window.
With a negative argument, the current line becomes the bottom
line of the window.

64      DC-Scroll-Down

^X^J moves all the text in the window down one line;
the cursor stays on the same line of the file.
The argument is a repetition count, negative scrolls up.

67      DC-Scroll-Up

^X^K; see description of DC-Scroll-Down.

72      DC-Shrink-Window

^XZ == see DC-Enlarge-Window

73      DC-Split-Window

^X2 makes two windows out of the current one, by spliting it in half.
No arguments.

79      EC-Arrow-Down

Down-arrow is mapped as ^J AND as ^V because many ASCII terminals use
^V as their down-arrow key.
Argument is repetition count, negative argument reverses the direction.
FUNNY-ARROW: arrow down from the last line of the buffer
goes to the first line of the buffer.

80      EC-Arrow-Left

^H is the default mapping.
Argument is repetition count, negative argument reverses the direction.

81      EC-Arrow-Right

^L is the default mapping.
Argument is repetition count, negative argument reverses the direction.

82      EC-Arrow-Up

^K is the default mapping.
Argument is repetition count, negative argument reverses the direction.
FUNNY-ARROW: arrow up from the first line of the buffer goes to the
last line; arrow up always goes one line more than specified.
FUNNY-ARROW was a bug that I left in as an interesting feature;
the actual implementation in Z80EMACS is not quite right, because
if you SPECIFY an argument, arrow-up should move exactly that many
lines; it's only if you don't specify any argument that funny-arrow-up
should move an extra line.

91      EC-Back-Search-Simple

^P prompts for a string, and then searches backwards in the buffer
for it. If you just hit return instead of entering a new string,
it searches for the last thing you searched for.

Argument is ignored ( of course, negative SHOULD search forwards );
no incremental search or regular expressions; there should be a
"search-again" command, so you wouldn't have to hit RETURN at the
prompt.

93      EC-CR-With-Indent

^M ( carriage return ) inserts a new line, with indentation matching
the previous line, and goes to the start of it ( after the indentation ).
Argument is repetition count, negative argument does nothing.

95      EC-Capitalize-Region

This is listed in ZMECMDS.LST, but there's no such thing.

96      EC-Capitalize-Word

M-c Goes Forward To The Start Of The Next Word, Makes The First Letter
Uppercase, And Skips Over The Rest Of The Word.
Argument is repetition count, negative argument does nothing.
A "word" is defined according to EC-Set-Word-Mode.

98      EC-Deblank

^X^O gets rid of blank lines around the cursor.

103     EC-Exchange-Local-Mark

^Z sets the "mark" at the cursor position and moves the cursor to where
the "mark" used to be.
The "mark" is a remembered cursor position, of which there's one per
window.

106     EC-Execute-File

Next release. This is like CI-Keyboard-Macro-Execute, except that
it asks you for a file name; thus, you can have lots of editor command
files around.

107     EC-Exit

^X^C ends the execution of Z80EMACS.
Unless you give it an argument, it will check to see if any buffers
have been modified and not saved yet, and if so, it will ask you
"Quit[Y/N]?". It won't ask you anything unless you might need to
save something.

111     EC-Find-File

^X^F is the command you use to edit files.
It asks you for a file name, and then looks to see if the file is
already in a buffer. If so, it just goes to that buffer; if not,
it makes a new buffer and reads in the file and goes to the
new buffer.

129     EC-Forward-Search-Simple

^N == see EC-Back-Search-Simple

142     EC-Goto-Beginning-Of-Line

^@ ( 0x00 ) goes to the beginning of the current line, or
with a negative parameter, it goes to the end of the line,
or with a parameter it goes to column N of the current line.

144     EC-Goto-End-of-Line

^E goes to the end of the current line, or
with a negative parameter, it goes to the start of the line.

145     EC-Goto-First-Buffer-Line

M-g actually goes to line N of the buffer, but with no argument
it goes to the first line, of course. Negative arguments mean
"go to N lines from end".

150     EC-Goto-Last-Buffer-Line

M-G; see EC-Goto-First-Buffer-Line

161     EC-Goto-Next-Page

^C pages forwards; it actually does this by going forwards as many
lines as there are lines in the window.
Argument is repetition count, negative argument reverses the direction.

166     EC-Goto-Next-Window

^Xn is useful when you have more than one window on the screen.
It moves down one window.
It's wrongly listed as an EC command instead of as a DC command,
because it may change the current buffer by doing so.

180     EC-Goto-Previous-Page

^R == see EC-Goto-Next-Page

186     EC-Goto-Previous-Window

^Xp == see EC-Goto-Next-Window

192     EC-GrabFrom-Stack

Well, Z80EMACS doesn't really have a stack, but only one "kill buffer".
The "kill stack" contains a copy of deleted text.
^Y ( "yank" ) inserts that deleted text into the buffer at the
cursor position.
You can give it an argument, to get extra copies of the text.

This very important command is used to undo mistakes,
to copy text, and to move text.

204     EC-Kill-Lines-Count

M-R deletes arg lines, starting with the cursor line.
Negative argument just beeps.
The silly binding of Meta-R is because that's what the "LINE DELETE"
key on my trminal sends.

208     EC-Kill-Region

The "region" is the area enclosed by the cursor and the "mark".
M-L deletes the region; you can get it back with EC-GrabFrom-Stack.
Silly mapping, my terminal....

209     EC-Kill-to-EOL-emacs

M-T deletes the text up to the end of the line; if you're already at
the end of the line, it deletes the newline and joins the lines;
with an argument of 0, it kills to start of line, with other
arguments it does what emacs users expect it to.
  If you're not an emacs user, you don't want to know, and I
  don't want to waste a thousand words on this.
Silly mapping, my terminal....

211     EC-Kill-Char-Back

^? ( DEL ) deletes left by characters.
Argument is repetition count, negative argument reverses the direction.

212     EC-Kill-Char-Forw

^D == see EC-Kill-Char-Back

213     EC-Kill-Word-Back

M-b deletes the word before the cursor.
Argument is repetition count, negative argument does nothing.
A "word" is defined according to EC-Set-Word-Mode.

214     EC-Kill-Word-Forw

M-f deletes the word after the cursor.
Argument is repetition count, negative argument does nothing.
A "word" is defined according to EC-Set-Word-Mode.

219     EC-Lower-Case-Region

^X^L turns all the caps in the region to lowercase.
If you do it by accident, what a pain!

220     EC-Lower-Case-Word

M-_ ( Meta-underline ), lowercases the next word.

224     EC-Open-Lines

^O is like WordStar's ^N.
Arg is repetition count.

229     EC-PickUp-Region

M-P is a shortcut for EC-Kill-Region followed by EC-GrabFrom-Stack.
( The mapping is my "PRINT" key, M-p would be better. )

235     EC-Quote-One

M-Q is what you use to insert arg copies of a control character
into the file. ( or to insert a bunch of digits ).
There is no special warning if you insert ^Z into a text file.

236     EC-Read-File

^X^R with no argument gets rid of the file that's currently in the
current buffer and then reads in a new one. ( You get prompted for
a filename ).
With a negative argument, it reads the file in at the cursor position,
which is "EC-Insert-File".

238     EC-Redraw

M-\ clears the screen and redraws, with the cursor line in
the middle of its window. UNIX editors MUST HAVE this command,
because other processes might send messages to the screen.
The default mapping is sort of random...

240     EC-Rename-Buffer

^X^N changes the "buffer name". Each buffer has a buffer name and a
file name. You can use ^X^N to make short names so that ^Xb is easier
to use.
With a negative parameter, it changes the file name.

244     EC-Save-File

^X^S is the default. If your terminal uses xon-xoff, remap this!
Z80EMACS creates a backup file, with the ".BAK" extension, whenever it
saves or writes to an existing file.

245     EC-Self-Insert

The printable characters are all self-inserting characters
and can't be remapped. You could map other things to be
self-inserting, but why?
The argument is a repetition count, and must be greater than zero.

255     EC-Set-Local-Mark

M-* tells Z80EMACS to remember the current cursor position.
The silly mapping is because of my terminal...

If you want to go to some other place in the file and then come back,
use this command; use this command also for defining the "region"
for the various commands that use it.

258     EC-Set-Word-Mode

M-W sets "Word" mode, as opposed to "word" mode.
With a negative argument, it sets vi Word mode,
as opposed to emacs Word mode.
See also EC-Unset-Word-Mode, which is M-w

Z80EMACS has four possible word mode settings ( vi or emacs, word
or Word ). The word mode affects ALL THE COMMANDS that have "Word"
in their names.

It's quicker for you to try it out than for me to explain it.

263     EC-TAB

^I ( TAB ) normally inserts a tab into the buffer, or a number
of spaces if variable tab size has been set.
With an argument, it sets the "variable tab size" instead; for example,
^U^I says that from now on tabs will be expanded as spaces to fit
tabstops every 4 characters.
An argument of 0 goes back to inserting real tabs, an argument of 1
is the same as no argument at all.

265     EC-Transpose-Chars

M-~ transposes the two character to the left of the cursor.

268     EC-Unset-Word-Mode

M-w, see EC-Set-Word-Mode

276     EC-Upper-Case-Region

M-j ( my shift-up-arrow )

277     EC-Upper-Case-Word

M-^ ( escape carat )

282     EC-Word-Back

^B goes back a word, arg is repeat count, negative arg goes forwards.
See "Word Mode".

283     EC-Word-Forw

^F goes forward a word. See EC-Word-Back.

286     EC-Write-File

^X^W gives the buffer a new filename and writes it out.

487     SC-Discard-Buffer

M-Y ( "PAGE ERASE" on my terminal ) asks for a buffer name and
gets rid of the indicated buffer.
Because the amount of memory available is limited, you may want to
get rid of buffers you no longer need.

494     SC-SwitchTo-Buffer

^Xb asks for a buffer name and goes to that buffer.

495     SC-SwitchTo-Next-Sequential-Buffer

^^ ( control-carat ) goes to the next buffer in Z80EMACS' internal
list of all the existing buffers.
Most of the time, you have only two or three active buffers, so
this is more convenient than ^Xb

528     UI-Buffer-Selection-Menu

^X^B makes a buffer named "[List]", fills it with a nice-looking
list of the active buffers, and goes to it.

Unfortunately, you can't do anything with this menu; when you're
in the [List] buffer, you should be able to
1) go to the buffer indicated by the cursor line,
2) discard the indicated buffer,
3) re-order the list,
4) save the file in the indicated buffer,
5) rename file or buffer.

543     UI-Give-Statistics

^X= puts out a message on the message line that tells you
a useless X and Y, the hex value of the character under the cursor,
and the cursor position within the file.

999     Undefined-Function

This isn't really an editor command. It's defined so that MAPKEYS.COM
can UNMAP some keys.