Previous | Contents | Index | Next
Now we discuss some advanced editing options - features that you can turn on and off. You can set up each individual mode so that it has whichever of these options turned on or off that you want; see section 12.2.1 for more information.
Suppose you are typing a list in which each of the entries itself might be a list. To make things clearer, you would probably want to indent each list, looking something like:
First list, first entry First list, second entry - this is a list too! Second list, first entry Second list, second entry First list, third entry
If the lists were long, you could spend ages pressing Space
or Tab
to indent your lists correctly - but fortunately Zap can help you here. With auto indent mode turned on (as it is by default in Text and many other modes), Zap will match the indent of the line above whenever you press Return
.
(Some modes, such as the C, C++ and Java programming modes, help you even more by automatically indenting to match a standard programming style; see section 10.5 for more information.)
Pressing cReturn
breaks the line without indenting, even when auto indent mode is turned on.
Tabbing in Zap means two things: firstly, the action of the Tab
key, and second how it displays tabs embedded in the file you are working on. We'll deal with each of these individually.
What happens when you press the Tab
key is determined by the current tab entry mode, which is configured from the Edit->Tab mode
submenu. Zap has three tab entry modes:
Unix tab
- This inserts the current display tab character (usually ASCII 9 - see section 6.2.2 below).Column tab
- This moves the cursor to the next tab stop; tab stops occur equidistantly, and the distance between them can be configured from the Edit->Tab mode->Column tab
submenu.As above
- This moves the cursor to the column which starts the next word on the above line. If the previous line doesn't extend far enough (ie: you're further right on the current line than the previous line extends in total), Zap will scan backwards in the file to find a suitable line. If it can't find one, it will use Unix tab mode.In the last two cases, as many tab characters are inserted as possible before using spaces. If you wish to use only spaces, turn on the As spaces
option, in the Edit->Tab
mode submenu.
You can use sTab
to switch between Unix
and As above
tab entry modes.
The standard tab character is taken to be ASCII 9, but this can be changed from the Display->Tabs->Tab char
submenu. Here you can also configure how the tab character is displayed. Note that unless you choose 'None', the tab spacing will be to the next column of eight characters. (This is one of the main things which isn't configurable, partly because it would considerably slow down Zap's redraw system, but also because that's what tab characters mean, Bill Gates notwithstanding.)
The options are:
None
- The tab character will be displayed 'normally', using the appropriate character in the current font.As spaces
- The tab spacing to the next column of eight characters will happen, but that area will be blank.As arrow
- As above, but the actual place in the file that contains the tab character will use the tab character (typically a small arrow pointing to the right - sometimes the letter 'I' when the font doesn't contain a tab character - see section 7.2); the rest of the tab spacing will be blank.Dashes & arrow
- As for 'As spaces', but the tab spacing is filled by a series of dashes and then the tab character.If you want nothing to ever act or be displayed like a tab, set the tab character to the same as the end of line character - see section 7.1.
Zap has a number of different options for dealing with files where you are editing lines which are longer than the current window is wide. Some of these can work together (for instance window wrap and soft wrap together is a very useful combination); some of them are mutually exclusive.
Not all of these options are available in all modes.
This performs the same action as the option with the same name in Edit: lines which are longer than will fit into the window are wrapped onto the next line. This happens dynamically as the window is resized, so there are never any parts of the text which are not visible at the sides of the screen. (Compare this with having all special wrap modes turned off, where lines which are longer than will fit inside the window extent are wrapped onto the next line - if you resize the window, you will often obscure the ends of long lines and have to scroll to view and edit them.)
Because only the visible area of the window is used, the horizontal scroll bar cannot be dragged, although it still indicates the true maximum window width. (In RISC OS 3, you can Adjust
drag the horizontal scroll bar, but it will only allow you to scroll the window vertically.)
Window wrap is useful in Byte and Word modes (see section 10.1), where it allows you to quickly set the number of bytes or words that are displayed to a line. It is also useful when coupled with soft wrap, since this gives the benefits of soft wrap (only breaking at word boundaries), while retaining the dynamically adjustable width.
This controls how words are wrapped at line ends; when turned on, the display of paragraphs is reformatted dynamically as you type, in order to avoid words being split across lines. This works to the current display width - see section 7.1.1.
Note that no physical line ends are ever inserted - soft wrap merely affects how Zap displays your file.
This acts in a very similar way to soft wrap, except that line breaks are inserted at line ends as you type; the rest of the paragraph is reformatted accordingly. It can be seen as a 'hard' equivalent of soft wrap, because the wrapping it performs affects the file, and so will be preserved even if you turn off word wrap. Some modes may modify the behaviour of this slightly - for instance Email mode preserves quoting while the reformatting occurs.
The width that Zap word wraps too is controllable from the Edit->Type of wrap->Word wrap
submenu.
A companion command to this, which reformats a single paragraph in the same way, is FORMATTEXT
, which is on cF6
, and also on the Misc->Alter
submenu.
This is very similar to word wrap, except that the effect is 'local' - the rest of the paragraph is not reformatted as you type. Line wrap is mutually exclusive with both word wrap and soft wrap.
Infinite wrap extends the window wrap option so that the width of the window can be increased indefinitely (usually it is constrained by whatever you set the width of the window to - see section 7.1.1).
Auto soft wrap will turn on soft wrap automatically if it thinks you need it (it checks to see if you have any long lines in the file). However it only does this when you first load the file, or when you change mode, so it is generally most useful as a saved option for a mode - see section 12.2.1 on how to use this.
Strong soft wrap modifies the soft wrap option to strengthen the illusion that the different physical lines (as displayed by Zap) are separate entities. With it turned off, the start and end of lines are taken to be the start and end of logical lines, as usual (logical lines being lines which end in a line break); with it turned on, key presses such as cLeft
and cRight
(move cursor to start/end of line) will move the cursor within the physical line only.
This option will also affect how auto indent works (auto indent usually looks at the previous logical line; with this option on, it looks at the previous physical line, which in general will be less useful).
So far, you have been using the Default keymap - all the keystrokes have been the standard ones, chosen to be most useful for normal editing. However Zap has a range of keymaps available, which serve two purposes.
Firstly, they allow compound keystrokes - for instance, scF11 cX cS
provides a different way of saving the current file. This is achieved by altering the current keymap - typically you have a keystroke which changes the keymap using the KEYMAPN
command, which only remains in effect for the next keymap; thereafter you are dropped back to the basemap (unless the second keypress also uses KEYMAPN
). This is exactly what's happening in the example above: scF11
executes KEYMAPN "Emacs"
, cX
executes KEYMAP 2
, and cS
executes SAVEFILE
. Thereafter the current keymap returns to the basemap (normally the Default keymap). KEYMAPN
is case-insensitive - so KEYMAPN "EMACS"
and KEYMAPN "Emacs"
are the same.
See section 12.3.3 for more information about keymaps, and about how to configure new keymaps.
Clearly, being able to chain keystrokes together is a useful thing, since it allows you to access many more functions quickly via the keyboard than would otherwise be possible. However keymaps get used in another way. We've already used the phrase basemap, but we haven't really explained what it means. At any one time, each window has a current keymap, and also a basemap, which is simply the keymap that the current keymap drops back to after each keystroke. Clearly there are going to be times, when you are doing a particular type of editing, where you might want to stay in the new keymap for a while, instead of being dropped back to whatever your basemap is; you can do this by altering the basemap, by the BASEMAPN
command (which works in the same way as the KEYMAPN
command, except that the effect is more permanent), or from the Misc->Keymap
submenu.
To change the basemap back to the default, use the DEFAULTMAP
command, or use the Misc->Keymap->Default
menu option.
Zap has a number of options affecting how cursor movement and selection works.
This controls how selections are made and insertions positioned. With it turned on, selections which span more than one line are confined so that they always select entire lines; insertions which contain more than one line are always made at the start of the line where the cursor is, and not at the exact cursor position. This is much like the selection model implemented in BASIC mode - see section 10.4.
Though this description may sound obscure, and the option is usually turned off by default, it is often very useful. In modes like Assembler mode, where lines are rarely very long, it cuts out a number of operations - selections can be made lazily, and there's no need to manually align the cursor before each paste, and consequently you can work significantly faster.
This affects sLeft
and sRight
(move forward and backward one word), and related functions (such as the delete word command). It is turned on by default; when turned off these operations stop at spaces and not much else. With it turned on, the action feels more intelligent, with the cursor stopping more frequently.
With this option turned on, the cursor cannot be moved rightwards beyond the end of a line - instead it moves to the start of the next line. This keeps the cursor near existing editable text, and more accurately reverses the behaviour of cursor left.
With this option on, when the cursor moves vertically into a line which does not extend horizontally as far as the current cursor position, the cursor is moved to the end of the line. However the preferred horizontal position is remembered, so if you then move vertically into a line which does extend far enough horizontally, the cursor will move back to where you want.
If on, cursor clicks with the mouse are not confined to the end of the line on which they are made. Instead, the cursor can be positioned anywhere in the visible region. This option may be of use to those generating ASCII art, or editing textual spreadsheets or similar (typically with Overwrite mode turned on).
Block editing allows you to quickly perform the same editing actions on all the lines of a selection. With it turned on, editing anywhere within the selection will perform the edit on all lines of the selection simultaneously. Block editing can be turned on from the Edit
submenu.
There are two related features of Zap that you might like to investigate if you find that block editing isn't powerful enough for you. Learned sequences allow you to 'record' a set of actions and play them back - see section 9.5; the universal argument allows you to perform a single command an arbitrary number of times (see section 9.6).
If line editing is turned on, then line breaks cannot be deleted by the user using Delete
. Also, inserting a new line by pressing Return
does so at the end of the line, rather than at the current cursor position. Instead, you can use the JOINLINE
(join the current line to the following) and SPLITLINE
(split the line at the current cursor position) commands, on cF1
and sF1
respectively.
This option is used in BASIC mode to emulate the old ARM Basic Editor.
Here are the remaining editing options. Some of these have already been introduced earlier.
On the Edit->Misc
menu:
Hex entry
- If turned on, then ASCII entry is disabled, and entry is in hexadecimal (or binary, if binary display is being used). This is used in Zap's binary editing modes - see section 10.1.Non standard
- This option merely turns on an 'unusual' editing feature of a specific mode. Currently it is used in ARMBE emulation (see section 10.4.1), by Email mode (see section 10.9) and by the Assembler programming mode (see section 10.6).On the Edit menu:
Overwrite
- If turned on, then typing will replace the current text at the cursor rather than inserting before it.On the Display->Misc menu:
Big endian
- This affects modes which deal with data sizes of more than a byte - currently HalfWord, Word, DoubleWord and Code. In little endian mode (with this option turned off), a four byte word is stored, as you'd expect for RISC OS, with the least significant byte first. For instance, if the contents of the word is &12345678 then the individual bytes will be [&78][&56][&34][&12]. In big endian mode, the bytes are stored in the opposite order: [&12][&34][&56][&78]. Some processors store numbers in big endian format, such as SPARC (recent ARMs can actually operate in either, although they can't be switched while running; little endian only is used for RISC OS).For normal text-like modes (including most of the programming modes, such as C, Assembler, etc.), Zap has three options which affect how it saves files.
Firstly, there is support for DOS-style and Spool files - DOS files have line terminators CRLF
(rather than just LF
) and Spool files use LFCR
. As mentioned earlier, if Zap detects that a file is a DOS file or a Spool file when it load sit, it will convert all the line endings and set the appropriate option, so that on saving the line endings are restored.
If you have a file where you want to keep the line endings as LF
, but where Zap has recognised it as a DOS file or Spool file, you can turn the options off from the File->Save options
submenu. DOS file is indicated in the titlebar as a B
in the options, and Spool file as an S
.
The third save option is 'strip spaces' (also on the File->Save options
submenu). This simply strips all trailing spaces on lines before saving, and is particularly useful in programming modes.
The next section in the manual is chapter 7, which shows how to alter the way Zap displays things - the colours it uses, the font it displays the text in, and so on. It also looks at printing.
Alternatively, you could move on to chapter 8, which looks at Zap's powerful search and replace system.
Previous | Contents | Index | Next