4.4BSD/usr/src/contrib/emacs-18.57/lisp/simple.elc


(defun open-line (arg) "\
Insert a newline and leave point before it.
With arg, inserts that many newlines." (interactive "*p") (byte-code "ˆno?!	V&c`Sb	S.!)" [flag arg nil forward-char -1 0 10 1] 4))

(defun split-line nil "\
Split current line, moving portion beyond point vertically down." (interactive "*") (byte-code "ˆ!i`c\"	b*" [col pos nil skip-chars-forward " 	" 10 indent-to 0] 4))

(defun quoted-insert (arg) "\
Read next input character and insert it.
Useful for inserting control characters.
You may also type up to 3 octal digits, to insert a character with that code" (interactive "*p") (byte-code "ˆ 	Vc	S)" [char arg nil read-quoted-char 0] 4))

(defun delete-indentation (&optional arg) "\
Join this line to previous and fix up whitespace at join.
With argument, join this line to following line." (interactive "*P") (byte-code " !h=``S\" " [arg nil beginning-of-line forward-line 1 10 delete-region fixup-whitespace] 5))

(defun fixup-whitespace nil "\
Fixup white space between objects around point.
Leave one space or none, according to the context." (interactive "*") (byte-code " !!!)c)" [nil delete-horizontal-space looking-at "^\\|\\s)" forward-char -1 "$\\|\\s(\\|\\s'" 32] 5))

(defun delete-horizontal-space nil "\
Delete all spaces and tabs around point." (interactive "*") (byte-code "!`!`\"" [nil skip-chars-backward " 	" delete-region skip-chars-forward] 5))

(defun just-one-space nil "\
Delete all spaces and tabs around point, leaving one space." (interactive "*") (byte-code "!gU!c`!`\"" [nil skip-chars-backward " 	" 32 forward-char 1 delete-region skip-chars-forward] 6))

(defun delete-blank-lines nil "\
On blank line, delete all surrounding blank lines, leaving just one.
On isolated blank line, delete that one.
On nonblank line, delete all blank lines that follow it." (interactive "*") (byte-code "ˆ !'!?'o'!!?)N 	9!`#L!`Me\"T	?t !`#q `rd\")*" [thisblank singleblank nil t beginning-of-line looking-at "[ 	]*$" "[ 	]*
[ 	]*$" forward-line -1 1 delete-region re-search-backward "[^ 	
]" end-of-line re-search-forward] 18))

(defun back-to-indentation nil "\
Move point to the first non-whitespace character on this line." (interactive) (byte-code "!!" [nil beginning-of-line 1 skip-chars-forward " 	"] 3))

(defun newline-and-indent nil "\
Insert a newline, then indent according to major mode.
Indentation is done using the current indent-line-function.
In programming language modes, this is the same as TAB.
In some text modes, where TAB inserts a tab, this indents to the
specified left-margin column." (interactive "*") (byte-code "`!`\"c " [nil delete-region skip-chars-backward " 	" 10 indent-according-to-mode] 4))

(defun reindent-then-newline-and-indent nil "\
Reindent current line, insert newline, then indent the new line.
Indentation of both lines is done according to the current major mode,
which means that the current value of indent-line-function is called.
In programming language modes, this is the same as TAB.
In some text modes, where TAB inserts a tab, this indents to the
specified left-margin column." (interactive "*") (byte-code "`!`\" )c " [nil delete-region skip-chars-backward " 	" indent-according-to-mode 10] 5))

(defun kill-forward-chars (arg) (byte-code "<	@=‰``\\\"" [arg - -1 kill-region] 4))

(defun kill-backward-chars (arg) (byte-code "<	@=‰``Z\"" [arg - -1 kill-region] 4))

(defun backward-delete-char-untabify (arg &optional killp) "\
Delete characters backward, changing tabs into spaces.
Delete ARG chars, and kill (save in kill ring) if KILLP is non-nil.
Interactively, ARG is the prefix arg (default 1)
and KILLP is t if prefix arg is was specified." (interactive "*p
P") (byte-code "Ĉ	V
o?8hU+i!
iZ
\"!)!S))	\"" [count arg col killp nil 0 9 forward-char -1 insert-char 32 delete-char 1 delete-backward-char] 7))

(defun zap-to-char (arg char) "\
Kill up to (but not including) ARG'th occurrence of CHAR.
Goes backward if ARG is negative; goes to end of buffer if CHAR not found." (interactive "*p
cZap to char: ") (byte-code "`!$\"V`S`Tb`-V,d-e\"" [char nil t arg kill-region search-forward char-to-string 0] 8))

