Mercurial > hg > xemacs-beta
diff man/xemacs/picture.texi @ 0:376386a54a3c r19-14
Import from CVS: tag r19-14
author | cvs |
---|---|
date | Mon, 13 Aug 2007 08:45:50 +0200 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/man/xemacs/picture.texi Mon Aug 13 08:45:50 2007 +0200 @@ -0,0 +1,251 @@ + +@node Picture, Sending Mail, Abbrevs, Top +@chapter Editing Pictures +@cindex pictures +@findex edit-picture + + If you want to create a picture made out of text characters (for example, +a picture of the division of a register into fields, as a comment in a +program), use the command @code{edit-picture} to enter Picture mode. + + In Picture mode, editing is based on the @dfn{quarter-plane} model of +text. In this model, the text characters lie studded on an area that +stretches infinitely far to the right and downward. The concept of the end +of a line does not exist in this model; the most you can say is where the +last non-blank character on the line is found. + + Of course, Emacs really always considers text as a sequence of +characters, and lines really do have ends. But in Picture mode most +frequently-used keys are rebound to commands that simulate the +quarter-plane model of text. They do this by inserting spaces or by +converting tabs to spaces. + + Most of the basic editing commands of Emacs are redefined by Picture mode +to 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 to +run special picture editing commands. + + One of these keys, @kbd{C-c C-c}, is pretty important. Often a picture +is part of a larger file that is usually edited in some other major mode. +@kbd{M-x edit-picture} records the name of the previous major mode. +You can then use the @kbd{C-c C-c} command (@code{picture-mode-exit}) to +restore that mode. @kbd{C-c C-c} also deletes spaces from the ends of +lines, unless you give it a numeric argument. + + The commands used in Picture mode all work in other modes (provided the +@file{picture} library is loaded), but are only bound to keys in +Picture mode. Note that the descriptions below talk of moving ``one +column'' and so on, but all the picture mode commands handle numeric +arguments as their normal equivalents do. + +@vindex picture-mode-hook + Turning on Picture mode calls the value of the variable +@code{picture-mode-hook} as a function, with no arguments, if that value +exists and is non-@code{nil}. + +@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 + Most keys do the same thing in Picture mode that they usually do, but do +it in a quarter-plane style. For example, @kbd{C-f} is rebound to run +@code{picture-forward-column}, which moves point one column to +the right, by inserting a space if necessary, so that the actual end of the +line makes no difference. @kbd{C-b} is rebound to run +@code{picture-backward-column}, which always moves point left one column, +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 tabs as 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 last non-blank +character on the line. There was no need to change @kbd{C-a}, as the choice +of screen model does not affect beginnings of lines.@refill + +@findex picture-newline + Insertion of text is adapted to the quarter-plane screen model through +the use of Overwrite mode (@pxref{Minor Modes}). Self-inserting characters +replace existing text, column by column, rather than pushing existing text +to the right. @key{RET} runs @code{picture-newline}, which just moves to +the beginning of the following line so that new text will replace that +line. + +@findex picture-backward-clear-column +@findex picture-clear-column +@findex picture-clear-line + Text is erased instead of deleted and killed. @key{DEL} +(@code{picture-backward-clear-column}) replaces the preceding character +with a space rather than removing it. @kbd{C-d} +(@code{picture-clear-column}) does the same in a forward direction. +@kbd{C-k} (@code{picture-clear-line}) really kills the contents of lines, +but never removes the newlines from a buffer.@refill + +@findex picture-open-line + To do actual insertion, you must use special commands. @kbd{C-o} +(@code{picture-open-line}) creates a blank line, but does so after +the current line; it never splits a line. @kbd{C-M-o}, @code{split-line}, +makes sense in Picture mode, so it remains unchanged. @key{LFD} +(@code{picture-duplicate-line}) inserts another line +with the same contents below the current line.@refill + +@kindex C-c C-d (Picture mode) +@findex delete-char + + To actually delete parts of the picture, use @kbd{C-w}, or with +@kbd{C-c C-d} (which is defined as @code{delete-char}, as @kbd{C-d} is +in other modes), or with one of the picture rectangle commands +(@pxref{Rectangles in Picture}). + +@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 < (Picture mode) +@kindex C-c > (Picture mode) +@kindex C-c ^ (Picture mode) +@kindex C-c . (Picture mode) +@kindex C-c ` (Picture mode) +@kindex C-c ' (Picture mode) +@kindex C-c / (Picture mode) +@kindex C-c \ (Picture mode) + Since ``self-inserting'' characters just overwrite and move point in +Picture mode, there is no essential restriction on how point should be +moved. Normally point moves right, but you can specify any of the eight +orthogonal or diagonal directions for motion after a ``self-inserting'' +character. This is useful for drawing lines in the buffer. + +@table @kbd +@item C-c < +Move left after insertion (@code{picture-movement-left}). +@item C-c > +Move right after insertion (@code{picture-movement-right}). +@item C-c ^ +Move up after insertion (@code{picture-movement-up}). +@item C-c . +Move down after insertion (@code{picture-movement-down}). +@item C-c ` +Move up and left (``northwest'') after insertion @*(@code{picture-movement-nw}). +@item C-c ' +Move up and right (``northeast'') after insertion @* +(@code{picture-movement-ne}). +@item C-c / +Move down and left (``southwest'') after insertion +@*(@code{picture-movement-sw}). +@item C-c \ +Move down and right (``southeast'') after insertion +@*(@code{picture-movement-se}). +@end table + +@kindex C-c C-f (Picture mode) +@kindex C-c C-b (Picture mode) +@findex picture-motion +@findex picture-motion-reverse + Two motion commands move based on the current Picture insertion +direction. The command @kbd{C-c C-f} (@code{picture-motion}) moves in the +same direction as motion after ``insertion'' currently does, while @kbd{C-c +C-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 +@findex picture-tab-search +@vindex picture-tab-chars + Two kinds of tab-like action are provided in Picture mode. +Context-based tabbing is done with @kbd{M-@key{TAB}} +(@code{picture-tab-search}). With no argument, it moves to a point +underneath the next ``interesting'' character that follows whitespace in +the previous non-blank line. ``Next'' here means ``appearing at a +horizontal position greater than the one point starts out at''. With an +argument, as in @kbd{C-u M-@key{TAB}}, the command moves to the next such +interesting character in the current line. @kbd{M-@key{TAB}} does not +change the text; it only moves point. ``Interesting'' characters are +defined by the variable @code{picture-tab-chars}, which contains a string +of characters considered interesting. Its default value is +@code{"!-~"}.@refill + +@findex picture-tab + @key{TAB} itself runs @code{picture-tab}, which operates based on the +current tab stop settings; it is the Picture mode equivalent of +@code{tab-to-tab-stop}. Without arguments it just moves point, but with +a numeric argument it clears the text that it moves over. + +@kindex C-c TAB (Picture mode) +@findex picture-set-tab-stops + The context-based and tab-stop-based forms of tabbing are brought +together 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. If you use this command +with @key{TAB}, you can get the effect of context-based tabbing. But +@kbd{M-@key{TAB}} is more convenient in the cases where it is sufficient. + +@node Rectangles in Picture,, Tabs in Picture, Picture +@section Picture Mode Rectangle Commands +@cindex rectangle + + Picture mode defines commands for working on rectangular pieces of the +text in ways that fit with the quarter-plane model. The standard rectangle +commands may also be useful (@pxref{Rectangles}). + +@table @kbd +@item C-c C-k +Clear out the region-rectangle (@code{picture-clear-rectangle}). With +argument, kill it. +@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-y +Copy last killed rectangle into the buffer by overwriting, with upper +left 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 (Picture mode) +@kindex C-c C-w (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 standard +rectangle commands in that they normally clear the rectangle instead of +deleting it; this is analogous with the way @kbd{C-d} is changed in Picture +mode.@refill + + However, deletion of rectangles can be useful in Picture mode, so these +commands delete the rectangle if given a numeric argument. + +@kindex C-c C-y (Picture mode) +@kindex C-c C-x (Picture mode) +@findex picture-yank-rectangle +@findex picture-yank-rectangle-from-register + The Picture mode commands for yanking rectangles differ from the standard +ones in overwriting instead of inserting. This is the same way that +Picture mode insertion of other text is different from other 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}) does for the +rectangle found in a specified register. + +Since most region commands in Picture mode operate on rectangles, when you +select a region of text with the mouse in Picture mode, it is highlighted +as a rectangle.