* xterm.h: Add prototype for xg_set_icon_from_xpm_data.
* xfns.c (x_real_positions): int ign => unsigned int.
(xg_set_icon_from_xpm_data): Remove unused variable err.
(x_set_name_internal, Fx_create_frame, xg_set_icon): Add cast
to remove compiler warning.
(compute_tip_xy): Put tip above pointer if it doesn't fit below.
@c This is part of the Emacs manual.@c Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1997, 2002, 2003,@c 2004, 2005 Free Software Foundation, Inc.@c See file emacs.texi for copying conditions.@node Picture, Sending Mail, Abbrevs, Top@chapter Editing Pictures@cindex pictures@cindex making pictures out of text characters@findex edit-picture To edit a picture made out of text characters (for example, a pictureof the division of a register into fields, as a comment in a program),use the command @kbd{M-x edit-picture} to enter Picture mode. In Picture mode, editing is based on the @dfn{quarter-plane} model oftext, according to which the text characters lie studded on an area thatstretches infinitely far to the right and downward. The concept of the endof a line does not exist in this model; the most you can say is where thelast nonblank character on the line is found. Of course, Emacs really always considers text as a sequence ofcharacters, and lines really do have ends. But Picture mode replacesthe most frequently-used commands with variants that simulate thequarter-plane model of text. They do this by inserting spaces or byconverting tabs to spaces. Most of the basic editing commands of Emacs are redefined by Picture modeto do essentially the same thing but in a quarter-plane way. In addition,Picture mode defines various keys starting with the @kbd{C-c} prefix torun special picture editing commands. One of these keys, @kbd{C-c C-c}, is pretty important. Often apicture is part of a larger file that is usually edited in some othermajor mode. @kbd{M-x edit-picture} records the name of the previousmajor mode so you can use the @kbd{C-c C-c} command(@code{picture-mode-exit}) later to go back to that mode. @kbd{C-c C-c}also deletes spaces from the ends of lines, unless given a numericargument. The special commands of Picture mode all work in other modes (providedthe @file{picture} library is loaded), but are not bound to keys exceptin Picture mode. The descriptions below talk of moving ``one column''and so on, but all the picture mode commands handle numeric arguments astheir normal equivalents do.@vindex picture-mode-hook Turning on Picture mode runs the hook @code{picture-mode-hook}(@pxref{Hooks}). Additional extensions to Picture mode can be foundin @file{artist.el}.@menu* Basic Picture:: Basic concepts and simple commands of Picture Mode.* Insert in Picture:: Controlling direction of cursor motion after "self-inserting" characters.* Tabs in Picture:: Various features for tab stops and indentation.* Rectangles in Picture:: Clearing and superimposing rectangles.@end menu@node Basic Picture, Insert in Picture, Picture, Picture@section Basic Editing in Picture Mode@findex picture-forward-column@findex picture-backward-column@findex picture-move-down@findex picture-move-up@cindex editing in Picture mode Most keys do the same thing in Picture mode that they usually do, butdo it in a quarter-plane style. For example, @kbd{C-f} is rebound torun @code{picture-forward-column}, a command which moves point onecolumn to the right, inserting a space if necessary so that the actualend of the line makes no difference. @kbd{C-b} is rebound to run@code{picture-backward-column}, which always moves point left onecolumn, converting a tab to multiple spaces if necessary. @kbd{C-n} and@kbd{C-p} are rebound to run @code{picture-move-down} and@code{picture-move-up}, which can either insert spaces or convert tabsas necessary to make sure that point stays in exactly the same column.@kbd{C-e} runs @code{picture-end-of-line}, which moves to after the lastnonblank character on the line. There is no need to change @kbd{C-a},as the choice of screen model does not affect beginnings oflines.@findex picture-newline Insertion of text is adapted to the quarter-plane screen model throughthe use of Overwrite mode (@pxref{Minor Modes}). Self-inserting charactersreplace existing text, column by column, rather than pushing existing textto the right. @key{RET} runs @code{picture-newline}, which just moves tothe beginning of the following line so that new text will replace thatline.@findex picture-backward-clear-column@findex picture-clear-column@findex picture-clear-line In Picture mode, the commands that normally delete or kill text,instead erase text (replacing it with spaces). @key{DEL}(@code{picture-backward-clear-column}) replaces the precedingcharacter with a space rather than removing it; this moves pointbackwards. @kbd{C-d} (@code{picture-clear-column}) replaces the nextcharacter or characters with spaces, but does not move point. (If youwant to clear characters to spaces and move forward over them, use@key{SPC}.) @kbd{C-k} (@code{picture-clear-line}) really kills thecontents of lines, but does not delete the newlines from the buffer.@findex picture-open-line To do actual insertion, you must use special commands. @kbd{C-o}(@code{picture-open-line}) creates a blank line after the currentline; it never splits a line. @kbd{C-M-o} (@code{split-line}) makessense in Picture mode, so it is not changed. @kbd{C-j}(@code{picture-duplicate-line}) inserts another line with the samecontents below the current line.@kindex C-c C-d @r{(Picture mode)} To do actual deletion in Picture mode, use @kbd{C-w}, @kbd{C-c C-d}(which is defined as @code{delete-char}, as @kbd{C-d} is in othermodes), or one of the picture rectangle commands (@pxref{Rectangles inPicture}).@node Insert in Picture, Tabs in Picture, Basic Picture, Picture@section Controlling Motion after Insert@findex picture-movement-up@findex picture-movement-down@findex picture-movement-left@findex picture-movement-right@findex picture-movement-nw@findex picture-movement-ne@findex picture-movement-sw@findex picture-movement-se@kindex C-c < @r{(Picture mode)}@kindex C-c > @r{(Picture mode)}@kindex C-c ^ @r{(Picture mode)}@kindex C-c . @r{(Picture mode)}@kindex C-c ` @r{(Picture mode)}@kindex C-c ' @r{(Picture mode)}@kindex C-c / @r{(Picture mode)}@kindex C-c \ @r{(Picture mode)} Since ``self-inserting'' characters in Picture mode overwrite and movepoint, there is no essential restriction on how point should be moved.Normally point moves right, but you can specify any of the eightorthogonal or diagonal directions for motion after a ``self-inserting''character. This is useful for drawing lines in the buffer.@table @kbd@item C-c <@itemx C-c @key{LEFT}Move left after insertion (@code{picture-movement-left}).@item C-c >@itemx C-c @key{RIGHT}Move right after insertion (@code{picture-movement-right}).@item C-c ^@itemx C-c @key{UP}Move up after insertion (@code{picture-movement-up}).@item C-c .@itemx C-c @key{DOWN}Move down after insertion (@code{picture-movement-down}).@item C-c `@itemx C-c @key{HOME}Move up and left (``northwest'') after insertion (@code{picture-movement-nw}).@item C-c '@itemx C-c @key{PAGEUP}Move up and right (``northeast'') after insertion(@code{picture-movement-ne}).@item C-c /@itemx C-c @key{END}Move down and left (``southwest'') after insertion@*(@code{picture-movement-sw}).@item C-c \@itemx C-c @key{PAGEDOWN}Move down and right (``southeast'') after insertion@*(@code{picture-movement-se}).@end table@kindex C-c C-f @r{(Picture mode)}@kindex C-c C-b @r{(Picture mode)}@findex picture-motion@findex picture-motion-reverse Two motion commands move based on the current Picture insertiondirection. The command @kbd{C-c C-f} (@code{picture-motion}) moves in thesame direction as motion after ``insertion'' currently does, while @kbd{C-cC-b} (@code{picture-motion-reverse}) moves in the opposite direction.@node Tabs in Picture, Rectangles in Picture, Insert in Picture, Picture@section Picture Mode Tabs@kindex M-TAB @r{(Picture mode)}@findex picture-tab-search@vindex picture-tab-chars Two kinds of tab-like action are provided in Picture mode. Use@kbd{M-@key{TAB}} (@code{picture-tab-search}) for context-based tabbing.With no argument, it moves to a point underneath the next``interesting'' character that follows whitespace in the previousnonblank line. ``Next'' here means ``appearing at a horizontal positiongreater than the one point starts out at.'' With an argument, as in@kbd{C-u M-@key{TAB}}, this command moves to the next such interestingcharacter in the current line. @kbd{M-@key{TAB}} does not change thetext; it only moves point. ``Interesting'' characters are defined bythe variable @code{picture-tab-chars}, which should define a set ofcharacters. The syntax for this variable is like the syntax used insideof @samp{[@dots{}]} in a regular expression---but without the @samp{[}and the @samp{]}. Its default value is @code{"!-~"}.@findex picture-tab @key{TAB} itself runs @code{picture-tab}, which operates based on thecurrent tab stop settings; it is the Picture mode equivalent of@code{tab-to-tab-stop}. Normally it just moves point, but with a numericargument it clears the text that it moves over.@kindex C-c TAB @r{(Picture mode)}@findex picture-set-tab-stops The context-based and tab-stop-based forms of tabbing are broughttogether by the command @kbd{C-c @key{TAB}} (@code{picture-set-tab-stops}).This command sets the tab stops to the positions which @kbd{M-@key{TAB}}would consider significant in the current line. The use of this command,together with @key{TAB}, can get the effect of context-based tabbing. But@kbd{M-@key{TAB}} is more convenient in the cases where it is sufficient. It may be convenient to prevent use of actual tab characters inpictures. For example, this prevents @kbd{C-x @key{TAB}} from messingup the picture. You can do this by setting the variable@code{indent-tabs-mode} to @code{nil}. @xref{Just Spaces}.@node Rectangles in Picture,, Tabs in Picture, Picture@section Picture Mode Rectangle Commands@cindex rectangles and Picture mode@cindex Picture mode and rectangles Picture mode defines commands for working on rectangular pieces of thetext in ways that fit with the quarter-plane model. The standard rectanglecommands may also be useful (@pxref{Rectangles}).@table @kbd@item C-c C-kClear out the region-rectangle with spaces(@code{picture-clear-rectangle}). With argument, delete the text.@item C-c C-w @var{r}Similar, but save rectangle contents in register @var{r} first(@code{picture-clear-rectangle-to-register}).@item C-c C-yCopy last killed rectangle into the buffer by overwriting, with upperleft corner at point (@code{picture-yank-rectangle}). With argument,insert instead.@item C-c C-x @var{r}Similar, but use the rectangle in register @var{r}(@code{picture-yank-rectangle-from-register}).@end table@kindex C-c C-k @r{(Picture mode)}@kindex C-c C-w @r{(Picture mode)}@findex picture-clear-rectangle@findex picture-clear-rectangle-to-register The picture rectangle commands @kbd{C-c C-k}(@code{picture-clear-rectangle}) and @kbd{C-c C-w}(@code{picture-clear-rectangle-to-register}) differ from the standardrectangle commands in that they normally clear the rectangle instead ofdeleting it; this is analogous with the way @kbd{C-d} is changed in Picturemode. However, deletion of rectangles can be useful in Picture mode, sothese commands delete the rectangle if given a numeric argument.@kbd{C-c C-k} either with or without a numeric argument saves therectangle for @kbd{C-c C-y}.@kindex C-c C-y @r{(Picture mode)}@kindex C-c C-x @r{(Picture mode)}@findex picture-yank-rectangle@findex picture-yank-rectangle-from-register The Picture mode commands for yanking rectangles differ from thestandard ones in that they overwrite instead of inserting. This isthe same way that Picture mode insertion of other text differs fromother modes. @kbd{C-c C-y} (@code{picture-yank-rectangle}) inserts(by overwriting) the rectangle that was most recently killed, while@kbd{C-c C-x} (@code{picture-yank-rectangle-from-register}) doeslikewise for the rectangle found in a specified register.@ignore arch-tag: b7589747-683c-4f40-aed8-1b10403cb666@end ignore