(defun beginning-of-buffer (&optional arg) "\
Move point to the beginning of the buffer; leave mark at previous position.
With arg N, put point N/10 of the way from the true beginning.
Don't use this in Lisp programs!
(goto-char (point-min)) is faster and does not set the mark." (interactive "P") (byte-code " , V! \"\") !\"\\\"-eb6!" [arg nil push-mark buffer-size 10000 * prefix-numeric-value / 10 forward-line 1] 13))

(defun end-of-buffer (&optional arg) "\
Move point to the end of the buffer; leave mark at previous position.
With arg N, put point N/10 of the way from the true end.
Don't use this in Lisp programs!
(goto-char (point-max)) is faster and does not set the mark." (interactive "P") (byte-code " . T V ! \"\"* !\"\"Z/db8!" [arg nil push-mark buffer-size 10000 * prefix-numeric-value / 10 forward-line 1] 14))

(defun mark-whole-buffer nil "\
Put point at beginning and mark at end of buffer." (interactive) (byte-code "`!d!eb" [nil push-mark] 3))

(defun count-lines-region (start end) "\
Print number of lines in the region." (interactive "r") (byte-code "ˆ	\"\"" [start end nil message "Region has %d lines" count-lines] 5))

(defun what-line nil "\
Print the current line number (in the buffer) of point." (interactive) (byte-code "  `\"T\"))" [nil widen beginning-of-line message "Line %d" count-lines 1] 7))

(defun count-lines (start end) "\
Return number of newlines between START and END." (byte-code "	\"eb  !Z))" [start end narrow-to-region buffer-size forward-line] 6))

