This is edit-utils.info, produced by makeinfo version 4.2 from
edit-utils.texi.

INFO-DIR-SECTION XEmacs Editor
START-INFO-DIR-ENTRY
* Edit Utilities: (edit-utils).	Editing utilities for XEmacs.
END-INFO-DIR-ENTRY
   Permission is granted to make and distribute verbatim copies of this
manual provided the copyright notice and this permission notice are
preserved on all copies.

   Permission is granted to copy and distribute modified versions of
this manual under the conditions for verbatim copying, provided that the
entire resulting derived work is distributed under the terms of a
permission notice identical to this one.

   Permission is granted to copy and distribute translations of this
manual into another language, under the above conditions for modified
versions, except that this permission notice may be stated in a
translation approved by the Foundation.

   Permission is granted to copy and distribute modified versions of
this manual under the conditions for verbatim copying, provided also
that the section entitled "GNU General Public License" is included
exactly as in the original, and provided that the entire resulting
derived work is distributed under the terms of a permission notice
identical to this one.

   Permission is granted to copy and distribute translations of this
manual into another language, under the above conditions for modified
versions, except that the section entitled "GNU General Public License"
may be included in a translation approved by the Free Software
Foundation instead of in the original English.


File: edit-utils.info,  Node: Top,  Next: Comparing Windows,  Prev: (dir),  Up: (dir)

The Editing Utilities Package
*****************************

   This Info file contains the manual for the Editing Utilities package.

   Nodes whose menu description consists only of a file name are
completely undocumented.  Even a 40 character description for the menu
and a brief 50-100 word summary of the functionality for the actual
node would be greatly appreciated.  Some of the node names may be
inaccurate; corrections are also appreciated.

* Menu:

Buffer and Window Management
* Comparing Windows::		compare-w.el
* Detached Minibuffers::	detached-minibuf.el
* Convenient Buffer Switching::	iswitchb.el
* Permanent Buffers::		permanent-buffers.el
* Self-Resizing Minibuffer::	rsz-minibuf.el
* Searching Many Buffers::	search-buffers.el
* Meaningful Unique Names::	uniquify.el
* Navigating the Window Ring::	winring.el

File Management
* Backup Directory::			backup-dir.el

Session Management
* Bookmark::			bookmark.el
* Desktop::			desktop.el
* Recent File Navigation::	recent-files.el
* Resume::			resume.el
* Save Configuration::		saveconf.el
* Save History::		savehist.el
* Save Places::			saveplace.el
* Where Was I::			where-was-i-db.el

Abbreviations
* Abbreviation List::		abbrevlist.el
* Big Menubar::			big-menubar.el
* Completion::			completion.el
* Dynamic Abbreviations::	dabbrev.el
* Hippie Expand::		hippie-exp.el
* Interactive Completion::	icomplete.el
* Template Insertion::		tempo.el

Miscellaneous and Unknown:
* file-part::			file-part.el
* Flow Control::		flow-ctrl.el
* Foldout::			foldout.el
* Function Menu::		func-menu.el
* id-select::			id-select.el
* info-look::			info-look.el
* Live Icon::			live-icon.el
* makesum::			makesum.el
* man::				man.el
* mode-motion+::		mode-motion+.el
* outl-mouse::			outl-mouse.el
* page-ext::			page-ext.el
* popper::			popper.el
* Power Macros::		power-macros.el
* Redo::			redo.el
* reportmail::			reportmail.el
* Scrolling In Place::		scroll-in-place.el
* Line Numbering::		setnu.el
* Vertical Mode::		vertical-mode.el

Display, Faces, and Highlighting:
* Balloon Help and Tooltips::	balloon-help.el
* Getting the Mouse Out of the Way::	avoid.el
* Blinking Cursor::		blink-cursor.el
* Blinking Parentheses::	blink-paren.el
* Face Editor::			edit-faces.el
* Speeding Up Fontlock::	fast-lock.el
* Lazy Fontlocking::		lazy-lock.el
* Another Lazy Fontlocker::	lazy-shot.el
* lispm-fonts::			lispm-fonts.el
* mic-paren::			mic-paren.el
* paren::			paren.el
* shell-font::			shell-font.el

Low-Level Editing Hacks:
* Hooks Invoked After Saving::	after-save-commands.el
* Indivisible Blocks of Text::	atomic-extents.el
* Table and Array Editor::	array.el

Menu and Toolbar Support:
* Floating Toolbar::		floating-toolbar.el
* tree-menu::			tree-menu.el
* The Toolbar Utilities::	Creating and managing toolbars and buttons.

Appendices:
* Copying::			The GNU General Public License


File: edit-utils.info,  Node: Comparing Windows,  Next: Detached Minibuffers,  Prev: Top,  Up: Top

Comparing Windows
*****************

   This library not documented.  Please contribute!


File: edit-utils.info,  Node: Detached Minibuffers,  Next: Convenient Buffer Switching,  Prev: Comparing Windows,  Up: Top

Detached Minibuffers
********************

   This library not documented.  Please contribute!


File: edit-utils.info,  Node: Convenient Buffer Switching,  Next: Permanent Buffers,  Prev: Detached Minibuffers,  Up: Top

Convenient Buffer Switching
***************************

   This library not documented.  Please contribute!


File: edit-utils.info,  Node: Permanent Buffers,  Next: Self-Resizing Minibuffer,  Prev: Convenient Buffer Switching,  Up: Top

Permanent Buffers
*****************

   This library not documented.  Please contribute!


File: edit-utils.info,  Node: Self-Resizing Minibuffer,  Next: Searching Many Buffers,  Prev: Permanent Buffers,  Up: Top

