4.3BSD/usr/contrib/emacs/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	S5!6)" [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 " !o?!``S\" \"" [arg nil beginning-of-line forward-line 1 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'!!?)U 	<!=ˆ`
#P!`Qe\"Vˆ\\	? !`
#y `zd\")*" [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 mode, like Tab." (interactive "*") (byte-code "`!`\"c " [nil delete-region skip-chars-backward " 	" 10 indent-according-to-mode] 4))

(defun reindent-then-newline-and-indent nil "\
Reindent the current line according to mode (like Tab), then insert
a newline, and indent the new line indent according to mode." (interactive "*") (byte-code "`!`\" )c " [nil delete-region skip-chars-backward " 	" indent-according-to-mode 10] 5))

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

(defun kill-backward-chars (arg) (byte-code "<@
=É``Z\"" [arg nil - -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?=hU/i!
iZ
Oc!)0Ĉ!S))	\"" [count arg col killp nil 0 9 forward-char -1 "        " delete-char 1 delete-backward-char] 6))

(defun zap-to-char (arg char) "\
Kill up to (but not incl) 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.
Avoid use in Lisp programs!
(goto-char (point-min)) is faster and does not set the mark." (interactive "P") (byte-code "  !\"\\\"eb%!&" [arg nil push-mark / 10 * buffer-size prefix-numeric-value forward-line 1] 8))

(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.
Avoid use in Lisp programs!
(goto-char (point-max)) is faster and does not set the mark." (interactive "P") (byte-code "  T !\"\"Zdb'!(" [arg nil push-mark buffer-size / * prefix-numeric-value 10 forward-line 1] 9))

(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>  x=%d %s" "point=%d of %d(%d%%)  x=%d %s" "Char: %s (0%o)  point=%d of %d(%d%%) <%d - %d>  x=%d %s" single-key-description "Char: %s (0%o)  point=%d of %d(%d%%)  x=%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 (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 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 "È	ZW!!ĉ1
GSV1!!
GS S
8!ceb" [arg n command-history nil 1 message "No following item in command history" sit-for 2 "No preceeding item command history" erase-buffer prin1-to-string] 8))

(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.
Reads ARG using the minibuffer." (interactive (byte-code "
!
!C" [current-prefix-arg prefix-numeric-value read-minibuffer "Goto line: "] 3)) (byte-code "ˆ b	S!)" [current-prefix-arg 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 "È!= !Ɖ
!" [last-command this-command arg nil message "Undo!" undo undo-start undo-more 1] 5))

(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 "Lj3

`aW
 
&
/	/ )}!		q )	p=PщQLj
	&	q V)y	!\"|!)" [flag swap interactive start end shell-file-name t nil command buffer 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)"] 14))

(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	[ˆ	='
(ˆU=[
r)YGXh	!U	V\"Z\\
r>rC	!	\"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 "!" [arg nil digit-argument] 2))

(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; before a newline, kill the 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 "`!!`VZk>m,	\"-!:!< `\"" [arg nil kill-region prefix-numeric-value 0 1 10 signal end-of-buffer looking-at "[ 	]*$" forward-line end-of-line] 8))

(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 "ˆ	\"	\"" [beg end nil copy-region-as-kill delete-region] 4))

(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\"0	
\"BGV/S\"
\"0ňȉ" [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 "‰" [this-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 "ň=?!ňƉ`aW`a\"!`s@c
2 3)" [last-command this-command before arg kill-ring-yank-pointer nil yank error "Previous command was not a yank" delete-region rotate-yank-pointer exchange-point-and-mark] 5))

(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))

(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." (interactive "P") (byte-code "a?!ab  " [arg nil error "No mark set in this buffer" pop-mark push-mark] 4))

(defun push-mark (&optional location) "\
Set mark at location (point, by default) and push old mark on mark ring." (byte-code "a?	. !	B	G
V-
	\"@\"
S	\"\".4`s?A!B" [nil mark-ring mark-ring-max location executing-macro copy-marker mark-marker move-marker nthcdr setcdr message "Mark set"] 8))

(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\"@\\s@	\"a?% &A/" [mark-ring nil nconc copy-marker mark-marker 0 move-marker ding] 7))

(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 "a	?!`s	b)" [nil omark error "No mark set in this buffer"] 2))

