This is Info file axe.info, produced by Makeinfo-1.55 from the input
file axe.texi.


File: axe.info,  Node: Top,  Next: Axinfo

Index to Help System for aXe 6.0
********************************

The information in this on-line help is also available in enhanced form
as a printable User Guide. Check availability with your system
administrator.

Click mouse button 1 when the mouse pointer is over (it will change to a
pointing hand) the highlighted text *Axinfo* at the top of the menu
below or beside *Next:* towards the bottom of the window for
instructions on how to use axinfo, aXe's help system, if you have not
used it before.

* Menu:

* Axinfo::               About this program

* Introduction::         Chapter 1 : A beginner's guide to aXe
* Customise::            Chapter 2 : How to customise aXe
* Popups::               Chapter 3 : Secondary popup windows
* Language::             Chapter 4 : Extension language
* Changes::              Changes since the previous release

About this program

* HyperText::            The hypertext window
* Tree::                 The tree window
* AxinfoCmd::            The axinfo command
* CustomAxinfo::         How to customise axinfo

How to customise axinfo

* CustomHyper::          How to customise the hypertext window
* CustomTree::           How to customise the tree window
* InfoReader::           Using axinfo to read other info files

A beginner's guide to aXe

* Window::               The components of an aXe window
* Editing::              Basic editing
* Selection::            Selecting text using the mouse
* Buttons::              Buttons instead of menus
* Keyboard::             Using the keyboard for speed

Using the keyboard for speed

* Bindings::             The default key bindings

How to customise aXe

* Resources::            Resources specific to aXe
* SampRsrcs::            Examples of resource settings
* Actions::              Actions specific to aXe
* SampBinds::            Examples of binding actions to keystrokes
* Minibuffer::           How to us the minibuffer
* Macro::                Defining and using a keyboard macro
* Undo::                 How the undo mechanism works
* Server::               aXe as a server of windows

Resources specific to aXe

* AppRsrcs::             Application resources
* AxeWinRsrcs::          AxeWindow widget resources
* AxeEdRsrcs::           AxeEditor widget resources
* AxeTextRsrcs::         AxeText widget resources
* AxeiiTextRsrcs::       AxeiiText widget resources

How to us the minibuffer

* Minimenu::             The minibuffer menu

Secondary popup windows

* Nominator::            The file selector
* NumPad::               The numeric keypad
* ControlCode::          The control code selector
* Confirmer::            The confirmer
* Preferences::          The preferences setter
* Help::                 The help system

Extension language

* Builtins::             Built in extension language commands
* Utilities::            Other extension language commands
* UseLang::              Using the extension language

Changes since the previous release

* Change 1::             Changes to the help system
* Change 2::             Deleting the selection on text entry
* Change 3::             Changes to the extension language
* Change 4::             Setting of the WM_COMMAND property


File: axe.info,  Node: Axinfo,  Next: HyperText,  Prev: Top,  Up: Top

About this program
==================

Axinfo is a hypertext help system for aXe that presents most of the
information contained in the aXe User Guide. The text is organised in
units called nodes that correspond to the chapters, sections and
subsections of the User Guide.  The information in this section and its
subsections, and that on the changes since the previous release are not
present in the User Guide.

Axinfo has two windows. The one you are reading this in is the
*HyperText* window. The other displays the relationships of the nodes
in the form of a tree diagram.  Click on one of the highlighted words
with mouse button 1 to proceed.  If you have not used *axinfo* before
then choose *HyperText*.

* Menu:

* HyperText::            The hypertext window
* Tree::                 The tree window
* AxinfoCmd::            The axinfo command
* CustomAxinfo::         How to customise axinfo


File: axe.info,  Node: HyperText,  Next: Tree,  Prev: Axinfo,  Up: Axinfo

The hypertext window
====================

A highlighted word within this window indicates that information on the
named topic can be obtained by positioning the mouse pointer over the
text and clicking mouse button 1.

Each node that is displayed is related to others by means of pointers
named *Next*, *Prev* and *Up*.  When a node is displayed its pointers
are permanently on show in a separate section towards the bottom of the
window. The highlighted text beside a pointer name is also sensitive as
described above, enabling direct jumps to be made to the related nodes,
and as the mouse pointer moves through it a brief reminder of what the
node covers is displayed in the section underneath.

*Next* and *Prev* will generally point to another node at the same
level, while *Up* will generally point to a node at a higher level.
Thus if you were looking at the node corresponding to section 1.3 of
the User Guide then *Next* would lead to that corresponding to 1.4,
*Prev* to that corresponding to 1.1, and *Up* to that corresponding to
Chapter 1. The *Next* pointers have been set up so that always
following them will result in visiting the nodes in the order that they
appear in the User Guide.

Pointers called *Top* and *Last* are also provided.  *Top* ensures that
a jump back to the overall index is always possible while *Last* allows
the node most recently visited before the current one to be displayed
again.  Depending on how the current node was reached *Last* can be
different from *Prev*.

