Mercurial > hg > xemacs-beta
annotate man/xemacs/menus.texi @ 5797:a1808d52a34a
If the position of a window's cached point is deleted, use buffer point instead
src/ChangeLog addition:
2014-06-17 Aidan Kehoe <kehoea@parhasard.net>
* extents.h:
* window.c:
* window.c (unshow_buffer):
* window.c (Fset_window_buffer):
Use extents, rather than markers, for the window buffer point
cache, so that when the text containing that window buffer point
is deleted, the window display code uses the buffer's actual point
instead of the position that the marker had been moved to.
Fixes Michael Heinrich's problem of
http://mid.gmane.org/6zr42uxtf5.fsf@elektra.science-computing.de ,
introduced by Ben's patch of
https://bitbucket.org/xemacs/xemacs/commits/047d37eb70d70f43803 .
author | Aidan Kehoe <kehoea@parhasard.net> |
---|---|
date | Tue, 17 Jun 2014 20:55:45 +0100 |
parents | 9fae6227ede5 |
children |
rev | line source |
---|---|
428 | 1 |
2 @node Pull-down Menus, Entering Emacs, Keystrokes, Top | |
3 @comment node-name, next, previous, up | |
4 @section XEmacs Pull-down Menus | |
5 | |
6 If you are running XEmacs under X, a menu bar on top of the | |
7 Emacs frame provides access to pull-down menus of file, edit, and | |
8 help-related commands. The menus provide convenient shortcuts and an | |
9 easy interface for novice users. They do not provide additions to the | |
10 functionality available via key commands; you can still invoke commands | |
11 from the keyboard as in previous versions of Emacs. | |
12 | |
13 @table @b | |
14 @item File | |
15 Perform file and buffer-related operations, such as opening and closing | |
16 files, saving and printing buffers, as well as exiting Emacs. | |
17 @cindex File menu | |
18 | |
19 @item Edit | |
20 Perform standard editing operations, such as | |
21 cutting, copying, pasting, and killing selected text. | |
22 @cindex Edit menu | |
23 | |
444 | 24 @c #### The Mule menu needs to be documented, but this is not the place |
25 @c for it since Ben just moved it. | |
26 | |
428 | 27 @item Apps |
28 Access to sub-applications implemented within XEmacs, such as the mail | |
29 reader, the World Wide Web browser, the spell-checker, and the calendar | |
30 program. | |
31 @cindex Apps menu | |
32 | |
33 @item Options | |
34 Control various options regarding the way XEmacs works, such as controlling | |
35 which elements of the frame are visible, selecting the fonts to be used for | |
36 text, specifying whether searches are case-sensitive, etc. | |
37 @cindex Options menu | |
38 | |
39 @item Buffers | |
40 Present a menu of buffers for selection as well as the option to display | |
41 a buffer list. | |
42 @cindex Buffers menu | |
43 | |
44 @item Tools | |
45 Perform various actions designed to automate software development and | |
46 similar technical work, such as searching through many files, compiling | |
47 a program, and comparing or merging two or three files. | |
48 @cindex Tools menu | |
49 | |
50 @item Help | |
51 Access to Emacs Info. | |
52 @cindex Help menu | |
53 @end table | |
54 @cindex Pull-down Menus | |
55 @cindex menus | |
56 | |
57 There are two ways of selecting an item from a pull-down menu: | |
58 | |
59 @itemize @bullet | |
60 @item | |
61 Select an item in the menu bar by moving the cursor over it and click the | |
62 left mouse-button. Then move the cursor over the menu item you want to choose | |
63 and click left again. | |
64 @item | |
65 Select an item in the menu bar by moving the cursor over it and click and | |
66 hold the left mouse-button. With the mouse-button depressed, move the | |
67 cursor over the menu item you want, then release it to make your selection. | |
68 @end itemize | |
69 | |
70 If a command in the pull-down menu is not applicable in a given | |
71 situation, the command is disabled and its name appears faded. You | |
72 cannot invoke items that are faded. For example, many commands on the | |
73 @b{Edit} menu appear faded until you select text on which they are to | |
74 operate; after you select a block of text, edit commands are enabled. | |
75 @xref{Mouse Selection}, for information on using the mouse to select | |
76 text. @xref{Using X Selections}, for related information. | |
77 | |
78 There are also @kbd{M-x} equivalents for each menu item. To find the | |
79 equivalent for any left-button menu item, do the following: | |
80 | |
81 @enumerate | |
82 @item | |
83 Type @kbd{C-h k} to get the @code{Describe Key} prompt. | |
84 @item | |
85 Select the menu item and click. | |
86 @end enumerate | |
87 | |
88 Emacs displays the function associated with the menu item in a separate | |
89 window, usually together with some documentation. | |
90 | |
91 @menu | |
92 * File Menu:: Items on the File menu. | |
93 * Edit Menu:: Items on the Edit menu. | |
94 * Apps Menu:: Items on the Apps menu. | |
95 * Options Menu:: Items on the Options menu. | |
96 * Buffers Menu:: Information about the Buffers menu. | |
97 * Tools Menu:: Items on the Tools menu. | |
98 * Help Menu:: Items on the Help menu. | |
99 * Menu Customization:: Adding and removing menu items and related | |
100 operations. | |
101 @end menu | |
102 | |
5791
9fae6227ede5
Silence texinfo 5.2 warnings, primarily by adding next, prev, and up
Jerry James <james@xemacs.org>
parents:
2757
diff
changeset
|
103 @node File Menu, Edit Menu, Pull-down Menus, Pull-down Menus |
428 | 104 @subsection The File Menu |
105 | |
106 @cindex File menu | |
107 | |
108 The @b{File} menu bar item contains the items @b{New Frame}, @b{Open | |
109 File...}, @b{Save Buffer}, @b{Save Buffer As...}, @b{Revert Buffer}, | |
110 @b{Print Buffer}, @b{Delete Frame}, @b{Kill Buffer} and @b{Exit Emacs} | |
111 on the pull-down menu. If you select a menu item, Emacs executes the | |
112 equivalent command. | |
113 | |
114 @cindex Open File, New Frame... menu item | |
115 @cindex Open File... menu item | |
116 @cindex Insert File... menu item | |
117 @cindex Save Buffer menu item | |
118 @cindex Save Buffer As ... menu item | |
119 @cindex Revert Buffer menu item | |
120 @cindex Kill Buffer menu item | |
121 @cindex Print Buffer menu item | |
122 @cindex New Frame menu item | |
123 @cindex Delete Frame menu item | |
124 @cindex Split Frame | |
125 @cindex Un-split (Keep This) | |
126 @cindex Un-split (Keep Others) | |
127 @cindex Exit Emacs menu item | |
128 | |
129 @table @b | |
130 @item Open File, New Frame... | |
131 Prompts you for a filename and loads that file into a new buffer in a | |
132 new Emacs frame, that is, a new X window running under the same Emacs | |
133 process. You can remove the frame using the @b{Delete Frame} menu | |
134 item. When you remove the last frame, you exit Emacs and are prompted | |
135 for confirmation. @refill | |
136 | |
137 @item Open File... | |
138 Prompts you for a filename and loads that file into a new buffer. | |
139 @b{Open File...} is equivalent to the Emacs command @code{find-file} (@kbd{C-x | |
140 C-f}).@refill | |
141 | |
142 @item Insert File... | |
143 Prompts you for a filename and inserts the contents of that file into | |
144 the current buffer. The file associated with the current buffer is | |
145 not changed by this command. This is equivalent to the Emacs command | |
146 @code{insert-file} (@kbd{C-x i}).@refill | |
147 | |
148 @item Save Buffer | |
149 Writes and saves the current Emacs buffer as the latest | |
150 version of the current visited file. @b{Save Buffer} is equivalent to the | |
151 Emacs command @code{save-buffer} (@kbd{C-x C-s}).@refill | |
152 | |
153 @item Save Buffer As... | |
154 Writes and saves the current Emacs buffer to the filename you specify. | |
155 @b{Save Buffer As...} is equivalent to the Emacs command | |
156 @code{write-file} (@kbd{C-x C-w}).@refill | |
157 | |
158 @item Revert Buffer | |
159 Restores the last saved version of the file to the current buffer. When | |
160 you edit a buffer containing a text file, you must save the buffer | |
161 before your changes become effective. Use @b{Revert Buffer} if you do | |
162 not want to keep the changes you have made in the buffer. @b{Revert | |
163 Buffer} is equivalent to the Emacs command @code{revert-file} (@kbd{M-x | |
164 revert-buffer}).@refill | |
165 | |
166 @item Kill Buffer | |
167 Kills the current buffer, prompting you first if there are unsaved | |
168 changes. This is roughly equivalent to the Emacs command | |
169 @code{kill-buffer} (@kbd{C-x k}), except that @code{kill-buffer} | |
170 prompts for the name of a buffer to kill. @refill | |
171 | |
172 @item Print Buffer | |
173 Prints a hardcopy of the current buffer. Equivalent | |
174 to the Emacs command @code{print-buffer} (@kbd{M-x print-buffer}).@refill | |
175 | |
176 @item New Frame | |
177 Creates a new Emacs frame displaying the @code{*scratch*} buffer. This | |
2757 | 178 is like the @b{Open in New Frame...} menu item, except that it does |
179 not prompt for nor load a file.@refill | |
428 | 180 |
181 @item Delete Frame | |
182 Allows you to close all but one of the frames created by @b{New Frame}. | |
183 If you created several Emacs frames belonging to the same Emacs | |
184 process, you can close all but one of them. When you attempt to close the | |
185 last frame, Emacs informs you that you are attempting to delete the | |
186 last frame. You have to choose @b{Exit Emacs} for that.@refill | |
187 | |
188 @item Split Frame | |
189 Divides the current window on the current frame into two equal-sized | |
190 windows, both displaying the same buffer. Equivalent to the Emacs | |
191 command @code{split-window-vertically} (@kbd{C-x 2}).@refill | |
192 | |
193 @item Un-split (Keep This) | |
194 If the frame is divided into multiple windows, this removes all windows | |
195 other than the selected one. Equivalent to the Emacs command | |
196 @code{delete-other-windows} (@kbd{C-x 1}).@refill | |
197 | |
198 @item Un-split (Keep Others) | |
199 If the frame is divided into multiple windows, this removes the | |
200 selected window from the frame, giving the space back to one of the | |
201 other windows. Equivalent to the Emacs command @code{delete-window} | |
202 (@kbd{C-x 0}).@refill | |
203 | |
204 @item Exit Emacs | |
205 Shuts down (kills) the Emacs process. Equivalent to the Emacs command | |
206 @code{save-buffers-kill-emacs} (@kbd{C-x C-c}). Before killing the | |
207 Emacs process, the system asks which unsaved buffers to save by going through | |
208 the list of all buffers in that Emacs process.@refill | |
209 @end table | |
210 | |
5791
9fae6227ede5
Silence texinfo 5.2 warnings, primarily by adding next, prev, and up
Jerry James <james@xemacs.org>
parents:
2757
diff
changeset
|
211 @node Edit Menu, Apps Menu, File Menu, Pull-down Menus |
428 | 212 @subsection The Edit Menu |
213 @cindex Edit menu | |
214 | |
215 The @b{Edit} pull-down menu contains the @b{Undo}, @b{Cut}, @b{Copy}, | |
216 @b{Paste}, and @b{Clear} menu items. When you select a menu item, Emacs | |
217 executes the equivalent command. Most commands on the @b{Edit} menu | |
218 work on a block of text, the X selection. They appear faded until you | |
219 select a block of text (activate a region) with the mouse. @xref{Using | |
220 X Selections}, @pxref{Killing}, and @pxref{Yanking} for more | |
221 information.@refill | |
222 | |
223 @c **** zmacs-regions is on by default these days - jwz | |
224 @c | |
225 @c Note: By default, you can use the @b{Edit} menu items on the region between | |
901 | 226 @c point and the mark as well as regions selected with the mouse. To change |
428 | 227 @c this behavior, set the variable @code{zmacs-regions} to |
228 @c @code{t}. @xref{Active Regions} for more information. | |
229 | |
230 @cindex Undo menu item | |
231 @cindex Cut menu item | |
232 @cindex Copy menu item | |
233 @cindex Paste menu item | |
234 @cindex Clear menu item | |
235 @cindex Start Macro Recording menu item | |
236 @cindex End Macro Recording menu item | |
237 @cindex Execute Last Macro menu item | |
238 @table @b | |
239 @item Undo | |
240 Undoes the previous command. @b{Undo} is equivalent to | |
241 the Emacs command @code{undo} (@kbd{C-x u}).@refill | |
242 | |
243 @item Cut | |
244 Removes the selected text block from the current buffer, makes it the X | |
245 clipboard selection, and places it in the kill ring. Before executing | |
246 this command, you have to select a region using Emacs region selection | |
247 commands or with the mouse.@refill | |
248 | |
249 @item Copy | |
250 Makes a selected text block the X clipboard selection, and places it in | |
251 the kill ring. You can select text using one of the Emacs region | |
252 selection commands or by selecting a text region with the mouse.@refill | |
253 | |
254 @item Paste | |
255 Inserts the current value of the X clipboard selection in the current | |
256 buffer. Note that this is not necessarily the same as the Emacs | |
257 @code{yank} command, because the Emacs kill ring and the X clipboard | |
258 selection are not the same thing. You can paste in text you | |
259 have placed in the clipboard using @b{Copy} or @b{Cut}. You can also | |
260 use @b{Paste} to insert text that was pasted into the clipboard from other | |
261 applications. | |
262 | |
263 @item Clear | |
264 Removes the selected text block from the current buffer but does not | |
265 place it in the kill ring or the X clipboard selection. | |
266 | |
267 @item Start Macro Recording | |
268 After selecting this, Emacs will remember every keystroke you type until | |
269 @b{End Macro Recording} is selected. This is the same as the Emacs | |
270 command @code{start-kbd-macro} (@kbd{C-x (}). | |
271 | |
272 @item End Macro Recording | |
273 Selecting this tells emacs to stop remembering your keystrokes. This is | |
274 the same as the Emacs command @code{end-kbd-macro} (@kbd{C-x )}). | |
275 | |
276 @item Execute Last Macro | |
277 Selecting this item will cause emacs to re-interpret all of the | |
278 keystrokes which were saved between selections of the @b{Start Macro | |
279 Recording} and @b{End Macro Recording} menu items. This is the same | |
280 as the Emacs command @code{call-last-kbd-macro} (@kbd{C-x e}). | |
281 @end table | |
282 | |
5791
9fae6227ede5
Silence texinfo 5.2 warnings, primarily by adding next, prev, and up
Jerry James <james@xemacs.org>
parents:
2757
diff
changeset
|
283 @node Apps Menu, Options Menu, Edit Menu, Pull-down Menus |
428 | 284 @subsection The Apps Menu |
285 @cindex Apps menu | |
286 | |
287 The @b{Apps} pull-down menu contains the @b{Read Mail (VM)...}, @b{Read | |
288 Mail (MH)...}, @b{Send Mail...}, @b{Usenet News}, @b{Browse the Web}, | |
289 @b{Gopher}, @b{Spell-Check Buffer} and @b{Emulate VI} menu items, | |
290 and the @b{Calendar} and @b{Games} sub-menus. When you select a menu | |
291 item, Emacs executes the equivalent command. For some of the menu | |
292 items, there are sub-menus which you will need to select. | |
293 | |
5791
9fae6227ede5
Silence texinfo 5.2 warnings, primarily by adding next, prev, and up
Jerry James <james@xemacs.org>
parents:
2757
diff
changeset
|
294 @node Options Menu, Buffers Menu, Apps Menu, Pull-down Menus |
428 | 295 @subsection The Options Menu |
296 @cindex Options menu | |
297 | |
298 The @b{Options} pull-down menu contains the @b{Read Only}, @b{Case | |
299 Sensitive Search}, @b{Overstrike}, @b{Auto Delete Selection}, | |
300 @b{Teach Extended Commands}, @b{Syntax Highlighting}, @b{Paren | |
301 Highlighting}, @b{Font}, @b{Size}, @b{Weight}, @b{Buffers Menu | |
302 Length...}, @b{Buffers Sub-Menus} and @b{Save Options} menu items. | |
303 When you select a menu item, Emacs executes the equivalent command. | |
304 For some of the menu items, there are sub-menus which you will need | |
305 to select. | |
306 | |
307 @cindex Read Only menu item | |
308 @cindex Case Sensitive Search menu item | |
309 @cindex Overstrike menu item | |
310 @cindex Auto Delete Selection menu item | |
311 @cindex Teach Extended Commands menu item | |
312 @cindex Syntax Highlighting menu item | |
313 @cindex Paren Highlighting menu item | |
314 @cindex Font menu item | |
315 @cindex Size menu item | |
316 @cindex Weight menu item | |
317 @cindex Buffers Menu Length... menu item | |
318 @cindex Buffers Sub-Menus menu item | |
319 @cindex Save Options | |
320 @table @b | |
321 @item Read Only | |
322 Selecting this item will cause the buffer to visit the file in a | |
323 read-only mode. Changes to the file will not be allowed. This is | |
324 equivalent to the Emacs command @code{toggle-read-only} | |
325 (@kbd{C-x C-q}). | |
326 | |
327 @item Case Sensitive Search | |
328 Selecting this item will cause searches to be case-sensitive. If | |
329 its not selected then searches will ignore case. This option is | |
330 local to the buffer. | |
331 | |
332 @item Overstrike | |
333 After selecting this item, when you type letters they will replace | |
334 existing text on a one-to-one basis, rather than pushing it to the | |
335 right. At the end of a line, such characters extend the line. Before | |
336 a tab, such characters insert until the tab is filled in. This is the | |
337 same as Emacs command @code{quoted-insert} (@kbd{C-q}). | |
338 | |
339 @item Auto Delete Selection | |
340 Selecting this item will cause automatic deletion of the selected | |
341 region. The typed text will replace the selection if the selection | |
342 is active (i.e. if its highlighted). If the option is not selected | |
343 then the typed text is just inserted at the point. | |
344 | |
345 @item Teach Extended Commands | |
346 After you select this item, any time you execute a command with | |
347 @kbd{M-x}which has a shorter keybinding, you will be shown the | |
348 alternate binding before the command executes. | |
349 | |
350 @item Syntax Highlighting | |
442 | 351 You can customize your init file to include the font-lock mode so that |
352 when you select this item, the comments will be displayed in one face, | |
353 strings in another, reserved words in another, and so on. @xref{Init | |
354 File}. When @b{Fonts} is selected, different parts of the program will | |
355 appear in different Fonts. When @b{Colors} is selected, then the program | |
356 will be displayed in different colors. Selecting @b{None} causes the | |
357 program to appear in just one Font and Color. Selecting @b{Less} resets | |
358 the Fonts and Colors to a fast, minimal set of decorations. Selecting | |
359 @b{More} resets the Fonts and Colors to a larger set of decorations. For | |
360 example, if @b{Less} is selected (which is the default setting) then you | |
361 might have all comments in green color. Whereas, if @b{More} is | |
362 selected then a function name in the comments themselves might appear in | |
363 a different Color or Font.@refill | |
428 | 364 |
365 @item Paren Highlighting | |
366 After selecting @b{Blink} from this item, if you place the cursor | |
367 on a parenthesis, the matching parenthesis will blink. If you select | |
368 @b{Highlight} and place the cursor on a parenthesis, the whole | |
369 expression of the parenthesis under the cursor will be highlighted. | |
370 Selecting @b{None} will turn off the options (regarding @b{Paren | |
371 Highlighting}) which you had selected earlier.@refill | |
372 | |
373 @item Font | |
374 You can select any Font for your program by choosing from one of the | |
375 available Fonts. | |
376 | |
377 @item Size | |
378 You can select any size ranging from @b{2} to @b{24} by selecting the | |
379 appropriate option.@refill | |
380 | |
381 @item Weight | |
382 You can choose either @b{Bold} or @b{Medium} for the weight.@refill | |
383 | |
384 @item Buffers Menu Length... | |
385 Prompts you for the number of buffers to display. Then it will display | |
386 that number of most recently selected buffers. | |
387 | |
388 @item Buffers Sub-Menus | |
389 After selection of this item the Buffers menu will contain several | |
390 commands, as submenus of each buffer line. If this item is unselected, | |
391 then there are no submenus for each buffer line, the only command | |
392 available will be selecting that buffer. | |
393 | |
394 @item Save Options | |
395 Selecting this item will save the current settings of your Options | |
442 | 396 menu to your init file. @xref{Init File}. |
428 | 397 @end table |
398 | |
5791
9fae6227ede5
Silence texinfo 5.2 warnings, primarily by adding next, prev, and up
Jerry James <james@xemacs.org>
parents:
2757
diff
changeset
|
399 @node Buffers Menu, Tools Menu, Options Menu, Pull-down Menus |
428 | 400 @subsection The Buffers Menu |
401 @cindex Buffers menu | |
402 The @b{Buffers} menu provides a selection of up to ten buffers and the | |
403 item @b{List All Buffers}, which provides a Buffer List. @xref{List | |
404 Buffers}, for more information. | |
405 | |
5791
9fae6227ede5
Silence texinfo 5.2 warnings, primarily by adding next, prev, and up
Jerry James <james@xemacs.org>
parents:
2757
diff
changeset
|
406 @node Tools Menu, Help Menu, Buffers Menu, Pull-down Menus |
428 | 407 @subsection The Tools Menu |
408 @cindex Tools menu | |
409 | |
410 The @b{Tools} pull-down menu contains the @b{Grep...}, @b{Compile...}, | |
411 @b{Shell Command...}, @b{Shell Command on Region...}, @b{Debug(GDB)...} | |
412 and @b{Debug(DBX)...} menu items, and the @b{Compare}, @b{Merge}, | |
413 @b{Apply Patch} and @b{Tags} sub-menus. When you select a menu item, | |
414 Emacs executes the equivalent command. For some of the menu items, | |
415 there are sub-menus which you will need to select. | |
416 | |
5791
9fae6227ede5
Silence texinfo 5.2 warnings, primarily by adding next, prev, and up
Jerry James <james@xemacs.org>
parents:
2757
diff
changeset
|
417 @node Help Menu, Menu Customization, Tools Menu, Pull-down Menus |
428 | 418 @subsection The Help Menu |
419 @cindex Help menu | |
420 | |
421 The Help Menu gives you access to Emacs Info and provides a menu | |
422 equivalent for each of the choices you have when using @kbd{C-h}. | |
423 @xref{Help}, for more information. | |
424 | |
425 The Help menu also gives access to UNIX online manual pages via the | |
426 @b{UNIX Manual Page} option. | |
427 | |
5791
9fae6227ede5
Silence texinfo 5.2 warnings, primarily by adding next, prev, and up
Jerry James <james@xemacs.org>
parents:
2757
diff
changeset
|
428 @node Menu Customization, , Help Menu, Pull-down Menus |
428 | 429 @subsection Customizing XEmacs Menus |
430 | |
431 You can customize any of the pull-down menus by adding or removing menu | |
432 items and disabling or enabling existing menu items. | |
433 | |
434 The following functions are available: | |
435 @table @kbd | |
436 @item add-menu: (@var{menu-path} @var{menu-name} @var{menu-items} &optional @var{before}) | |
437 Add a menu to the menu bar or one of its submenus. | |
438 @item add-menu-item: (@var{menu-path} @var{item-name} @var{function} | |
439 @var{enabled-p} &optional @var{before}) | |
440 Add a menu item to a menu, creating the menu first if necessary. | |
441 @item delete-menu-item: (@var{path}) | |
442 Remove the menu item defined by @var{path} from the menu hierarchy. | |
443 @item disable-menu-item: (@var{path}) | |
444 Disable the specified menu item. | |
445 @item enable-menu-item: (@var{path}) | |
446 Enable the specified previously disabled menu item. | |
447 @item relabel-menu-item: (@var{path} @var{new-name}) | |
448 Change the string of the menu item specified by @var{path} to | |
449 @var{new-name}. | |
450 | |
451 @end table | |
452 | |
453 @findex add-menu | |
454 @cindex adding menus | |
455 Use the function @code{add-menu} to add a new menu or submenu. | |
456 If a menu or submenu of the given name exists already, it is changed. | |
457 | |
458 @var{menu-path} identifies the menu under which the new menu should be | |
459 inserted. It is a list of strings; for example, @code{("File")} names | |
460 the top-level @b{File} menu. @code{("File" "Foo")} names a hypothetical | |
461 submenu of @b{File}. If @var{menu-path} is @code{nil}, the menu is | |
462 added to the menu bar itself. | |
463 | |
464 @var{menu-name} is the string naming the menu to be added. | |
465 | |
466 @var{menu-items} is a list of menu item descriptions. Each menu item | |
467 should be a vector of three elements: | |
468 | |
469 @itemize @bullet | |
470 @item | |
471 A string, which is the name of the menu item | |
472 @item | |
473 A symbol naming a command, or a form to evaluate | |
474 @item | |
475 @code{t} or @code{nil} to indicate whether the item is selectable | |
476 @end itemize | |
477 | |
478 The optional argument @var{before} is the name of the menu before which | |
479 the new menu or submenu should be added. If the menu is already | |
480 present, it is not moved. | |
481 | |
482 @findex add-menu-item | |
483 @cindex adding menu items | |
484 The function @code{add-menu-item} adds a menu item to the specified | |
485 menu, creating the menu first if necessary. If the named item already | |
486 exists, the menu remains unchanged. | |
487 | |
488 @var{menu-path} identifies the menu into which the new menu item should | |
489 be inserted. It is a list of strings; for example, @code{("File")} | |
490 names the top-level @b{File} menu. @code{("File" "Foo")} names a | |
491 hypothetical submenu of @b{File}. | |
492 | |
493 @var{item-name} is the string naming the menu item to add. | |
494 | |
495 @var{function} is the command to invoke when this menu item is selected. | |
496 If it is a symbol, it is invoked with @code{call-interactively}, in the | |
497 same way that functions bound to keys are invoked. If it is a list, the | |
498 list is simply evaluated. | |
499 | |
500 @var{enabled-p} controls whether the item is selectable or not. | |
501 It should be @code{t}, @code{nil}, or a form to evaluate to decide. | |
502 This form will be evaluated just before the menu is displayed, and | |
503 the menu item will be selectable if that form returns non-@code{nil}. | |
504 | |
505 For example, to make the @code{rename-file} command available from the | |
506 @b{File} menu, use the following code: | |
507 | |
508 @example | |
509 (add-menu-item '("File") "Rename File" 'rename-file t) | |
510 @end example | |
511 | |
512 To add a submenu of file management commands using a @b{File Management} | |
513 item, use the following code: | |
514 | |
515 @example | |
516 (add-menu-item '("File" "File Management") "Copy File" 'copy-file t) | |
517 (add-menu-item '("File" "File Management") "Delete File" 'delete-file t) | |
518 (add-menu-item '("File" "File Management") "Rename File" 'rename-file t) | |
519 @end example | |
520 | |
521 The optional @var{before} argument is the name of a menu item before | |
522 which the new item should be added. If the item is already present, it | |
523 is not moved. | |
524 | |
525 @findex delete-menu-item | |
526 @cindex deleting menu items | |
527 To remove a specified menu item from the menu hierarchy, use | |
528 @code{delete-menu-item}. | |
529 | |
530 @var{path} is a list of strings that identify the position of the menu | |
531 item in the menu hierarchy. @code{("File" "Save")} means the menu item | |
532 called @b{Save} under the top level @b{File} menu. @code{("Menu" "Foo" | |
533 "Item")} means the menu item called @b{Item} under the @b{Foo} submenu | |
534 of @b{Menu}. | |
535 | |
536 @findex disable-menu-item | |
537 @findex enable-menu-item | |
538 @cindex enabling menu items | |
539 @cindex disabling menu items | |
540 | |
541 To disable a menu item, use @code{disable-menu-item}. The disabled | |
542 menu item is grayed and can no longer be selected. To make the | |
543 item selectable again, use @code{enable-menu-item}. | |
544 @code{disable-menu-item} and @code{enable-menu-item} both have the | |
545 argument @var{path}. | |
546 | |
547 @findex relabel-menu-item | |
548 @cindex changing menu items | |
549 To change the string of the specified menu item, use | |
550 @code{relabel-menu-item}. This function also takes the argument @var{path}. | |
551 | |
552 @var{new-name} is the string to which the menu item will be changed. |