(defun indent-according-to-mode nil "\
Indent line in proper way for current major mode." (interactive) (byte-code "!" [indent-line-function nil funcall] 2))

(defun indent-for-tab-command nil "\
Indent line in proper way for current major mode." (interactive) (byte-code "=
 !" [indent-line-function nil indent-to-left-margin insert-tab funcall] 3))

(defun insert-tab nil (byte-code " 	c
\"T\"j" [abbrev-mode indent-tabs-mode tab-width expand-abbrev 9 * /] 6))

(defun indent-rigidly (start end arg) "\
Indent all lines starting in the region sideways by ARG columns.
Called from a program, takes three arguments, START, END and ARG." (interactive "r
p") (byte-code "Ĉb 	bn!`W= `!`\"l4
\\]\")!\")" [end start indent arg nil point-marker forward-line 1 current-indentation delete-region skip-chars-forward " 	" indent-to 0 move-marker] 10))

(defun indent-to-left-margin nil (byte-code " U' `!`\"j`)`	W&	b)" [left-margin epos current-indentation nil beginning-of-line delete-region skip-chars-forward " 	"] 6))

(defvar indent-region-function nil "\
Function which is short cut to indent each line in region with Tab.
nil means really call Tab on each line.")

(defun indent-region (start end arg) "\
Indent each nonblank line in the region.
With no argument, indent each line with Tab.
With argument COLUMN, indent each line to that column.
Called from a program, takes three args: START, END and COLUMN." (interactive "r
P") (byte-code "ň?A		
bn&!`W8!!'\")!b 
bnZ!`Wz`!`\"lr\"![\")" [arg indent-region-function start end indent-line-function nil funcall point-marker forward-line 1 move-marker prefix-numeric-value delete-region skip-chars-forward " 	" indent-to 0] 16))

(defun indent-relative-maybe nil "\
Indent a new line like previous nonblank line." (interactive) (byte-code "!" [t nil indent-relative] 2))

(defun indent-relative (&optional unindented-ok) "\
Space out to under next indent point in previous nonblank line.
An indent point is a non-whitespace character following whitespace.
If the previous nonblank line has no indent points beyond
the column point starts at,  tab-to-tab-stop  is done instead." (interactive "P") (byte-code "È i #N!`)	!i	V.!!>>
z `!`\"
\"`Vpb\")| *" [abbrev-mode start-column indent nil t end unindented-ok opoint expand-abbrev beginning-of-line re-search-backward "^[^
]" forward-line 1 move-to-column backward-char looking-at "[ 	]" skip-chars-forward "^ 	" " 	" point-marker delete-region skip-chars-backward indent-to 0 move-marker tab-to-tab-stop] 16))

(defvar tab-stop-list (quote (8 16 24 32 40 48 56 64 72 80 88 96 104 112 120)) "\
*List of tab stop positions used by tab-to-tab-stops.")

(defvar edit-tab-stops-map nil "\
Keymap used in edit-tab-stops.")

(if edit-tab-stops-map nil (setq edit-tab-stops-map (make-sparse-keymap)) (define-key edit-tab-stops-map "" (quote edit-tab-stops-note-changes)) (define-key edit-tab-stops-map "" (quote edit-tab-stops-note-changes)))

(defvar edit-tab-stops-buffer nil "\
Buffer whose tab stops are being edited--in case
the variable tab-stop-list is local in that buffer.")

(defun edit-tab-stops nil "\
Edit the tab stops used by tab-to-tab-stop.
Creates a buffer *Tab Stops* containing text describing the tab stops.
A colon indicates a column where there is a tab stop.
You can add or remove colons and then do C-c C-c to make changes take effect." (interactive) (byte-code "Èp!!	!!É!ʼn @@\"cA')cWb\\ccTHcVzcSf)ceb" [edit-tab-stops-buffer edit-tab-stops-map indent-tabs-mode nil truncate-lines t tabs tab-stop-list count switch-to-buffer get-buffer-create "*Tab Stops*" use-local-map make-local-variable overwrite-mode 1 erase-buffer indent-to 0 58 10 8 48 "         " "0123456789" "
To install changes, type C-c C-c"] 10))

(defun edit-tab-stops-note-changes nil "\
Put edited tab stops into effect." (interactive) (byte-code "b #iB)p!!)!" [tabs nil t edit-tab-stops-buffer tab-stop-list 1 end-of-line search-backward ":" bury-buffer switch-to-buffer message "Tab stops installed"] 6))

(defun tab-to-tab-stop nil "\
Insert spaces or tabs to next defined tab-stop column.
The variable tab-stop-list is a list of columns at which there are tab stops.
Use \\[edit-tab-stops] to edit them interactively." (interactive) (byte-code "È 
	i	@Y	A	)	@j+c)" [abbrev-mode tabs tab-stop-list nil expand-abbrev 32] 4))

(define-key global-map "	" (quote indent-for-tab-command))

(define-key esc-map "" (quote indent-region))

(define-key ctl-x-map "	" (quote indent-rigidly))

(define-key esc-map "i" (quote tab-to-tab-stop))