A node may have a menu appearing at the end of its text. The menu items
correspond to subsections within the corresponding section of the User
Guide. Clicking on the highlighted part of a menu item causes the help
for the topic to be displayed. The node called *Top* is largely a menu
consisting of items for every other node in the help system. Thus, if
you know where the information is that you require you can access it
faster by directly selecting the appropriate item from the menu than by
navigating your way to it via pointers.

Other nodes can also be accessed through cross references as well as by
menus and the pointers described above. A cross reference appears in
the text as follows: *Note Top::. That really is a cross reference, so
clicking on `Top' will result in the overall index being displayed.  If
you did that then you would be able to get back to this node by
selecting the *Last* pointer from the *Top* node.

There are two buttons in the bottom part of the window. *Quit* should
be obvious. The *Tree* button causes a window displaying the node
hierarchy as a tree to be popped up. That window is described in the
next section. If there is no *Tree* button then it means that your
system is running an old version of X that doesn't support the widget
that is used to display the tree.


File: axe.info,  Node: Tree,  Next: AxinfoCmd,  Prev: HyperText,  Up: Axinfo

The tree window
===============

This window is not available under versions of X prior to Release 5.

The tree of the help hierarchy contains a button for each node of help.
At any time the one for the node that is displayed in this window is
highlighted. Clicking on a button causes the text relating to the node
to be displayed in this window. If you do it now the text you are
looking at will be replaced, but you can always get it back by clicking
on the *Last* pointer. Whenever the displayed node changes its button
is centred in the tree window.  As the mouse pointer enters a button a
reminder of what the corresponding node covers is displayed in a
section at the bottom of the window.

If the window is not big enough to show the whole tree it can be
scrolled, in two dimensions if necessary, by pressing any mouse button
over the background and dragging in the direction you want the tree to
move - just like placing your hand on a piece of paper and pushing or
pulling it.

The *Delete* button in the lower part of the window deletes just the
tree window if this window also exists, otherwise the entire
application is terminated. The tree window can exist on its own because
it is possible to specify that *axinfo* be started up that way (*Note
AxinfoCmd::). If the application were not terminated in that situation
there would be no way of subsequently obtaining either window.

The tree window is useful for letting you see how the text that is
currently displayed fits into the overall structure and for enabling
fast jumps to be made into the help if you know where the information
you require is located.


File: axe.info,  Node: AxinfoCmd,  Next: CustomAxinfo,  Prev: Tree,  Up: Axinfo

The axinfo command
==================

`axinfo' is a standalone application for browsing aXe's information
system.  If it is not already running aXe starts it up when an item is
selected form the Help menu. *Note InfoReader:: explains how axinfo can
be used to read other documentation created using Texinfo.

The `axinfo' command has the following form:-

     axinfo [-node node] [-rows rows] [-columns columns] [-tree] [file]

With no options axinfo creates the Hypertext window (*Note HyperText::)
displaying the *Top* node.

-node node
     permits a named node within the help system to be displayed on
     startup. The names which can be specified are the words which
     appear highlighted in the text of the help.

     Example:
          axinfo -node 'AxinfoCmd' axe.info

     would start up `axinfo' with the text you are looking at now
     displayed.

-rows rows
     permits the height of the hypertext window to be specified.  *Note
     CustomAxinfo:: has more information.

-columns columns
     permits the width of the hypertext window to be specified.  *Note
     CustomAxinfo:: has more information.

-tree
     causes the tree window (*Note Tree::) to be created. The hypertext
     window (*Note HyperText::) is not created unless a node is
     specified using the `-node' option. This option is ignored under
     versions of X prior to Release 5.

file
     is the name of the Texinfo file containing the information to be
     browsed. It is only required if `axinfo' is not being used to read
     the documentation for aXe (*Note InfoReader::).


File: axe.info,  Node: CustomAxinfo,  Next: CustomHyper,  Prev: AxinfoCmd,  Up: Axinfo

How to customise axinfo
=======================

The main widget structure of axinfo is as follows:-

     axinfo        (ApplicationShell)
        hyperwin     (TopLevelShell)
        treewin      (TopLevelShell)

