annotate man/xemacs/menus.texi @ 5157:1fae11d56ad2

redo memory-usage mechanism, add way of dynamically initializing Lisp objects -------------------- ChangeLog entries follow: -------------------- lisp/ChangeLog addition: 2010-03-18 Ben Wing <ben@xemacs.org> * diagnose.el (show-memory-usage): Rewrite to take into account API changes in memory-usage functions. src/ChangeLog addition: 2010-03-18 Ben Wing <ben@xemacs.org> * alloc.c: * alloc.c (disksave_object_finalization_1): * alloc.c (lisp_object_storage_size): * alloc.c (listu): * alloc.c (listn): * alloc.c (Fobject_memory_usage_stats): * alloc.c (compute_memusage_stats_length): * alloc.c (Fobject_memory_usage): * alloc.c (Ftotal_object_memory_usage): * alloc.c (malloced_storage_size): * alloc.c (common_init_alloc_early): * alloc.c (reinit_alloc_objects_early): * alloc.c (reinit_alloc_early): * alloc.c (init_alloc_once_early): * alloc.c (syms_of_alloc): * alloc.c (reinit_vars_of_alloc): * buffer.c: * buffer.c (struct buffer_stats): * buffer.c (compute_buffer_text_usage): * buffer.c (compute_buffer_usage): * buffer.c (buffer_memory_usage): * buffer.c (buffer_objects_create): * buffer.c (syms_of_buffer): * buffer.c (vars_of_buffer): * console-impl.h (struct console_methods): * dynarr.c (Dynarr_memory_usage): * emacs.c (main_1): * events.c (clear_event_resource): * extents.c: * extents.c (compute_buffer_extent_usage): * extents.c (extent_objects_create): * extents.h: * faces.c: * faces.c (compute_face_cachel_usage): * faces.c (face_objects_create): * faces.h: * general-slots.h: * glyphs.c: * glyphs.c (compute_glyph_cachel_usage): * glyphs.c (glyph_objects_create): * glyphs.h: * lisp.h: * lisp.h (struct usage_stats): * lrecord.h: * lrecord.h (enum lrecord_type): * lrecord.h (struct lrecord_implementation): * lrecord.h (MC_ALLOC_CALL_FINALIZER_FOR_DISKSAVE): * lrecord.h (DEFINE_DUMPABLE_LISP_OBJECT): * lrecord.h (DEFINE_DUMPABLE_SIZABLE_LISP_OBJECT): * lrecord.h (DEFINE_DUMPABLE_FROB_BLOCK_LISP_OBJECT): * lrecord.h (DEFINE_DUMPABLE_FROB_BLOCK_SIZABLE_LISP_OBJECT): * lrecord.h (DEFINE_DUMPABLE_INTERNAL_LISP_OBJECT): * lrecord.h (DEFINE_DUMPABLE_SIZABLE_INTERNAL_LISP_OBJECT): * lrecord.h (DEFINE_NODUMP_LISP_OBJECT): * lrecord.h (DEFINE_NODUMP_SIZABLE_LISP_OBJECT): * lrecord.h (DEFINE_NODUMP_FROB_BLOCK_LISP_OBJECT): * lrecord.h (DEFINE_NODUMP_FROB_BLOCK_SIZABLE_LISP_OBJECT): * lrecord.h (DEFINE_NODUMP_INTERNAL_LISP_OBJECT): * lrecord.h (DEFINE_NODUMP_SIZABLE_INTERNAL_LISP_OBJECT): * lrecord.h (MAKE_LISP_OBJECT): * lrecord.h (DEFINE_DUMPABLE_MODULE_LISP_OBJECT): * lrecord.h (DEFINE_DUMPABLE_MODULE_SIZABLE_LISP_OBJECT): * lrecord.h (DEFINE_NODUMP_MODULE_LISP_OBJECT): * lrecord.h (DEFINE_NODUMP_MODULE_SIZABLE_LISP_OBJECT): * lrecord.h (MAKE_MODULE_LISP_OBJECT): * lrecord.h (INIT_LISP_OBJECT): * lrecord.h (INIT_MODULE_LISP_OBJECT): * lrecord.h (UNDEF_LISP_OBJECT): * lrecord.h (UNDEF_MODULE_LISP_OBJECT): * lrecord.h (DECLARE_LISP_OBJECT): * lrecord.h (DECLARE_MODULE_API_LISP_OBJECT): * lrecord.h (DECLARE_MODULE_LISP_OBJECT): * lstream.c: * lstream.c (syms_of_lstream): * lstream.c (vars_of_lstream): * marker.c: * marker.c (compute_buffer_marker_usage): * mc-alloc.c (mc_alloced_storage_size): * mc-alloc.h: * mule-charset.c: * mule-charset.c (struct charset_stats): * mule-charset.c (compute_charset_usage): * mule-charset.c (charset_memory_usage): * mule-charset.c (mule_charset_objects_create): * mule-charset.c (syms_of_mule_charset): * mule-charset.c (vars_of_mule_charset): * redisplay.c: * redisplay.c (compute_rune_dynarr_usage): * redisplay.c (compute_display_block_dynarr_usage): * redisplay.c (compute_glyph_block_dynarr_usage): * redisplay.c (compute_display_line_dynarr_usage): * redisplay.c (compute_line_start_cache_dynarr_usage): * redisplay.h: * scrollbar-gtk.c (gtk_compute_scrollbar_instance_usage): * scrollbar-msw.c (mswindows_compute_scrollbar_instance_usage): * scrollbar-x.c (x_compute_scrollbar_instance_usage): * scrollbar.c (compute_scrollbar_instance_usage): * scrollbar.h: * symbols.c: * symbols.c (reinit_symbol_objects_early): * symbols.c (init_symbols_once_early): * symbols.c (reinit_symbols_early): * symbols.c (defsymbol_massage_name_1): * symsinit.h: * ui-gtk.c: * ui-gtk.c (emacs_gtk_object_getprop): * ui-gtk.c (emacs_gtk_object_putprop): * ui-gtk.c (ui_gtk_objects_create): * unicode.c (compute_from_unicode_table_size_1): * unicode.c (compute_to_unicode_table_size_1): * unicode.c (compute_from_unicode_table_size): * unicode.c (compute_to_unicode_table_size): * window.c: * window.c (struct window_stats): * window.c (compute_window_mirror_usage): * window.c (compute_window_usage): * window.c (window_memory_usage): * window.c (window_objects_create): * window.c (syms_of_window): * window.c (vars_of_window): * window.h: Redo memory-usage mechanism, make it general; add way of dynamically initializing Lisp object types -- OBJECT_HAS_METHOD(), similar to CONSOLE_HAS_METHOD(). (1) Create OBJECT_HAS_METHOD(), OBJECT_HAS_PROPERTY() etc. for specifying that a Lisp object type has a particular method or property. Call such methods with OBJECT_METH, MAYBE_OBJECT_METH, OBJECT_METH_OR_GIVEN; retrieve properties with OBJECT_PROPERTY. Methods that formerly required a DEFINE_*GENERAL_LISP_OBJECT() to specify them (getprop, putprop, remprop, plist, disksave) now instead use the dynamic-method mechanism. The main benefit of this is that new methods or properties can be added without requiring that the declaration statements of all existing methods be modified. We have to make the `struct lrecord_implementation' non-const, but I don't think this should have any effect on speed -- the only possible method that's really speed-critical is the mark method, and we already extract those out into a separate (non-const) array for increased cache locality. Object methods need to be reinitialized after pdump, so we put them in separate functions such as face_objects_create(), extent_objects_create() and call them appropriately from emacs.c The only current object property (`memusage_stats_list') that objects can specify is a Lisp object and gets staticpro()ed so it only needs to be set during dump time, but because it references symbols that might not exist in a syms_of_() function, we initialize it in vars_of_(). There is also an object property (`num_extra_memusage_stats') that is automatically initialized based on `memusage_stats_list'; we do that in reinit_vars_of_alloc(), which is called after all vars_of_() functions are called. `disksaver' method was renamed `disksave' to correspond with the name normally given to the function (e.g. disksave_lstream()). (2) Generalize the memory-usage mechanism in `buffer-memory-usage', `window-memory-usage', `charset-memory-usage' into an object-type- specific mechanism called by a single function `object-memory-usage'. (Former function `object-memory-usage' renamed to `total-object-memory-usage'). Generalize the mechanism of different "slices" so that we can have different "classes" of memory described and different "slices" onto each class; `t' separates classes, `nil' separates slices. Currently we have three classes defined: the memory of an object itself, non-Lisp-object memory associated with the object (e.g. arrays or dynarrs stored as fields in the object), and Lisp-object memory associated with the object (other internal Lisp objects stored in the object). This isn't completely finished yet and we might need to further separate the "other internal Lisp objects" class into two classes. The memory-usage mechanism uses a `struct usage_stats' (renamed from `struct overhead_stats') to describe a malloc-view onto a set of allocated memory (listing how much was requested and various types of overhead) and a more general `struct generic_usage_stats' (with a `struct usage_stats' in it) to hold all statistics about object memory. `struct generic_usage_stats' contains an array of 32 Bytecounts, which are statistics of unspecified semantics. The intention is that individual types declare a corresponding struct (e.g. `struct window_stats') with the same structure but with specific fields in place of the array, corresponding to specific statistics. The number of such statistics is an object property computed from the list of tags (Lisp symbols describing the statistics) stored in `memusage_stats_list'. The idea here is to allow particular object types to customize the number and semantics of the statistics where completely avoiding consing. This doesn't matter so much yet, but the intention is to have the memory usage of all objects computed at the end of GC, at the same time as other statistics are currently computed. The values for all statistics for a single type would be added up to compute aggregate values for all objects of a specific type. To make this efficient, we can't allow any memory allocation at all. (3) Create some additional functions for creating lists that specify the elements directly as args rather than indirectly through an array: listn() (number of args given), listu() (list terminated by Qunbound). (4) Delete a bit of remaining unused C window_config stuff, also unused lrecord_type_popup_data.
author Ben Wing <ben@xemacs.org>
date Thu, 18 Mar 2010 10:50:06 -0500
parents 7844ab77b582
children 9fae6227ede5
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2 @node Pull-down Menus, Entering Emacs, Keystrokes, Top
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
3 @comment node-name, next, previous, up
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
4 @section XEmacs Pull-down Menus
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
5
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
6 If you are running XEmacs under X, a menu bar on top of the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
7 Emacs frame provides access to pull-down menus of file, edit, and
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
8 help-related commands. The menus provide convenient shortcuts and an
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
9 easy interface for novice users. They do not provide additions to the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
10 functionality available via key commands; you can still invoke commands
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
11 from the keyboard as in previous versions of Emacs.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
12
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
13 @table @b
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
14 @item File
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
15 Perform file and buffer-related operations, such as opening and closing
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
16 files, saving and printing buffers, as well as exiting Emacs.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
17 @cindex File menu
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
18
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
19 @item Edit
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
20 Perform standard editing operations, such as
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
21 cutting, copying, pasting, and killing selected text.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
22 @cindex Edit menu
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
23
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
24 @c #### The Mule menu needs to be documented, but this is not the place
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
25 @c for it since Ben just moved it.
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
26
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
27 @item Apps
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
28 Access to sub-applications implemented within XEmacs, such as the mail
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
29 reader, the World Wide Web browser, the spell-checker, and the calendar
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
30 program.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
31 @cindex Apps menu
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
32
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
33 @item Options
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
34 Control various options regarding the way XEmacs works, such as controlling
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
35 which elements of the frame are visible, selecting the fonts to be used for
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
36 text, specifying whether searches are case-sensitive, etc.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
37 @cindex Options menu
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
38
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
39 @item Buffers
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
40 Present a menu of buffers for selection as well as the option to display
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
41 a buffer list.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
42 @cindex Buffers menu
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
43
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
44 @item Tools
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
45 Perform various actions designed to automate software development and
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
46 similar technical work, such as searching through many files, compiling
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
47 a program, and comparing or merging two or three files.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
48 @cindex Tools menu
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
49
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
50 @item Help
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
51 Access to Emacs Info.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
52 @cindex Help menu
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
53 @end table
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
54 @cindex Pull-down Menus
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
55 @cindex menus
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
56
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
57 There are two ways of selecting an item from a pull-down menu:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
58
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
59 @itemize @bullet
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
60 @item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
61 Select an item in the menu bar by moving the cursor over it and click the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
62 left mouse-button. Then move the cursor over the menu item you want to choose
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
63 and click left again.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
64 @item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
65 Select an item in the menu bar by moving the cursor over it and click and
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
66 hold the left mouse-button. With the mouse-button depressed, move the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
67 cursor over the menu item you want, then release it to make your selection.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
68 @end itemize
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
69
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
70 If a command in the pull-down menu is not applicable in a given
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
71 situation, the command is disabled and its name appears faded. You
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
72 cannot invoke items that are faded. For example, many commands on the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
73 @b{Edit} menu appear faded until you select text on which they are to
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
74 operate; after you select a block of text, edit commands are enabled.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
75 @xref{Mouse Selection}, for information on using the mouse to select
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
76 text. @xref{Using X Selections}, for related information.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
77
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
78 There are also @kbd{M-x} equivalents for each menu item. To find the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
79 equivalent for any left-button menu item, do the following:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
80
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
81 @enumerate
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
82 @item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
83 Type @kbd{C-h k} to get the @code{Describe Key} prompt.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
84 @item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
85 Select the menu item and click.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
86 @end enumerate
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
87
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
88 Emacs displays the function associated with the menu item in a separate
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
89 window, usually together with some documentation.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
90
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
91 @menu
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
92 * File Menu:: Items on the File menu.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
93 * Edit Menu:: Items on the Edit menu.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
94 * Apps Menu:: Items on the Apps menu.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
95 * Options Menu:: Items on the Options menu.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
96 * Buffers Menu:: Information about the Buffers menu.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
97 * Tools Menu:: Items on the Tools menu.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
98 * Help Menu:: Items on the Help menu.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
99 * Menu Customization:: Adding and removing menu items and related
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
100 operations.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
101 @end menu
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
102
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
103 @node File Menu
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
104 @subsection The File Menu
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
105
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
106 @cindex File menu
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
107
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
108 The @b{File} menu bar item contains the items @b{New Frame}, @b{Open
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
109 File...}, @b{Save Buffer}, @b{Save Buffer As...}, @b{Revert Buffer},
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
110 @b{Print Buffer}, @b{Delete Frame}, @b{Kill Buffer} and @b{Exit Emacs}
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
111 on the pull-down menu. If you select a menu item, Emacs executes the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
112 equivalent command.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
113
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
114 @cindex Open File, New Frame... menu item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
115 @cindex Open File... menu item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
116 @cindex Insert File... menu item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
117 @cindex Save Buffer menu item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
118 @cindex Save Buffer As ... menu item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
119 @cindex Revert Buffer menu item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
120 @cindex Kill Buffer menu item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
121 @cindex Print Buffer menu item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
122 @cindex New Frame menu item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
123 @cindex Delete Frame menu item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
124 @cindex Split Frame
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
125 @cindex Un-split (Keep This)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
126 @cindex Un-split (Keep Others)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
127 @cindex Exit Emacs menu item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
128
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
129 @table @b
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
130 @item Open File, New Frame...
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
131 Prompts you for a filename and loads that file into a new buffer in a
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
132 new Emacs frame, that is, a new X window running under the same Emacs
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
133 process. You can remove the frame using the @b{Delete Frame} menu
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
134 item. When you remove the last frame, you exit Emacs and are prompted
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
135 for confirmation. @refill
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
136
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
137 @item Open File...
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
138 Prompts you for a filename and loads that file into a new buffer.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
139 @b{Open File...} is equivalent to the Emacs command @code{find-file} (@kbd{C-x
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
140 C-f}).@refill
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
141
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
142 @item Insert File...
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
143 Prompts you for a filename and inserts the contents of that file into
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
144 the current buffer. The file associated with the current buffer is
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
145 not changed by this command. This is equivalent to the Emacs command
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
146 @code{insert-file} (@kbd{C-x i}).@refill
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
147
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
148 @item Save Buffer
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
149 Writes and saves the current Emacs buffer as the latest
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
150 version of the current visited file. @b{Save Buffer} is equivalent to the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
151 Emacs command @code{save-buffer} (@kbd{C-x C-s}).@refill
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
152
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
153 @item Save Buffer As...
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
154 Writes and saves the current Emacs buffer to the filename you specify.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
155 @b{Save Buffer As...} is equivalent to the Emacs command
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
156 @code{write-file} (@kbd{C-x C-w}).@refill
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
157
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
158 @item Revert Buffer
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
159 Restores the last saved version of the file to the current buffer. When
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
160 you edit a buffer containing a text file, you must save the buffer
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
161 before your changes become effective. Use @b{Revert Buffer} if you do
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
162 not want to keep the changes you have made in the buffer. @b{Revert
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
163 Buffer} is equivalent to the Emacs command @code{revert-file} (@kbd{M-x
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
164 revert-buffer}).@refill
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
165
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
166 @item Kill Buffer
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
167 Kills the current buffer, prompting you first if there are unsaved
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
168 changes. This is roughly equivalent to the Emacs command
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
169 @code{kill-buffer} (@kbd{C-x k}), except that @code{kill-buffer}
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
170 prompts for the name of a buffer to kill. @refill
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
171
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
172 @item Print Buffer
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
173 Prints a hardcopy of the current buffer. Equivalent
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
174 to the Emacs command @code{print-buffer} (@kbd{M-x print-buffer}).@refill
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
175
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
176 @item New Frame
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
177 Creates a new Emacs frame displaying the @code{*scratch*} buffer. This
2757
7844ab77b582 [xemacs-hg @ 2005-05-05 17:10:19 by aidan]
aidan
parents: 901
diff changeset
178 is like the @b{Open in New Frame...} menu item, except that it does
7844ab77b582 [xemacs-hg @ 2005-05-05 17:10:19 by aidan]
aidan
parents: 901
diff changeset
179 not prompt for nor load a file.@refill
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
180
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
181 @item Delete Frame
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
182 Allows you to close all but one of the frames created by @b{New Frame}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
183 If you created several Emacs frames belonging to the same Emacs
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
184 process, you can close all but one of them. When you attempt to close the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
185 last frame, Emacs informs you that you are attempting to delete the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
186 last frame. You have to choose @b{Exit Emacs} for that.@refill
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
187
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
188 @item Split Frame
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
189 Divides the current window on the current frame into two equal-sized
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
190 windows, both displaying the same buffer. Equivalent to the Emacs
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
191 command @code{split-window-vertically} (@kbd{C-x 2}).@refill
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
192
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
193 @item Un-split (Keep This)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
194 If the frame is divided into multiple windows, this removes all windows
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
195 other than the selected one. Equivalent to the Emacs command
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
196 @code{delete-other-windows} (@kbd{C-x 1}).@refill
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
197
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
198 @item Un-split (Keep Others)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
199 If the frame is divided into multiple windows, this removes the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
200 selected window from the frame, giving the space back to one of the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
201 other windows. Equivalent to the Emacs command @code{delete-window}
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
202 (@kbd{C-x 0}).@refill
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
203
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
204 @item Exit Emacs
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
205 Shuts down (kills) the Emacs process. Equivalent to the Emacs command
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
206 @code{save-buffers-kill-emacs} (@kbd{C-x C-c}). Before killing the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
207 Emacs process, the system asks which unsaved buffers to save by going through
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
208 the list of all buffers in that Emacs process.@refill
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
209 @end table
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
210
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
211 @node Edit Menu
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
212 @subsection The Edit Menu
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
213 @cindex Edit menu
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
214
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
215 The @b{Edit} pull-down menu contains the @b{Undo}, @b{Cut}, @b{Copy},
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
216 @b{Paste}, and @b{Clear} menu items. When you select a menu item, Emacs
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
217 executes the equivalent command. Most commands on the @b{Edit} menu
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
218 work on a block of text, the X selection. They appear faded until you
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
219 select a block of text (activate a region) with the mouse. @xref{Using
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
220 X Selections}, @pxref{Killing}, and @pxref{Yanking} for more
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
221 information.@refill
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
222
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
223 @c **** zmacs-regions is on by default these days - jwz
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
224 @c
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
225 @c Note: By default, you can use the @b{Edit} menu items on the region between
901
37e56e920ac5 [xemacs-hg @ 2002-07-05 20:35:47 by adrian]
adrian
parents: 444
diff changeset
226 @c point and the mark as well as regions selected with the mouse. To change
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
227 @c this behavior, set the variable @code{zmacs-regions} to
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
228 @c @code{t}. @xref{Active Regions} for more information.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
229
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
230 @cindex Undo menu item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
231 @cindex Cut menu item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
232 @cindex Copy menu item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
233 @cindex Paste menu item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
234 @cindex Clear menu item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
235 @cindex Start Macro Recording menu item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
236 @cindex End Macro Recording menu item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
237 @cindex Execute Last Macro menu item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
238 @table @b
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
239 @item Undo
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
240 Undoes the previous command. @b{Undo} is equivalent to
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
241 the Emacs command @code{undo} (@kbd{C-x u}).@refill
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
242
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
243 @item Cut
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
244 Removes the selected text block from the current buffer, makes it the X
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
245 clipboard selection, and places it in the kill ring. Before executing
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
246 this command, you have to select a region using Emacs region selection
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
247 commands or with the mouse.@refill
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
248
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
249 @item Copy
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
250 Makes a selected text block the X clipboard selection, and places it in
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
251 the kill ring. You can select text using one of the Emacs region
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
252 selection commands or by selecting a text region with the mouse.@refill
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
253
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
254 @item Paste
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
255 Inserts the current value of the X clipboard selection in the current
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
256 buffer. Note that this is not necessarily the same as the Emacs
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
257 @code{yank} command, because the Emacs kill ring and the X clipboard
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
258 selection are not the same thing. You can paste in text you
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
259 have placed in the clipboard using @b{Copy} or @b{Cut}. You can also
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
260 use @b{Paste} to insert text that was pasted into the clipboard from other
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
261 applications.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
262
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
263 @item Clear
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
264 Removes the selected text block from the current buffer but does not
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
265 place it in the kill ring or the X clipboard selection.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
266
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
267 @item Start Macro Recording
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
268 After selecting this, Emacs will remember every keystroke you type until
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
269 @b{End Macro Recording} is selected. This is the same as the Emacs
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
270 command @code{start-kbd-macro} (@kbd{C-x (}).
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
271
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
272 @item End Macro Recording
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
273 Selecting this tells emacs to stop remembering your keystrokes. This is
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
274 the same as the Emacs command @code{end-kbd-macro} (@kbd{C-x )}).
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
275
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
276 @item Execute Last Macro
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
277 Selecting this item will cause emacs to re-interpret all of the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
278 keystrokes which were saved between selections of the @b{Start Macro
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
279 Recording} and @b{End Macro Recording} menu items. This is the same
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
280 as the Emacs command @code{call-last-kbd-macro} (@kbd{C-x e}).
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
281 @end table
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
282
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
283 @node Apps Menu
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
284 @subsection The Apps Menu
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
285 @cindex Apps menu
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
286
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
287 The @b{Apps} pull-down menu contains the @b{Read Mail (VM)...}, @b{Read
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
288 Mail (MH)...}, @b{Send Mail...}, @b{Usenet News}, @b{Browse the Web},
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
289 @b{Gopher}, @b{Spell-Check Buffer} and @b{Emulate VI} menu items,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
290 and the @b{Calendar} and @b{Games} sub-menus. When you select a menu
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
291 item, Emacs executes the equivalent command. For some of the menu
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
292 items, there are sub-menus which you will need to select.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
293
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
294 @node Options Menu
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
295 @subsection The Options Menu
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
296 @cindex Options menu
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
297
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
298 The @b{Options} pull-down menu contains the @b{Read Only}, @b{Case
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
299 Sensitive Search}, @b{Overstrike}, @b{Auto Delete Selection},
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
300 @b{Teach Extended Commands}, @b{Syntax Highlighting}, @b{Paren
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
301 Highlighting}, @b{Font}, @b{Size}, @b{Weight}, @b{Buffers Menu
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
302 Length...}, @b{Buffers Sub-Menus} and @b{Save Options} menu items.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
303 When you select a menu item, Emacs executes the equivalent command.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
304 For some of the menu items, there are sub-menus which you will need
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
305 to select.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
306
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
307 @cindex Read Only menu item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
308 @cindex Case Sensitive Search menu item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
309 @cindex Overstrike menu item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
310 @cindex Auto Delete Selection menu item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
311 @cindex Teach Extended Commands menu item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
312 @cindex Syntax Highlighting menu item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
313 @cindex Paren Highlighting menu item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
314 @cindex Font menu item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
315 @cindex Size menu item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
316 @cindex Weight menu item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
317 @cindex Buffers Menu Length... menu item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
318 @cindex Buffers Sub-Menus menu item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
319 @cindex Save Options
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
320 @table @b
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
321 @item Read Only
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
322 Selecting this item will cause the buffer to visit the file in a
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
323 read-only mode. Changes to the file will not be allowed. This is
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
324 equivalent to the Emacs command @code{toggle-read-only}
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
325 (@kbd{C-x C-q}).
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
326
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
327 @item Case Sensitive Search
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
328 Selecting this item will cause searches to be case-sensitive. If
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
329 its not selected then searches will ignore case. This option is
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
330 local to the buffer.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
331
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
332 @item Overstrike
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
333 After selecting this item, when you type letters they will replace
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
334 existing text on a one-to-one basis, rather than pushing it to the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
335 right. At the end of a line, such characters extend the line. Before
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
336 a tab, such characters insert until the tab is filled in. This is the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
337 same as Emacs command @code{quoted-insert} (@kbd{C-q}).
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
338
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
339 @item Auto Delete Selection
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
340 Selecting this item will cause automatic deletion of the selected
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
341 region. The typed text will replace the selection if the selection
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
342 is active (i.e. if its highlighted). If the option is not selected
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
343 then the typed text is just inserted at the point.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
344
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
345 @item Teach Extended Commands
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
346 After you select this item, any time you execute a command with
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
347 @kbd{M-x}which has a shorter keybinding, you will be shown the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
348 alternate binding before the command executes.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
349
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
350 @item Syntax Highlighting
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
351 You can customize your init file to include the font-lock mode so that
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
352 when you select this item, the comments will be displayed in one face,
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
353 strings in another, reserved words in another, and so on. @xref{Init
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
354 File}. When @b{Fonts} is selected, different parts of the program will
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
355 appear in different Fonts. When @b{Colors} is selected, then the program
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
356 will be displayed in different colors. Selecting @b{None} causes the
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
357 program to appear in just one Font and Color. Selecting @b{Less} resets
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
358 the Fonts and Colors to a fast, minimal set of decorations. Selecting
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
359 @b{More} resets the Fonts and Colors to a larger set of decorations. For
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
360 example, if @b{Less} is selected (which is the default setting) then you
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
361 might have all comments in green color. Whereas, if @b{More} is
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
362 selected then a function name in the comments themselves might appear in
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
363 a different Color or Font.@refill
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
364
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
365 @item Paren Highlighting
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
366 After selecting @b{Blink} from this item, if you place the cursor
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
367 on a parenthesis, the matching parenthesis will blink. If you select
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
368 @b{Highlight} and place the cursor on a parenthesis, the whole
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
369 expression of the parenthesis under the cursor will be highlighted.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
370 Selecting @b{None} will turn off the options (regarding @b{Paren
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
371 Highlighting}) which you had selected earlier.@refill
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
372
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
373 @item Font
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
374 You can select any Font for your program by choosing from one of the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
375 available Fonts.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
376
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
377 @item Size
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
378 You can select any size ranging from @b{2} to @b{24} by selecting the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
379 appropriate option.@refill
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
380
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
381 @item Weight
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
382 You can choose either @b{Bold} or @b{Medium} for the weight.@refill
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
383
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
384 @item Buffers Menu Length...
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
385 Prompts you for the number of buffers to display. Then it will display
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
386 that number of most recently selected buffers.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
387
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
388 @item Buffers Sub-Menus
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
389 After selection of this item the Buffers menu will contain several
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
390 commands, as submenus of each buffer line. If this item is unselected,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
391 then there are no submenus for each buffer line, the only command
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
392 available will be selecting that buffer.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
393
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
394 @item Save Options
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
395 Selecting this item will save the current settings of your Options
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 428
diff changeset
396 menu to your init file. @xref{Init File}.
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
397 @end table
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
398
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
399 @node Buffers Menu
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
400 @subsection The Buffers Menu
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
401 @cindex Buffers menu
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
402 The @b{Buffers} menu provides a selection of up to ten buffers and the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
403 item @b{List All Buffers}, which provides a Buffer List. @xref{List
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
404 Buffers}, for more information.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
405
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
406 @node Tools Menu
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
407 @subsection The Tools Menu
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
408 @cindex Tools menu
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
409
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
410 The @b{Tools} pull-down menu contains the @b{Grep...}, @b{Compile...},
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
411 @b{Shell Command...}, @b{Shell Command on Region...}, @b{Debug(GDB)...}
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
412 and @b{Debug(DBX)...} menu items, and the @b{Compare}, @b{Merge},
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
413 @b{Apply Patch} and @b{Tags} sub-menus. When you select a menu item,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
414 Emacs executes the equivalent command. For some of the menu items,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
415 there are sub-menus which you will need to select.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
416
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
417 @node Help Menu
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
418 @subsection The Help Menu
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
419 @cindex Help menu
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
420
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
421 The Help Menu gives you access to Emacs Info and provides a menu
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
422 equivalent for each of the choices you have when using @kbd{C-h}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
423 @xref{Help}, for more information.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
424
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
425 The Help menu also gives access to UNIX online manual pages via the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
426 @b{UNIX Manual Page} option.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
427
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
428 @node Menu Customization
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
429 @subsection Customizing XEmacs Menus
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
430
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
431 You can customize any of the pull-down menus by adding or removing menu
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
432 items and disabling or enabling existing menu items.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
433
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
434 The following functions are available:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
435 @table @kbd
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
436 @item add-menu: (@var{menu-path} @var{menu-name} @var{menu-items} &optional @var{before})
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
437 Add a menu to the menu bar or one of its submenus.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
438 @item add-menu-item: (@var{menu-path} @var{item-name} @var{function}
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
439 @var{enabled-p} &optional @var{before})
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
440 Add a menu item to a menu, creating the menu first if necessary.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
441 @item delete-menu-item: (@var{path})
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
442 Remove the menu item defined by @var{path} from the menu hierarchy.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
443 @item disable-menu-item: (@var{path})
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
444 Disable the specified menu item.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
445 @item enable-menu-item: (@var{path})
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
446 Enable the specified previously disabled menu item.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
447 @item relabel-menu-item: (@var{path} @var{new-name})
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
448 Change the string of the menu item specified by @var{path} to
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
449 @var{new-name}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
450
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
451 @end table
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
452
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
453 @findex add-menu
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
454 @cindex adding menus
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
455 Use the function @code{add-menu} to add a new menu or submenu.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
456 If a menu or submenu of the given name exists already, it is changed.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
457
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
458 @var{menu-path} identifies the menu under which the new menu should be
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
459 inserted. It is a list of strings; for example, @code{("File")} names
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
460 the top-level @b{File} menu. @code{("File" "Foo")} names a hypothetical
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
461 submenu of @b{File}. If @var{menu-path} is @code{nil}, the menu is
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
462 added to the menu bar itself.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
463
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
464 @var{menu-name} is the string naming the menu to be added.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
465
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
466 @var{menu-items} is a list of menu item descriptions. Each menu item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
467 should be a vector of three elements:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
468
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
469 @itemize @bullet
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
470 @item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
471 A string, which is the name of the menu item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
472 @item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
473 A symbol naming a command, or a form to evaluate
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
474 @item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
475 @code{t} or @code{nil} to indicate whether the item is selectable
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
476 @end itemize
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
477
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
478 The optional argument @var{before} is the name of the menu before which
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
479 the new menu or submenu should be added. If the menu is already
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
480 present, it is not moved.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
481
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
482 @findex add-menu-item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
483 @cindex adding menu items
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
484 The function @code{add-menu-item} adds a menu item to the specified
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
485 menu, creating the menu first if necessary. If the named item already
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
486 exists, the menu remains unchanged.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
487
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
488 @var{menu-path} identifies the menu into which the new menu item should
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
489 be inserted. It is a list of strings; for example, @code{("File")}
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
490 names the top-level @b{File} menu. @code{("File" "Foo")} names a
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
491 hypothetical submenu of @b{File}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
492
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
493 @var{item-name} is the string naming the menu item to add.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
494
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
495 @var{function} is the command to invoke when this menu item is selected.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
496 If it is a symbol, it is invoked with @code{call-interactively}, in the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
497 same way that functions bound to keys are invoked. If it is a list, the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
498 list is simply evaluated.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
499
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
500 @var{enabled-p} controls whether the item is selectable or not.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
501 It should be @code{t}, @code{nil}, or a form to evaluate to decide.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
502 This form will be evaluated just before the menu is displayed, and
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
503 the menu item will be selectable if that form returns non-@code{nil}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
504
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
505 For example, to make the @code{rename-file} command available from the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
506 @b{File} menu, use the following code:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
507
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
508 @example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
509 (add-menu-item '("File") "Rename File" 'rename-file t)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
510 @end example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
511
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
512 To add a submenu of file management commands using a @b{File Management}
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
513 item, use the following code:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
514
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
515 @example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
516 (add-menu-item '("File" "File Management") "Copy File" 'copy-file t)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
517 (add-menu-item '("File" "File Management") "Delete File" 'delete-file t)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
518 (add-menu-item '("File" "File Management") "Rename File" 'rename-file t)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
519 @end example
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
520
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
521 The optional @var{before} argument is the name of a menu item before
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
522 which the new item should be added. If the item is already present, it
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
523 is not moved.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
524
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
525 @findex delete-menu-item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
526 @cindex deleting menu items
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
527 To remove a specified menu item from the menu hierarchy, use
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
528 @code{delete-menu-item}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
529
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
530 @var{path} is a list of strings that identify the position of the menu
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
531 item in the menu hierarchy. @code{("File" "Save")} means the menu item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
532 called @b{Save} under the top level @b{File} menu. @code{("Menu" "Foo"
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
533 "Item")} means the menu item called @b{Item} under the @b{Foo} submenu
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
534 of @b{Menu}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
535
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
536 @findex disable-menu-item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
537 @findex enable-menu-item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
538 @cindex enabling menu items
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
539 @cindex disabling menu items
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
540
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
541 To disable a menu item, use @code{disable-menu-item}. The disabled
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
542 menu item is grayed and can no longer be selected. To make the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
543 item selectable again, use @code{enable-menu-item}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
544 @code{disable-menu-item} and @code{enable-menu-item} both have the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
545 argument @var{path}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
546
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
547 @findex relabel-menu-item
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
548 @cindex changing menu items
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
549 To change the string of the specified menu item, use
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
550 @code{relabel-menu-item}. This function also takes the argument @var{path}.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
551
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
552 @var{new-name} is the string to which the menu item will be changed.