Self-Resizing Minibuffer
************************

   This library not documented.  Please contribute!


File: edit-utils.info,  Node: Searching Many Buffers,  Next: Meaningful Unique Names,  Prev: Self-Resizing Minibuffer,  Up: Top

Searching Many Buffers
**********************

   This library not documented.  Please contribute!


File: edit-utils.info,  Node: Meaningful Unique Names,  Next: Navigating the Window Ring,  Prev: Searching Many Buffers,  Up: Top

Meaningful Unique Names
***********************

   This library not documented.  Please contribute!


File: edit-utils.info,  Node: Navigating the Window Ring,  Next: Backup Directory,  Prev: Meaningful Unique Names,  Up: Top

Navigating the Window Ring
**************************

   This library not documented.  Please contribute!


File: edit-utils.info,  Node: Backup Directory,  Next: Bookmark,  Prev: Navigating the Window Ring,  Up: Top

Backup Directory
****************

   This library not documented.  Please contribute!


File: edit-utils.info,  Node: Bookmark,  Next: Desktop,  Prev: Backup Directory,  Up: Top

Bookmark
********

   This library not documented.  Please contribute!


File: edit-utils.info,  Node: Desktop,  Next: Recent File Navigation,  Prev: Bookmark,  Up: Top

Desktop
*******

   This library not documented.  Please contribute!


File: edit-utils.info,  Node: Recent File Navigation,  Next: Resume,  Prev: Desktop,  Up: Top

Recent File Navigation
**********************

   This library not documented.  Please contribute!


File: edit-utils.info,  Node: Resume,  Next: Save Configuration,  Prev: Recent File Navigation,  Up: Top

Resume
******

   This library not documented.  Please contribute!


File: edit-utils.info,  Node: Save Configuration,  Next: Save History,  Prev: Resume,  Up: Top

Save Configuration
******************

   This library not documented.  Please contribute!


File: edit-utils.info,  Node: Save History,  Next: Save Places,  Prev: Save Configuration,  Up: Top

Save History
************

   This library not documented.  Please contribute!


File: edit-utils.info,  Node: Save Places,  Next: Where Was I,  Prev: Save History,  Up: Top

Save Places
***********

   This library not documented.  Please contribute!


File: edit-utils.info,  Node: Where Was I,  Next: Abbreviation List,  Prev: Save Places,  Up: Top

Where Was I
***********

   This library not documented.  Please contribute!


File: edit-utils.info,  Node: Abbreviation List,  Next: Big Menubar,  Prev: Where Was I,  Up: Top

Abbreviation List
*****************

   This library not documented.  Please contribute!


File: edit-utils.info,  Node: Big Menubar,  Next: Completion,  Prev: Abbreviation List,  Up: Top

Big Menubar
***********

   This library not documented.  Please contribute!


File: edit-utils.info,  Node: Completion,  Next: Dynamic Abbreviations,  Prev: Big Menubar,  Up: Top

Completion
**********

   This library not documented.  Please contribute!


File: edit-utils.info,  Node: Dynamic Abbreviations,  Next: Hippie Expand,  Prev: Completion,  Up: Top

Dynamic Abbreviations
*********************

   This library not documented.  Please contribute!


File: edit-utils.info,  Node: Hippie Expand,  Next: Interactive Completion,  Prev: Dynamic Abbreviations,  Up: Top

Hippie Expand
*************

   This library not documented.  Please contribute!


File: edit-utils.info,  Node: Interactive Completion,  Next: Template Insertion,  Prev: Hippie Expand,  Up: Top

Interactive Completion
**********************

   This library not documented.  Please contribute!


File: edit-utils.info,  Node: Template Insertion,  Next: file-part,  Prev: Interactive Completion,  Up: Top

Template Insertion
******************

   This library not documented.  Please contribute!


File: edit-utils.info,  Node: file-part,  Next: Flow Control,  Prev: Template Insertion,  Up: Top

file-part
*********

   This library not documented.  Please contribute!


File: edit-utils.info,  Node: Flow Control,  Next: Foldout,  Prev: file-part,  Up: Top

Flow Control
************

   This library not documented.  Please contribute!


File: edit-utils.info,  Node: Foldout,  Next: Function Menu,  Prev: Flow Control,  Up: Top

Foldout
*******

   This library not documented.  Please contribute!


File: edit-utils.info,  Node: Function Menu,  Next: id-select,  Prev: Foldout,  Up: Top

Function Menu
*************

   This library not documented.  Please contribute!


File: edit-utils.info,  Node: id-select,  Next: info-look,  Prev: Function Menu,  Up: Top

id-select
*********

   This library not documented.  Please contribute!


File: edit-utils.info,  Node: info-look,  Next: Live Icon,  Prev: id-select,  Up: Top

info-look
*********

   This library not documented.  Please contribute!


File: edit-utils.info,  Node: Live Icon,  Next: makesum,  Prev: info-look,  Up: Top

Live Icon
*********

   This library not documented.  Please contribute!


File: edit-utils.info,  Node: makesum,  Next: man,  Prev: Live Icon,  Up: Top

makesum
*******

   This library not documented.  Please contribute!


File: edit-utils.info,  Node: man,  Next: mode-motion+,  Prev: makesum,  Up: Top

man
***

   This library not documented.  Please contribute!


File: edit-utils.info,  Node: mode-motion+,  Next: outl-mouse,  Prev: man,  Up: Top

mode-motion+
************

   This library not documented.  Please contribute!


File: edit-utils.info,  Node: outl-mouse,  Next: page-ext,  Prev: mode-motion+,  Up: Top

outl-mouse
**********

   This library not documented.  Please contribute!