It needs to be emphasised that there is no main window corresponding to
the application shell, and hence the keyword `-geometry' which applies
to that widget has no effect. *Note CustomHyper:: describes an
alternative of way of changing the size of the hypertext window. If you
want to alter the size of the tree window then you must set its
geometry resource explicitly.

* Menu:

* CustomHyper::             How to customise the hypertext window
* CustomTree::              How to customise the tree window
* InfoReader::              Using axinfo to read other info files


File: axe.info,  Node: CustomHyper,  Next: CustomTree,  Prev: CustomAxinfo,  Up: CustomAxinfo

How to customise the hypertext window
=====================================

The hypertext window (*Note HyperText::) has the following widget
structure. The names in parentheses following the widget names are the
widget class names.

     hyperwin   (TopLevelShell)
        pane        (Paned)
           view         (Viewport)
              hyper         (Hyper)
           links        (Hyper)
           hpane        (Paned)
              quit          (Command)
              map           (Command)
              info          (Label)

Apart from *hyper* all of the widgets are standard Athena widgets and
so won't be described here.

The size of the window reflects the size of the main area of text in
units of characters. The default size is 24 x 80. Changing the size of
the window should preferrably be done by setting hyperwin's `rows' and
`columns' resources in order to fit in with the way window manager
resizing has been organized to report the size in units of characters.
The keywords `-rows' and `-columns' have been defined to be equivalent
to the resources `*hyperwin.rows' and `*hyperwin.columns'.

In reality it does not make sense to alter the width as the text will
not be wider than 80, and if it is made too small text will be lost at
the right hand margin as the Hyper widget does not perform wrapping.

Example:
     axinfo -rows 50

The following Hyper widget resources are available for customisation:-

normalFont
     is the font to be used for normal text. The default is `7x13'.

highlightFont
     is the font to be used for highlighted text. The default is
     `7x13bold'.

normalColor
     is the colour to be used for normal text. The default is `black'.

highlightColor
     is the colour to be used for highlighted text. The default is
     `red'.

selectColor
     is the colour to be used for selected text, i.e. when mouse button
     1 is pressed over highlighted text. The default is `blue'.

Although the Hyper widget is capable of displaying any font the text is
prepared on the assumption that a fixed width (character cell or
monospaced) font will be used. Specifying a proportional font will
probably result in ragged layouts in various places.


File: axe.info,  Node: CustomTree,  Next: InfoReader,  Prev: CustomHyper,  Up: CustomAxinfo

How to customise the tree window
================================

The tree window has the following widget structure. The names in
parentheses following the widget names are the corresponding widget
class names.

     treewin           (TopLevelShell)
        pane               (Paned)
           form                (Form)
              porthole             (Porthole)
                 tree                  (Tree)
           bpane               (Paned)
              quit                 (Command)
              close                (Command)
              info                 (Label)


File: axe.info,  Node: InfoReader,  Next: Introduction,  Prev: CustomTree,  Up: CustomAxinfo

Using axinfo to read other info files
=====================================

Although the motivation for developing axinfo was to improve the
information available in aXe the fact that it is based on the GNU
Texinfo system should mean that axinfo is capable of reading the
information files produced by that system for other software. At this
moment, however, that is only true to the extent that axinfo can read a
single information file at a time. This is achieved by setting the
`infoPath' resource to state where the info file is to be found, and by
naming it on the command line, e.g.

     axinfo -xrm '*infoPath:/usr/local/doc/texinfo/info' info-stnd.info


File: axe.info,  Node: Introduction,  Next: Window,  Prev: InfoReader,  Up: Top

A beginner's guide to aXe
*************************

aXe's primary aim is to provide an easy introduction to text editing,
but it is hoped that it is also sufficiently flexible to continue to
meet most users' needs as their editing skills develop.

aXe can be used to edit several files at once, with each file being
allocated to an editing buffer. An aXe window may support multiple
buffers, but only one will be visible at any given time. The user
determines the allocation of files to buffers, and hence to windows.

* Menu:

* Window::              The components of an aXe window
* Editing::             Basic editing
* Selection::           Selecting text using the mouse
* Buttons::             Buttons instead of menus
* Keyboard::            Using the keyboard for speed


File: axe.info,  Node: Window,  Next: Editing,  Prev: Introduction,  Up: Introduction

The components of an aXe window
===============================

An aXe window consists of five visible parts. From top to bottom they
are:

`Filename'
     A line showing the name of the file currently being edited in the
     window. If a file has not been associated with this window then 'No
     name' will be displayed. The name is preceded by '*' if the text
     in the Editing buffer (below) contains unsaved changes. '~' at the
     beginning of the filename is shorthand for your home directory.

`Information bar'
     A line that is updated with brief help explaining the action that
     would be performed if mouse button 1 were to be operated with the
     mouse pointer in the current position. If an action can be
     performed directly from the keyboard then the help line will
     contain a description of the keystroke(s) that would achieve it.
     It is enclosed in square brackets, e.g. [ Ctrl-a ].  *Note Using
     the keyboard for speed: Keyboard, for an explanation of what that
     means.  The information bar is also used for displaying
     information arising from some actions, and for some error messages.

