Mercurial > hg > xemacs-beta
view man/xemacs/menus.texi @ 5353:38e24b8be4ea
Improve the lexical scoping in #'block, #'return-from.
lisp/ChangeLog addition:
2011-02-07 Aidan Kehoe <kehoea@parhasard.net>
* bytecomp.el:
* bytecomp.el (byte-compile-initial-macro-environment):
Shadow `block', `return-from' here, we implement them differently
when byte-compiling.
* bytecomp.el (byte-compile-active-blocks): New.
* bytecomp.el (byte-compile-block-1): New.
* bytecomp.el (byte-compile-return-from-1): New.
* bytecomp.el (return-from-1): New.
* bytecomp.el (block-1): New.
These are two aliases that exist to have their own associated
byte-compile functions, which functions implement `block' and
`return-from'.
* cl-extra.el (cl-macroexpand-all):
Fix a bug here when macros in the environment have been compiled.
* cl-macs.el (block):
* cl-macs.el (return):
* cl-macs.el (return-from):
Be more careful about lexical scope in these macros.
* cl.el:
* cl.el ('cl-block-wrapper): Removed.
* cl.el ('cl-block-throw): Removed.
These aren't needed in code generated by this XEmacs. They
shouldn't be needed in code generated by XEmacs 21.4, but if it
turns out the packages do need them, we can put them back.
2011-01-30 Mike Sperber <mike@xemacs.org>
* font-lock.el (font-lock-fontify-pending-extents): Don't fail if
`font-lock-mode' is unset, which can happen in the middle of
`revert-buffer'.
2011-01-23 Aidan Kehoe <kehoea@parhasard.net>
* cl-macs.el (delete):
* cl-macs.el (delq):
* cl-macs.el (remove):
* cl-macs.el (remq):
Don't use the compiler macro if these functions were given the
wrong number of arguments, as happens in lisp-tests.el.
* cl-seq.el (remove, remq): Removed.
I added these to subr.el, and forgot to remove them from here.
2011-01-22 Aidan Kehoe <kehoea@parhasard.net>
* bytecomp.el (byte-compile-setq, byte-compile-set):
Remove kludge allowing keywords' values to be set, all the code
that does that is gone.
* cl-compat.el (elt-satisfies-test-p):
* faces.el (set-face-parent):
* faces.el (face-doc-string):
* gtk-font-menu.el:
* gtk-font-menu.el (gtk-reset-device-font-menus):
* msw-font-menu.el:
* msw-font-menu.el (mswindows-reset-device-font-menus):
* package-get.el (package-get-installedp):
* select.el (select-convert-from-image-data):
* sound.el:
* sound.el (load-sound-file):
* x-font-menu.el (x-reset-device-font-menus-core):
Don't quote keywords, they're self-quoting, and the
win from backward-compatibility is sufficiently small now that the
style problem overrides it.
2011-01-22 Aidan Kehoe <kehoea@parhasard.net>
* cl-macs.el (block, return-from): Require that NAME be a symbol
in these macros, as always documented in the #'block docstring and
as required by Common Lisp.
* descr-text.el (unidata-initialize-unihan-database):
Correct the use of non-symbols in #'block and #'return-from in
this function.
2011-01-15 Aidan Kehoe <kehoea@parhasard.net>
* cl-extra.el (concatenate): Accept more complicated TYPEs in this
function, handing the sequences over to #'coerce if we don't
understand them here.
* cl-macs.el (inline): Don't proclaim #'concatenate as inline, its
compiler macro is more useful than doing that.
2011-01-11 Aidan Kehoe <kehoea@parhasard.net>
* subr.el (delete, delq, remove, remq): Move #'remove, #'remq
here, they don't belong in cl-seq.el; move #'delete, #'delq here
from fns.c, implement them in terms of #'delete*, allowing support
for sequences generally.
* update-elc.el (do-autoload-commands): Use #'delete*, not #'delq
here, now the latter's no longer dumped.
* cl-macs.el (delete, delq): Add compiler macros transforming
#'delete and #'delq to #'delete* calls.
2011-01-10 Aidan Kehoe <kehoea@parhasard.net>
* dialog.el (make-dialog-box): Correct a misplaced parenthesis
here, thank you Mats Lidell in 87zkr9gqrh.fsf@mail.contactor.se !
2011-01-02 Aidan Kehoe <kehoea@parhasard.net>
* dialog.el (make-dialog-box):
* list-mode.el (display-completion-list):
These functions used to use cl-parsing-keywords; change them to
use defun* instead, fixing the build. (Not sure what led to me
not including this change in d1b17a33450b!)
2011-01-02 Aidan Kehoe <kehoea@parhasard.net>
* cl-macs.el (define-star-compiler-macros):
Make sure the form has ITEM and LIST specified before attempting
to change to calls with explicit tests; necessary for some tests
in lisp-tests.el to compile correctly.
(stable-union, stable-intersection): Add compiler macros for these
functions, in the same way we do for most of the other functions
in cl-seq.el.
2011-01-01 Aidan Kehoe <kehoea@parhasard.net>
* cl-macs.el (dolist, dotimes, do-symbols, macrolet)
(symbol-macrolet):
Define these macros with defmacro* instead of parsing the argument
list by hand, for the sake of style and readability; use backquote
where appropriate, instead of calling #'list and and friends, for
the same reason.
2010-12-30 Aidan Kehoe <kehoea@parhasard.net>
* x-misc.el (device-x-display):
Provide this function, documented in the Lispref for years, but
not existing previously. Thank you Julian Bradfield, thank you
Jeff Mincy.
2010-12-30 Aidan Kehoe <kehoea@parhasard.net>
* cl-seq.el:
Move the heavy lifting from this file to C. Dump the
cl-parsing-keywords macro, but don't use defun* for the functions
we define that do take keywords, dynamic scope lossage makes that
not practical.
* subr.el (sort, fillarray): Move these aliases here.
(map-plist): #'nsublis is now built-in, but at this point #'eql
isn't necessarily available as a test; use #'eq.
* obsolete.el (cl-delete-duplicates): Make this available for old
compiler macros and old code.
(memql): Document that this is equivalent to #'member*, and worse.
* cl.el (adjoin, subst): Removed. These are in C.
2010-12-30 Aidan Kehoe <kehoea@parhasard.net>
* simple.el (assoc-ignore-case): Remove a duplicate definition of
this function (it's already in subr.el).
* iso8859-1.el (char-width):
On non-Mule, make this function equivalent to that produced by
(constantly 1), but preserve its docstring.
* subr.el (subst-char-in-string): Define this in terms of
#'substitute, #'nsubstitute.
(string-width): Define this using #'reduce and #'char-width.
(char-width): Give this a simpler definition, it makes far more
sense to check for mule at load time and redefine, as we do in
iso8859-1.el.
(store-substring): Implement this in terms of #'replace, now
#'replace is cheap.
2010-12-30 Aidan Kehoe <kehoea@parhasard.net>
* update-elc.el (lisp-files-needed-for-byte-compilation)
(lisp-files-needing-early-byte-compilation):
cl-macs belongs in the former, not the latter, it is as
fundamental as bytecomp.el.
2010-12-30 Aidan Kehoe <kehoea@parhasard.net>
* cl.el:
Provde the Common Lisp program-error, type-error as error
symbols. This doesn't nearly go far enough for anyone using the
Common Lisp errors.
2010-12-29 Aidan Kehoe <kehoea@parhasard.net>
* cl-macs.el (delete-duplicates):
If the form has an incorrect number of arguments, don't attempt a
compiler macroexpansion.
2010-12-29 Aidan Kehoe <kehoea@parhasard.net>
* cl-macs.el (cl-safe-expr-p):
Forms that start with the symbol lambda are also safe.
2010-12-29 Aidan Kehoe <kehoea@parhasard.net>
* cl-macs.el (= < > <= >=):
For these functions' compiler macros, the optimisation is safe
even if the first and the last arguments have side effects, since
they're only used the once.
2010-12-29 Aidan Kehoe <kehoea@parhasard.net>
* cl-macs.el (inline-side-effect-free-compiler-macros):
Unroll a loop here at macro-expansion time, so these compiler
macros are compiled. Use #'eql instead of #'eq in a couple of
places for better style.
2010-12-29 Aidan Kehoe <kehoea@parhasard.net>
* cl-extra.el (notany, notevery): Avoid some dynamic scope
stupidity with local variable names in these functions, when they
weren't prefixed with cl-; go into some more detail in the doc
strings.
2010-12-29 Aidan Kehoe <kehoea@parhasard.net>
* byte-optimize.el (side-effect-free-fns): #'remove, #'remq are
free of side-effects.
(side-effect-and-error-free-fns):
Drop dot, dot-marker from the list.
2010-11-17 Aidan Kehoe <kehoea@parhasard.net>
* cl-extra.el (coerce):
In the argument list, name the first argument OBJECT, not X; the
former name was always used in the doc string and is clearer.
Handle vector type specifications which include the length of the
target sequence, error if there's a mismatch.
* cl-macs.el (cl-make-type-test): Handle type specifications
starting with the symbol 'eql.
2010-11-14 Aidan Kehoe <kehoea@parhasard.net>
* cl-macs.el (eql): Don't remove the byte-compile property of this
symbol. That was necessary to override a bug in bytecomp.el where
#'eql was confused with #'eq, which bug we no longer have.
If neither expression is constant, don't attempt to handle the
expression in this compiler macro, leave it to byte-compile-eql,
which produces better code anyway.
* bytecomp.el (eq): #'eql is not the function associated with the
byte-eq byte code.
(byte-compile-eql): Add an explicit compile method for this
function, for cases where the cl-macs compiler macro hasn't
reduced it to #'eq or #'equal.
2010-10-25 Aidan Kehoe <kehoea@parhasard.net>
Add compiler macros and compilation sanity-checking for various
functions that take keywords.
* byte-optimize.el (side-effect-free-fns): #'symbol-value is
side-effect free and not error free.
* bytecomp.el (byte-compile-normal-call): Check keyword argument
lists for sanity; store information about the positions where
keyword arguments start using the new byte-compile-keyword-start
property.
* cl-macs.el (cl-const-expr-val): Take a new optional argument,
cl-not-constant, defaulting to nil, in this function; return it if
the expression is not constant.
(cl-non-fixnum-number-p): Make this into a separate function, we
want to pass it to #'every.
(eql): Use it.
(define-star-compiler-macros): Use the same code to generate the
member*, assoc* and rassoc* compiler macros; special-case some
code in #'add-to-list in subr.el.
(remove, remq): Add compiler macros for these two functions, in
preparation for #'remove being in C.
(define-foo-if-compiler-macros): Transform (remove-if-not ...) calls to
(remove ... :if-not) at compile time, which will be a real win
once the latter is in C.
(define-substitute-if-compiler-macros)
(define-subst-if-compiler-macros): Similarly for these functions.
(delete-duplicates): Change this compiler macro to use
#'plists-equal; if we don't have information about the type of
SEQUENCE at compile time, don't bother attempting to inline the
call, the function will be in C soon enough.
(equalp): Remove an old commented-out compiler macro for this, if
we want to see it it's in version control.
(subst-char-in-string): Transform this to a call to nsubstitute or
nsubstitute, if that is appropriate.
* cl.el (ldiff): Don't call setf here, this makes for a load-time
dependency problem in cl-macs.el
2010-06-14 Stephen J. Turnbull <stephen@xemacs.org>
* term/vt100.el:
Refer to XEmacs, not GNU Emacs, in permissions.
* term/bg-mouse.el:
* term/sup-mouse.el:
Put copyright notice in canonical "Copyright DATE AUTHOR" form.
Refer to XEmacs, not GNU Emacs, in permissions.
* site-load.el:
Add permission boilerplate.
* mule/canna-leim.el:
* alist.el:
Refer to XEmacs, not APEL/this program, in permissions.
* mule/canna-leim.el:
Remove my copyright, I've assigned it to the FSF.
2010-06-14 Stephen J. Turnbull <stephen@xemacs.org>
* gtk.el:
* gtk-widget-accessors.el:
* gtk-package.el:
* gtk-marshal.el:
* gtk-compose.el:
* gnome.el:
Add copyright notice based on internal evidence.
2010-06-14 Stephen J. Turnbull <stephen@xemacs.org>
* easymenu.el: Add reference to COPYING to permission notice.
* gutter.el:
* gutter-items.el:
* menubar-items.el:
Fix typo "Xmacs" in permissions notice.
2010-06-14 Stephen J. Turnbull <stephen@xemacs.org>
* auto-save.el:
* font.el:
* fontconfig.el:
* mule/kinsoku.el:
Add "part of XEmacs" text to permission notice.
2010-10-14 Aidan Kehoe <kehoea@parhasard.net>
* byte-optimize.el (side-effect-free-fns):
* cl-macs.el (remf, getf):
* cl-extra.el (tailp, cl-set-getf, cl-do-remf):
* cl.el (ldiff, endp):
Tighten up Common Lisp compatibility for #'ldiff, #'endp, #'tailp;
add circularity checking for the first two.
#'cl-set-getf and #'cl-do-remf were Lisp implementations of
#'plist-put and #'plist-remprop; change the names to aliases,
changes the macros that use them to using #'plist-put and
#'plist-remprop directly.
2010-10-12 Aidan Kehoe <kehoea@parhasard.net>
* abbrev.el (fundamental-mode-abbrev-table, global-abbrev-table):
Create both these abbrev tables using the usual
#'define-abbrev-table calls, rather than attempting to
special-case them.
* cl-extra.el: Force cl-macs to be loaded here, if cl-extra.el is
being loaded interpreted. Previously other, later files would
redundantly call (load "cl-macs") when interpreted, it's more
reasonable to do it here, once.
* cmdloop.el (read-quoted-char-radix): Use defcustom here, we
don't have any dump-order dependencies that would prevent that.
* custom.el (eval-when-compile): Don't load cl-macs when
interpreted or when byte-compiling, rely on cl-extra.el in the
former case and the appropriate entry in bytecomp-load-hook in the
latter. Get rid of custom-declare-variable-list, we have no
dump-time dependencies that would require it.
* faces.el (eval-when-compile): Don't load cl-macs when
interpreted or when byte-compiling.
* packages.el: Remove some inaccurate comments.
* post-gc.el (cleanup-simple-finalizers): Use #'delete-if-not
here, now the order of preloaded-file-list has been changed to
make it available.
* subr.el (custom-declare-variable-list): Remove. No need for it.
Also remove a stub define-abbrev-table from this file, given the
current order of preloaded-file-list there's no need for it.
2010-10-10 Aidan Kehoe <kehoea@parhasard.net>
* bytecomp.el (byte-compile-constp) Forms quoted with FUNCTION are
also constant.
(byte-compile-initial-macro-environment): In #'the, if FORM is
constant and does not match TYPE, warn at byte-compile time.
2010-10-10 Aidan Kehoe <kehoea@parhasard.net>
* backquote.el (bq-vector-contents, bq-list*): Remove; the former
is equivalent to (append VECTOR nil), the latter to (list* ...).
(bq-process-2): Use (append VECTOR nil) instead of using
#'bq-vector-contents to convert to a list.
(bq-process-1): Now we use list* instead of bq-list
* subr.el (list*): Moved from cl.el, since it is now required to
be available the first time a backquoted form is encountered.
* cl.el (list*): Move to subr.el.
2010-09-16 Aidan Kehoe <kehoea@parhasard.net>
* test-harness.el (Check-Message):
Add an omitted comma here, thank you the buildbot.
2010-09-16 Aidan Kehoe <kehoea@parhasard.net>
* hash-table.el (hash-table-key-list, hash-table-value-list)
(hash-table-key-value-alist, hash-table-key-value-plist):
Remove some useless #'nreverse calls in these files; our hash
tables have no order, it's not helpful to pretend they do.
* behavior.el (read-behavior):
Do the same in this file, in some code evidently copied from
hash-table.el.
2010-09-16 Aidan Kehoe <kehoea@parhasard.net>
* info.el (Info-insert-dir):
* format.el (format-deannotate-region):
* files.el (cd, save-buffers-kill-emacs):
Use #'some, #'every and related functions for applying boolean
operations to lists, instead of rolling our own ones that cons and
don't short-circuit.
2010-09-16 Aidan Kehoe <kehoea@parhasard.net>
* bytecomp.el (byte-compile-initial-macro-environment):
* cl-macs.el (the):
Rephrase the docstring, make its implementation when compiling
files a little nicer.
2010-09-16 Aidan Kehoe <kehoea@parhasard.net>
* descr-text.el (unidata-initialize-unicodedata-database)
(unidata-initialize-unihan-database, describe-char-unicode-data)
(describe-char-unicode-data):
Wrap calls to the database functions with (with-fboundp ...),
avoiding byte compile warnings on builds without support for the
database functions.
(describe-char): (reduce #'max ...), not (apply #'max ...), no
need to cons needlessly.
(describe-char): Remove a redundant lambda wrapping
#'extent-properties.
(describe-char-unicode-data): Call #'nsubst when replacing "" with
nil in the result of #'split-string, instead of consing inside
mapcar.
2010-09-16 Aidan Kehoe <kehoea@parhasard.net>
* x-faces.el (x-available-font-sizes):
* specifier.el (let-specifier):
* package-ui.el (pui-add-required-packages):
* msw-faces.el (mswindows-available-font-sizes):
* modeline.el (modeline-minor-mode-menu):
* minibuf.el (minibuf-directory-files):
Replace the O2N (delq nil (mapcar (lambda (W) (and X Y)) Z)) with
the ON (mapcan (lambda (W) (and X (list Y))) Z) in these files.
2010-09-16 Aidan Kehoe <kehoea@parhasard.net>
* cl-macs.el (= < > <= >=):
When these functions are handed more than two arguments, and those
arguments have no side effects, transform to a series of two
argument calls, avoiding funcall in the byte-compiled code.
* mule/mule-cmds.el (finish-set-language-environment):
Take advantage of this change in a function called 256 times at
startup.
2010-09-16 Aidan Kehoe <kehoea@parhasard.net>
* bytecomp.el (byte-compile-function-form, byte-compile-quote)
(byte-compile-quote-form):
Warn at compile time, and error at runtime, if a (quote ...) or a
(function ...) form attempts to quote more than one object.
2010-09-16 Aidan Kehoe <kehoea@parhasard.net>
* byte-optimize.el (byte-optimize-apply): Transform (apply 'nconc
(mapcar ...)) to (mapcan ...); warn about use of the first idiom.
* update-elc.el (do-autoload-commands):
* packages.el (packages-find-package-library-path):
* frame.el (frame-list):
* extents.el (extent-descendants):
* etags.el (buffer-tag-table-files):
* dumped-lisp.el (preloaded-file-list):
* device.el (device-list):
* bytecomp-runtime.el (proclaim-inline, proclaim-notinline)
Use #'mapcan, not (apply #'nconc (mapcar ...) in all these files.
* bytecomp-runtime.el (eval-when-compile, eval-and-compile):
In passing, mention that these macros also evaluate the body when
interpreted.
tests/ChangeLog addition:
2011-02-07 Aidan Kehoe <kehoea@parhasard.net>
* automated/lisp-tests.el:
Test lexical scope for `block', `return-from'; add a
Known-Bug-Expect-Failure for a contorted example that fails when
byte-compiled.
author | Aidan Kehoe <kehoea@parhasard.net> |
---|---|
date | Mon, 07 Feb 2011 12:01:24 +0000 |
parents | 7844ab77b582 |
children | 9fae6227ede5 |
line wrap: on
line source
@node Pull-down Menus, Entering Emacs, Keystrokes, Top @comment node-name, next, previous, up @section XEmacs Pull-down Menus If you are running XEmacs under X, a menu bar on top of the Emacs frame provides access to pull-down menus of file, edit, and help-related commands. The menus provide convenient shortcuts and an easy interface for novice users. They do not provide additions to the functionality available via key commands; you can still invoke commands from the keyboard as in previous versions of Emacs. @table @b @item File Perform file and buffer-related operations, such as opening and closing files, saving and printing buffers, as well as exiting Emacs. @cindex File menu @item Edit Perform standard editing operations, such as cutting, copying, pasting, and killing selected text. @cindex Edit menu @c #### The Mule menu needs to be documented, but this is not the place @c for it since Ben just moved it. @item Apps Access to sub-applications implemented within XEmacs, such as the mail reader, the World Wide Web browser, the spell-checker, and the calendar program. @cindex Apps menu @item Options Control various options regarding the way XEmacs works, such as controlling which elements of the frame are visible, selecting the fonts to be used for text, specifying whether searches are case-sensitive, etc. @cindex Options menu @item Buffers Present a menu of buffers for selection as well as the option to display a buffer list. @cindex Buffers menu @item Tools Perform various actions designed to automate software development and similar technical work, such as searching through many files, compiling a program, and comparing or merging two or three files. @cindex Tools menu @item Help Access to Emacs Info. @cindex Help menu @end table @cindex Pull-down Menus @cindex menus There are two ways of selecting an item from a pull-down menu: @itemize @bullet @item Select an item in the menu bar by moving the cursor over it and click the left mouse-button. Then move the cursor over the menu item you want to choose and click left again. @item Select an item in the menu bar by moving the cursor over it and click and hold the left mouse-button. With the mouse-button depressed, move the cursor over the menu item you want, then release it to make your selection. @end itemize If a command in the pull-down menu is not applicable in a given situation, the command is disabled and its name appears faded. You cannot invoke items that are faded. For example, many commands on the @b{Edit} menu appear faded until you select text on which they are to operate; after you select a block of text, edit commands are enabled. @xref{Mouse Selection}, for information on using the mouse to select text. @xref{Using X Selections}, for related information. There are also @kbd{M-x} equivalents for each menu item. To find the equivalent for any left-button menu item, do the following: @enumerate @item Type @kbd{C-h k} to get the @code{Describe Key} prompt. @item Select the menu item and click. @end enumerate Emacs displays the function associated with the menu item in a separate window, usually together with some documentation. @menu * File Menu:: Items on the File menu. * Edit Menu:: Items on the Edit menu. * Apps Menu:: Items on the Apps menu. * Options Menu:: Items on the Options menu. * Buffers Menu:: Information about the Buffers menu. * Tools Menu:: Items on the Tools menu. * Help Menu:: Items on the Help menu. * Menu Customization:: Adding and removing menu items and related operations. @end menu @node File Menu @subsection The File Menu @cindex File menu The @b{File} menu bar item contains the items @b{New Frame}, @b{Open File...}, @b{Save Buffer}, @b{Save Buffer As...}, @b{Revert Buffer}, @b{Print Buffer}, @b{Delete Frame}, @b{Kill Buffer} and @b{Exit Emacs} on the pull-down menu. If you select a menu item, Emacs executes the equivalent command. @cindex Open File, New Frame... menu item @cindex Open File... menu item @cindex Insert File... menu item @cindex Save Buffer menu item @cindex Save Buffer As ... menu item @cindex Revert Buffer menu item @cindex Kill Buffer menu item @cindex Print Buffer menu item @cindex New Frame menu item @cindex Delete Frame menu item @cindex Split Frame @cindex Un-split (Keep This) @cindex Un-split (Keep Others) @cindex Exit Emacs menu item @table @b @item Open File, New Frame... Prompts you for a filename and loads that file into a new buffer in a new Emacs frame, that is, a new X window running under the same Emacs process. You can remove the frame using the @b{Delete Frame} menu item. When you remove the last frame, you exit Emacs and are prompted for confirmation. @refill @item Open File... Prompts you for a filename and loads that file into a new buffer. @b{Open File...} is equivalent to the Emacs command @code{find-file} (@kbd{C-x C-f}).@refill @item Insert File... Prompts you for a filename and inserts the contents of that file into the current buffer. The file associated with the current buffer is not changed by this command. This is equivalent to the Emacs command @code{insert-file} (@kbd{C-x i}).@refill @item Save Buffer Writes and saves the current Emacs buffer as the latest version of the current visited file. @b{Save Buffer} is equivalent to the Emacs command @code{save-buffer} (@kbd{C-x C-s}).@refill @item Save Buffer As... Writes and saves the current Emacs buffer to the filename you specify. @b{Save Buffer As...} is equivalent to the Emacs command @code{write-file} (@kbd{C-x C-w}).@refill @item Revert Buffer Restores the last saved version of the file to the current buffer. When you edit a buffer containing a text file, you must save the buffer before your changes become effective. Use @b{Revert Buffer} if you do not want to keep the changes you have made in the buffer. @b{Revert Buffer} is equivalent to the Emacs command @code{revert-file} (@kbd{M-x revert-buffer}).@refill @item Kill Buffer Kills the current buffer, prompting you first if there are unsaved changes. This is roughly equivalent to the Emacs command @code{kill-buffer} (@kbd{C-x k}), except that @code{kill-buffer} prompts for the name of a buffer to kill. @refill @item Print Buffer Prints a hardcopy of the current buffer. Equivalent to the Emacs command @code{print-buffer} (@kbd{M-x print-buffer}).@refill @item New Frame Creates a new Emacs frame displaying the @code{*scratch*} buffer. This is like the @b{Open in New Frame...} menu item, except that it does not prompt for nor load a file.@refill @item Delete Frame Allows you to close all but one of the frames created by @b{New Frame}. If you created several Emacs frames belonging to the same Emacs process, you can close all but one of them. When you attempt to close the last frame, Emacs informs you that you are attempting to delete the last frame. You have to choose @b{Exit Emacs} for that.@refill @item Split Frame Divides the current window on the current frame into two equal-sized windows, both displaying the same buffer. Equivalent to the Emacs command @code{split-window-vertically} (@kbd{C-x 2}).@refill @item Un-split (Keep This) If the frame is divided into multiple windows, this removes all windows other than the selected one. Equivalent to the Emacs command @code{delete-other-windows} (@kbd{C-x 1}).@refill @item Un-split (Keep Others) If the frame is divided into multiple windows, this removes the selected window from the frame, giving the space back to one of the other windows. Equivalent to the Emacs command @code{delete-window} (@kbd{C-x 0}).@refill @item Exit Emacs Shuts down (kills) the Emacs process. Equivalent to the Emacs command @code{save-buffers-kill-emacs} (@kbd{C-x C-c}). Before killing the Emacs process, the system asks which unsaved buffers to save by going through the list of all buffers in that Emacs process.@refill @end table @node Edit Menu @subsection The Edit Menu @cindex Edit menu The @b{Edit} pull-down menu contains the @b{Undo}, @b{Cut}, @b{Copy}, @b{Paste}, and @b{Clear} menu items. When you select a menu item, Emacs executes the equivalent command. Most commands on the @b{Edit} menu work on a block of text, the X selection. They appear faded until you select a block of text (activate a region) with the mouse. @xref{Using X Selections}, @pxref{Killing}, and @pxref{Yanking} for more information.@refill @c **** zmacs-regions is on by default these days - jwz @c @c Note: By default, you can use the @b{Edit} menu items on the region between @c point and the mark as well as regions selected with the mouse. To change @c this behavior, set the variable @code{zmacs-regions} to @c @code{t}. @xref{Active Regions} for more information. @cindex Undo menu item @cindex Cut menu item @cindex Copy menu item @cindex Paste menu item @cindex Clear menu item @cindex Start Macro Recording menu item @cindex End Macro Recording menu item @cindex Execute Last Macro menu item @table @b @item Undo Undoes the previous command. @b{Undo} is equivalent to the Emacs command @code{undo} (@kbd{C-x u}).@refill @item Cut Removes the selected text block from the current buffer, makes it the X clipboard selection, and places it in the kill ring. Before executing this command, you have to select a region using Emacs region selection commands or with the mouse.@refill @item Copy Makes a selected text block the X clipboard selection, and places it in the kill ring. You can select text using one of the Emacs region selection commands or by selecting a text region with the mouse.@refill @item Paste Inserts the current value of the X clipboard selection in the current buffer. Note that this is not necessarily the same as the Emacs @code{yank} command, because the Emacs kill ring and the X clipboard selection are not the same thing. You can paste in text you have placed in the clipboard using @b{Copy} or @b{Cut}. You can also use @b{Paste} to insert text that was pasted into the clipboard from other applications. @item Clear Removes the selected text block from the current buffer but does not place it in the kill ring or the X clipboard selection. @item Start Macro Recording After selecting this, Emacs will remember every keystroke you type until @b{End Macro Recording} is selected. This is the same as the Emacs command @code{start-kbd-macro} (@kbd{C-x (}). @item End Macro Recording Selecting this tells emacs to stop remembering your keystrokes. This is the same as the Emacs command @code{end-kbd-macro} (@kbd{C-x )}). @item Execute Last Macro Selecting this item will cause emacs to re-interpret all of the keystrokes which were saved between selections of the @b{Start Macro Recording} and @b{End Macro Recording} menu items. This is the same as the Emacs command @code{call-last-kbd-macro} (@kbd{C-x e}). @end table @node Apps Menu @subsection The Apps Menu @cindex Apps menu The @b{Apps} pull-down menu contains the @b{Read Mail (VM)...}, @b{Read Mail (MH)...}, @b{Send Mail...}, @b{Usenet News}, @b{Browse the Web}, @b{Gopher}, @b{Spell-Check Buffer} and @b{Emulate VI} menu items, and the @b{Calendar} and @b{Games} sub-menus. When you select a menu item, Emacs executes the equivalent command. For some of the menu items, there are sub-menus which you will need to select. @node Options Menu @subsection The Options Menu @cindex Options menu The @b{Options} pull-down menu contains the @b{Read Only}, @b{Case Sensitive Search}, @b{Overstrike}, @b{Auto Delete Selection}, @b{Teach Extended Commands}, @b{Syntax Highlighting}, @b{Paren Highlighting}, @b{Font}, @b{Size}, @b{Weight}, @b{Buffers Menu Length...}, @b{Buffers Sub-Menus} and @b{Save Options} menu items. When you select a menu item, Emacs executes the equivalent command. For some of the menu items, there are sub-menus which you will need to select. @cindex Read Only menu item @cindex Case Sensitive Search menu item @cindex Overstrike menu item @cindex Auto Delete Selection menu item @cindex Teach Extended Commands menu item @cindex Syntax Highlighting menu item @cindex Paren Highlighting menu item @cindex Font menu item @cindex Size menu item @cindex Weight menu item @cindex Buffers Menu Length... menu item @cindex Buffers Sub-Menus menu item @cindex Save Options @table @b @item Read Only Selecting this item will cause the buffer to visit the file in a read-only mode. Changes to the file will not be allowed. This is equivalent to the Emacs command @code{toggle-read-only} (@kbd{C-x C-q}). @item Case Sensitive Search Selecting this item will cause searches to be case-sensitive. If its not selected then searches will ignore case. This option is local to the buffer. @item Overstrike After selecting this item, when you type letters they will replace existing text on a one-to-one basis, rather than pushing it to the right. At the end of a line, such characters extend the line. Before a tab, such characters insert until the tab is filled in. This is the same as Emacs command @code{quoted-insert} (@kbd{C-q}). @item Auto Delete Selection Selecting this item will cause automatic deletion of the selected region. The typed text will replace the selection if the selection is active (i.e. if its highlighted). If the option is not selected then the typed text is just inserted at the point. @item Teach Extended Commands After you select this item, any time you execute a command with @kbd{M-x}which has a shorter keybinding, you will be shown the alternate binding before the command executes. @item Syntax Highlighting You can customize your init file to include the font-lock mode so that when you select this item, the comments will be displayed in one face, strings in another, reserved words in another, and so on. @xref{Init File}. When @b{Fonts} is selected, different parts of the program will appear in different Fonts. When @b{Colors} is selected, then the program will be displayed in different colors. Selecting @b{None} causes the program to appear in just one Font and Color. Selecting @b{Less} resets the Fonts and Colors to a fast, minimal set of decorations. Selecting @b{More} resets the Fonts and Colors to a larger set of decorations. For example, if @b{Less} is selected (which is the default setting) then you might have all comments in green color. Whereas, if @b{More} is selected then a function name in the comments themselves might appear in a different Color or Font.@refill @item Paren Highlighting After selecting @b{Blink} from this item, if you place the cursor on a parenthesis, the matching parenthesis will blink. If you select @b{Highlight} and place the cursor on a parenthesis, the whole expression of the parenthesis under the cursor will be highlighted. Selecting @b{None} will turn off the options (regarding @b{Paren Highlighting}) which you had selected earlier.@refill @item Font You can select any Font for your program by choosing from one of the available Fonts. @item Size You can select any size ranging from @b{2} to @b{24} by selecting the appropriate option.@refill @item Weight You can choose either @b{Bold} or @b{Medium} for the weight.@refill @item Buffers Menu Length... Prompts you for the number of buffers to display. Then it will display that number of most recently selected buffers. @item Buffers Sub-Menus After selection of this item the Buffers menu will contain several commands, as submenus of each buffer line. If this item is unselected, then there are no submenus for each buffer line, the only command available will be selecting that buffer. @item Save Options Selecting this item will save the current settings of your Options menu to your init file. @xref{Init File}. @end table @node Buffers Menu @subsection The Buffers Menu @cindex Buffers menu The @b{Buffers} menu provides a selection of up to ten buffers and the item @b{List All Buffers}, which provides a Buffer List. @xref{List Buffers}, for more information. @node Tools Menu @subsection The Tools Menu @cindex Tools menu The @b{Tools} pull-down menu contains the @b{Grep...}, @b{Compile...}, @b{Shell Command...}, @b{Shell Command on Region...}, @b{Debug(GDB)...} and @b{Debug(DBX)...} menu items, and the @b{Compare}, @b{Merge}, @b{Apply Patch} and @b{Tags} sub-menus. When you select a menu item, Emacs executes the equivalent command. For some of the menu items, there are sub-menus which you will need to select. @node Help Menu @subsection The Help Menu @cindex Help menu The Help Menu gives you access to Emacs Info and provides a menu equivalent for each of the choices you have when using @kbd{C-h}. @xref{Help}, for more information. The Help menu also gives access to UNIX online manual pages via the @b{UNIX Manual Page} option. @node Menu Customization @subsection Customizing XEmacs Menus You can customize any of the pull-down menus by adding or removing menu items and disabling or enabling existing menu items. The following functions are available: @table @kbd @item add-menu: (@var{menu-path} @var{menu-name} @var{menu-items} &optional @var{before}) Add a menu to the menu bar or one of its submenus. @item add-menu-item: (@var{menu-path} @var{item-name} @var{function} @var{enabled-p} &optional @var{before}) Add a menu item to a menu, creating the menu first if necessary. @item delete-menu-item: (@var{path}) Remove the menu item defined by @var{path} from the menu hierarchy. @item disable-menu-item: (@var{path}) Disable the specified menu item. @item enable-menu-item: (@var{path}) Enable the specified previously disabled menu item. @item relabel-menu-item: (@var{path} @var{new-name}) Change the string of the menu item specified by @var{path} to @var{new-name}. @end table @findex add-menu @cindex adding menus Use the function @code{add-menu} to add a new menu or submenu. If a menu or submenu of the given name exists already, it is changed. @var{menu-path} identifies the menu under which the new menu should be inserted. It is a list of strings; for example, @code{("File")} names the top-level @b{File} menu. @code{("File" "Foo")} names a hypothetical submenu of @b{File}. If @var{menu-path} is @code{nil}, the menu is added to the menu bar itself. @var{menu-name} is the string naming the menu to be added. @var{menu-items} is a list of menu item descriptions. Each menu item should be a vector of three elements: @itemize @bullet @item A string, which is the name of the menu item @item A symbol naming a command, or a form to evaluate @item @code{t} or @code{nil} to indicate whether the item is selectable @end itemize The optional argument @var{before} is the name of the menu before which the new menu or submenu should be added. If the menu is already present, it is not moved. @findex add-menu-item @cindex adding menu items The function @code{add-menu-item} adds a menu item to the specified menu, creating the menu first if necessary. If the named item already exists, the menu remains unchanged. @var{menu-path} identifies the menu into which the new menu item should be inserted. It is a list of strings; for example, @code{("File")} names the top-level @b{File} menu. @code{("File" "Foo")} names a hypothetical submenu of @b{File}. @var{item-name} is the string naming the menu item to add. @var{function} is the command to invoke when this menu item is selected. If it is a symbol, it is invoked with @code{call-interactively}, in the same way that functions bound to keys are invoked. If it is a list, the list is simply evaluated. @var{enabled-p} controls whether the item is selectable or not. It should be @code{t}, @code{nil}, or a form to evaluate to decide. This form will be evaluated just before the menu is displayed, and the menu item will be selectable if that form returns non-@code{nil}. For example, to make the @code{rename-file} command available from the @b{File} menu, use the following code: @example (add-menu-item '("File") "Rename File" 'rename-file t) @end example To add a submenu of file management commands using a @b{File Management} item, use the following code: @example (add-menu-item '("File" "File Management") "Copy File" 'copy-file t) (add-menu-item '("File" "File Management") "Delete File" 'delete-file t) (add-menu-item '("File" "File Management") "Rename File" 'rename-file t) @end example The optional @var{before} argument is the name of a menu item before which the new item should be added. If the item is already present, it is not moved. @findex delete-menu-item @cindex deleting menu items To remove a specified menu item from the menu hierarchy, use @code{delete-menu-item}. @var{path} is a list of strings that identify the position of the menu item in the menu hierarchy. @code{("File" "Save")} means the menu item called @b{Save} under the top level @b{File} menu. @code{("Menu" "Foo" "Item")} means the menu item called @b{Item} under the @b{Foo} submenu of @b{Menu}. @findex disable-menu-item @findex enable-menu-item @cindex enabling menu items @cindex disabling menu items To disable a menu item, use @code{disable-menu-item}. The disabled menu item is grayed and can no longer be selected. To make the item selectable again, use @code{enable-menu-item}. @code{disable-menu-item} and @code{enable-menu-item} both have the argument @var{path}. @findex relabel-menu-item @cindex changing menu items To change the string of the specified menu item, use @code{relabel-menu-item}. This function also takes the argument @var{path}. @var{new-name} is the string to which the menu item will be changed.