File: edit-utils.info,  Node: page-ext,  Next: popper,  Prev: outl-mouse,  Up: Top

page-ext
********

   This library not documented.  Please contribute!


File: edit-utils.info,  Node: popper,  Next: Power Macros,  Prev: page-ext,  Up: Top

popper
******

   This library not documented.  Please contribute!


File: edit-utils.info,  Node: Power Macros,  Next: Redo,  Prev: popper,  Up: Top

Power Macros
************

   This library not documented.  Please contribute!


File: edit-utils.info,  Node: Redo,  Next: reportmail,  Prev: Power Macros,  Up: Top

Redo
****

   This library not documented.  Please contribute!


File: edit-utils.info,  Node: reportmail,  Next: Scrolling In Place,  Prev: Redo,  Up: Top

reportmail
**********

   This library not documented.  Please contribute!


File: edit-utils.info,  Node: Scrolling In Place,  Next: Line Numbering,  Prev: reportmail,  Up: Top

Scrolling In Place
******************

   This library not documented.  Please contribute!


File: edit-utils.info,  Node: Line Numbering,  Next: Vertical Mode,  Prev: Scrolling In Place,  Up: Top

Line Numbering
**************

   This library not documented.  Please contribute!


File: edit-utils.info,  Node: Vertical Mode,  Next: Balloon Help and Tooltips,  Prev: Line Numbering,  Up: Top

Vertical Mode
*************

   This library not documented.  Please contribute!


File: edit-utils.info,  Node: Balloon Help and Tooltips,  Next: Getting the Mouse Out of the Way,  Prev: Vertical Mode,  Up: Top

Balloon Help and Tooltips
*************************

   This library not documented.  Please contribute!


File: edit-utils.info,  Node: Getting the Mouse Out of the Way,  Next: Blinking Cursor,  Prev: Balloon Help and Tooltips,  Up: Top

Getting the Mouse Out of the Way
********************************

   This library not documented.  Please contribute!


File: edit-utils.info,  Node: Blinking Cursor,  Next: Blinking Parentheses,  Prev: Getting the Mouse Out of the Way,  Up: Top

Blinking Cursor
***************

   This library not documented.  Please contribute!


File: edit-utils.info,  Node: Blinking Parentheses,  Next: Face Editor,  Prev: Blinking Cursor,  Up: Top

Blinking Parentheses
********************

   This library not documented.  Please contribute!


File: edit-utils.info,  Node: Face Editor,  Next: Speeding Up Fontlock,  Prev: Blinking Parentheses,  Up: Top

Face Editor
***********

   This library not documented.  Please contribute!


File: edit-utils.info,  Node: Speeding Up Fontlock,  Next: Lazy Fontlocking,  Prev: Face Editor,  Up: Top

Speeding Up Fontlock
********************

   This library not documented.  Please contribute!


File: edit-utils.info,  Node: Lazy Fontlocking,  Next: Another Lazy Fontlocker,  Prev: Speeding Up Fontlock,  Up: Top

Lazy Fontlocking
****************

   This library not documented.  Please contribute!


File: edit-utils.info,  Node: Another Lazy Fontlocker,  Next: lispm-fonts,  Prev: Lazy Fontlocking,  Up: Top

Another Lazy Fontlocker
***********************

   This library not documented.  Please contribute!


File: edit-utils.info,  Node: lispm-fonts,  Next: mic-paren,  Prev: Another Lazy Fontlocker,  Up: Top

lispm-fonts
***********

   This library not documented.  Please contribute!


File: edit-utils.info,  Node: mic-paren,  Next: paren,  Prev: lispm-fonts,  Up: Top

mic-paren
*********

   This library not documented.  Please contribute!


File: edit-utils.info,  Node: paren,  Next: shell-font,  Prev: mic-paren,  Up: Top

paren
*****

   This library not documented.  Please contribute!


File: edit-utils.info,  Node: shell-font,  Next: Hooks Invoked After Saving,  Prev: paren,  Up: Top

shell-font
**********

   This library not documented.  Please contribute!


File: edit-utils.info,  Node: Hooks Invoked After Saving,  Next: Indivisible Blocks of Text,  Prev: shell-font,  Up: Top

Hooks Invoked After Saving
**************************

   This library not documented.  Please contribute!


File: edit-utils.info,  Node: Indivisible Blocks of Text,  Next: Table and Array Editor,  Prev: Hooks Invoked After Saving,  Up: Top

Indivisible Blocks of Text
**************************

   This library not documented.  Please contribute!


File: edit-utils.info,  Node: Table and Array Editor,  Next: Floating Toolbar,  Prev: Indivisible Blocks of Text,  Up: Top

Table and Array Editor
**********************

   This library not documented.  Please contribute!


File: edit-utils.info,  Node: Floating Toolbar,  Next: tree-menu,  Prev: Table and Array Editor,  Up: Top

Floating Toolbar
****************

   This library not documented.  Please contribute!


File: edit-utils.info,  Node: tree-menu,  Next: The Toolbar Utilities,  Prev: Floating Toolbar,  Up: Top

tree-menu
*********

   This library not documented.  Please contribute!


File: edit-utils.info,  Node: The Toolbar Utilities,  Next: Copying,  Prev: tree-menu,  Up: Top

The Toolbar Utilities
*********************

   The toolbar utilities are a set of Emacs commands and Lisp functions
for convenient creation and management of toolbars.  Common usages such
as creating and adding toolbar buttons to invoke commands and keyboard
macros are implemented as user commands.  Convenience APIs are provided
to create buttons, add them to toolbars, kill them from toolbars, and
finding a particular button, or a button with certain content, in a
toolbar.

   The toolbar utilities are implemented in three files:

