;ELC   
;;; Compiled
;;; in Emacs version 29.4
;;; with all optimizations.



(byte-code "\300\301\302\303\304\305\306\307&\210\310\311\312\313\314DD\315\316\317%\210\310\320\312\313\321DD\322\316\317%\210\310\323\312\313\324DD\325\316\317%\210\310\326\312\313\327DD\330\316\317%\210\310\331\312\313\332DD\333\316\317%\210\310\334\312\313\335DD\336\316\317%\207" [custom-declare-group picture nil "Editing text-based pictures (\"ASCII art\")." :prefix "picture-" :group text custom-declare-variable picture-rectangle-ctl funcall function #[0 "\300\207" [43] 1 #1=""] "Character `picture-draw-rectangle' uses for top left corners." :type character picture-rectangle-ctr #[0 "\300\207" [43] 1 #1#] "Character `picture-draw-rectangle' uses for top right corners." picture-rectangle-cbr #[0 "\300\207" [43] 1 #1#] "Character `picture-draw-rectangle' uses for bottom right corners." picture-rectangle-cbl #[0 "\300\207" [43] 1 #1#] "Character `picture-draw-rectangle' uses for bottom left corners." picture-rectangle-v #[0 "\300\207" [124] 1 #1#] "Character `picture-draw-rectangle' uses for vertical lines." picture-rectangle-h #[0 "\300\207" [45] 1 #1#] "Character `picture-draw-rectangle' uses for horizontal lines."] 8)#@165 Desired current column for Picture mode.
When a cursor is on a wide-column character (e.g. Chinese,
Japanese, Korean), this may be different from `current-column'.
(defvar picture-desired-column 0 (#$ . 1226))#@257 Maybe update `picture-desired-column'.
If the value of `picture-desired-column' is more than one column
from `current-column', or if the argument ADJUST-TO-CURRENT is
non-nil, set it to the current column.  Return `current-column'.

(fn ADJUST-TO-CURRENT)
(defalias 'picture-update-desired-column #[257 "i\204 SW\204 TV\203 \211\207" [picture-desired-column] 4 (#$ . 1442)])#@175 Position point at the beginning of the line.
With ARG not nil, move forward ARG - 1 lines first.
If scan reaches end of buffer, stop there without error.

(fn &optional ARG)
(defalias 'picture-beginning-of-line #[256 "\211\203\n \301!Sy\210\302 \210\303\211\207" [picture-desired-column prefix-numeric-value beginning-of-line 0] 3 (#$ . 1832) "^P"])#@193 Position point after last non-blank character on current line.
With ARG not nil, move forward ARG - 1 lines first.
If scan reaches end of buffer, stop there without error.

(fn &optional ARG)
(defalias 'picture-end-of-line #[256 "\211\203\n \301!Sy\210\302 \210\303`\304\210x\210i\211\207" [picture-desired-column prefix-numeric-value beginning-of-line " 	" nil] 4 (#$ . 2190) "^P"])#@134 Move cursor right, making whitespace if necessary.
With prefix argument ARG, move that many columns.

(fn ARG &optional INTERACTIVE)
(defalias 'picture-forward-column #[513 "\302\303!\210\304	\\]\305	\306\"\211	V\205 \304W\205 \307u)\207" [deactivate-mark picture-desired-column nil picture-update-desired-column 0 move-to-column t -1] 5 (#$ . 2583) "^p\nd"])#@133 Move cursor left, making whitespace if necessary.
With prefix argument ARG, move that many columns.

(fn ARG &optional INTERACTIVE)
(defalias 'picture-backward-column #[513 "\300!\210\301[!\207" [picture-update-desired-column picture-forward-column] 4 (#$ . 2956) "^p\nd"])#@113 Move vertically down, making whitespace if necessary.
With prefix argument ARG, move that many lines.

(fn ARG)
(defalias 'picture-move-down #[257 "\302\303\302!\210\304!\210\305	\306\"\211	V\205 \307u)\207" [deactivate-mark picture-desired-column nil picture-update-desired-column picture-newline move-to-column t -1] 4 (#$ . 3238) "^p"])#@65 Amount to move vertically after text character in Picture mode.
(defvar picture-vertical-step 0 (#$ . 3586))#@67 Amount to move horizontally after text character in Picture mode.
(defvar picture-horizontal-step 1 (#$ . 3700))#@111 Move vertically up, making whitespace if necessary.
With prefix argument ARG, move that many lines.

(fn ARG)
(defalias 'picture-move-up #[257 "\300\301!\210\302[!\207" [picture-update-desired-column nil picture-move-down] 3 (#$ . 3819) "^p"])#@60 Move right after self-inserting character in Picture mode.
(defalias 'picture-movement-right #[0 "\300\301\302\"\207" [picture-set-motion 0 1] 3 (#$ . 4069) nil])#@59 Move left after self-inserting character in Picture mode.
(defalias 'picture-movement-left #[0 "\300\301\302\"\207" [picture-set-motion 0 -1] 3 (#$ . 4237) nil])#@57 Move up after self-inserting character in Picture mode.
(defalias 'picture-movement-up #[0 "\300\301\302\"\207" [picture-set-motion -1 0] 3 (#$ . 4404) nil])#@59 Move down after self-inserting character in Picture mode.
(defalias 'picture-movement-down #[0 "\300\301\302\"\207" [picture-set-motion 1 0] 3 (#$ . 4567) nil])#@141 Move up and left after self-inserting character in Picture mode.
With prefix argument ARG, move up and two-column left.

(fn &optional ARG)
(defalias 'picture-movement-nw #[256 "\300\301\203\n \302\202 \301\"\207" [picture-set-motion -1 -2] 4 (#$ . 4734) "P"])#@143 Move up and right after self-inserting character in Picture mode.
With prefix argument ARG, move up and two-column right.

(fn &optional ARG)
(defalias 'picture-movement-ne #[256 "\300\301\203\n \302\202 \303\"\207" [picture-set-motion -1 2 1] 4 (#$ . 5003) "P"])#@145 Move down and left after self-inserting character in Picture mode.
With prefix argument ARG, move down and two-column left.

(fn &optional ARG)
(defalias 'picture-movement-sw #[256 "\300\301\203\n \302\202 \303\"\207" [picture-set-motion 1 -2 -1] 4 (#$ . 5275) "P"])#@147 Move down and right after self-inserting character in Picture mode.
With prefix argument ARG, move down and two-column right.

(fn &optional ARG)
(defalias 'picture-movement-se #[256 "\300\301\203\n \302\202 \301\"\207" [picture-set-motion 1 2] 4 (#$ . 5550) "P"])#@155 Set VERTICAL and HORIZONTAL increments for movement in Picture mode.
The mode line is updated to reflect the current direction.

(fn VERTICAL HORIZONTAL)
(defalias 'picture-set-motion #[514 "\211\303\304\305\306\246\\\307\305\246T_\\\3108\"\311 \210\312\313!\207" [picture-vertical-step picture-horizontal-step mode-name format "Picture:%s" 2 3 5 (wnw nw up ne ene Left left none right Right wsw sw down se ese) force-mode-line-update message ""] 8 (#$ . 5823)])#@77 Move in direction of `picture-vertical-step' and `picture-horizontal-step'.
(defalias 'picture-move #[0 "\302U\204\n \303!\210	\302U?\205 \304	!\207" [picture-vertical-step picture-horizontal-step 0 picture-move-down picture-forward-column] 2 (#$ . 6297)])#@270 Move point in direction of current picture motion in Picture mode.
With ARG do it that many times.  Useful for delineating rectangles in
conjunction with diagonal picture motion.
Use "\[command-apropos] picture-movement" to see commands which control motion.

(fn ARG)
(defalias 'picture-motion #[257 "\302_!\210\303	_!\207" [picture-vertical-step picture-horizontal-step picture-move-down picture-forward-column] 4 (#$ . 6563) "^p"])#@279 Move point in direction opposite of current picture motion in Picture mode.
With ARG do it that many times.  Useful for delineating rectangles in
conjunction with diagonal picture motion.
Use "\[command-apropos] picture-movement" to see commands which control motion.

(fn ARG)
(defalias 'picture-motion-reverse #[257 "\300[!\207" [picture-motion] 3 (#$ . 7007) "^p"])#@82 Move point to the position of EVENT, making whitespace if necessary.

(fn EVENT)
(defalias 'picture-mouse-set-point #[257 "\301!\211\211A@:\203 \211A@@\202 \211A@\2119\205 \211\266\202?\205\226 \211\211@\262\302!\2030 \211\2023 \303!\3048\262\305!\306!\3048\262@@ZAAZ\307!\310!\205j r\311!q\210)\206j \312\300\"\313!\203z \314_!\262\202\201 \211\204\201 \315\262b\210\316\\\245!\210\317\320\n!\245!\266\211\207" [line-spacing event-start framep window-frame 2 window-start posn-at-point frame-char-height display-graphic-p window-buffer frame-parameter floatp truncate 0 picture-move-down picture-forward-column frame-char-width] 15 (#$ . 7382) "e"])#@15 

(fn CH ARG)
(defalias 'picture-insert #[514 "\303!\304U\203 \211\305V\203 \306	!\307W\203 	\307_\202 	\304V\205j S\262\niU\2044 \310\n\311\"\210\n\\l\204] `\310\311\"\210\312`{!`|\210\211V\203[ \313\314Z\"\210b\210\266\210c\210\315u\210\316 \210\202 )\207" [picture-vertical-step picture-horizontal-step picture-desired-column char-width 0 1 abs 2 move-to-column t string-width insert-char 32 -1 picture-move] 10 (#$ . 8076)])#@282 Insert this character in place of character previously at the cursor.
The cursor then moves in the direction you previously specified
with the commands `picture-movement-right', `picture-movement-up', etc.
Use "\[command-apropos] picture-movement" to see those commands.

(fn ARG)
(defalias 'picture-self-insert #[257 "\303	=?!\210\304\n\"\207" [this-command last-command last-command-event picture-update-desired-column picture-insert] 4 (#$ . 8533) "p"])#@61 Clear out ARG columns after point without moving.

(fn ARG)
(defalias 'picture-clear-column #[257 "i\301\\]\302\303\304\"\210`\262\303!\210\211`|\210\212]j)\266i\211\207" [picture-desired-column 0 nil move-to-column t] 7 (#$ . 8997) "p"])#@70 Clear out ARG columns before point, moving back over them.

(fn ARG)
(defalias 'picture-backward-clear-column #[257 "\300[!\207" [picture-clear-column] 3 (#$ . 9250) "p"])#@240 Clear out rest of line; if at end of line, advance to next line.
Cleared-out line text goes into the kill ring, as do newlines
that are advanced over.  With prefix argument ARG, clear out (and
save in kill ring) that many lines.

(fn ARG)
(defalias 'picture-clear-line #[257 "\211\203 \300!\262\301!\210\302\303V\203 \202 [!\207\304\305!\203* \306`\307y\210`\"\207\310`\311\210`\"\207" [prefix-numeric-value kill-line newline 0 looking-at "[ 	]*$" kill-ring-save 1 kill-region nil] 4 (#$ . 9429) "P"])#@172 Move to the beginning of the following line.
With prefix argument ARG, move that many lines (up, if negative
argument);
always moves to the beginning of a line.

(fn ARG)
(defalias 'picture-newline #[257 "`ym\203 `V\203 \300 \210\211\301V\205 \300!\207" [newline 0] 5 (#$ . 9947) "^p"])#@143 Insert ARG empty lines after the current line.
ARG must be positive.
Interactively, ARG is the numeric argument, and defaults to 1.

(fn ARG)
(defalias 'picture-open-line #[257 "\212\300\210\301!)\207" [nil open-line] 3 (#$ . 10246) "p"])#@51 Insert a duplicate of the current line, below it.
(defalias 'picture-duplicate-line #[0 "\212\300 \210`\301\302!\210`{\303y\210\211c)\207" [beginning-of-line picture-newline 1 -1] 3 (#$ . 10492) nil])#@34 

(fn NEWTEXT FIXEDCASE LITERAL)
(defalias 'picture-replace-match #[771 "\301\211\211\302\225\211\262b\210i\262\301\211\303#\210iZ\262\262\211\203/ \304\305\"\262\202\" )\266\211b\210\302V\203F `\306i\\\307\"\210`|\210\303#\210\302W\205Z \310\311[\"\207" [buffer-undo-list nil 0 replace-match primitive-undo 1 move-to-column t insert-char 32] 12 (#$ . 10698)])
(byte-code "\300\301\302\303\304DD\305\306\307%\207" [custom-declare-variable picture-tab-chars funcall function #[0 "\300\207" ["!-~"] 1 ""] "A character set which controls behavior of commands.\n\\[picture-set-tab-stops] and \\[picture-tab-search].\nThe syntax for this variable is like the syntax used inside of `[...]'\nin a regular expression--but without the `[' and the `]'.\nIt is NOT a regular expression, and should follow the usual\nrules for the contents of a character alternative.\nIt defines a set of \"interesting characters\" to look for when setting\n(or searching for) tab stops, initially \"!-~\" (all printing characters).\nFor example, suppose that you are editing a table which is formatted thus:\n| foo		| bar + baz | 23  *\n| bubbles	| and + etc | 97  *\nand that `picture-tab-chars' is \"|+*\".  Then invoking\n\\[picture-set-tab-stops] on either of the previous lines would result\nin the following tab stops\n		:     :     :     :\nAnother example - \"A-Za-z0-9\" would produce the tab stops\n  :		  :	:     :\n\nNote that if you want the character `-' to be in the set, it must be\nincluded in a range or else appear in a context where it cannot be\ntaken for indicating a range (e.g. \"-A-Z\" declares the set to be the\nletters `A' through `Z' and the character `-').  If you want the\ncharacter `\\' in the set it must be preceded by itself: \"\\\\\".\n\nThe command \\[picture-tab-search] is defined to move beneath (or to) a\ncharacter belonging to this set independent of the tab stops list." :type string] 6)#@497 Set value of `tab-stop-list' according to context of this line.
This controls the behavior of \[picture-tab].  A tab stop is set at
every column occupied by an "interesting character" that is preceded
by whitespace.  Interesting characters are defined by the variable
`picture-tab-chars', see its documentation for an example of usage.
With ARG, just (re)set `tab-stop-list' to its default value.  The tab
stops computed are displayed in the minibuffer with `:' at each stop.

(fn &optional ARG)
(defalias 'picture-set-tab-stops #[256 "\212\302\203 \303\301!\206 \304\305 !\262\202? \306\307Q\310 \210`\302\210\311\312#\2034 \313\302w\210iB\262\202  \204= \314\315\"\210\266\211\316GS8T\317\"\203[ \211@\320I\210A\262\202J \321!)\207" [picture-tab-chars tab-stop-list nil default-value indent-accumulate-tab-stops window-width "[ 	]+[" "]" beginning-of-line re-search-backward t " 	" error "No characters in set [%s] on this line" make-string 32 58 message] 8 (#$ . 12637) "P"])#@336 Move to column beneath next interesting char in previous line.
With ARG move to column occupied by next interesting character in this
line.  The character must be preceded by whitespace.
"interesting characters" are defined by variable `picture-tab-chars'.
If no such character is found, move to beginning of line.

(fn &optional ARG)
(defalias 'picture-tab-search #[256 "i\212\204 \301 \210\302\303\304\305#Pex\210o\204 \306!\210\307\310\311Q\312 \313#\203. iS\262\2021 \314\262)\211\203; \306\315\"\207\301 \207" [picture-tab-chars beginning-of-line "^" string-replace "\\" "\\\\" move-to-column re-search-forward "[ 	]+[" "]" line-end-position move nil t] 7 (#$ . 13643) "^P"])#@305 Tab transparently (just move point) to next tab stop.
With prefix argument ARG, overwrite the traversed text with
spaces.  The tab stop list can be changed by \<picture-mode-map>\[picture-set-tab-stops] and
\[edit-tab-stops].

See also documentation for variable `picture-tab-chars'.

(fn &optional ARG)
(defalias 'picture-tab #[256 "`\301 \210\205 \302i`|\210\211j)\266\202\207" [indent-tabs-mode move-to-tab-stop nil] 6 (#$ . 14339) "^P"])#@134 Rectangle killed or copied by \[picture-clear-rectangle] in Picture mode.
The contents can be retrieved by \[picture-yank-rectangle]
(defvar picture-killed-rectangle nil (#$ . 14792))#@314 Clear and save rectangle delineated by point and mark.
The rectangle is saved for yanking by \[picture-yank-rectangle] and replaced
with whitespace.  The previously saved rectangle, if any, is lost.  With
prefix argument, the rectangle is actually killed, shifting remaining text.

(fn START END &optional KILLP)
(defalias 'picture-clear-rectangle #[770 "\301#\211\207" [picture-killed-rectangle picture-snarf-rectangle] 7 (#$ . 14982) "r\nP"])#@320 Clear rectangle delineated by point and mark into REGISTER.
The rectangle is saved in REGISTER and replaced with whitespace.  With
prefix argument, the rectangle is actually killed, shifting remaining text.

Interactively, reads the register using `register-read-with-preview'.

(fn START END REGISTER &optional KILLP)
(defalias 'picture-clear-rectangle-to-register #[1027 "\300\301#\"\207" [set-register picture-snarf-rectangle] 10 (#$ . 15437) (byte-code "\301 \302 \303\304!F\207" [current-prefix-arg region-beginning region-end register-read-with-preview "Rectangle to register: "] 4)])#@34 

(fn START END &optional KILLP)
(defalias 'picture-snarf-rectangle #[770 "i\301\212\203 \302\"\202 \303\"\304\"\210)\305\306\")\210\207" [indent-tabs-mode nil delete-extract-rectangle extract-rectangle clear-rectangle move-to-column t] 8 (#$ . 16040)])#@349 Overlay rectangle saved by \[picture-clear-rectangle].
The rectangle is positioned with upper left corner at point,
overwriting existing text.  With prefix argument INSERTP, the
rectangle is inserted instead, shifting existing text.  Leave
mark at one corner of rectangle and point at the
other (diagonally opposed) corner.

(fn &optional INSERTP)
(defalias 'picture-yank-rectangle #[256 ":\204	 \301\302!\207\303\"\207" [picture-killed-rectangle error "No rectangle saved" picture-insert-rectangle] 4 (#$ . 16311) "P"])#@285 Insert the last killed rectangle at the position clicked on.
Also move point to one end of the text thus inserted (normally the end).
Prefix arguments are interpreted as with \[yank].
If `mouse-yank-at-point' is non-nil, insert at point
regardless of where you click.

(fn CLICK ARG)
(defalias 'picture-yank-at-click #[514 "\204 \301!\210\302!\207" [mouse-yank-at-point mouse-set-point picture-yank-rectangle] 4 (#$ . 16841) "e\nP"])#@411 Overlay rectangle saved in REGISTER.
The rectangle is positioned with upper left corner at point,
overwriting existing text.  With prefix argument INSERTP, the
rectangle is inserted instead, shifting existing text.  Leave
mark at one corner of rectangle and point at the
other (diagonally opposed) corner.

Interactively, reads the register using `register-read-with-preview'.

(fn REGISTER &optional INSERTP)
(defalias 'picture-yank-rectangle-from-register #[513 "\300!\211:\204 \301\302\"\207\303\"\207" [get-register error "Register %c does not contain a rectangle" picture-insert-rectangle] 6 (#$ . 17285) (byte-code "\301\302!D\207" [current-prefix-arg register-read-with-preview "Rectangle from register: "] 2)])#@201 Overlay RECTANGLE with upper left corner at point.
Optional argument INSERTP, if non-nil causes RECTANGLE to be inserted.
Leave the region surrounding the rectangle.

(fn RECTANGLE &optional INSERTP)
(defalias 'picture-insert-rectangle #[513 "\301\211\204 \212\302`\303@G!\210\304GS!\210`\")\210\305 \210\306!)\207" [indent-tabs-mode nil delete-rectangle picture-forward-column picture-move-down push-mark insert-rectangle] 6 (#$ . 18016)])#@56 Return the vertical position of point.  Top line is 1.
(defalias 'picture-current-line #[0 "\300e`\"i\301U\203 \302\202 \301\\\207" [count-lines 0 1] 3 (#$ . 18467)])#@67 Draw a rectangle around region from START to END.

(fn START END)
(defalias 'picture-draw-rectangle #[514 "\306 i	b\210i\306 b\210i\306 ]^^]eb\210Sy\210\307\310\"\210\311\310!\210\312 \210\313\n\314\"\210\313\fZ\"\210\315 \210\313\314\"\210\313\306 Z\"\210\316 \210\313\314\"\210\313\fZ\"\210\317 \210\313\314\"\210\313\306 Z\"\210\320\n\n\"\210eb\210Sy\210\307\310\"\207" [picture-vertical-step picture-horizontal-step picture-rectangle-ctl picture-rectangle-h picture-desired-column picture-rectangle-ctr picture-current-line move-to-column t picture-update-desired-column picture-movement-right picture-insert 1 picture-movement-down picture-movement-left picture-movement-up picture-set-motion picture-rectangle-v picture-rectangle-cbr picture-rectangle-cbl] 18 (#$ . 18641) "*r"])
(defalias 'picture-delete-char 'delete-char)#@32 Keymap used in `picture-mode'.
(defvar picture-mode-map (byte-code "\300\301\302\303\304\305\304\306\304\307\310\311\310\312\313\314\313\315\316\317\320\321\320\322\323\324\325\326\327\330\331\332\333\334\335\336\337\340\341\342\343\344\345\346\347\350\351\352\353\354\355\356\357\360\361\362\363\364\365\366\367\370\371\372\373\374\375\376\377\201@ \201A \201B \201C \201D \201E \201F \201G \201H \201I \201J \201K \201L \375\201M \377\201N \201A \201O \201C \201P \201E \201Q \201G \201R \201I \201S \201K &`\207" [define-keymap :full t "<remap> <self-insert-command>" picture-self-insert "<remap> <completion-separator-self-insert-command>" "<remap> <completion-separator-self-insert-autofilling>" "<remap> <forward-char>" picture-forward-column "<remap> <right-char>" "<remap> <backward-char>" picture-backward-column "<remap> <left-char>" "<remap> <delete-char>" picture-clear-column "<remap> <backward-delete-char-untabify>" picture-backward-clear-column "<remap> <delete-backward-char>" "<remap> <kill-line>" picture-clear-line "<remap> <open-line>" picture-open-line "<remap> <newline>" picture-newline "<remap> <newline-and-indent>" picture-duplicate-line "<remap> <next-line>" picture-move-down "<remap> <previous-line>" picture-move-up "<remap> <move-beginning-of-line>" picture-beginning-of-line "<remap> <move-end-of-line>" picture-end-of-line "<remap> <mouse-set-point>" picture-mouse-set-point "C-c C-d" picture-delete-char "TAB" picture-tab "M-TAB" picture-tab-search "C-c TAB" picture-set-tab-stops "C-c C-k" picture-clear-rectangle "C-c C-w" picture-clear-rectangle-to-register "C-c C-y" picture-yank-rectangle "C-c C-x" picture-yank-rectangle-from-register "C-c C-r" picture-draw-rectangle "C-c C-c" picture-mode-exit "C-c C-f" picture-motion "C-c C-b" picture-motion-reverse "C-c <" picture-movement-left "C-c >" picture-movement-right "C-c ^" picture-movement-up "C-c ." picture-movement-down "C-c `" picture-movement-nw "C-c '" picture-movement-ne "C-c /" picture-movement-sw "C-c \\" picture-movement-se "C-c <left>" "C-c <right>" "C-c <up>" "C-c <down>" "C-c <home>" "C-c <prior>" "C-c <end>" "C-c <next>"] 97) (#$ . 19512))
(byte-code "\300\301\302\303\304DD\305\306\307%\207" [custom-declare-variable picture-mode-hook funcall function #[0 "\300\207" [nil] 1 ""] "If non-nil, its value is called on entry to Picture mode.\nPicture mode is invoked by the command \\[picture-mode]." :type hook] 6)#@3742 Switch to Picture mode, in which a quarter-plane screen model is used.
\<picture-mode-map>
Printing characters replace instead of inserting themselves with motion
afterwards settable by these commands:

 Move left after insertion:            \[picture-movement-left]
 Move right after insertion:           \[picture-movement-right]
 Move up after insertion:              \[picture-movement-up]
 Move down after insertion:            \[picture-movement-down]

 Move northwest (nw) after insertion:  \[picture-movement-nw]
 Move northeast (ne) after insertion:  \[picture-movement-ne]
 Move southwest (sw) after insertion:  \[picture-movement-sw]
 Move southeast (se) after insertion:  \[picture-movement-se]

 Move westnorthwest (wnw) after insertion:  \[universal-argument] \[picture-movement-nw]
 Move eastnortheast (ene) after insertion:  \[universal-argument] \[picture-movement-ne]
 Move westsouthwest (wsw) after insertion:  \[universal-argument] \[picture-movement-sw]
 Move eastsoutheast (ese) after insertion:  \[universal-argument] \[picture-movement-se]

The current direction is displayed in the mode line.  The initial
direction is right.  Whitespace is inserted and tabs are changed to
spaces when required by movement.  You can move around in the buffer
with these commands:

 Move vertically to SAME column in previous line: \[picture-move-down]
 Move vertically to SAME column in next line:     \[picture-move-up]
 Move to column following last
  non-whitespace character:                       \[picture-end-of-line]
 Move right, inserting spaces if required:        \[picture-forward-column]
 Move left changing tabs to spaces if required:   \[picture-backward-column]
 Move in direction of current picture motion:     \[picture-motion]
 Move opposite to current picture motion:         \[picture-motion-reverse]
 Move to beginning of next line:                  \[next-line]

You can edit tabular text with these commands:

 Move to column beneath (or at) next interesting
  character (see variable `picture-tab-chars'):   \[picture-tab-search]
 Move to next stop in tab stop list:              \[picture-tab]
 Set tab stops according to context of this line: \[picture-set-tab-stops]
   (With ARG, resets tab stops to default value.)
 Change the tab stop list:                        \[edit-tab-stops]

You can manipulate text with these commands:
 Clear ARG columns after point without moving:    \[picture-clear-column]
 Delete char at point:                            \[picture-delete-char]
 Clear ARG columns backward:                      \[picture-backward-clear-column]
 Clear ARG lines, advancing over them:            \[picture-clear-line]
  (the cleared text is saved in the kill ring)
 Open blank line(s) beneath current line:         \[picture-open-line]

You can manipulate rectangles with these commands:
  Clear a rectangle and save it:                  \[picture-clear-rectangle]
  Clear a rectangle, saving in a named register:  \[picture-clear-rectangle-to-register]
  Insert currently saved rectangle at point:      \[picture-yank-rectangle]
  Insert rectangle from named register:           \[picture-yank-rectangle-from-register]
  Draw a rectangular box around mark and point:   \[picture-draw-rectangle]
  Copies a rectangle to a register:               \[copy-rectangle-to-register]
  Undo effects of rectangle overlay commands:     \[undo]

You can return to the previous mode with \[picture-mode-exit], which
also strips trailing whitespace from every line.  Stripping is suppressed
by supplying an argument.

Entry to this mode calls the value of `picture-mode-hook' if non-nil.

Note that Picture mode commands will work outside of Picture mode, but
they are not by default assigned to keys.
(defalias 'picture-mode #[0 "\306=\203\n \307\310!\207\311\301!\210\312 \313\n!\210\311\304!\210\311\305!\210\306\311\314!\210\315\f\311\316!\210\317\316!\311\320!\210\317\320!\311\321!\210\311\322!\210\311\323!\210\324\325\326\327\"\210\330\331\332\"\210\333\334\335\336!\f#\207" [major-mode picture-mode-old-local-map picture-mode-map mode-name picture-mode-old-mode-name picture-mode-old-major-mode picture-mode error "You are already editing a picture" make-local-variable current-local-map use-local-map picture-killed-rectangle nil tab-stop-list default-value picture-tab-chars picture-vertical-step picture-horizontal-step picture-mode-old-truncate-lines t picture-set-motion 0 1 run-hooks edit-picture-hook picture-mode-hook message "Type %s in this buffer to return it to %s mode." substitute-command-keys "\\[picture-mode-exit]" truncate-lines] 4 (#$ . 21941) nil])
(defalias 'edit-picture 'picture-mode)#@321 Undo `picture-mode' and return to previous major mode.
With NOSTRIP omitted or nil, strip whitespace from end of every line
  in Picture buffer; otherwise, just return to previous mode.
Interactively, NOSTRIP is the prefix argument, and defaults to nil.
Runs `picture-mode-exit-hook' at the end.

(fn &optional NOSTRIP)
(defalias 'picture-mode-exit #[256 "\306=\204\n \307\310!\207\211\204 \311 \210	\312!\210\f\313\314!\210\315 \210\316\317!\207" [major-mode picture-mode-old-mode-name mode-name picture-mode-old-local-map picture-mode-old-major-mode picture-mode-old-truncate-lines picture-mode error "You aren't editing a Picture" delete-trailing-whitespace use-local-map kill-local-variable tab-stop-list force-mode-line-update run-hooks picture-mode-exit-hook truncate-lines] 3 (#$ . 26621) "P"])
(provide 'picture)
