annotate man/xemacs/picture.texi @ 5307:c096d8051f89

Have NATNUMP give t for positive bignums; check limits appropriately. src/ChangeLog addition: 2010-11-20 Aidan Kehoe <kehoea@parhasard.net> * abbrev.c (Fexpand_abbrev): * alloc.c: * alloc.c (Fmake_list): * alloc.c (Fmake_vector): * alloc.c (Fmake_bit_vector): * alloc.c (Fmake_byte_code): * alloc.c (Fmake_string): * alloc.c (vars_of_alloc): * bytecode.c (UNUSED): * bytecode.c (Fbyte_code): * chartab.c (decode_char_table_range): * cmds.c (Fself_insert_command): * data.c (check_integer_range): * data.c (Fnatnump): * data.c (Fnonnegativep): * data.c (Fstring_to_number): * elhash.c (hash_table_size_validate): * elhash.c (decode_hash_table_size): * eval.c (Fbacktrace_frame): * event-stream.c (lisp_number_to_milliseconds): * event-stream.c (Faccept_process_output): * event-stream.c (Frecent_keys): * event-stream.c (Fdispatch_event): * events.c (Fmake_event): * events.c (Fevent_timestamp): * events.c (Fevent_timestamp_lessp): * events.h: * events.h (struct command_builder): * file-coding.c (gzip_putprop): * fns.c: * fns.c (check_sequence_range): * fns.c (Frandom): * fns.c (Fnthcdr): * fns.c (Flast): * fns.c (Fnbutlast): * fns.c (Fbutlast): * fns.c (Fmember): * fns.c (Ffill): * fns.c (Freduce): * fns.c (replace_string_range_1): * fns.c (Freplace): * font-mgr.c (Ffc_pattern_get): * frame-msw.c (msprinter_set_frame_properties): * glyphs.c (check_valid_xbm_inline): * indent.c (Fmove_to_column): * intl-win32.c (mswindows_multibyte_to_unicode_putprop): * lisp.h: * lisp.h (ARRAY_DIMENSION_LIMIT): * lread.c (decode_mode_1): * mule-ccl.c (ccl_get_compiled_code): * number.h: * process-unix.c (unix_open_multicast_group): * process.c (Fset_process_window_size): * profile.c (Fstart_profiling): * unicode.c (Funicode_to_char): Change NATNUMP to return 1 for positive bignums; changes uses of it and of CHECK_NATNUM appropriately, usually by checking for an integer in an appropriate range. Add array-dimension-limit and use it in #'make-vector, #'make-string. Add array-total-size-limit, array-rank-limit while we're at it, for the sake of any Common Lisp-oriented code that uses these limits. Rename check_int_range to check_integer_range, have it take Lisp_Objects (and thus bignums) instead. Remove bignum_butlast(), just set int_n to an appropriately large integer if N is a bignum. Accept bignums in check_sequence_range(), change the functions that use check_sequence_range() appropriately. Move the definition of NATNUMP() to number.h; document why it's a reasonable name, contradicting an old comment. tests/ChangeLog addition: 2010-11-20 Aidan Kehoe <kehoea@parhasard.net> * automated/lisp-tests.el: * automated/lisp-tests.el (featurep): * automated/lisp-tests.el (wrong-type-argument): * automated/mule-tests.el (featurep): Check for args-out-of-range errors instead of wrong-type-argument errors in various places when code is handed a large bignum instead of a fixnum. Also check for the wrong-type-argument errors when giving the same code a non-integer value.
author Aidan Kehoe <kehoea@parhasard.net>
date Sat, 20 Nov 2010 16:49:11 +0000
parents 376386a54a3c
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
1
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
2 @node Picture, Sending Mail, Abbrevs, Top
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
3 @chapter Editing Pictures
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
4 @cindex pictures
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
5 @findex edit-picture
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
6
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
7 If you want to create a picture made out of text characters (for example,
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
8 a picture of the division of a register into fields, as a comment in a
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
9 program), use the command @code{edit-picture} to enter Picture mode.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
10
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
11 In Picture mode, editing is based on the @dfn{quarter-plane} model of
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
12 text. In this model, the text characters lie studded on an area that
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
13 stretches infinitely far to the right and downward. The concept of the end
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
14 of a line does not exist in this model; the most you can say is where the
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
15 last non-blank character on the line is found.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
16
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
17 Of course, Emacs really always considers text as a sequence of
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
18 characters, and lines really do have ends. But in Picture mode most
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
19 frequently-used keys are rebound to commands that simulate the
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
20 quarter-plane model of text. They do this by inserting spaces or by
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
21 converting tabs to spaces.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
22
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
23 Most of the basic editing commands of Emacs are redefined by Picture mode
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
24 to do essentially the same thing but in a quarter-plane way. In addition,
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
25 Picture mode defines various keys starting with the @kbd{C-c} prefix to
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
26 run special picture editing commands.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
27
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
28 One of these keys, @kbd{C-c C-c}, is pretty important. Often a picture
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
29 is part of a larger file that is usually edited in some other major mode.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
30 @kbd{M-x edit-picture} records the name of the previous major mode.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
31 You can then use the @kbd{C-c C-c} command (@code{picture-mode-exit}) to
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
32 restore that mode. @kbd{C-c C-c} also deletes spaces from the ends of
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
33 lines, unless you give it a numeric argument.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
34
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
35 The commands used in Picture mode all work in other modes (provided the
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
36 @file{picture} library is loaded), but are only bound to keys in
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
37 Picture mode. Note that the descriptions below talk of moving ``one
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
38 column'' and so on, but all the picture mode commands handle numeric
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
39 arguments as their normal equivalents do.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
40
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
41 @vindex picture-mode-hook
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
42 Turning on Picture mode calls the value of the variable
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
43 @code{picture-mode-hook} as a function, with no arguments, if that value
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
44 exists and is non-@code{nil}.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
45
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
46 @menu
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
47 * Basic Picture:: Basic concepts and simple commands of Picture Mode.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
48 * Insert in Picture:: Controlling direction of cursor motion
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
49 after "self-inserting" characters.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
50 * Tabs in Picture:: Various features for tab stops and indentation.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
51 * Rectangles in Picture:: Clearing and superimposing rectangles.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
52 @end menu
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
53
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
54 @node Basic Picture, Insert in Picture, Picture, Picture
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
55 @section Basic Editing in Picture Mode
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
56
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
57 @findex picture-forward-column
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
58 @findex picture-backward-column
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
59 @findex picture-move-down
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
60 @findex picture-move-up
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
61 Most keys do the same thing in Picture mode that they usually do, but do
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
62 it in a quarter-plane style. For example, @kbd{C-f} is rebound to run
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
63 @code{picture-forward-column}, which moves point one column to
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
64 the right, by inserting a space if necessary, so that the actual end of the
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
65 line makes no difference. @kbd{C-b} is rebound to run
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
66 @code{picture-backward-column}, which always moves point left one column,
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
67 converting a tab to multiple spaces if necessary. @kbd{C-n} and @kbd{C-p}
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
68 are rebound to run @code{picture-move-down} and @code{picture-move-up},
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
69 which can either insert spaces or convert tabs as necessary to make sure
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
70 that point stays in exactly the same column. @kbd{C-e} runs
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
71 @code{picture-end-of-line}, which moves to after the last non-blank
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
72 character on the line. There was no need to change @kbd{C-a}, as the choice
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
73 of screen model does not affect beginnings of lines.@refill
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
74
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
75 @findex picture-newline
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
76 Insertion of text is adapted to the quarter-plane screen model through
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
77 the use of Overwrite mode (@pxref{Minor Modes}). Self-inserting characters
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
78 replace existing text, column by column, rather than pushing existing text
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
79 to the right. @key{RET} runs @code{picture-newline}, which just moves to
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
80 the beginning of the following line so that new text will replace that
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
81 line.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
82
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
83 @findex picture-backward-clear-column
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
84 @findex picture-clear-column
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
85 @findex picture-clear-line
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
86 Text is erased instead of deleted and killed. @key{DEL}
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
87 (@code{picture-backward-clear-column}) replaces the preceding character
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
88 with a space rather than removing it. @kbd{C-d}
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
89 (@code{picture-clear-column}) does the same in a forward direction.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
90 @kbd{C-k} (@code{picture-clear-line}) really kills the contents of lines,
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
91 but never removes the newlines from a buffer.@refill
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
92
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
93 @findex picture-open-line
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
94 To do actual insertion, you must use special commands. @kbd{C-o}
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
95 (@code{picture-open-line}) creates a blank line, but does so after
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
96 the current line; it never splits a line. @kbd{C-M-o}, @code{split-line},
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
97 makes sense in Picture mode, so it remains unchanged. @key{LFD}
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
98 (@code{picture-duplicate-line}) inserts another line
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
99 with the same contents below the current line.@refill
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
100
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
101 @kindex C-c C-d (Picture mode)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
102 @findex delete-char
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
103
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
104 To actually delete parts of the picture, use @kbd{C-w}, or with
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
105 @kbd{C-c C-d} (which is defined as @code{delete-char}, as @kbd{C-d} is
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
106 in other modes), or with one of the picture rectangle commands
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
107 (@pxref{Rectangles in Picture}).
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
108
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
109 @node Insert in Picture, Tabs in Picture, Basic Picture, Picture
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
110 @section Controlling Motion After Insert
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
111
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
112 @findex picture-movement-up
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
113 @findex picture-movement-down
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
114 @findex picture-movement-left
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
115 @findex picture-movement-right
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
116 @findex picture-movement-nw
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
117 @findex picture-movement-ne
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
118 @findex picture-movement-sw
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
119 @findex picture-movement-se
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
120 @kindex C-c < (Picture mode)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
121 @kindex C-c > (Picture mode)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
122 @kindex C-c ^ (Picture mode)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
123 @kindex C-c . (Picture mode)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
124 @kindex C-c ` (Picture mode)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
125 @kindex C-c ' (Picture mode)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
126 @kindex C-c / (Picture mode)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
127 @kindex C-c \ (Picture mode)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
128 Since ``self-inserting'' characters just overwrite and move point in
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
129 Picture mode, there is no essential restriction on how point should be
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
130 moved. Normally point moves right, but you can specify any of the eight
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
131 orthogonal or diagonal directions for motion after a ``self-inserting''
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
132 character. This is useful for drawing lines in the buffer.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
133
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
134 @table @kbd
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
135 @item C-c <
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
136 Move left after insertion (@code{picture-movement-left}).
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
137 @item C-c >
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
138 Move right after insertion (@code{picture-movement-right}).
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
139 @item C-c ^
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
140 Move up after insertion (@code{picture-movement-up}).
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
141 @item C-c .
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
142 Move down after insertion (@code{picture-movement-down}).
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
143 @item C-c `
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
144 Move up and left (``northwest'') after insertion @*(@code{picture-movement-nw}).
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
145 @item C-c '
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
146 Move up and right (``northeast'') after insertion @*
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
147 (@code{picture-movement-ne}).
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
148 @item C-c /
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
149 Move down and left (``southwest'') after insertion
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
150 @*(@code{picture-movement-sw}).
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
151 @item C-c \
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
152 Move down and right (``southeast'') after insertion
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
153 @*(@code{picture-movement-se}).
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
154 @end table
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
155
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
156 @kindex C-c C-f (Picture mode)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
157 @kindex C-c C-b (Picture mode)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
158 @findex picture-motion
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
159 @findex picture-motion-reverse
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
160 Two motion commands move based on the current Picture insertion
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
161 direction. The command @kbd{C-c C-f} (@code{picture-motion}) moves in the
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
162 same direction as motion after ``insertion'' currently does, while @kbd{C-c
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
163 C-b} (@code{picture-motion-reverse}) moves in the opposite direction.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
164
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
165 @node Tabs in Picture, Rectangles in Picture, Insert in Picture, Picture
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
166 @section Picture Mode Tabs
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
167
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
168 @kindex M-TAB
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
169 @findex picture-tab-search
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
170 @vindex picture-tab-chars
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
171 Two kinds of tab-like action are provided in Picture mode.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
172 Context-based tabbing is done with @kbd{M-@key{TAB}}
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
173 (@code{picture-tab-search}). With no argument, it moves to a point
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
174 underneath the next ``interesting'' character that follows whitespace in
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
175 the previous non-blank line. ``Next'' here means ``appearing at a
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
176 horizontal position greater than the one point starts out at''. With an
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
177 argument, as in @kbd{C-u M-@key{TAB}}, the command moves to the next such
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
178 interesting character in the current line. @kbd{M-@key{TAB}} does not
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
179 change the text; it only moves point. ``Interesting'' characters are
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
180 defined by the variable @code{picture-tab-chars}, which contains a string
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
181 of characters considered interesting. Its default value is
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
182 @code{"!-~"}.@refill
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
183
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
184 @findex picture-tab
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
185 @key{TAB} itself runs @code{picture-tab}, which operates based on the
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
186 current tab stop settings; it is the Picture mode equivalent of
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
187 @code{tab-to-tab-stop}. Without arguments it just moves point, but with
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
188 a numeric argument it clears the text that it moves over.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
189
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
190 @kindex C-c TAB (Picture mode)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
191 @findex picture-set-tab-stops
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
192 The context-based and tab-stop-based forms of tabbing are brought
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
193 together by the command @kbd{C-c @key{TAB}} (@code{picture-set-tab-stops}.)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
194 This command sets the tab stops to the positions which @kbd{M-@key{TAB}}
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
195 would consider significant in the current line. If you use this command
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
196 with @key{TAB}, you can get the effect of context-based tabbing. But
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
197 @kbd{M-@key{TAB}} is more convenient in the cases where it is sufficient.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
198
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
199 @node Rectangles in Picture,, Tabs in Picture, Picture
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
200 @section Picture Mode Rectangle Commands
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
201 @cindex rectangle
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
202
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
203 Picture mode defines commands for working on rectangular pieces of the
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
204 text in ways that fit with the quarter-plane model. The standard rectangle
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
205 commands may also be useful (@pxref{Rectangles}).
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
206
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
207 @table @kbd
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
208 @item C-c C-k
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
209 Clear out the region-rectangle (@code{picture-clear-rectangle}). With
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
210 argument, kill it.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
211 @item C-c C-w @var{r}
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
212 Similar but save rectangle contents in register @var{r} first
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
213 (@code{picture-clear-rectangle-to-register}).
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
214 @item C-c C-y
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
215 Copy last killed rectangle into the buffer by overwriting, with upper
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
216 left corner at point (@code{picture-yank-rectangle}). With argument,
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
217 insert instead.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
218 @item C-c C-x @var{r}
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
219 Similar, but use the rectangle in register @var{r}@*
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
220 (@code{picture-yank-rectangle-from-register}).
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
221 @end table
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
222
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
223 @kindex C-c C-k (Picture mode)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
224 @kindex C-c C-w (Picture mode)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
225 @findex picture-clear-rectangle
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
226 @findex picture-clear-rectangle-to-register
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
227 The picture rectangle commands @kbd{C-c C-k}
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
228 (@code{picture-clear-rectangle}) and @kbd{C-c C-w}
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
229 (@code{picture-clear-rectangle-to-register}) differ from the standard
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
230 rectangle commands in that they normally clear the rectangle instead of
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
231 deleting it; this is analogous with the way @kbd{C-d} is changed in Picture
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
232 mode.@refill
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
233
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
234 However, deletion of rectangles can be useful in Picture mode, so these
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
235 commands delete the rectangle if given a numeric argument.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
236
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
237 @kindex C-c C-y (Picture mode)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
238 @kindex C-c C-x (Picture mode)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
239 @findex picture-yank-rectangle
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
240 @findex picture-yank-rectangle-from-register
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
241 The Picture mode commands for yanking rectangles differ from the standard
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
242 ones in overwriting instead of inserting. This is the same way that
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
243 Picture mode insertion of other text is different from other modes.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
244 @kbd{C-c C-y} (@code{picture-yank-rectangle}) inserts (by overwriting) the
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
245 rectangle that was most recently killed, while @kbd{C-c C-x}
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
246 (@code{picture-yank-rectangle-from-register}) does for the
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
247 rectangle found in a specified register.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
248
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
249 Since most region commands in Picture mode operate on rectangles, when you
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
250 select a region of text with the mouse in Picture mode, it is highlighted
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
251 as a rectangle.