Mercurial > hg > xemacs-beta
view man/xemacs/windows.texi @ 793:e38acbeb1cae
[xemacs-hg @ 2002-03-29 04:46:17 by ben]
lots o' fixes
etc/ChangeLog: New file.
Separated out all entries for etc/ into their own ChangeLog.
Includes entries for the following files:
etc/BABYL, etc/BETA, etc/CHARSETS, etc/DISTRIB, etc/Emacs.ad,
etc/FTP, etc/GNUS-NEWS, etc/GOATS, etc/HELLO, etc/INSTALL,
etc/MACHINES, etc/MAILINGLISTS, etc/MSDOS, etc/MYTHOLOGY, etc/NEWS,
etc/OXYMORONS, etc/PACKAGES, etc/README, etc/TUTORIAL,
etc/TUTORIAL.de, etc/TUTORIAL.ja, etc/TUTORIAL.ko, etc/TUTORIAL.se,
etc/aliases.ksh, etc/altrasoft-logo.xpm, etc/check_cygwin_setup.sh,
etc/custom/example-themes/europe-theme.el,
etc/custom/example-themes/ex-custom-file,
etc/custom/example-themes/example-theme.el, etc/e/eterm.ti,
etc/edt-user.doc, etc/enriched.doc, etc/etags.1, etc/gnuserv.1,
etc/gnuserv.README, etc/package-index.LATEST.gpg,
etc/package-index.LATEST.pgp, etc/photos/jan.png, etc/recycle.xpm,
etc/refcard.tex, etc/sample.Xdefaults, etc/sample.emacs,
etc/sgml/CATALOG, etc/sgml/HTML32.dtd, etc/skk/SKK.tut.E,
etc/smilies/Face_ase.xbm, etc/smilies/Face_ase2.xbm,
etc/smilies/Face_ase3.xbm, etc/smilies/Face_smile.xbm,
etc/smilies/Face_weep.xbm, etc/sounds, etc/toolbar,
etc/toolbar/workshop-cap-up.xpm, etc/xemacs-ja.1, etc/xemacs.1,
etc/yow.lines, etc\BETA, etc\NEWS, etc\README, etc\TUTORIAL,
etc\TUTORIAL.de, etc\check_cygwin_setup.sh, etc\sample.init.el,
etc\unicode\README, etc\unicode\mule-ucs\*, etc\unicode\other\*
unicode/unicode-consortium/8859-16.TXT: New file.
mule/english.el: Define this charset now, since a bug was fixed that formerly
prevented it.
mule/ethio-util.el: Fix compile errors involving Unicode `characters', which should be
integers.
Makefile.in.in: Always include gui.c, to fix compile error when TTY-only.
EmacsFrame.c, abbrev.c, alloc.c, buffer.c, buffer.h, bytecode.c, bytecode.h, callint.c, callproc.c, casetab.c, casetab.h, charset.h, chartab.c, chartab.h, cmds.c, console-msw.c, console-msw.h, console-tty.c, console-x.c, console-x.h, console.c, console.h, data.c, database.c, device-gtk.c, device-msw.c, device-x.c, device.c, device.h, dialog-msw.c, doc.c, doprnt.c, dumper.c, dynarr.c, editfns.c, eldap.c, eldap.h, elhash.c, elhash.h, emacs.c, eval.c, event-Xt.c, event-gtk.c, event-msw.c, event-stream.c, event-tty.c, event-unixoid.c, events.c, events.h, extents.c, extents.h, faces.c, faces.h, file-coding.c, file-coding.h, fileio.c, filelock.c, fns.c, frame-gtk.c, frame-msw.c, frame-tty.c, frame-x.c, frame.c, frame.h, free-hook.c, general-slots.h, glyphs-eimage.c, glyphs-gtk.c, glyphs-msw.c, glyphs-widget.c, glyphs-x.c, glyphs.c, glyphs.h, gpmevent.c, gtk-xemacs.c, gui-msw.c, gui-x.c, gui-x.h, gui.c, gui.h, gutter.c, gutter.h, indent.c, input-method-xlib.c, insdel.c, keymap.c, keymap.h, lisp-disunion.h, lisp-union.h, lisp.h, lread.c, lrecord.h, lstream.c, lstream.h, marker.c, menubar-gtk.c, menubar-msw.c, menubar-x.c, menubar.c, minibuf.c, mule-canna.c, mule-ccl.c, mule-charset.c, mule-wnnfns.c, native-gtk-toolbar.c, objects-msw.c, objects-tty.c, objects-x.c, objects.c, objects.h, opaque.c, opaque.h, postgresql.c, postgresql.h, print.c, process-unix.c, process.c, process.h, rangetab.c, rangetab.h, redisplay-gtk.c, redisplay-msw.c, redisplay-output.c, redisplay-tty.c, redisplay-x.c, redisplay.c, scrollbar-gtk.c, scrollbar-msw.c, scrollbar-x.c, scrollbar.c, scrollbar.h, search.c, select-gtk.c, select-x.c, sound.c, specifier.c, specifier.h, strftime.c, symbols.c, symeval.h, syntax.h, text.c, text.h, toolbar-common.c, toolbar-msw.c, toolbar.c, toolbar.h, tooltalk.c, tooltalk.h, ui-gtk.c, ui-gtk.h, undo.c, vm-limit.c, window.c, window.h: Eliminate XSETFOO. Replace all usages with wrap_foo().
Make symbol->name a Lisp_Object, not Lisp_String *. Eliminate
nearly all uses of Lisp_String * in favor of Lisp_Object, and
correct macros so most of them favor Lisp_Object.
Create new error-behavior ERROR_ME_DEBUG_WARN -- output warnings,
but at level `debug' (usually ignored). Use it when instantiating
specifiers, so problems can be debugged. Move
log-warning-minimum-level into C so that we can optimize
ERROR_ME_DEBUG_WARN.
Fix warning levels consistent with new definitions.
Add default_ and parent fields to char table; not yet implemented.
New fun Dynarr_verify(); use for further error checking on Dynarrs.
Rearrange code at top of lisp.h in conjunction with dynarr changes.
Fix eifree(). Use Eistrings in various places
(format_event_object(), where_is_to_char(), and callers thereof)
to avoid fixed-size strings buffers. New fun write_eistring().
Reindent and fix GPM code to follow standards.
Set default MS Windows font to Lucida Console (same size as
Courier New but less interline spacing, so more lines fit).
Increase default frame size on Windows to 50 lines. (If that's too
big for the workspace, the frame will be shrunk as necessary.)
Fix problem with text files with no newlines (). (Change
`convert-eol' coding system to use `nil' for autodetect,
consistent with make-coding-system.)
Correct compile warnings in vm-limit.c.
Fix handling of reverse-direction charsets to avoid errors when
opening (e.g.) mule-ucs/lisp/reldata/uiso8859-6.el.
Recode some object printing methods to use write_fmt_string()
instead of a fixed buffer and sprintf.
Turn on display of png comments as warnings (level `info'), now
that they're unobtrusive.
Revamped the sound documentation.
Fixed bug in redisplay w.r.t. hscroll/truncation/continuation
glyphs causing jumping up and down of the lines, since they're
bigger than the line size. (It was seen most obviously when
there's a horizontal scroll bar, e.g. do C-h a glyph or something
like that.) The problem was that the glyph-contrib-p setting on
glyphs was ignored even if it was set properly, which it wasn't
until now.
author | ben |
---|---|
date | Fri, 29 Mar 2002 04:49:13 +0000 |
parents | 576fb035e263 |
children |
line wrap: on
line source
@node Windows, Mule, Buffers, Top @chapter Multiple Windows @cindex windows Emacs can split the frame into two or many windows, which can display parts of different buffers or different parts of one buffer. If you are running XEmacs under X, that means you can have the X window that contains the Emacs frame have multiple subwindows. @menu * Basic Window:: Introduction to Emacs windows. * Split Window:: New windows are made by splitting existing windows. * Other Window:: Moving to another window or doing something to it. * Pop Up Window:: Finding a file or buffer in another window. * Change Window:: Deleting windows and changing their sizes. @end menu @node Basic Window, Split Window, Windows, Windows @section Concepts of Emacs Windows When Emacs displays multiple windows, each window has one Emacs buffer designated for display. The same buffer may appear in more than one window; if it does, any changes in its text are displayed in all the windows that display it. Windows showing the same buffer can show different parts of it, because each window has its own value of point. @cindex selected window At any time, one window is the @dfn{selected window}; the buffer displayed by that window is the current buffer. The cursor shows the location of point in that window. Each other window has a location of point as well, but since the terminal has only one cursor, it cannot show the location of point in the other windows. Commands to move point affect the value of point for the selected Emacs window only. They do not change the value of point in any other Emacs window, including those showing the same buffer. The same is true for commands such as @kbd{C-x b} to change the selected buffer in the selected window; they do not affect other windows at all. However, there are other commands such as @kbd{C-x 4 b} that select a different window and switch buffers in it. Also, all commands that display information in a window, including (for example) @kbd{C-h f} (@code{describe-function}) and @kbd{C-x C-b} (@code{list-buffers}), work by switching buffers in a non-selected window without affecting the selected window. Each window has its own mode line, which displays the buffer name, modification status, and major and minor modes of the buffer that is displayed in the window. @xref{Mode Line}, for details on the mode line. @node Split Window, Other Window, Basic Window, Windows @section Splitting Windows @table @kbd @item C-x 2 Split the selected window into two windows, one above the other (@code{split-window-vertically}). @item C-x 3 Split the selected window into two windows positioned side by side (@code{split-window-horizontally}). @item C-x 6 Save the current window configuration in register @var{reg} (a letter). @item C-x 7 Restore (make current) the window configuration in register @var{reg} (a letter). Use with a register previously set with @kbd{C-x 6}. @end table @kindex C-x 2 @findex split-window-vertically The command @kbd{C-x 2} (@code{split-window-vertically}) breaks the selected window into two windows, one above the other. Both windows start out displaying the same buffer, with the same value of point. By default each of the two windows gets half the height of the window that was split. A numeric argument specifies how many lines to give to the top window. @kindex C-x 3 @findex split-window-horizontally @kbd{C-x 3} (@code{split-window-horizontally}) breaks the selected window into two side-by-side windows. A numeric argument specifies how many columns to give the one on the left. A line of vertical bars separates the two windows. Windows that are not the full width of the frame have truncated mode lines which do not always appear in inverse video, because Emacs display routines cannot display a region of inverse video that is only part of a line on the screen. @vindex truncate-partial-width-windows When a window is less than the full width, many text lines are too long to fit. Continuing all those lines might be confusing. Set the variable @code{truncate-partial-width-windows} to non-@code{nil} to force truncation in all windows less than the full width of the frame, independent of the buffer and its value for @code{truncate-lines}. @xref{Continuation Lines}.@refill Horizontal scrolling is often used in side-by-side windows. @xref{Display}. @findex jump-to-register @findex window-configuration-to-register You can resize a window and store that configuration in a register by supplying a @var{register} argument to @code{window-configuration-to-register} (@kbd{C-x 6}). To return to the window configuration established with @code{window-configuration-to-register}, use @code{jump-to-register} (@kbd{C-x j}). @node Other Window, Pop Up Window, Split Window, Windows @section Using Other Windows @table @kbd @item C-x o Select another window (@code{other-window}). That is the letter `o', not zero. @item M-C-v Scroll the next window (@code{scroll-other-window}). @item M-x compare-windows Find the next place where the text in the selected window does not match the text in the next window. @item M-x other-window-any-frame @var{n} Select the @var{n}th different window on any frame. @end table @kindex C-x o @findex other-window To select a different window, use @kbd{C-x o} (@code{other-window}). That is an `o', for `other', not a zero. When there are more than two windows, the command moves through all the windows in a cyclic order, generally top to bottom and left to right. From the rightmost and bottommost window, it goes back to the one at the upper left corner. A numeric argument, @var{n}, moves several steps in the cyclic order of windows. A negative numeric argument moves around the cycle in the opposite order. If the optional second argument @var{which-frames} is non-@code{nil}, the function cycles through all frames. When the minibuffer is active, the minibuffer is the last window in the cycle; you can switch from the minibuffer window to one of the other windows, and later switch back and finish supplying the minibuffer argument that is requested. @xref{Minibuffer Edit}. @findex other-window-any-frame The command @kbd{M-x other-window-any-frame} also selects the window @var{n} steps away in the cyclic order. However, unlike @code{other-window}, this command selects a window on the next or previous frame instead of wrapping around to the top or bottom of the current frame, when there are no more windows. @kindex C-M-v @findex scroll-other-window The usual scrolling commands (@pxref{Display}) apply to the selected window only. @kbd{M-C-v} (@code{scroll-other-window}) scrolls the window that @kbd{C-x o} would select. Like @kbd{C-v}, it takes positive and negative arguments. @findex compare-windows The command @kbd{M-x compare-windows} compares the text in the current window with the text in the next window. Comparison starts at point in each window. Point moves forward in each window, a character at a time, until the next set of characters in the two windows are different. Then the command is finished. A prefix argument @var{ignore-whitespace} means ignore changes in whitespace. The variable @code{compare-windows-whitespace} controls how whitespace is skipped. If @code{compare-ignore-case} is non-@code{nil}, changes in case are also ignored. @node Pop Up Window, Change Window, Other Window, Windows @section Displaying in Another Window @kindex C-x 4 @kbd{C-x 4} is a prefix key for commands that select another window (splitting the window if there is only one) and select a buffer in that window. Different @kbd{C-x 4} commands have different ways of finding the buffer to select. @findex switch-to-buffer-other-window @findex find-file-other-window @findex find-tag-other-window @findex dired-other-window @findex mail-other-window @table @kbd @item C-x 4 b @var{bufname} @key{RET} Select buffer @var{bufname} in another window. This runs @code{switch-to-buffer-other-window}. @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}. @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}. @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} (@pxref{Sending Mail}). @item C-x 4 . Find a tag in the current tag table in another window. This runs @code{find-tag-other-window}, the multiple-window variant of @kbd{M-.} (@pxref{Tags}). @end table @vindex display-buffer-function If the variable @code{display-buffer-function} is non-@code{nil}, its value is the function to call to handle @code{display-buffer}. It receives two arguments, the buffer and a flag that if non-@code{nil} means that the currently selected window is not acceptable. Commands such as @code{switch-to-buffer-other-window} and @code{find-file-other-window} work using this function. @node Change Window,, Pop Up Window, Windows @section Deleting and Rearranging Windows @table @kbd @item C-x 0 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. @item C-x 1 Get rid of all windows except the selected one (@code{delete-other-windows}). @item C-x ^ Make the selected window taller, at the expense of the other(s) @*(@code{enlarge-window}). @item C-x @} Make the selected window wider (@code{enlarge-window-horizontally}). @end table @kindex C-x 0 @findex delete-window To delete a window, type @kbd{C-x 0} (@code{delete-window}). (That is a zero.) The space occupied by the deleted window is distributed among the other active windows (but not the minibuffer window, even if that is active at the time). Once a window is deleted, its attributes are forgotten; there is no automatic way to make another window of the same shape or showing the same buffer. The buffer continues to exist, and you can select it in any window with @kbd{C-x b}. @kindex C-x 1 @findex delete-other-windows @kbd{C-x 1} (@code{delete-other-windows}) is more powerful than @kbd{C-x 0}; it deletes all the windows except the selected one (and the minibuffer). The selected window expands to use the whole frame except for the echo area. @kindex C-x ^ @findex enlarge-window @kindex C-x @} @findex enlarge-window-horizontally @vindex window-min-height @vindex window-min-width To readjust the division of space among existing windows, use @kbd{C-x ^} (@code{enlarge-window}). It makes the currently selected window longer by one line or as many lines as a numeric argument specifies. With a negative argument, it makes the selected window smaller. @kbd{C-x @}} (@code{enlarge-window-horizontally}) makes the selected window wider by the specified number of columns. The extra screen space given to a window comes from one of its neighbors, if that is possible; otherwise, all the competing windows are shrunk in the same proportion. If this makes some windows too small, those windows are deleted and their space is divided up. Minimum window size is specified by the variables @code{window-min-height} and @code{window-min-width}. You can also resize windows within a frame by clicking the left mouse button on a modeline, and dragging. Clicking the right button on a mode line pops up a menu of common window manager operations. This menu contains the following options: @cindex Windows menu @cindex Pull-down Menus @cindex menus @table @b @item Delete Window 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