Mercurial > hg > xemacs-beta
view man/new-users-guide/xmenu.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 | 0784d089fdc9 |
children |
line wrap: on
line source
@comment node-name, next, previous, up @node Windows and Menus, Edit, Entering, Top @chapter XEmacs Windows and Menus @cindex selected window @cindex windows @findex delete-window @findex delete-other-windows @findex scroll-other-window The first section of this chapter will show you how you can manipulate XEmacs Windows and the other section will explain the Pull-down Menus of an XEmacs window. @comment node-name, next, previous, up @menu * XEmacs Window:: Manipulating XEmacs Windows * Pull-down Menus:: Description of XEmacs Pull-down Menus @end menu @node XEmacs Window, Pull-down Menus, Windows and Menus, Windows and Menus @section XEmacs Windows When you use XEmacs under X, you can open multiple windows and each window can display one buffer or multiple parts of one buffer. Each window will have its own @dfn{mode line} and @dfn{echo area}. At any one time there is only one @dfn{selected window} and the buffer it displays is the @dfn{selected buffer}. There are some commands for manipulating windows: @kindex C-x 0 @kindex C-x 1 @kindex C-x 2 @kindex C-x 3 @kindex C-x 4 @kindex M-C-v @table @kbd @item M-C-v @findex scroll-other-window This command will scroll the window which is not @dfn{selected} (@code{scroll-other-window}). @findex delete-window @item C-x 0 This command will get rid of the selected window (@code{delete-window}). That is a zero. If there is more than one Emacs frame, deleting the sole remaining window on that frame deletes the frame as well. If the current frame is the only frame, it is not deleted. @findex delete-other-windows @item C-x 1 This command will get rid of all the windows except the selected one. (@code{delete-other-windows}). For example, if you use the @b{Describe variable} option from the @b{Help} menu, the window will split vertically and the bottom window will contain documentation for that variable. After you are done looking at that variable's documentation you might want to come back to your original single window. Just type @kbd{C-x 1} after your cursor is in the top window (the window which you want to keep) and hit @key{RET}. @findex split-window-vertically @item C-x 2 This command will split the selected window into two windows, one above the other (@code{split-window-vertically}). Both the windows will start out by displaying the same buffer. The window in which you have your cursor will be your @dfn{selected window}. @findex split-window-horizontally @item C-x 3 This will split the selected window into two windows positioned side by side (@code{split-window-horizontally}). A line of vertical bars will separate the window. @end table @noindent You can select a buffer in another window by using some other commands. These commands all have a prefix key @kbd{C-x 4} @table @kbd @kindex C-x 4 b @kindex C-x 4 f @kindex C-x 4 d @kindex C-x 4 m @findex switch-to-buffer-other-window @findex find-file-other-window @findex dired-other-window @findex mail-other-window @item C-x 4 b @var{bufname} @key{RET} This command will select a buffer @var{bufname} in another window. This runs @code{switch-to-buffer-other-window}. It will prompt you for a buffername. @item C-x 4 f @var{filename} @key{RET} Visit file @var{filename} and select its buffer in another window. This runs @code{find-file-other-window}. @xref{Visiting,,,xemacs,XEmacs User's Manual}. It will prompt you for a filename. @item C-x 4 d @var{directory} @key{RET} Select a Dired buffer for directory @var{directory} in another window. This runs @code{dired-other-window}. @xref{Dired,,,xemacs,XEmacs User's Manual}. @item C-x 4 m Start composing a mail message in another window. This runs @code{mail-other-window}, and its same-window version is @kbd{C-x m}. @xref{Sending Mail,,,xemacs,XEmacs User's Manual}, for information on how to @b{S}end @b{M}ail using XEmacs. @xref{Reading Mail With Rmail,,,xemacs,XEmacs User's Manual}, for information on reading mail using @b{Rmail}. @end table If you click the right button on the mouse on a mode line, you will get a menu with following options: @cindex windows @cindex pull-down-menus @cindex menus @table @b @item Delete Window Choosing this menu will remove the window above this modeline from the frame. @item Delete Other Windows Delete all windows on the frame except for the one above this modeline. @item Split Window Split the window above the mode line in half, creating another window. @item Split Window Horizontally Split the window above the mode line in half horizontally, so that there will be two windows side-by-side. @item Balance Windows Readjust the sizes of all windows on the frame until all windows have roughly the same number of lines. @end table @comment node-name, next, previous, up @node Pull-down Menus, , XEmacs Window, Windows and Menus @section XEmacs Pull-down Menus When you run XEmacs under X, each Emacs frame has a menu-bar at the top which provides commands for editing, help and other options. All these options are also available via key commands, the menus just provide convenient short-cuts. The key commands are displayed right besides some of the options. The following is a brief description of the four default menus on the menu bar: @menu * File menu:: Items on the File menu * Edit menu:: Items on the Edit menu * Options Menu:: Items on the Options Menu * Buffers Menu:: Items on the Buffers Menu * Help menu:: The Help Menu at the extreme right on the frame @end menu @node File menu, Edit menu, Pull-down Menus, Pull-down Menus @subsection The File Menu @cindex File menu @cindex Open in New Frame... menu item @cindex Open ... 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 The @b{File} menu bar contains the following items. To choose a particular option, press the left mouse button and drag it to the item you wish to select. Then release the button. @table @b @item Open... This option will prompt you for a file name. You will get a message in the echo area: @example Find File: @end example @noindent After Find File, there might be a directory path also. After you type the file name and press @key{RET} the file will be loaded into a new buffer. @item Open in New Frame... It prompts you for a file name and loads that file in a new buffer in a new frame. You can open many frames for the same Emacs session. You can delete the frame by selecting @b{Delete Frame}. @item Insert File... Prompts you for a filename and inserts the contents of this filename in your current buffer. Position your cursor at the place you wish to insert the file and select this option. You will get the following message in the echo area: @example Insert file: @end example @noindent Insert the file name and press @key{RET}. @item Save <Buffername> It saves the changes you have made to the buffer. If you have made changes which are not saved yet, the option will appear dark, otherwise it will be light and unselectable. If you do not wish to save the changes, select @b{Revert Buffer}. @item Save As... Prompts you for a filename and saves the current buffer in that file. It loads the new file if the filename you specify is different from the one you were working with. @item Print Buffer <buffername> Prints a hardcopy of the current or @dfn{selected} buffer. @item New Frame Opens a new frame with @b{*scratch*} as the default buffer. It doesn't prompt you for a filename. To open a file you need to go to that frame and select @b{Open...} @item Split Frame Splits the current window into two equal-sized windows with the same buffer. To get back a single frame, select @b{Un-Split (Keep This)}. @xref{XEmacs Window}, for more information about windows. @item Un-Split (Keep This) If the frame contains multiple windows, it will remove all windows except the selected one. @item Un-Split (Keep Others) If the frame contains multiple windows, it will remove the selected window and keep the other one. @item Revert Buffer <buffername> If you do not wish to save the changes you made to the file since you opened it, select this option. It will restore the last saved version of the file to the current buffer. @item Kill Buffer <buffername> It will kill the current buffer. If will prompt you if there are unsaved changes. @item Exit Emacs It will kill the Emacs @dfn{process} as opposed to simply killing the @dfn{buffer}. Before it kills the process, it will prompt you as to which unsaved buffers you wish to save by going through the list of the buffers. @end table @comment node-name, next, previous, up @menu * Edit menu:: Items on the Edit Menu * Options Menu:: Items on the Options Menu * Buffers Menu:: Items on the Buffers Menu * Help menu:: The Help Menu at the extreme right on the frame @end menu @node Edit menu, Options Menu, File menu, Pull-down Menus @subsection The Edit Menu @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 Most of the commands in this menu work on a block of text or a selected region. The text will be highlighted as you select it. @table @b @item Undo Undoes the previous command. If you type something by mistake you can use this command. For example, if you select @b{Insert File...} from the @b{File} menu and insert a wrong file by mistake, you can select this item and it will remove the inserted file. It undoes a batch of text which is worth an emacs command. @item Cut Removes the selected text block from the current buffer, makes it the X clipboard selection, and places it in the kill ring (@pxref{Moving Text}). Before executing this command, you have to select a region using Emacs region selection commands or with the mouse. @xref{Selecting Text}. @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. @xref{Selecting Text}, for more information. @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. @xref{X Clipboard Selection,,,xemacs,XEmacs User's Manual}, for information on using Clipboard Selection. @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. You will not be able to get this text back. @item Start Macro Recording After selecting this, Emacs will remember every keystroke you type until @b{End Macro Recording} is selected. @item End Macro Recording Selecting this tells emacs to stop remembering your keystrokes. @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. You can now execute the most recent keyboard macro. @xref{Keyboard Macros,,,xemacs,XEmacs User's Manual}, for further information. @end table @comment node-name, next, previous, up @node Options Menu, Buffers Menu, Edit menu, Pull-down Menus @subsection The Options Menu @cindex Options menu @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 There are sub-menus for some of the menus which you will need to select. If sub-menus exist for an item, they will be displayed automatically when you drag the mouse on that item. The items in this menu provide some fancy editing operations. @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. @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. For example, if this item is selected and you are searching for @samp{Smile}, then an occurrence of @samp{smile} will not be recognized because of the smaller case of @samp{s}. @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. @item Auto Delete Selection Selecting this item will cause automatic deletion of the selected region. After you select a region and hit the @key{RET} key, the selected text will be deleted. 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 cursor. @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. For example if you type @kbd{M-x find-file-other-window} which performs the same function as the @b{Open in Other Window...} in @b{File} menu you will see the following message: @example M-x find-file-other-window (bound to keys: C-x 4 f, C-x 4 C-f) @end example @item Syntax Highlighting You can customize your @code{init.el} 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{Customization,,,xemacs,XEmacs User's Manual}, for more information on customizing @code{init.el} file. After selecting this item, you will find your code a lot easier to read. 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. It does not matter what the comments contain. Whereas, if @b{More} is selected then a function name in the comments themselves might appear in a different Color or Font. Even though the comments themselves might appear in green color, a function name @dfn{within} the comments might appear in red color. @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. The whole buffer will be converted to the Font you select. @item Size You can select any size for the text in your buffer (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 of the text of your buffer. @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 @code{init.el} file so that the next time you start XEmacs, you won't need to select the options again. @end table @comment node-name, next, previous, up @node Buffers Menu, Help menu, Options Menu, Pull-down Menus @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. If you select @b{Buffers Sub-menus} from the @b{Options} menu, you will get some sub-menus for each of the buffer listing. @comment node-name, next, previous, up @node Help menu, , Buffers Menu, Pull-down Menus @subsection The Help Menu @cindex Help menu The Help Menu gives you access to Emacs Info and provides a menu equivalent for some of the choices you have when using @kbd{C-h}. @xref{Help}, for more information. The @b{Describe variable} and @b{Describe function} will provide documentation for the corresponding variable or function. The Help menu also gives access to UNIX online manual pages via the @b{UNIX Manual...} option.