(defun what-cursor-position nil "\
Print info on cursor position (on screen and within buffer)." (interactive) (byte-code "Ȉged` V%\"S\\\"]\"4\"S\"\\]\" U@ӂE \"i
U}	\"\\
T\"o
	
&z
&	\"
T\"!
	
&
!
&." [char beg end pos total percent hscroll col nil buffer-size 50000 / 200 100 1 2 * window-hscroll 0 "" format " Hscroll=%d" /= message "point=%d of %d(%d%%) <%d - %d>  column %d %s" "point=%d of %d(%d%%)  column %d %s" "Char: %s (0%o)  point=%d of %d(%d%%) <%d - %d>  column %d %s" single-key-description "Char: %s (0%o)  point=%d of %d(%d%%)  column %d %s"] 28))

(defun fundamental-mode nil "\
Major mode not specialized for anything in particular.
Other major modes are defined by comparison with this one." (interactive) (byte-code " " [nil kill-all-local-variables] 2))

(put (quote eval-expression) (quote disabled) t)

(defun eval-expression (expression) "\
Evaluate EXPRESSION and print value in minibuffer.
Value is also consed on to front of variable  values  's value." (interactive "xEval: ") (byte-code "È	!B@\"" [values expression t nil eval prin1] 4))

(defun edit-and-eval-command (prompt command) "\
Prompting with PROMPT, let user edit COMMAND and eval result.
COMMAND is a Lisp expression.  Let user edit that expression in
the minibuffer, then read and evaluate the result." (byte-code "	!\"!" [prompt command eval read-minibuffer prin1-to-string] 5))

(defvar repeat-complex-command-map (copy-alist minibuffer-local-map))

(define-key repeat-complex-command-map "p" (quote previous-complex-command))

(define-key repeat-complex-command-map "n" (quote next-complex-command))

(defun repeat-complex-command (repeat-complex-command-arg) "\
Edit and re-evaluate last complex command, or ARGth from last.
A complex command is one which used the minibuffer.
The command is placed in the minibuffer as a Lisp form for editing.
The result is executed, repeating the command as changed.
If the command has been changed or is not the most recent previous command
it is added to the front of the command history.
Whilst editing the command, the following commands are available:
\\{repeat-complex-command-map}" (interactive "p") (byte-code "ƈ	S
8,!$
@\"%
B!. *" [elt repeat-complex-command-arg command-history newcmd repeat-complex-command-map t nil read-from-minibuffer "Redo: " prin1-to-string equal eval ding] 6))

(defun next-complex-command (n) "\
Inserts the next element of `command-history' into the minibuffer." (interactive "p") (byte-code "Ĉ	
Z]G^	U!	Uǂ!2 	S8!ceb)" [narg repeat-complex-command-arg n command-history nil 1 error "No following item in command history" "No preceeding item command history" erase-buffer prin1-to-string] 5))

(defun previous-complex-command (n) "\
Inserts the previous element of `command-history' into the minibuffer." (interactive "p") (byte-code "[!" [n nil next-complex-command] 2))

(defun goto-line (arg) "\
Goto line ARG, counting from line 1 at beginning of buffer." (interactive "NGoto line: ") (byte-code " bS!)" [arg nil widen 1 forward-line] 3))

(fset (quote advertised-undo) (quote undo))

(defun undo (&optional arg) "\
Undo some previous changes.
Repeat this command to undo more changes.
A numeric argument serves as a repeat count." (interactive "*p") (byte-code "Ĉ !	= !ȉ !. ?. )" [modified last-command this-command arg nil buffer-modified-p message "Undo!" undo undo-start undo-more 1 delete-auto-save-file-if-necessary] 8))

(defun shell-command (command &optional flag) "\
Execute string COMMAND in inferior shell; display output, if any.
Optional second arg non-nil (prefix arg, if interactive)
means insert output in current buffer after point (leave mark after it)." (interactive "sShell command: 
P") (byte-code "ˆ  	& !``$" [flag shell-file-name nil t command barf-if-buffer-read-only push-mark call-process "-c" exchange-point-and-mark shell-command-on-region] 9))

(defun shell-command-on-region (start end command &optional flag interactive) "\
Execute string COMMAND in inferior shell with region as input.
Normally display output (if any) in temp buffer;
Prefix arg means replace the region with it.
Noninteractive args are START, END, COMMAND, FLAG.
Noninteractively FLAG means insert output in place of text from START to END,
and put point at the end, but don't alter the mark." (interactive "r
sShell command on region: 
P
p") (byte-code "Lj1
` W
 
&
-	- )u!		q )	p=K҉
	&	q V)q	!\"t!)" [flag swap interactive start end shell-file-name t nil command buffer mark push-mark call-process-region "-c" exchange-point-and-mark get-buffer-create "*Shell Command Output*" erase-buffer 1 buffer-size 0 set-window-start display-buffer message "(Shell command completed with no output)"] 15))

(defun universal-argument nil "\
Begin a numeric argument for the following command.
Digits or minus sign following this command make up the numeric argument.
If no digits or minus sign follow, this command by itself provides 4 as argument.
Used more than once, this command multiplies the argument by 4 each time." (interactive nil) (byte-code "r
U 	\"r	#+" [nil c-u argstartchar last-command-char char 4 * prefix-arg-internal] 5))

(defun prefix-arg-internal (char c-u value) (byte-code "	!	W	[	= ‰U5[‰r!Y?X`	!M	N\"Z\\‰r6jC~	!w	\"~U~ˉ)" [sign value nil char c-u prefix-arg unread-command-char 1 numberp 0 -1 - 45 48 57 * 10] 7))

(defun digit-argument (arg) "\
Part of the numeric argument for the next command." (interactive "P") (byte-code "
#" [last-command-char nil arg prefix-arg-internal] 4))

(defun negative-argument (arg) "\
Begin a negative numeric argument for the next command." (interactive "P") (byte-code "	#" [nil arg prefix-arg-internal 45] 4))

(defun forward-to-indentation (arg) "\
Move forward ARG lines and position at first nonblank character." (interactive "p") (byte-code "!!" [arg nil forward-line skip-chars-forward " 	"] 3))

(defun backward-to-indentation (arg) "\
Move backward ARG lines and position at first nonblank character." (interactive "p") (byte-code "[!!" [arg nil forward-line skip-chars-forward " 	"] 3))

(defun kill-line (&optional arg) "\
Kill the rest of the current line; if no nonblanks there, kill thru newline.
With prefix argument, kill that many lines from point.
Negative arguments kill lines backward.

When calling from a program, nil means \"no arg\",
a number counts as a prefix arg." (interactive "*P") (byte-code "`!!'m\"!%!' `\"" [arg nil kill-region forward-line prefix-numeric-value signal end-of-buffer looking-at "[ 	]*$" 1 end-of-line] 9))

(defvar kill-ring nil "\
List of killed text sequences.")

(defconst kill-ring-max 30 "\
*Maximum length of kill ring before oldest elements are thrown away.")

(defvar kill-ring-yank-pointer nil "\
The tail of the kill ring whose car is the last thing yanked.")

(defun kill-append (string before-p) (byte-code "	

@P@
P\"" [kill-ring before-p string setcar] 4))

(defun kill-region (beg end) "\
Kill between point and mark.
The text is deleted but saved in the kill ring.
The command \\[yank] can retrieve it from there.
(If you want to kill and then yank immediately, use \\[copy-region-as-kill].)

This is the primitive for programs to kill text (as opposed to deleting it).
Supply two arguments, character numbers indicating the stretch of text
 to be killed.
Any command that calls this function is a \"kill command\".
If the previous command was also a kill command,
the text killed this time appends to the text killed last time
to make one entry in the kill ring." (interactive "*r") (byte-code "Ȉ=?

=?K
]
^Z\\
\"@@BGV<S\"\"ˉ	
)T
\"
\"" [buffer-undo-list t last-command undo-high-threshold beg end kill-ring kill-ring-max nil this-command kill-ring-yank-pointer kill-region 100 delete-region setcdr nthcdr copy-region-as-kill] 7))

(fset (quote kill-ring-save) (quote copy-region-as-kill))

(defun copy-region-as-kill (beg end) "\
Save the region as if killed, but don't kill it." (interactive "r") (byte-code "ň=	
\"
	W\",	
\"BGV,S\"\"ȉ" [last-command beg end kill-ring kill-ring-max nil this-command kill-ring-yank-pointer kill-region kill-append buffer-substring setcdr nthcdr] 7))

(defun append-next-kill nil "\
Cause following command, if kill, to append to previous kill." (interactive) (byte-code "ˆtÉÉ" [this-command last-command nil kill-region] 2))

(defun rotate-yank-pointer (arg) "\
Rotate the yanking point in the kill ring." (interactive "p") (byte-code "Ĉ	G!!
GZ\\\"	\")" [length kill-ring kill-ring-yank-pointer arg nil zerop error "Kill ring is empty" nthcdr %] 7))

(defun yank-pop (arg) "\
Replace just-yanked stretch of killed-text with a different stretch.
This command is allowed only immediately after a  yank  or a  yank-pop.
At such a time, the region contains a stretch of reinserted
previously-killed text.  yank-pop  deletes that text and inserts in its
place a different stretch of killed text.

With no argument, the previous kill is inserted.
With argument n, the n'th previous kill is inserted.
If n is negative, this is a more recent kill.

The sequence of kills wraps around, so that after the oldest one
comes the newest one." (interactive "*p") (byte-code "ň=?!Ɖ` W` \"!`!@c
. )" [last-command this-command before arg kill-ring-yank-pointer nil yank error "Previous command was not a yank" mark delete-region rotate-yank-pointer set-mark exchange-point-and-mark] 8))

(defun yank (&optional arg) "\
Reinsert the last stretch of killed text.
More precisely, reinsert the stretch of killed text most recently
killed OR yanked.
With just C-U as argument, same but put point in front (and mark at end).
With argument n, reinsert the nth most recently killed stretch of killed
text.
See also the command \\[yank-pop]." (interactive "*P") (byte-code "ˆ<Ă=ƂS!`!	@c:) " [arg kill-ring-yank-pointer nil rotate-yank-pointer 0 - -1 push-mark exchange-point-and-mark] 4))

(defun insert-buffer (buffer) "\
Insert after point the contents of BUFFER.
Puts mark after the inserted text.
BUFFER may be a buffer or a buffer name." (interactive "*bInsert buffer: ") (byte-code "Ĉ!
!qed)	
#`)!+" [buffer start end newmark nil bufferp get-buffer insert-buffer-substring push-mark] 6))

(defun append-to-buffer (buffer start end) "\
Append to specified buffer the text of the region.
It is inserted into that buffer before its point.

When calling from a program, give three arguments:
a buffer or the name of one, and two character numbers
specifying the portion of the current buffer to be copied." (interactive "BAppend to buffer: 
r") (byte-code "Ĉp	!q
#))" [oldbuf buffer start end nil get-buffer-create insert-buffer-substring] 5))

(defun prepend-to-buffer (buffer start end) "\
Prepend to specified buffer the text of the region.
It is inserted into that buffer after its point.

When calling from a program, give three arguments:
a buffer or the name of one, and two character numbers
specifying the portion of the current buffer to be copied." (interactive "BPrepend to buffer: 
r") (byte-code "Ĉp	!q
#)))" [oldbuf buffer start end nil get-buffer-create insert-buffer-substring] 5))

(defun copy-to-buffer (buffer start end) "\
Copy to specified buffer the text of the region.
It is inserted into that buffer, replacing existing text there.

When calling from a program, give three arguments:
a buffer or the name of one, and two character numbers
specifying the portion of the current buffer to be copied." (interactive "BCopy to buffer: 
r") (byte-code "Ĉp	!q 
#)))" [oldbuf buffer start end nil get-buffer-create erase-buffer insert-buffer-substring] 6))

(defun mark nil "\
Return this buffer's mark value as integer, or nil if no mark.
If you are using this in an editing command, you are most likely making
a mistake; see the documentation of `set-mark'." (byte-code " !" [marker-position mark-marker] 3))

(defun set-mark (pos) "\
Set this buffer's mark to POS.  Don't use this function!
That is to say, don't use this function unless you want
the user to see that the mark has moved, and you want the previous
mark position to be lost.

Normally, when a new mark is set, the old one should go on the stack.
This is why most applications should use push-mark, not set-mark.

Novice emacs-lisp programmers often try to use the mark for the wrong
purposes.  The mark saves a location for the user's convenience.
Most editing commands should not alter the mark.
To remember a location for internal use in the Lisp program,
store it in a Lisp variable.  Example:

   (let ((beg (point))) (forward-line 1) (delete-region beg (point)))." (byte-code " p#" [pos set-marker mark-marker] 5))

(defvar mark-ring nil "\
The list of saved former marks of the current buffer,
most recent first.")

(make-variable-buffer-local (quote mark-ring))

(defconst mark-ring-max 16 "\
*Maximum size of mark ring.  Start discarding off end if gets this big.")

(defun set-mark-command (arg) "\
Set mark at where point is, or jump to mark.
With no prefix argument, set mark, and push previous mark on mark ring.
With argument, jump to mark, and pop into mark off the mark ring.

Novice emacs-lisp programmers often try to use the mark for the wrong
purposes.  See the documentation of `set-mark' for more information." (interactive "P") (byte-code "?  ?! b " [arg nil push-mark mark error "No mark set in this buffer" pop-mark] 6))

(defun push-mark (&optional location nomsg) "\
Set mark at LOCATION (point, by default) and push old mark on mark ring.
Displays \"Mark set\" unless the optional second arg NOMSG is non-nil.

Novice emacs-lisp programmers often try to use the mark for the wrong
purposes.  See the documentation of `set-mark' for more information." (byte-code " ?
+ !	B	G
V+
	\"@\"
S	\"\"2`!F
F VF!" [nil mark-ring mark-ring-max location nomsg executing-macro mark copy-marker mark-marker move-marker nthcdr setcdr set-mark minibuffer-depth 0 message "Mark set"] 11))

(defun pop-mark nil "\
Pop off mark ring into the buffer's actual mark.
Does not set point.  Does nothing if mark ring is empty." (byte-code ") !C\"@\\!@\" ?$ A" [mark-ring nil nconc copy-marker mark-marker set-mark 0 move-marker mark ding] 9))

(fset (quote exchange-dot-and-mark) (quote exchange-point-and-mark))

(defun exchange-point-and-mark nil "\
Put the mark where point is now, and point where the mark is now." (interactive nil) (byte-code " 	?
!`!	b)" [nil omark mark error "No mark set in this buffer" set-mark] 4))

(defun next-line (arg) "\
Move cursor vertically down ARG lines.
If there is no character in the target line exactly under the current column,
the cursor is positioned after the character in that line which spans this
column, or at the end of the line if it is not long enough.
If there is no line in the buffer after this one,
a newline character is inserted to create a line
and the cursor moves to that line.

The command \\[set-goal-column] can be used to create
a semipermanent goal column to which this command always moves.
Then it does not try to move vertically.

If you are thinking of using this in a Lisp program, consider
using `forward-line' instead.  It is usually easier to use
and more reliable (no dependence on goal column, etc.)." (interactive "p") (byte-code "ˆU*`!	`Uh=? c&	b!)-!‡" [arg opoint nil 1 forward-line 10 next-line-internal] 4))

(defun previous-line (arg) "\
Move cursor vertically up ARG lines.
If there is no character in the target line exactly over the current column,
the cursor is positioned after the character in that line which spans this
column, or at the end of the line if it is not long enough.

The command \\[set-goal-column] can be used to create
a semipermanent goal column to which this command always moves.
Then it does not try to move vertically.

If you are thinking of using this in a Lisp program, consider using
`forward-line' with negative argument instead..  It is usually easier
to use and more reliable (no dependence on goal column, etc.)." (interactive "p") (byte-code "[!" [arg nil next-line-internal] 2))

(defconst track-eol nil "\
*Non-nil means vertical motion starting at the end of a line should keep to ends of lines.
This means moving to the end of each line moved onto.")

(defvar goal-column nil "\
*Semipermanent goal column for vertical motion, as set by \\[set-goal-column], or nil.")

(defvar temporary-goal-column 0 "\
Current goal column for vertical motion.
It is the column where point was at the start of current run of vertical motion commands.")

(defun next-line-internal (arg) (byte-code "=	=?
lÂi!?*
!Z
VD!!!
S*
WZ! 
TEa	=k sr	!LJ" [last-command temporary-goal-column track-eol t selective-display arg goal-column nil next-line previous-line integerp forward-line 0 vertical-motion 1 forward-char -1 beginning-of-line end-of-line move-to-column] 10))

(defun set-goal-column (arg) "\
Set the current horizontal position as a goal for \\[next-line] and \\[previous-line].
Those commands will move to this position in the line moved to
rather than trying to keep the same horizontal position.
With a non-nil argument, clears out the goal column
so that \\[next-line] and \\[previous-line] resume vertical motion." (interactive "P") (byte-code "ˆ‰!i!	\"‡" [arg goal-column nil message "No goal column" substitute-command-keys "Goal column %d (use \\[set-goal-column] with an arg to unset it)"] 5))

(defun transpose-chars (arg) "\
Interchange characters around point, moving forward one character.
With prefix arg ARG, effect is to take character before point
and drag it forward past ARG other characters (backward if ARG negative).
If no argument and at end of line, the previous two chars are exchanged." (interactive "*P") (byte-code "?l!!\"" [arg nil forward-char -1 transpose-subr prefix-numeric-value] 5))

(defun transpose-words (arg) "\
Interchange words around point, leaving point at end of them.
With prefix arg ARG, effect is to take word before or around point
and drag it forward past ARG other words (backward if ARG negative).
If ARG is zero, the words around or after point and around or after mark
are interchanged." (interactive "*p") (byte-code "\"" [arg nil transpose-subr forward-word] 3))

(defun transpose-sexps (arg) "\
Like \\[transpose-words] but applies to sexps.
Does not work on a sexp that point is in the middle of
if it is a list or string." (interactive "*p") (byte-code "\"" [arg nil transpose-subr forward-sexp] 3))

(defun transpose-lines (arg) "\
Exchange current line and previous line, leaving point after both.
With argument ARG, takes previous line and moves it past ARG lines.
With argument 0, interchanges line point is in with line mark is in." (interactive "*p") (byte-code "\"" [arg nil transpose-subr (lambda (arg) (byte-code "U m !!" [arg 1 end-of-line newline forward-char forward-line] 5))] 3))

(defun transpose-subr (mover arg) (byte-code "U=
\"`
\"` b
\"`
\"` ) Vv
\"`
\"`
\"`
\"` bS>W
\"`
\"`
\"`
\"` Tw," [start1 end1 start2 end2 arg mover nil 0 funcall 1 -1 mark transpose-subr-1 exchange-point-and-mark] 20))

(defun transpose-subr-1 nil (byte-code "	^
]V
!
\"	\"	\"bc
W-
4
G
GZ\\bG!
c*" [end1 end2 start1 start2 word1 word2 error "Don't have two things to transpose" buffer-substring delete-region delete-char] 7))

(defconst comment-column 32 "\
*Column to indent right-margin comments to.
Setting this variable automatically makes it local to the current buffer.")

(make-variable-buffer-local (quote comment-column))

(defconst comment-start nil "\
*String to insert to start a new comment, or nil if no comment syntax defined.")

(defconst comment-start-skip nil "\
*Regexp to match the start of a comment plus everything up to its body.
If there are any \\(...\\) pairs, the comment delimiter text is held to begin
at the place matched by the close of the first pair.")

(defconst comment-end "" "\
*String to insert to end a new comment.
Should be an empty string if comments are terminated by end-of-line.")

(defconst comment-indent-hook (quote (lambda nil comment-column)) "\
Function to compute desired indentation for a comment
given the character number it starts at.")

(defun indent-for-comment nil "\
Indent this line's comment to comment column, or insert an empty comment." (interactive "*") (byte-code "Lj!?!} `)
	#E !8!bE!\"!\"`i!UZbe!`\"j
t
b
\"|cc)," [comment-start eolpos cpos indent begpos comment-start-skip comment-indent-hook nil comment-end beginning-of-line 1 error "No comment syntax defined" end-of-line re-search-forward move point-marker match-end skip-chars-backward " 	" match-beginning 0 "^ 	" funcall delete-region set-marker] 17))

(defun set-comment-column (arg) "\
Set the comment column based on point.
With no arg, set the comment column to the current column.
With just minus as arg, kill any comment on this line.
With any other arg, set comment column to indentation of the previous comment
 and then align or create a comment on this line at that column." (interactive "P") (byte-code "=!=5 
! 
!!bi\") =i\"" [arg nil comment-start-skip comment-column - kill-comment beginning-of-line re-search-backward re-search-forward match-beginning 0 message "Comment column set to %d" indent-for-comment] 11))

(defun kill-comment (arg) "\
Kill the comment on this line, if any.
With argument, kill comments on that many lines starting with this one." (interactive "P") (byte-code "ň 	! V@ `)
#.!b!`
\")	7!S)" [count arg eolpos comment-start-skip t nil barf-if-buffer-read-only prefix-numeric-value beginning-of-line 0 end-of-line re-search-forward match-beginning skip-chars-backward " 	" kill-region forward-line 1] 12))

(defun backward-word (arg) "\
Move backward until encountering the end of a word.
With argument, do this that many times.
In programs, it is faster to call forward-word with negative arg." (interactive "p") (byte-code "[!" [arg nil forward-word] 2))

(defun mark-word (arg) "\
Set mark arg words away from point." (interactive "p") (byte-code "Š!`)!" [arg nil push-mark forward-word] 3))

(defun kill-word (arg) "\
Kill characters forward until encountering the end of a word.
With argument, do this that many times." (interactive "*p") (byte-code "`!`\"" [arg nil kill-region forward-word] 4))

(defun backward-kill-word (arg) "\
Kill characters backward until encountering the end of a word.
With argument, do this that many times." (interactive "*p") (byte-code "[!" [arg nil kill-word] 2))

(defconst fill-prefix nil "\
*String for filling to insert at front of new line, or nil for none.
Setting this variable automatically makes it local to the current buffer.")

(make-variable-buffer-local (quote fill-prefix))

(defun do-auto-fill nil (byte-code "`
T!!n	#!`))bn?)@!`U)9 @b ))" [fill-point opoint fill-column t move-to-column skip-chars-backward "^ 	
" re-search-forward "[ 	]" " 	" indent-new-comment-line] 8))

(defconst comment-multi-line nil "\
*Non-nil means \\[indent-new-comment-line] should continue same comment
on new line, with no new terminator or starter.")

(defun indent-new-comment-line nil "\
Break line at point and indent, continuing comment if presently within one.
The body of the continued comment is indented under the previous comment line." (interactive "*") (byte-code "ˈ!`!`\"c
'`!
#)g!lJo?J `!
#)V!.
bi`!\"))	\"?	?!c!G\\ډl?ډc! !+

c *" [comcol comstart comment-start-skip opoint t win comment-column comment-start comment-end comment-multi-line fill-prefix nil skip-chars-backward " 	" delete-region skip-chars-forward 10 forward-line -1 re-search-forward match-beginning 0 beginning-of-line buffer-substring match-end equal "" forward-char 1 indent-for-comment delete-char indent-according-to-mode] 20))

(defun auto-fill-mode (arg) "\
Toggle auto-fill mode.
With arg, turn auto-fill mode on iff arg is positive.
In auto-fill mode, inserting a space at a column beyond  fill-column
automatically breaks the line at a previous space." (interactive "P") (byte-code "ˆ	??	!Vł‰ !" [auto-fill-hook arg nil prefix-numeric-value 0 do-auto-fill set-buffer-modified-p buffer-modified-p] 5))

(defun turn-on-auto-fill nil "\
Unconditionally turn on Auto Fill mode." (byte-code "!" [auto-fill-mode 1] 2))

(defun set-fill-column (arg) "\
Set fill-column to current column, or to argument if given.
fill-column's value is separate for each buffer." (interactive "P") (byte-code "ˆ	!	
i\"" [fill-column arg nil integerp message "fill-column set to %d"] 4))

(defun set-selective-display (arg) "\
Set selective-display to ARG; clear it if no arg.
When selective-display is a number > 0,
lines whose indentation is >= selective-display are not displayed.
selective-display's value is separate for each buffer." (interactive "P") (byte-code "È=!

!  !\"\"\"\"" [selective-display t arg nil error "selective-display already in use for marked lines" prefix-numeric-value set-window-start selected-window window-start princ "selective-display set to " prin1 "."] 11))

(defun overwrite-mode (arg) "\
Toggle overwrite mode.
With arg, turn overwrite mode on iff arg is positive.
In overwrite mode, printing characters typed in replace existing text
on a one-for-one basis, rather than pushing it to the right." (interactive "P") (byte-code "ˆ	??	!V !" [overwrite-mode arg nil prefix-numeric-value 0 set-buffer-modified-p buffer-modified-p] 4))

(defconst blink-matching-paren t "\
*Non-nil means show matching open-paren when close-paren is inserted.")

(defconst blink-matching-paren-distance 4000 "\
*If non-nil, is maximum distance to search for matching open-paren
when close-paren is inserted.")

(defun blink-matching-open nil "\
Move cursor momentarily to the beginning of the sexp before point." (byte-code "`eTV`Zf!\"`
+e`
Z]	\"̏)
R
f!\"R	Sf 
fH\"\"\"ZÉ

b m!
b׊!n?) `
T\"
!! `\"\"!
?!)+" [blink-matching-paren oldpos blinkpos nil mismatch blink-matching-paren-distance /= char-syntax 2 92 narrow-to-region (byte-code "	\"" [blinkpos oldpos scan-sexps -1] 3) ((error (byte-code "" [nil] 1))) 36 logand lsh syntax-table -8 255 pos-visible-in-window-p sit-for 1 message "Matches %s" skip-chars-backward " 	" buffer-substring beginning-of-line forward-char skip-chars-forward "
 	" end-of-line "Mismatched parentheses" "Unmatched parenthesis"] 22))

(setq blink-paren-hook (quote blink-matching-open))

(defun keyboard-quit nil "\
Signal a  quit  condition." (interactive) (byte-code "\"" [nil signal quit] 3))

(define-key global-map "" (quote keyboard-quit))

(defun set-variable (var val) "\
Set VARIABLE to VALUE.  VALUE is a Lisp object.
When using this interactively, supply a Lisp expression for VALUE.
If you want VALUE to be a string, you must surround it with doublequotes." (interactive (byte-code "!\"!D+" [var minibuffer-help-form myhelp read-variable "Set variable: " (funcall myhelp) (lambda nil (byte-code "Ð!!\"O!!%!J!)‘" [var print-length nil "*Help*" prin1 princ "
Documentation:
" documentation-property variable-documentation 1 boundp 20 "

Current value: "] 9)) eval-minibuffer format "Set %s to value: "] 6)) (byte-code "ĈL" [var minibuffer-help-form myhelp val nil] 2))

(put (quote narrow-to-region) (quote disabled) t)

(define-key ctl-x-map "n" (quote narrow-to-region))

(define-key ctl-x-map "w" (quote widen))

(define-key global-map "
" (quote newline-and-indent))

(define-key global-map "
" (quote newline))

(define-key global-map "" (quote open-line))

(define-key esc-map "" (quote split-line))

(define-key global-map "" (quote quoted-insert))

(define-key esc-map "^" (quote delete-indentation))

(define-key esc-map "\\" (quote delete-horizontal-space))

(define-key esc-map "m" (quote back-to-indentation))

(define-key ctl-x-map "" (quote delete-blank-lines))

(define-key esc-map " " (quote just-one-space))

(define-key esc-map "z" (quote zap-to-char))

(define-key esc-map "=" (quote count-lines-region))

(define-key ctl-x-map "=" (quote what-cursor-position))

(define-key esc-map "" (quote eval-expression))

(define-key ctl-x-map "" (quote repeat-complex-command))

(define-key ctl-x-map "u" (quote advertised-undo))

(define-key global-map "" (quote undo))

(define-key esc-map "!" (quote shell-command))

(define-key esc-map "|" (quote shell-command-on-region))

(define-key global-map "" (quote universal-argument))

(let ((i 48)) (while (<= i 57) (define-key esc-map (char-to-string i) (quote digit-argument)) (setq i (1+ i))))

(define-key esc-map "-" (quote negative-argument))

(define-key global-map "" (quote kill-line))

(define-key global-map "" (quote kill-region))

(define-key esc-map "w" (quote copy-region-as-kill))

(define-key esc-map "" (quote append-next-kill))

(define-key global-map "" (quote yank))

(define-key esc-map "y" (quote yank-pop))

(define-key ctl-x-map "a" (quote append-to-buffer))

(define-key global-map "" (quote set-mark-command))

(define-key ctl-x-map "" (quote exchange-point-and-mark))

(define-key global-map "" (quote next-line))

(define-key global-map "" (quote previous-line))

(define-key ctl-x-map "" (quote set-goal-column))

(define-key global-map "" (quote transpose-chars))

(define-key esc-map "t" (quote transpose-words))

(define-key esc-map "" (quote transpose-sexps))

(define-key ctl-x-map "" (quote transpose-lines))

(define-key esc-map ";" (quote indent-for-comment))

(define-key esc-map "j" (quote indent-new-comment-line))

(define-key esc-map "
" (quote indent-new-comment-line))

(define-key ctl-x-map ";" (quote set-comment-column))

(define-key ctl-x-map "f" (quote set-fill-column))

(define-key ctl-x-map "$" (quote set-selective-display))

(define-key esc-map "@" (quote mark-word))

(define-key esc-map "f" (quote forward-word))

(define-key esc-map "b" (quote backward-word))

(define-key esc-map "d" (quote kill-word))

(define-key esc-map "" (quote backward-kill-word))

(define-key esc-map "<" (quote beginning-of-buffer))

(define-key esc-map ">" (quote end-of-buffer))

(define-key ctl-x-map "h" (quote mark-whole-buffer))

(define-key esc-map "\\" (quote delete-horizontal-space))

(fset (quote mode-specific-command-prefix) (make-sparse-keymap))

(defconst mode-specific-map (symbol-function (quote mode-specific-command-prefix)) "\
Keymap for characters following C-c.")

(define-key global-map "" (quote mode-specific-command-prefix))