`Menu bar'
     A row of buttons having associated pulldown menus.  Pressing and
     holding down mouse button 1 whilst a button is highlighted (by
     moving the mouse pointer onto it) will reveal the menu. The *Show*
     menu shows the names of all of the files being edited - the
     current file in the window from which the menu was popped up has a
     tick against it at the right hand side of the entry, and dividing
     lines are drawn to group the files associated with individual
     windows.

`Editing buffer'
     An area displaying the text of the file that is currently being
     edited in the window. It may the topmost of a stack of buffers
     associated with the window, in which case a different buffer is
     made current by selecting its entry from the *Show* menu.

     When an aXe window is resized all of the the adjustment in the
     vertical direction is applied to this component. Also, the size of
     the other components is discounted by the window manager and the
     information displayed during resizing is the size of the editing
     buffer in terms of characters, rather than pixels. In other words
     the editing buffer can only be resized in character increments.

`Minibuffer'
     An area containing a menu button and a 1-line text buffer, called
     the minibuffer (*Note How to use the minibuffer: Minibuffer.) The
     menu associated with the button provides convenient access to some
     of the more complicated facilities that are only available via the
     minibuffer. The selected ones feed the contents of the editing
     buffer to an external Unix command for processing and display the
     output, if any, in a fresh window.

The user can optionally suppress display of the Filename, Information
bar and Minibuffer components. *Note suppressFilename: AxeEdRsrcs, for
details.


File: axe.info,  Node: Editing,  Next: Selection,  Prev: Window,  Up: Introduction

Basic editing
=============

Traversing the text in the editing buffer and making changes to it can
either be carried out from the keyboard or by using the mouse. The
current position, or insertion point, in the text is denoted by a caret
(^). It lies between characters and is initially right at the top of
the file before the first character.

In order to edit using the keyboard, the mouse pointer - the symbol
that moves around the screen as the mouse is moved - must lie somewhere
within the editing buffer area. Note that the pointer symbol changes
depending on which part of the screen it is over. When it is in an
editable text area, i.e. the editing buffer or the minibuffer it will
have the appearance of the letter I.

With the pointer in the editing buffer area, typing on the keyboard
will cause the characters typed to be inserted at the insertion point.
The character immediately to the left of the insertion point can be
erased by using the Delete key. The insertion point can be moved one
line or one character at a time by using the cursor (arrow) keys.

An easier way to move the insertion point, especially if you want it to
be some way away from the current position, is to move the mouse until
the vertical bar of the pointer lies over the character which is to be
to the right of the insertion point. With this done, quickly press and
release the left hand button on the mouse (note that the information
line is updated to show the line number of the chosen line). Slightly
moving the mouse while the button is pressed down may result in one or
more characters becoming highlighted. If this happens, you can either
try again or simply ignore it for the time being.


File: axe.info,  Node: Selection,  Next: Buttons,  Prev: Editing,  Up: Introduction

Selecting text using the mouse
==============================

Some features involve the notion of a *selection*. A selection is
identifiable as an area of highlighted text. You may already have
accidentally created one by moving the mouse with the left button
pressed down when attempting to adjust the insertion point. So, one way
to create a selection is to move the mouse until the pointer is where
you want the selection to start, then press and hold down the left
mouse button. Now move the mouse with the button still held down and
the text between the starting point and the current pointer position
will be highlighted, i.e. selected. Release the mouse button when you
are satisfied with the selection you have made.

If you didn't quite get it right, a selection can be adjusted at either
end.  Just move the pointer to the new end point and click (quickly
press and release) the right hand mouse button, or press it down and
sweep out the extension while continuing to hold the button down.
Another way to make a selection is to move the pointer to where you
want it to start and click the left hand mouse button, then move the
pointer to the required end point and adjust with the right hand
button. A selection can be cancelled by clicking the left hand mouse
button within the buffer, but remember that doing so will likely affect
the insertion point.

Once you have mastered using the mouse as just described you might like
to try performing multiple clicks to make some selections.  Rapidly
clicking mouse button 1 the following number of times will make a
selection as follows:

  2. selects the word under the pointer. Words are delimited by Spaces,
     Tabs and Carriage Returns.

  3. selects the line under the pointer.

  4. selects the paragraph under the pointer. A paragraph boundary is
     defined by two Carriage Returns with only Spaces or Tabs between
     them.

  5. selects the entire text.

The reason for making a selection is so that some operation can be
applied to it, e.g. deletion, or copying to another part of the file.
Copying can either be carried out by using the *Selection* entry from
the *Insert* menu or by clicking the middle mouse button. The selection
will be inserted at the current insertion point.  The insertion point
will be at one of the ends of the selection immediately after it has
been made, so will normally have to be moved.  Using the mouse to move
the insertion point will cause the selection to be unlighted, but it
will remain available for insertion until another one is made.

You should be aware that the selection mechanism is not peculiar to
this application - many other X applications support it - but there can
only be one selection across all applications at any one time.
Selecting *Selection* from the *Insert* menu [the notation
*Insert:Selection* for indicating a choice from a menu will be used in
future], however, will result in the selection, whichever application
owns it, being inserted at the current insertion point.  And a
selection made in this application can be transferred to some other by
using its insertion method - probably clicking the middle mouse button.


File: axe.info,  Node: Buttons,  Next: Keyboard,  Prev: Selection,  Up: Introduction

Buttons instead of menus
========================

After a time you may find it too slow to execute operations that you
perform a lot using the menus. If this is the case then you might like
to try the optional button interface in which an array of buttons -
there is a button for every menu bar menu entry - is permanently
displayed underneath the menu bar, making access to the operations that
much faster. One way of requesting the button interface is to start aXe
by using the command `axe -buttons'.  *Note buttons: AxeEdRsrcs, for an
alternative.