`toolbar-utils.el'
     The toolbar utility APIs and user commands.

`edit-toolbar.el'
     The near-WYSIWYG toolbar editor by Peter D. Pezaris.

`xemacs-toolbar.el'
     The XEmacs compatibility API for programs that should also run
     under GNU Emacs.

   The author would like to thank Jeff Miller and Peter D. Pezaris for
the original API and the toolbar editor, respectively, and David
Kastrup and Jamie Zawinski for the pedal-gluteal impetus that resulted
in the recent revision of these libraries described in this manual.

* Menu:

* Adding Buttons on the Fly::		Quick and convenient.
* The Toolbar Editor::			Power tools for customization.
* APIs for Adding and Killing::		For Lisp programmers.
* APIs for Search::                     Button, button, who's got the button?
* Toolbar Portability::			The `xemacs-toolbar.el' library.


File: edit-utils.info,  Node: Adding Buttons on the Fly,  Next: The Toolbar Editor,  Prev: The Toolbar Utilities,  Up: The Toolbar Utilities

Adding Buttons on the Fly
=========================

 - Group: edit-toolbar
     Customize group of tools for interactive editing and
     non-interactive management of toolbars.

 - Variable: toolbar-button-default-position
     Default position for adding toolbar buttons on the fly.  The value
     may be a non-negative integer (0 is leftmost), or one of the
     symbols `left', `right', or `extreme-right'.  `left' is synonymous
     with 0, and `extreme-right' is synonymous with `(length toolbar)'.
     `right' specifies placing a new item at the right end of the
     flush-left group of buttons.

     Default value: `right'.  Customize type: sexp.

     See also `toolbar-add-button', *Note APIs for Adding and Killing::.

 - Command: toolbar-add-button-on-the-fly description command label
          &optional position locale
     Add an button at POSITION to the default toolbar of the selected
     window.  Returns `t'.

     The return value may change.  Tell stephen@xemacs.org what value
     you think would be (most) useful.

    DESCRIPTION
          A string describing the action, and displayed as help.

    COMMAND
          An interactive command (ie, a symbol with an interactive
          function definition) implementing the action.

    LABEL
          A string used to label the button.

    POSITION
          Optional.  A position (a non-negative integer, or one of the
          symbols `left', `right', or `extreme-right'.

          Default: `right'.

    LOCALE
          Optional.  A specifier locale, defaulting to the current
          buffer.  If current-buffer-only is not what you want, and you
          don't understand specifier locales, use `global'.  It's safe
          and probably does what you want.

 - Command: toolbar-add-kbd-macro mac icon is-file
     Add a button invoking a keyboard macro to the toolbar.  The button
     is added at the end of the left group.

    MAC
          A keyboard macro name, or the empty string or nil to use a
          copy of the last keyboard macro defined.

    ICON
          A string specifying the icon to be used.  If IS-FILE is
          non-`nil', it is interpreted as the name of an image file, and
          searched for using `locate-data-file'.  Otherwise it is used
          verbatim as a label.

    IS-FILE
          Determines the treatment of ICON (q.v.).

     Used interactively, prompts for the macro name MAC and an ICON.
     IS-FILE is non-`nil' if a prefix argument was used.

 - Function: toolbar-add-execute-macro-button
     Add a button to the global toolbar to execute the last keyboard
     macro.

     Unlike `toolbar-add-kbd-macro', this does not copy the macro.  The
     macro executed will change with redefinitions.

     Due to a simple implementation, this button will not appear in
     buffers with local toolbars if invoked after the toolbar is
     installed.  If you like this button, it's probably best to invoke
     this function in your init file.

 - Function: toolbar-execute-last-kbd-macro
     Toolbar thunk which executes the most recently defined keyboard
     macro.

 - Command: restore-initial-toolbar
     Restores the default toolbar defined by `initial-toolbar-spec'.

     There is also a cache of killed buttons in `button-palette'.


File: edit-utils.info,  Node: The Toolbar Editor,  Next: APIs for Adding and Killing,  Prev: Adding Buttons on the Fly,  Up: The Toolbar Utilities

The Toolbar Editor
==================

   To use `edit-toolbar.el', simply type `M-x edit-toolbar RET'.

   For help on the various commands you can type <?> in a
`edit-toolbar' buffer.  To save a modified toolbar type `C-x C-s' in an
`edit-toolbar' buffer.  If you want to use a saved toolbar in your
future XEmacs sessions, add the following line of code to your init
file:

          (load "~/.xemacs/.toolbar")

   Here is a table of commands and bindings available in
`edit-toolbar-mode'.  These commands are also available from the `Edit
Toolbar' menu.

`q'
     `edit-toolbar-quit':  Bury the `edit-toolbar' buffer.

`p'
`DEL'
     `edit-toolbar-previous':  Select the previous item (line).

`n'
`SPC'
`RET'
     `edit-toolbar-next':    Select the next item (line).

`?'
     `describe-mode':  Help.

`f'
     `edit-toolbar-set-function':  Set the command for the current
     button.

`h'
     `edit-toolbar-set-help':  Set the help string for the current
     button.

`a'
     `edit-toolbar-add-button':  Add a new empty button.

`2'
     `edit-toolbar-add-separator-2D-narrow':  Add a new narrow 2D
     fixed-width spacer.

`@'
     `edit-toolbar-add-separator-2D-wide':  Add a new wide 2D
     fixed-width spacer.

`3'
     `edit-toolbar-add-separator-3D-narrow':  Add a new narrow 3D
     fixed-width spacer.

`#'
     `edit-toolbar-add-separator-3D-wide':  Add a new wide 3D
     fixed-width spacer.

`R'
     `edit-toolbar-add-separator-right-left':  Place the filler
     separator, which expands to create a flush-left group of buttons
     and spacers and a flush-right group.

`c'
     `edit-toolbar-copy':  Copy the selected button.

`d'
     `edit-toolbar-down':  Reorder the buttons by moving the selected
     button down (to the right on a horizontal toolbar).

`u'
     `edit-toolbar-up':  Reorder the buttons by moving the selected
     button up (to the left on a horizontal toolbar).

`k'
     `edit-toolbar-kill':  Kill the selected button.

`s'
`C-x C-s'
     `edit-toolbar-save':  Save the current buffer to
     `~/.xemacs/.toolbar' in a format that allows it to be reloaded.

`r'
     `edit-toolbar-restore':  Restore the original toolbar (ie, before
     this editing session started).


File: edit-utils.info,  Node: APIs for Adding and Killing,  Next: APIs for Search,  Prev: The Toolbar Editor,  Up: The Toolbar Utilities

APIs for Adding and Killing
===========================

 - Variable: button-palette
     List of buttons cut from toolbars.

     Note this is actually a toolbar descriptor.

 - Function: toolbar-add-item toolbar-spec item &optional position
     Add ITEM to TOOLBAR-SPEC at POSITION, and return TOOLBAR-SPEC.
     Uses functions that alter list structure.

    ITEM
          A toolbar button or spacer specification (eg, from
          `toolbar-new-button' or `toolbar-new-spacer').

    TOOLBAR-SPEC
          A toolbar descriptor (eg, from `toolbar-new-toolbar').

    POSITION
          Optional.  A non-negative integer, with 0 being the extreme
          left and \(length TOOLBAR-SPEC) the extreme right.  The
          symbols `left', `right', and `extreme-right' are also
          accepted.  `left' is synonymous with 0.  `right' places ITEM
          at the right end of the left group of buttons.
          `extreme-right' places ITEM at the extreme right of the
          toolbar, creating a right group if one does not exist.

     #### This function does not yet support inserting the group
     delimiter nil as an explicit item.

     POSITION may be greater than (length TOOLBAR-SPEC), in which case
     it is truncated to (length TOOLBAR-SPEC).  Note that `(length
     TOOLBAR-SPEC)' is not synonymous with `right' or `extreme-right'
     (`extreme-right' will create a right group if it doesn't already
     exist).

 - Function: toolbar-new-button icon-spec command help-string &optional
          initially-disabled
     Return a checked toolbar button specification.

    ICON-SPEC
          A list of glyphs (from `make-glyph'), a glyph, or a string to
          use as the button's icon.  If a string or single glyph, it
          will be used for the button-up glyph.  If a list, it may
          contain 1 to 6 glyphs, which XEmacs will use for button up,
          button down, button disabled, button up with caption, button
          down with caption, and button disabled with caption, in that
          order.  Missing or nil glyphs will be defaulted.  (####
          Strings as list elements are not supported but could be.)

    COMMAND
          The (interactive) command to invoke when the button is
          pressed.

    HELP-STRING
          A string briefly describing the command, displayed in the
          echo area or as balloon help when the pointer enters the
          button.

    INITIALLY-DISABLED
          Optional.  If non-`nil', specifies that the button should
          initially be disabled.

          See `default-toolbar' or the Lispref (*note Toolbars:
          (lispref)Toolbars.) for more information.

 - Function: toolbar-new-spacer style &optional size
     Returns a checked toolbar spacer "button".

    STYLE
          One of the symbols `2d' or `3d', indicating whether the area
          is displayed without shadows (giving it a flat appearance),
          or with shadows (giving it a raised, 3-D appearance).  There
          is no default.  #### We may set a default style.  Tell
          stephen@xemacs.org which you use.

    SIZE
          Specifies the length, in pixels, of the blank area.  If
          omitted, it defaults to a device-specific value (8 pixels for
          X devices).

 - Function: make-toolbar-instantiator &optional toolbar-spec domain
     Return a checked toolbar instantiator, a list of vectors.

    TOOLBAR-SPEC
          May be a list of buttons (ie, a toolbar descriptor, see
          `default-toolbar'), a toolbar specifier object, a symbol whose
          value is a toolbar specifier object, or `nil'.  If `nil',
          returns a null list.  If a toolbar specifier object or
          variable containing one, the specification for DOMAIN is
          used.  If non-nil, DOMAIN must be a window, a frame, or a
          device, otherwise it defaults to the selected window (see
          `specifier-instance').  The list thus generated is checked and
          returned.

          If TOOLBAR-SPEC is a list, it is copied; it is safe to pass
          other packages' toolbar initializers to this function.
          However, you probably do not want to change any of the
          objects in the returned specification.  They are returned as
          is, not copied.

          See `default-toolbar' or the Lispref (*note Toolbars:
          (lispref)Toolbars.) for more information.

 - Function: toolbar-kill-item-pos pos &optional toolbar locale
     Kill the item at position POS of TOOLBAR in LOCALE.  Killed
     buttons are prepended to `button-palette'.

     LOCALE defaults to `global'.  If there are multiple specs for
     LOCALE, take the first one.

     This function currently does not accept symbolic positions a la
     `toolbar-add-item'.  Use `toolbar-find-item' to locate whole
     buttons and spacers, and `toolbar-find-button' to locate buttons by
     characteristics.  See also `toolbar-find-button-by-icon',
     `toolbar-find-button-by-command', and
     `toolbar-find-button-by-help-string'.


File: edit-utils.info,  Node: APIs for Search,  Next: Toolbar Portability,  Prev: APIs for Adding and Killing,  Up: The Toolbar Utilities

APIs for Search
===============

 - Function: toolbar-find-button item &optional toolbar locale
     Return the position of a button containing ITEM in its
     specification.

    ITEM
          May specify a button, spacer, icon, command, help string, or
          nil.  If ITEM is nil, find the separator between the group of
          buttons to be left justified, and the group to be right
          justified.  (Distinctions among the various "search key
          types" are somewhat heuristic but are probably reliable
          enough to use in library code.)

    TOOLBAR
          If non-`nil', search it; otherwise search the default toolbar.

    LOCALE
          If non-`nil', get TOOLBAR's descriptor in that locale,
          otherwise use the `global' locale.

 - Function: toolbar-find-item item &optional toolbar locale
     Return the position of ITEM, a button, spacer, or nil.  TOOLBAR
     and LOCALE determine the descriptor to be searched.

     If ITEM is nil, find the separator between the group of buttons to
     be left justified, and the group to be right justified.  If there
     are several matching items, the first is returned.  If none is
     found, return nil.

 - Function: toolbar-find-button-by-icon icon &optional toolbar locale
     Return the position of a button with icon ICON.  ICON must be a
     list of glyphs or a symbols whose value is a list of glyphs.
     TOOLBAR and LOCALE determine the descriptor to be searched.

     If there are several matching buttons, the first is returned.

 - Function: toolbar-find-button-by-command cmd &optional toolbar locale
     Return the position of a button invoking command CMD.  TOOLBAR and
     LOCALE determine the descriptor to be searched.

     If there are several matching buttons, the first is returned.

 - Function: toolbar-find-button-by-help-string str &optional toolbar
          locale
     Return the position of a button with help-string STR.  TOOLBAR and
     LOCALE determine the descriptor to be searched.

     If there are several matching buttons, the first is returned.
     This function will not find spacers.

 - Function: toolbar-find-button-by-element object index toolbar locale
          &optional thunk
     Return the position of a button containing OBJECT in element
     INDEX.  TOOLBAR and LOCALE determine the descriptor to be searched.

     Optional argument THUNK is a function of one argument which is
     used to normalize OBJECT for comparison.

     If there are several matching buttons, the first is returned.
     This function will not find spacers.


File: edit-utils.info,  Node: Toolbar Portability,  Prev: APIs for Search,  Up: The Toolbar Utilities

Toolbar API Portability to GNU Emacs
====================================

   The `xemacs-toolbar.el' library provides XEmacs toolbar
compatibility functions for GNU Emacs.

   Third-party maintainers may use the same APIs in GNU Emacs as in
XEmacs.  Simply provide this library with your own code, and load it
conditionally:

     (if (featurep 'xemacs)
         (require 'toolbar-utils)
       (require 'toolbar-utils "xemacs-toolbar"))

   XEmacs features that are not present in GNU Emacs will be ignored,
and various arguments with different semantics will be defaulted
appropriately.

   User commands such as `toolbar-add-kbd-macro' and advanced features
such as the toolbar editor and the button cache are not presently
provided.


File: edit-utils.info,  Node: Copying,  Prev: The Toolbar Utilities,  Up: Top

Copying
*******

GNU GENERAL PUBLIC LICENSE
**************************

                         Version 2, June 1991
     Copyright (C) 1989, 1991 Free Software Foundation, Inc.
     675 Mass Ave, Cambridge, MA 02139, USA
     
     Everyone is permitted to copy and distribute verbatim copies
     of this license document, but changing it is not allowed.

Preamble
========

   The licenses for most software are designed to take away your
freedom to share and change it.  By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users.  This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it.  (Some other Free Software Foundation software is covered by
the GNU Library General Public License instead.)  You can apply it to
your programs, too.

   When we speak of free software, we are referring to freedom, not
price.  Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it in
new free programs; and that you know you can do these things.

   To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.

   For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have.  You must make sure that they, too, receive or can get the
source code.  And you must show them these terms so they know their
rights.

   We protect your rights with two steps: (1) copyright the software,
and (2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.

   Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software.  If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.

   Finally, any free program is threatened constantly by software
patents.  We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary.  To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.

   The precise terms and conditions for copying, distribution and
modification follow.

    TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
  0. This License applies to any program or other work which contains a
     notice placed by the copyright holder saying it may be distributed
     under the terms of this General Public License.  The "Program",
     below, refers to any such program or work, and a "work based on
     the Program" means either the Program or any derivative work under
     copyright law: that is to say, a work containing the Program or a
     portion of it, either verbatim or with modifications and/or
     translated into another language.  (Hereinafter, translation is
     included without limitation in the term "modification".)  Each
     licensee is addressed as "you".

     Activities other than copying, distribution and modification are
     not covered by this License; they are outside its scope.  The act
     of running the Program is not restricted, and the output from the
     Program is covered only if its contents constitute a work based on
     the Program (independent of having been made by running the
     Program).  Whether that is true depends on what the Program does.

  1. You may copy and distribute verbatim copies of the Program's
     source code as you receive it, in any medium, provided that you
     conspicuously and appropriately publish on each copy an appropriate
     copyright notice and disclaimer of warranty; keep intact all the
     notices that refer to this License and to the absence of any
     warranty; and give any other recipients of the Program a copy of
     this License along with the Program.

     You may charge a fee for the physical act of transferring a copy,
     and you may at your option offer warranty protection in exchange
     for a fee.

  2. You may modify your copy or copies of the Program or any portion
     of it, thus forming a work based on the Program, and copy and
     distribute such modifications or work under the terms of Section 1
     above, provided that you also meet all of these conditions:

       a. You must cause the modified files to carry prominent notices
          stating that you changed the files and the date of any change.

       b. You must cause any work that you distribute or publish, that
          in whole or in part contains or is derived from the Program
          or any part thereof, to be licensed as a whole at no charge
          to all third parties under the terms of this License.

       c. If the modified program normally reads commands interactively
          when run, you must cause it, when started running for such
          interactive use in the most ordinary way, to print or display
          an announcement including an appropriate copyright notice and
          a notice that there is no warranty (or else, saying that you
          provide a warranty) and that users may redistribute the
          program under these conditions, and telling the user how to
          view a copy of this License.  (Exception: if the Program
          itself is interactive but does not normally print such an
          announcement, your work based on the Program is not required
          to print an announcement.)

     These requirements apply to the modified work as a whole.  If
     identifiable sections of that work are not derived from the
     Program, and can be reasonably considered independent and separate
     works in themselves, then this License, and its terms, do not
     apply to those sections when you distribute them as separate
     works.  But when you distribute the same sections as part of a
     whole which is a work based on the Program, the distribution of
     the whole must be on the terms of this License, whose permissions
     for other licensees extend to the entire whole, and thus to each
     and every part regardless of who wrote it.

     Thus, it is not the intent of this section to claim rights or
     contest your rights to work written entirely by you; rather, the
     intent is to exercise the right to control the distribution of
     derivative or collective works based on the Program.

     In addition, mere aggregation of another work not based on the
     Program with the Program (or with a work based on the Program) on
     a volume of a storage or distribution medium does not bring the
     other work under the scope of this License.

  3. You may copy and distribute the Program (or a work based on it,
     under Section 2) in object code or executable form under the terms
     of Sections 1 and 2 above provided that you also do one of the
     following:

       a. Accompany it with the complete corresponding machine-readable
          source code, which must be distributed under the terms of
          Sections 1 and 2 above on a medium customarily used for
          software interchange; or,

       b. Accompany it with a written offer, valid for at least three
          years, to give any third party, for a charge no more than your
          cost of physically performing source distribution, a complete
          machine-readable copy of the corresponding source code, to be
          distributed under the terms of Sections 1 and 2 above on a
          medium customarily used for software interchange; or,

       c. Accompany it with the information you received as to the offer
          to distribute corresponding source code.  (This alternative is
          allowed only for noncommercial distribution and only if you
          received the program in object code or executable form with
          such an offer, in accord with Subsection b above.)

     The source code for a work means the preferred form of the work for
     making modifications to it.  For an executable work, complete
     source code means all the source code for all modules it contains,
     plus any associated interface definition files, plus the scripts
     used to control compilation and installation of the executable.
     However, as a special exception, the source code distributed need
     not include anything that is normally distributed (in either
     source or binary form) with the major components (compiler,
     kernel, and so on) of the operating system on which the executable
     runs, unless that component itself accompanies the executable.

     If distribution of executable or object code is made by offering
     access to copy from a designated place, then offering equivalent
     access to copy the source code from the same place counts as
     distribution of the source code, even though third parties are not
     compelled to copy the source along with the object code.

  4. You may not copy, modify, sublicense, or distribute the Program
     except as expressly provided under this License.  Any attempt
     otherwise to copy, modify, sublicense or distribute the Program is
     void, and will automatically terminate your rights under this
     License.  However, parties who have received copies, or rights,
     from you under this License will not have their licenses
     terminated so long as such parties remain in full compliance.

  5. You are not required to accept this License, since you have not
     signed it.  However, nothing else grants you permission to modify
     or distribute the Program or its derivative works.  These actions
     are prohibited by law if you do not accept this License.
     Therefore, by modifying or distributing the Program (or any work
     based on the Program), you indicate your acceptance of this
     License to do so, and all its terms and conditions for copying,
     distributing or modifying the Program or works based on it.

  6. Each time you redistribute the Program (or any work based on the
     Program), the recipient automatically receives a license from the
     original licensor to copy, distribute or modify the Program
     subject to these terms and conditions.  You may not impose any
     further restrictions on the recipients' exercise of the rights
     granted herein.  You are not responsible for enforcing compliance
     by third parties to this License.

  7. If, as a consequence of a court judgment or allegation of patent
     infringement or for any other reason (not limited to patent
     issues), conditions are imposed on you (whether by court order,
     agreement or otherwise) that contradict the conditions of this
     License, they do not excuse you from the conditions of this
     License.  If you cannot distribute so as to satisfy simultaneously
     your obligations under this License and any other pertinent
     obligations, then as a consequence you may not distribute the
     Program at all.  For example, if a patent license would not permit
     royalty-free redistribution of the Program by all those who
     receive copies directly or indirectly through you, then the only
     way you could satisfy both it and this License would be to refrain
     entirely from distribution of the Program.

     If any portion of this section is held invalid or unenforceable
     under any particular circumstance, the balance of the section is
     intended to apply and the section as a whole is intended to apply
     in other circumstances.

     It is not the purpose of this section to induce you to infringe any
     patents or other property right claims or to contest validity of
     any such claims; this section has the sole purpose of protecting
     the integrity of the free software distribution system, which is
     implemented by public license practices.  Many people have made
     generous contributions to the wide range of software distributed
     through that system in reliance on consistent application of that
     system; it is up to the author/donor to decide if he or she is
     willing to distribute software through any other system and a
     licensee cannot impose that choice.

     This section is intended to make thoroughly clear what is believed
     to be a consequence of the rest of this License.

  8. If the distribution and/or use of the Program is restricted in
     certain countries either by patents or by copyrighted interfaces,
     the original copyright holder who places the Program under this
     License may add an explicit geographical distribution limitation
     excluding those countries, so that distribution is permitted only
     in or among countries not thus excluded.  In such case, this
     License incorporates the limitation as if written in the body of
     this License.

  9. The Free Software Foundation may publish revised and/or new
     versions of the General Public License from time to time.  Such
     new versions will be similar in spirit to the present version, but
     may differ in detail to address new problems or concerns.

     Each version is given a distinguishing version number.  If the
     Program specifies a version number of this License which applies
     to it and "any later version", you have the option of following
     the terms and conditions either of that version or of any later
     version published by the Free Software Foundation.  If the Program
     does not specify a version number of this License, you may choose
     any version ever published by the Free Software Foundation.

 10. If you wish to incorporate parts of the Program into other free
     programs whose distribution conditions are different, write to the
     author to ask for permission.  For software which is copyrighted
     by the Free Software Foundation, write to the Free Software
     Foundation; we sometimes make exceptions for this.  Our decision
     will be guided by the two goals of preserving the free status of
     all derivatives of our free software and of promoting the sharing
     and reuse of software generally.

                                NO WARRANTY

 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO
     WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE
     LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
     HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT
     WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT
     NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
     FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS TO THE
     QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
     PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY
     SERVICING, REPAIR OR CORRECTION.

 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
     WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY
     MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE
     LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL,
     INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR
     INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
     DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU
     OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY
     OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN
     ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.

                      END OF TERMS AND CONDITIONS

How to Apply These Terms to Your New Programs
=============================================

   If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these
terms.

   To do so, attach the following notices to the program.  It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.

     ONE LINE TO GIVE THE PROGRAM'S NAME AND AN IDEA OF WHAT IT DOES.
     Copyright (C) 19YY  NAME OF AUTHOR
     
     This program is free software; you can redistribute it and/or
     modify it under the terms of the GNU General Public License
     as published by the Free Software Foundation; either version 2
     of the License, or (at your option) any later version.
     
     This program is distributed in the hope that it will be useful,
     but WITHOUT ANY WARRANTY; without even the implied warranty of
     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     GNU General Public License for more details.
     
     You should have received a copy of the GNU General Public License
     along with this program; if not, write to the Free Software
     Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.

   Also add information on how to contact you by electronic and paper
mail.

   If the program is interactive, make it output a short notice like
this when it starts in an interactive mode:

     Gnomovision version 69, Copyright (C) 19YY NAME OF AUTHOR
     Gnomovision comes with ABSOLUTELY NO WARRANTY; for details
     type `show w'.  This is free software, and you are welcome
     to redistribute it under certain conditions; type `show c'
     for details.

   The hypothetical commands `show w' and `show c' should show the
appropriate parts of the General Public License.  Of course, the
commands you use may be called something other than `show w' and `show
c'; they could even be mouse-clicks or menu items--whatever suits your
program.

   You should also get your employer (if you work as a programmer) or
your school, if any, to sign a "copyright disclaimer" for the program,
if necessary.  Here is a sample; alter the names:

     Yoyodyne, Inc., hereby disclaims all copyright
     interest in the program `Gnomovision'
     (which makes passes at compilers) written
     by James Hacker.
     
     SIGNATURE OF TY COON, 1 April 1989
     Ty Coon, President of Vice

   This General Public License does not permit incorporating your
program into proprietary programs.  If your program is a subroutine
library, you may consider it more useful to permit linking proprietary
applications with the library.  If this is what you want to do, use the
GNU Library General Public License instead of this License.



Tag Table:
Node: Top1559
Node: Comparing Windows4500
Node: Detached Minibuffers4692
Node: Convenient Buffer Switching4914
Node: Permanent Buffers5150
Node: Self-Resizing Minibuffer5370
Node: Searching Many Buffers5599
Node: Meaningful Unique Names5830
Node: Navigating the Window Ring6065
Node: Backup Directory6300
Node: Bookmark6500
Node: Desktop6665
Node: Recent File Navigation6834
Node: Resume7031
Node: Save Configuration7207
Node: Save History7397
Node: Save Places7580
Node: Where Was I7754
Node: Abbreviation List7933
Node: Big Menubar8124
Node: Completion8302
Node: Dynamic Abbreviations8482
Node: Hippie Expand8686
Node: Interactive Completion8886
Node: Template Insertion9101
Node: file-part9304
Node: Flow Control9479
Node: Foldout9649
Node: Function Menu9813
Node: id-select9986
Node: info-look10153
Node: Live Icon10316
Node: makesum10477
Node: man10628
Node: mode-motion+10774
Node: outl-mouse10941
Node: page-ext11109
Node: popper11267
Node: Power Macros11423
Node: Redo11587
Node: reportmail11739
Node: Scrolling In Place11909
Node: Line Numbering12105
Node: Vertical Mode12296
Node: Balloon Help and Tooltips12492
Node: Getting the Mouse Out of the Way12730
Node: Blinking Cursor12984
Node: Blinking Parentheses13199
Node: Face Editor13403
Node: Speeding Up Fontlock13594
Node: Lazy Fontlocking13799
Node: Another Lazy Fontlocker14008
Node: lispm-fonts14222
Node: mic-paren14405
Node: paren14566
Node: shell-font14718
Node: Hooks Invoked After Saving14897
Node: Indivisible Blocks of Text15129
Node: Table and Array Editor15373
Node: Floating Toolbar15599
Node: tree-menu15796
Node: The Toolbar Utilities15978
Node: Adding Buttons on the Fly17459
Node: The Toolbar Editor20892
Node: APIs for Adding and Killing23264
Node: APIs for Search28452
Node: Toolbar Portability31188
Node: Copying32032

End Tag Table
