Previous | Contents | Index | Next
Here we look at a final set of advanced functions, before moving on to modes. These features are all 'convenience' features, rather than being important things that you can't do without.
Often it is useful to be able to remember where you are in a file at a specific time, so that you can return to it later. Zap allows you to do this by using marks, which are controlled from the Misc->Marking
menu or from keystrokes.
To toggle a mark - set if there isn't one there, clear if there is - use TOGGLEMARK
, on sF11
. To set a mark, use DROPMARK
(F6
). To move to the next mark, use NEXTMARK
(sF9
), and to move to the previous mark, use LASTMARK
(sF6
). For instance, if you set a mark, then move and set another one, sF6
will move you back to the second mark, sF6
again to the first, and then sF9
back to the second mark again.
Marks can't be seen when they are set; they can be set to any depth.
Zap has two types of read only files: firstly there are permanent read only files. These tend to be internal documentation files. You can't set these to be writable.
Secondly, there are temporary read only files; you can set these up yourself by the File->Read only
menu option - the same option turns off the read only aspect again. This means that you can temporarily write-protect a file to stop yourself from doing anything stupid to it. Zap also loads any file that it won't be able to save changes to as temporary read only.
If you try to edit a read only file, Zap beeps at you and prints a warning in the minibuffer.
Zap can provide help on the current mode you are using, as well as any keystroke, command or function. Pressing c\
brings up a small menu in the minibuffer. You can press:
K
- Keystroke help - press the keystroke you want help on.M
- Help on the current mode (see chapter 10).F
- Function help - type the function name (see section 11.3).C
- Command help - type the command name (see section 9.4).V
- Variable help - type the variable name (see section 12.3.6).D
- Documentation (opens the documentation directory for the current country).Z
- Help on Zap (opens the manual for the current country).To get help on a keystroke in anything other than the base keymap, first change into that keymap, and then run the HELP
command (either through the minibuffer, or through whatever it's bound to in that keymap).
Zap can also display help on its menus and dialogues in Acorn's Help; it also displays help for the relevant mode if the cursor is over an editing window.
Note that the ZapText extension also gives Zap the ability to look up help on whatever is at the cursor using StrongHelp. To do this, press cH
(you'll need both ZapText and StrongHelp installed to do this - StrongHelp is available from http://sudden.recoil.org/stronghelp/).
Pressing cEscape
brings up the minibuffer and allows you to enter commands directly into Zap. This is very useful, because Zap has lots of commands (and you can get extensions to provide additional ones), and there simply aren't enough keystrokes or menu items to go round.
If you don't know how to use a command, you can type c\ c
(help on commands) and then type in the command name for a brief description.
Commands can take a parameter; there are four different types. If you request help on a command, the parameter type will be shown as:
WIBBLE
- Command Wibble takes no parameter.WIBBLE <byte>
- Command Wibble takes a single byte.WIBBLE <word>
- Command Wibble takes a word (4 bytes).WIBBLE <string>
- Command Wibble takes a string argument.Byte and word parameters must be preceded by an &
if in hex, and may be surrounded by brackets or quotes; string parameters must be either in double quotes "
or in brackets (
and )
. Within a double-quoted string, double quotes themselves can be included by doubling them up (eg: INSERT "Suddenly, Jonathon said ""Hey""."
). For byte and word parameters, 'x'
is evaluated to the ASCII value of the character x (eg: CHAR 'n'
inserts the letter n
).
An error is given if the parameter you place after the command does not match the type of the command, except that if you omit a string parameter, the minibuffer will be opened for you to type the string into. (This is exactly what happens when you press cEscape
, in fact - cEscape
executes the command COMMAND
without any parameters, allowing you to specify your own command.)
Commands can be chained together by using colon as a separator :
as in BASIC. You cannot chain together commands which use the minibuffer (ie: commands which take a string as a parameter but with the string unspecified).
You can put a comment after a command by using ;
(eg: COMMAND ; comment
). The comment terminates at the first :
(so you can put comments between commands when you chain multiple commands together).
This section has provided only a basic introduction to using simple commands. See chapter 11 for a complete description of Zap's command language, including functions, variables, and conditional and looping constructs.
This feature of Zap is very simple to use, and very useful. To start 'learning' a key sequence, simply press cL
. Type the sequence you wish to learn and then press cL
again. Press F1
to execute the learnt sequence. (EXECUTE
, bound to F1
, also stops the learning process.)
Note firstly that Zap will beep after every keypress you make to remind you that it is being stored. Secondly note that the Escape
key will not stop the learning process. Only cL
will stop it. Thus you can learn sequences which use incremental search, or keyboard selection of regions; both these actions involve the Escape
key.
Once you have learnt a sequence, you may 'bind' that sequence to a key so that pressing that key in future causes the same series of actions to take place. To do this press cF8
and then press the key you want to bind the sequence to (or Escape
if it was a mistake - Escape
won't be bound).
Examples:
TAB,DOWN,CLEFT
and then to press F1
a number of times. As a slightly more sophisticated example of this, it is often useful to insert an extra tab before the last word on the line. You can do this by binding TAB,UP,CRIGHT,SLEFT
and pressing F1
repeatedly.cat
and switch the case of the letters. You could learn and then execute the sequence cS cat Return Escape Left Left Left scS scS scS
(scS
swaps the case of the character at the cursor).The universal argument feature enables you to execute a keypress an arbitrary number of times. Suppose for example you wanted to insert 100 spaces. The quick way to do this is to type cU 100 Space
.
In general you type cU
then the number of times you want the key to be executed, then press Return
, then press the key to execute. The 'pressing Return
' step can be omitted if the key you want to repeat is not delete or a digit or another valid key for editing the number you are typing (as in the example above).
Some commands (and therefore the keystrokes they are bound to) can't be sensibly executed more than once (for instance OPENPARENT
, which opens the directory containing the current file); in these cases the universal argument simply won't affect the command or keystroke.
Zap supports both OLE and EE for editing files. These are used by a large number of other programs that wish to have data edited for them, but don't know how to do it themselves. External Edit is primarily used for editing text, and Zap will edit all Text files (&FFF) for EE. Object Linking and Embedding allows non-textual files to be edited as well; Zap will claim both BASIC (&FFB) and Text (&FFF) files for OLE.
Note that these file types, as well as those that Zap claims for running from the Filer, can be configured - you need to edit ZapUser:Config.!ZapBoot
and ZapUser:Config.!ZapRun
.
The next section in the manual is chapter 10, which explains Zap's different editing and displaying modes, and looks at some of the most useful ones. Modes form the key to many of Zap's most useful features, and since they've been occasionally mentioned in the manual up till now you probably want to learn more about them.
Alternatively, you could move on to chapter 11, which explains in more detail Zap's command language, including a look a functions, variables, and conditional and looping constructs.
Previous | Contents | Index | Next