To use a button simply click mouse button 1 when the button has been
highlighted by moving the mouse pointer on top of it. It is not
necessary to display the complete set of buttons - they do take up a
lot of space.  *Note buttonList: AxeEdRsrcs, for details.  A good
compromise is to have your most frequently used operations available
via buttons; the less frequently used will still be available via the
menus.


File: axe.info,  Node: Keyboard,  Next: Bindings,  Prev: Buttons,  Up: Introduction

Using the keyboard for speed
============================

As you become even more proficient at editing you may want to speed
things up by doing more from the keyboard. Many of the operations
implemented via the menus (and buttons) have keyboard equivalents, e.g.

Ctrl-a  Beginning Of Line

Ctrl-a means:- press and hold down the Control key, and while it is
held down press and release the A key, after which the Control key can
be released.

Other operations involve the use of the Meta key. However, keyboards
don't have a key labelled Meta, so some other key, which varies from
machine to machine, performs the role. It is Alt on Acorns, Compose
Character on Vaxstations, and either of the ones at the ends of the
Space Bar on Suns, viz.  Left and Right on Sun 3s, and the keys with a
diamond shape as label on Type 4 and Type 5 keyboards. The Meta key is
used similarly to the Control key. *Note The default key bindings:
Bindings, for a list of the default bindings.

Some of the operations that are available via the menus and buttons do
not have default bindings. *Note Actions specific to aXe: Actions, for
a description of how they too can be associated with key strokes. The
information there assumes a knowledge of how to use and specify X
resources.

* Menu:

* Bindings::             The default key bindings


File: axe.info,  Node: Bindings,  Next: Customise,  Prev: Keyboard,  Up: Keyboard

The default key bindings
------------------------