(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." (interactive "p") (byte-code "ˆU/`k	`U	Sf=?(	bc	Tb+!)2!
" [arg tem nil 1 10 line-move] 3))

(defun previous-line (arg) "\
Move cursor vertically up 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.

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." (interactive "p") (byte-code "[!	" [arg nil line-move] 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 line-move (arg) (byte-code "=	=?
lɂi ƈ!?.!^VH!!!S.W^! TI
e	!" [last-command temporary-goal-column track-eol selective-display arg goal-column nil next-line previous-line 9999 integerp forward-line 0 vertical-motion 1 forward-char -1 beginning-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?
\"`
\"`ab
\"`
\"` ) @ƈVy
\"`
\"`
\"`
\"` bSAW
\"`
\"`
\"`
\"` Tz," [start1 end1 start2 end2 arg mover nil 0 funcall 1 -1 transpose-subr-1 exchange-point-and-mark] 19))

(defun transpose-subr-1 nil (byte-code "	
\"
\"
\"bc	W	&	GGZ\\bG!c*" [word1 start1 end1 word2 start2 end2 buffer-substring delete-region delete-char] 6))

(defconst comment-column 32 "*Column to indent right-margin comments to.")

(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.")

(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 "ƈ!?!V `)	#0 !b1ƈ
! j
M
b
\"Ucc)+" [comment-start eolpos cpos indent 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 dot-marker match-beginning 0 funcall delete-horizontal-space set-marker] 11))

(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 "ň 	!VH ` 
#0!b!`
\"1))	>!?ňS	)" [count arg eolpos comment-start-skip t nil barf-if-buffer-read-only prefix-numeric-value 0 end-of-line beginning-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 auto-fill to insert at front of new line, or nil for none.")

(defun do-auto-fill nil (byte-code "`	T!!n
#Ȉ!n?)* +))" [opoint fill-column t move-to-column skip-chars-backward "^ 	
" re-search-forward "[ 	]" nil " 	" indent-new-comment-line] 6))

(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." (interactive "*") (byte-code "ʈ!c`!`\"
'`!
#)>!bi`!\"?)	z\"?z?p!c!z
G\\؉l?؉ʈc! !+		c *" [comcol comstart comment-start opoint comment-start-skip t comment-column comment-end comment-multi-line fill-prefix nil skip-chars-backward " 	" 10 delete-region skip-chars-forward forward-line -1 re-search-forward match-beginning 0 buffer-substring match-end equal "" forward-char 1 indent-for-comment delete-char indent-according-to-mode] 16))

(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ʼn??#" [auto-fill-hook arg nil prefix-numeric-value 0 do-auto-fill set-minor-mode auto-fill-mode "Fill"] 5))

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

(defun set-minor-mode (function-symbol pretty-string on-state) "\
Set status of minor mode, for mode-line display.
FUNCTION-SYMBOL is the function that turns the mode on or off.
PRETTY-STRING is a string to show in the mode line.
ON-STATE is t if mode should be on, nil if it should be off.
Returns ON-STATE." (byte-code "	
\"
\")%
	BC\"&Lj !" [tem function-symbol minor-modes on-state pretty-string assq delq nil append set-buffer-modified-p buffer-modified-p] 6))

(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-minor-mode "Overwrite"] 5))

(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]	\"/È͏)
U
f!\"U 
fH\"\"\"`aÈ

b t!
b؊!n?) `
T\"
!! `\"\"!
?!)+" [blink-matching-paren oldpos blinkpos nil mismatch blink-matching-paren-distance last-input-char /= 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 127 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))

(defvar help-map (make-sparse-keymap) "Keymap for characters following the Help key.")

(define-key global-map "" (quote help-command))

(fset (quote help-command) help-map)

(define-key help-map "" (quote help-for-help))

(define-key help-map "?" (quote help-for-help))

(define-key help-map "" (quote describe-copying))

(define-key help-map "" (quote describe-distribution))

(define-key help-map "" (quote describe-no-warranty))

(define-key help-map "a" (quote command-apropos))

(define-key help-map "b" (quote describe-bindings))

(define-key help-map "c" (quote describe-key-briefly))

(define-key help-map "k" (quote describe-key))

(define-key help-map "d" (quote describe-function))

(define-key help-map "f" (quote describe-function))

(define-key help-map "i" (quote info))

(define-key help-map "l" (quote view-lossage))

(define-key help-map "m" (quote describe-mode))

(define-key help-map "" (quote view-emacs-news))

(define-key help-map "n" (quote view-emacs-news))

(define-key help-map "s" (quote describe-syntax))

(define-key help-map "t" (quote help-with-tutorial))

(define-key help-map "w" (quote where-is))

(define-key help-map "v" (quote describe-variable))

(defun help-with-tutorial nil "\
Select the Emacs learn-by-doing tutorial." (interactive) (byte-code "Ĉ! !!!X!!!
\"!eb! ` `\" !e`\"#!eb!)" [file buffer-file-name default-directory auto-save-file-name nil exec-directory expand-file-name "~/TUTORIAL" delete-other-windows get-file-buffer switch-to-buffer create-file-buffer "~/" insert-file-contents "TUTORIAL" search-forward "
<<" beginning-of-line delete-region end-of-line newline - window-height selected-window count-lines 6 set-buffer-modified-p] 22))

(defun describe-key-briefly (key) "\
Print the name of the function KEY invokes.  KEY is a string." (interactive "kDescribe key briefly: ") (byte-code "ˆ	!?!	!\",	!9(+!#)" [defn key nil key-binding integerp message "%s is undefined" key-description "%s runs the command %s" prin1-to-string] 10))

(defun describe-key (key) "\
Display documentation of the function KEY invokes.  KEY is a string." (interactive "kDescribe key: ") (byte-code "ˆ	!?!	!\"6Ȑ!!!2!!5!)" [defn key nil key-binding integerp message "%s is undefined" key-description "*Help*" prin1 princ ":
" documentation "not documented"] 12))

(defun describe-mode nil "\
Display documentation of current major mode." (interactive) (byte-code "ˆÐ!!	!!" [mode-name major-mode nil "*Help*" princ " Mode:
" documentation] 6))

(defun describe-distribution nil "\
Display info on how to obtain the latest version of GNU Emacs." (interactive) (byte-code "\"!" [exec-directory nil find-file-read-only expand-file-name "DISTRIB"] 4))

(defun describe-copying nil "\
Display info on how you may redistribute copies of GNU Emacs." (interactive) (byte-code "\"!eb" [exec-directory nil find-file-read-only expand-file-name "COPYING"] 4))

(defun describe-no-warranty nil "\
Display info on all the kinds of warranty Emacs does NOT have." (interactive) (byte-code " !!)" [case-fold-search nil describe-copying search-forward "NO WARRANTY" recenter 0] 4))

(defun view-emacs-news nil "\
Display info on recent changes to Emacs." (interactive) (byte-code "\"!" [exec-directory nil find-file-read-only expand-file-name "NEWS"] 4))

(defun view-lossage nil "\
Display last 100 input keystrokes." (interactive) (byte-code " !!!q !m?*	# )" [nil t "*Help*" princ key-description recent-keys get-buffer beginning-of-buffer move-to-column 50 search-forward " " newline] 11))

(defun help-for-help nil "\
You have typed C-h, the help character.  Type a Help option:

A  command-apropos.   Give a substring, and see a list of commands
              (functions interactively callable) that contain
	      that substring.  See also the  apropos  command.
B  describe-bindings.  Display table of all key bindings.
C  describe-key-briefly.  Type a command key sequence;
	      it prints the function name that sequence runs.
F  describe-function.  Type a function name and get documentation of it.
I  info. The  info  documentation reader.
K  describe-key.  Type a command key sequence;
	      it displays the full documentation.
L  view-lossage.  Shows last 100 characters you typed.
M  describe-mode.  Print documentation of current major mode,
	      which describes the commands peculiar to it.
N  view-emacs-news.  Shows emacs news file.
S  describe-syntax.  Display contents of syntax table, plus explanations
T  help-with-tutorial.  Select the Emacs learn-by-doing tutorial.
V  describe-variable.  Type name of a variable;
	      it displays the variable's documentation and value.
W  where-is.  Type command name; it prints which keystrokes
	      invoke that command.
C-c print Emacs copying permission (General Public License).
C-d print Emacs ordering information.
C-n print news of recent Emacs changes.
C-w print information on absence of warrantee for GNU Emacs." (interactive) (byte-code "È!rUUȋÈ!
A\"A	.	!0 ))" [char defn help-map nil message "A B C F I K L M N S T V W C-c C-d C-n C-w or C-h for more help: " 8 63 ((byte-code "! !ceb>:>  !Ɉ>- .Ɉ!r" [char switch-to-buffer "*Help*" erase-buffer documentation help-for-help (8 63 22 32 127 246) (22 32) scroll-up nil (127 246) scroll-down message "A B C F I K L M N S T V W C-c C-d C-n C-w or Space to scroll: "] 9)) assq downcase call-interactively ding] 6))

(defun function-called-at-point nil (byte-code "Ï" [nil obj (byte-code "e`Z]d\"!!p!9'!')))" [obj narrow-to-region 1000 backward-up-list 1 forward-char nil read fboundp] 6) ((error (byte-code "" [nil] 1)))] 3))

(defun describe-function (function) "\
Display the full documentation of FUNCTION (a symbol)." (interactive (byte-code " 
\"
$\"&)!C+" [fn enable-recursive-minibuffers t val obarray function-called-at-point nil completing-read format "Describe function (default %s): " "Describe function: " fboundp equal "" intern] 7)) (byte-code "ƈǐ
!!
!
!!!" [fn enable-recursive-minibuffers t val obarray function nil "*Help*" prin1 princ ":
" documentation "not documented"] 8))

(defun variable-at-point nil (byte-code "!!Ǐ9!))" [obj nil forward-sexp -1 skip-chars-forward "'" (byte-code "p!" [obj read] 3) ((error (byte-code "" [nil] 1))) boundp] 5))

(defun describe-variable (variable) "\
Display the full documentation of VARIABLE (a symbol)." (interactive (byte-code " 
\"
$\"&)!C+" [v enable-recursive-minibuffers t val obarray variable-at-point nil completing-read format "Describe variable (default %s): " "Describe variable: " boundp equal "" intern] 7)) (byte-code "ƈǐ
!!
!?!
J!  ! 
N;
N!!>!" [v enable-recursive-minibuffers t val obarray variable nil "*Help*" prin1 princ "'s value is " boundp "void." terpri "Documentation:" variable-documentation substitute-command-keys "not documented as a variable."] 14))

(defun command-apropos (string) "\
Like apropos but lists only symbols that are names of commands
(interactively callable functions)." (interactive "sCommand apropos (regexp): ") (byte-code "\"" [string nil apropos commandp] 3))

(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 type doublequotes." (interactive (byte-code "!\"!D+" [var minibuffer-help-form myhelp nil print-length read-variable "Set variable: " (funcall myhelp) (lambda nil (byte-code "Ð!!NO!!'!J!)(ˆ
" [var print-length nil "*Help*" prin1 princ "
Documentation:
" variable-documentation 1 boundp 20 "

Current value: "] 8)) eval-minibuffer format "Set %s to value: "] 6)) (byte-code "È
L" [var minibuffer-help-form myhelp nil print-length val] 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))

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