The default key bindings are patterned after those in the EMACS text
editor:

     Ctrl-a  Beginning Of Line              Meta-b  Backward Word
     Ctrl-b  Backward Character             Meta-f  Forward Word
     Ctrl-d  Delete Next Character          Meta-i  InsertFile
     Ctrl-e  End Of Line                    Meta-k  Kill To End Of Paragraph
     Ctrl-f  Forward Character              Meta-q  Form Paragraph
     Ctrl-g  Multiply Reset                 Meta-v  Previous Page
     Ctrl-h  Delete Previous Character      Meta-y  Insert Current Selection
     Ctrl-j  Newline And Indent             Meta-z  Scroll One Line Down
     Ctrl-k  Kill To End Of Line            Meta-d  Delete Next Word
     Ctrl-l  Redraw Display                 Meta-D  Kill Word
     Ctrl-m  Newline                        Meta-h  Delete Previous Word
     Ctrl-n  Next Line                      Meta-H  Backward Kill Word
     Ctrl-o  Newline And Backup             Meta-<  Beginning Of File
     Ctrl-p  Previous Line                  Meta->  End Of File
     Ctrl-r  Search/Replace Backward        Meta-]  Forward Paragraph
     Ctrl-s  Search/Replace Forward         Meta-[  Backward Paragraph
     Ctrl-t  Transpose Characters
     Ctrl-u  Multiply by 4        Meta-Delete            Delete Previous Word
     Ctrl-v  Next Page            Meta-Shift Delete      Kill Previous Word
     Ctrl-w  Kill Selection       Meta-Backspace         Delete Previous Word
     Ctrl-y  Unkill               Meta-Shift Backspace   Kill Previous Word
     Ctrl-z  Scroll One Line Up

In addition, the pointer may be used to cut and paste text:

          Button 1 Down    Start Selection
          Button 1 Motion  Adjust Selection
          Button 1 Up      End Selection (cut)
     
          Button 2 Down    Insert Current Selection (paste)
     
          Button 3 Down    Extend Current Selection
          Button 3 Motion  Adjust Selection
          Button 3 Up      End Selection(cut)

Since all of these key and pointer bindings are set through the
translations and resource manager, the user and the application
programmer can modify them by changing the Text widget's translations
resource (*Note Actions specific to aXe: Actions, for examples of the
mechanism).


File: axe.info,  Node: Customise,  Next: Resources,  Prev: Bindings,  Up: Top

How to customise aXe
********************

Like most X applications, aXe is highly customisable through resources.
What follows makes the assumption that you know what resources are and
how to apply the information that is presented.

* Menu:

* Resources::            Resources specific to aXe
* SampRsrcs::            Examples of resource settings
* Actions::              Actions specific to aXe
* SampBinds::            Examples of binding actions to keystrokes
* Minibuffer::           How to us the minibuffer
* Macro::                Defining and using a keyboard macro
* Undo::                 How the undo mechanism works
* Server::               aXe as a server of windows


File: axe.info,  Node: Resources,  Next: AppRsrcs,  Prev: Customise,  Up: Customise

Resources specific to aXe
=========================

Before you can perform any customisation through resources it is
necessary to know the widget structure of aXe. The hierarchy, including
the first editing window, is shown below. All widgets are listed by
instance and class name. Most of the widgets are custom widgets
developed specifically for aXe. Where this is the case the superclass
is enclosed in parentheses.

The file server window is either

     fileServer  FileNominatorWindow (TransientShell)

or

     server  TopLevelShell

with substructure

        table   XpTable
           waiter   Command
           show     AxeMenuButton (MenuButton)
           poleaxe  Command
           help     Command

The following menus are childern of the application shell, and are
shared by all editing windows.

     mMove   AxeSimpleMenu (Simplemenu)
     mSearch AxeSimpleMenu (Simplemenu)
     mInsert AxeSimpleMenu (Simplemenu)
     mDelete AxeSimpleMenu (Simplemenu)
     mHelp   AxeSimpleMenu (Simplemenu)
     mMisc   AxeSimpleMenu (Simplemenu)
     mWindow AxeSimpleMenu (Simplemenu)
     mBuffer AxeSimpleMenu (Simplemenu)
     mShow   AxeSimpleMenu (Simplemenu)
     mFile   AxeSimpleMenu (Simplemenu)
     mQuit   AxeSimpleMenu (Simplemenu)
     mLogo   AxeSimpleMenu (Simplemenu)
     mMini   AxeSimpleMenu (SimpleMenu)

Editing windows have the following structure apart from the instance
name. Only the first, 00, is shown.

     00 AxeWindow (TopLevelShell)
       panes AxeEditor (Composite)
           fileName   Label
           infoBar    Label
           buttons    XpTable
               moveMenu   AxeMenuButton (MenuButton)
               searchMenu AxeMenuButton (MenuButton)
               insertMenu AxeMenuButton (MenuButton)
               deleteMenu AxeMenuButton (MenuButton)
               helpMenu   AxeMenuButton (MenuButton)
               miscMenu   AxeMenuButton (MenuButton)
               fontMenu   AxeMenuButton (MenuButton)
                    mFont   AxeSimpleMenu (SimpleMenu)
               windowMenu AxeMenuButton (MenuButton)
               bufferMenu AxeMenuButton (MenuButton)
               showMenu   AxeMenuButton (MenuButton)
               fileMenu   AxeMenuButton (MenuButton)
               quitMenu   AxeMenuButton (MenuButton)
               axeLogo    AxeMenuButton (MenuButton)
           edDeck     AxeTextDeck (Composite)
               ed         AxeText (AxeiiText) (AsciiText)
               ed         AxeText (AxeiiText) (AsciiText)
               ...
               ...
           miniMenu   AxeMenuButton (MenuButton)
           miniBuffer AsciiText

All of the above information, apart from the superclasses, can be
obtained by running the editres application at Release 5 of X.

The menus consist of AxeSmeBSB (SmeBSB) objects. The names of the
objects for each of the menus are these:-

         mMove:   mbeg, mend, mup, mdown, mtop, mbot
         mSearch: sbtext, sftext, sline, scaret, sbsel, sfsel
         mInsert: ifile, isel, ipaste
         mDelete: dword, dline, dsel, dcut
         mHelp:   hgnrl, hbind, hcust, hnom
         mMisc:   mundo, mwhere, mform, mcentre, mhcentr, mpref
         mWindow: wnew, wfull, wclose, wclall, wicon, wdeicon
         mBuffer: bempty, bfull, bclear, bclose
         mFile:   fsvex, fsvall, fsave, fsvas, frvrt, fload
         mQuit:   qquit, qsvex, qsvclw, qsvclb

Note that lists cannot be given for mFont and mShow, the showMenu
buttons' menu. The composition of mFont is not known until startup time
while that of mShow varies as windows are created and deleted.  *Note
The minibuffer menu: Minimenu, for a discussion of the minibuffer menu,
mMini.

* Menu:

* AppRsrcs::             Application resources
* AxeWinRsrcs::          AxeWindow widget resources
* AxeEdRsrcs::           AxeEditor widget resources
* AxeTextRsrcs::         AxeText widget resources
* AxeiiTextRsrcs::       AxeiiText widget resources


File: axe.info,  Node: AppRsrcs,  Next: AxeWinRsrcs,  Prev: Resources,  Up: Resources

Application Resources
---------------------

The following application resources are recognised

`fileServer'
     Setting this boolean resource causes aXe to start up in server mode
     with a FileNominator as the server window.  *Note aXe as a server
     of windows: Server, for more on aXe as a server.

`server'
     Setting this boolean resource, the default, causes aXe to start up
     in server mode. It has lower precedence than fileServer. If
     neither is set then the application terminates when the last
     window is closed.  *Note aXe as a server of windows: Server, for
     more on aXe as a server.

`windows'
     This resource is used to stipulate how many initial windows should
     be opened. If a greater number of files than the value of this
     resource is specified on the command line, then the value is
     ignored.

The associated command line keywords -noserver and -windows are
supported. -noserver is equivalent to server:False; -windows requires a
numeric argument.

The application geometry resource (-geometry keyword) is used as a
default for all windows opened, but only the width and height parts,
which are interpreted to refer to the size of editing buffers in
characters, are used. It is also possible to apply geometry
specifications one level down in the hierarchy at the individual window
(AxeWindow) level. Windows are named 00, 01, 02, etc. If windows are
deleted the lowest missing number is used as the instance name for the
next window to be opened. This is only relevant if geometry resource
specifications for named windows are in use, e.g.

         Axe.windows:     2
         Axe.00.geometry: 80x32+0+0
         Axe.01.geometry: +0-0


File: axe.info,  Node: AxeWinRsrcs,  Next: AxeEdRsrcs,  Prev: AppRsrcs,  Up: Resources

AxeWindow widget resources
--------------------------

The following AxeWindow resources are recognised

`fileTitle'
     If this boolean resource is set to True then the name of a window
     will be set to the pathname of the file currently being edited in
     it, prefixed by `axe:'. The window's icon name is set to the last
     component of the path name, prefixed in the same fashion.

`fileTitlePrefix'
     This resource allows the user to alter the prefix that is used when
     the fileTitle resource is True.

`iconNamePrefix'
     This resource allows the user to alter the prefix that is applied
     to a window's icon name when the fileTitle resource is True.


File: axe.info,  Node: AxeEdRsrcs,  Next: AxeTextRsrcs,  Prev: AxeWinRsrcs,  Up: Resources

AxeEditor widget resources
--------------------------

The following AxeEditor resources are recognised

`buttons'
     Setting this resource selects the default button interface, unless
     *buttonList* below is also set.

`buttonList'
     This resource enables the user to specify both which buttons are to
     be shown and what their layout is to be. Its value is a semi-colon
     separated list of rows of space separated button names. A `-' may
     be used in place of a button name in order to skip a column
     position. The names of the button widgets are presented below.
     *buttonList* implies *buttons*.

`focusToText'
     Setting this boolean resource has the effect of altering the
     keyboard focus so that keystrokes occurring in the name section,
     information bar or button area are redirected to the main text
     widget, i.e. the mouse pointer can be anywhere within the main
     application window for editing to take place.

`fontList'
     This resource defines the entries in a menu of fonts from which a
     choice may be made at run time to be applied to the visisble text
     buffer of the current window. It is a whitespace separated list of
     names. If a name contains a `:' then the left hand part will be
     used as the label of the entry and the right hand part will be
     taken as the name of a font, otherwise the whole name will be used
     for both purposes. The items in the list are in addition to the
     default entry *Default* which corresponds to the original font.

`infoTimeout'
     This resource specifies how long a message should remain in the
     information bar if no other message is generated in that time. The
     value should be given as a number of seconds. A value of 0, the
     default, disables the feature, thus each message remains displayed
     until the next is generated. The information bar reverts to
     displaying the version number if a timeout occurs.

`menuList'
     This resource is a space separated list of menu names specifying
     which menu buttons should appear in the menu bar and in what order.
     The default value is

     move search insert delete help misc font window buffer show file
     quit logo

     If logo doesn't appear in the list then it will be added at the
     end.  Wherever it appears it will stretch to occupy any otherwise
     unused space.

`<menu>Menu'
     Resources for each of the move, search, insert, delete, help,
     misc, window, buffer, file and quit menus are defined so that the
     default contents may be changed. Their values are space separated
     lists of items consisting of object names from the entire pool of
     object names across the set of menus, plus `+' and `|'.  `+' is
     interpreted to mean that the default menu should be substituted at
     that point in the menu, and `|' means that a dividing line should
     be added. *Note Resources specific to aXe: Resources, for the
     complete list of object names.

`miniMenu'
     This resource defines the entries to be displayed in the menu
     associated with the minibuffer. It is a whitespace separated list
     of names. If a name contains a `:' then the left hand part will be
     used as the label of the entry and the right hand part will be
     taken as the command to be run, otherwise the whole name will be
     used for both purposes. A `+' causes expansion of the default menu
     and `|' results in the generation of a dividing line in the menu.

`suppressFilename'
     This boolean resource is used to suppress display of the filename
     pane. This is most likely to be desired when the *fileTitle*
     resource (*Note AxeWindow widget resources: AxeWinRsrcs.) has also
     been set, otherwise the filename will be displayed twice in
     adjacent sections of the window. If both of these resources are set
     then the modification state of the file is also displayed in the
     title bar.

`suppressInfobar'
     This boolean resource is used to suppress display of the
     information bar pane. Of course, then, any error messages which
     would normally have been displayed there will be lost.

`suppressMinibuffer'
     This boolean resource is used to suppress display of the
     minibuffer.


File: axe.info,  Node: AxeTextRsrcs,  Next: AxeiiTextRsrcs,  Prev: AxeEdRsrcs,  Up: Resources

AxeText widget resources
------------------------

The following AxeText resources are recognised

`backupNamePrefix'
`backupNameSuffix'
     These resources only apply when *enableBackups*, below, is true.
     The backup name is the concatenation of the first, the filename,
     and the second, in that order. The defaults are the empty string
     and `.BAK' respectively.

`enableBackups'
     This boolean resource controls whether backups of files are made
     before they are saved for the first time.

`grabOnPopup'
     This boolean resource controls whether popups grab events. The
     default is False. When events are grabbed it is not possible to do
     anything elsewhere in the application until the popup is popped
     down.


File: axe.info,  Node: AxeiiTextRsrcs,  Next: SampRsrcs,  Prev: AxeTextRsrcs,  Up: Resources

AxeiiText widget resources
--------------------------

The following AxeiiText resources are recognised

`blinkPeriod'
     This resource specifies how long the matching `(', `{' or `[' is
     highlit when a `)', `}' or `]' is typed, and is expressed in
     milliseconds. The default is 500, i.e. half a second.  Setting the
     value to 0 switches off the feature.

`blockCaret'
     This boolean resource specifies whether the default caret
     indicating the insertion point should be replaced by an inbuilt
     block caret.

     WARNING: Since the introduction of *blockCaret* (above) and
     *caretBitmap* (below) it has come to light that the Tab key has no
     visible effect when either has been selected, although the Tab
     character is inserted into the file. Neither the cause nor a fix
     for this problem has been found.

`caretBitmap'
     This resource names the pathname of a file containing a bitmap that
     should be used as the caret that indicates the insertion point.
     This resource takes precedence over *blockCaret* if both are set.

`columns'
     This resource specifies the desired width in characters.  It
     overrides any setting of the width in pixels.

`deleteOnInsert'
     This boolean resource controls whether the entry of the first
     character via the keyboard (i.e. via the insert-char action)
     following the setting of the selection should delete the
     selection. The default value is False. This feature cannot be
     supported on older (than Release 5) versions of X, and setting
     *deleteOnInsert* will have no effect.

`expandTabs'
     This resource specifies whether tabs should be expanded into spaces
     or not. The default is False. The resource only has an effect if
     the Tab key is bound to the action *insert-or-expand-tab* - which
     it is by default. *Note Actions specific to aXe: Actions.

`rows'
     This resource specifies the desired height in characters. It
     overrides any setting of the height in pixels.

`tabEvery'
     This resource is used to request that tab stops be set every
     *tabEvery* character positions. The default value is 8.

`undo'
     This resource specifies whether undo information should be kept.
     The default is True. *Note How the undo mechanism works: Undo.

`undoLevel'
     This resource specifies for how many recent operations undo
     information should be kept. The default value is 1. A value of 0
     implies keeping unlimited information, but remember that doing this
     could incur excessive memory usage costs.


File: axe.info,  Node: SampRsrcs,  Next: Actions,  Prev: AxeiiTextRsrcs,  Up: Customise

Examples of resource settings
=============================

Here is an example in which the *New + Load* entry of the *Window* menu
is replicated on the *File* menu:

         *fileMenu: + wfull

and here is one in which the file menu items are rearranged:

         *fileMenu: fload frvrt | fsvex fsvall fsave fsvas

The buttons in the button interface are AxeCommand widgets. Their names
are identical to the corresponding menu entry AxeSmeBSB object names.
Thus, the following resources would be sufficient to change the labels
of the two *Load* entries to *Edit*.

         *fload.label: Edit

Prefixing that resource specification by *XpTable or by *buttons would
be sufficient to refer to just the button widget named *fload*.

Here is an example of how to specify the *buttonList* resource.

     *buttonList: sbsel sfsel    -   dsel   -   mform wnew   - - fsave; \
                     -  scaret  isel dline  -     -   wclose

The `;' after fsave terminates the first row of buttons and the `-'s
indicate empty column positions, so the layout of the resource value
attempts to mimic the actual layout as it will appear in aXe's windows.

