(provide (quote info))

(defvar Info-history nil "\
List of info nodes user has visited.
Each element of list is a list (FILENAME NODENAME BUFFERPOS).")

(defvar Info-enable-edit nil "\
Non-nil means the \\[Info-edit] command in Info can edit the current node.")

(defvar Info-enable-active-nodes t "\
Non-nil allows Info to execute Lisp code associated with nodes.
The Lisp code is executed when the node is selected.")

(defvar Info-directory nil "\
Default directory for Info documentation files.")

(defvar Info-current-file nil "\
Info file that Info is now looking at, or nil.")

(defvar Info-current-subfile nil "\
Info subfile that is actually in the *info* buffer now,
or nil if current info file is not split into subfiles.")

(defvar Info-current-node nil "\
Name of node that Info is now looking at, or nil.")

(defvar Info-tag-table-marker (make-marker) "\
Marker pointing at beginning of current Info file's tag table.
Marker points nowhere if file has no tag table.")

(defun info nil "\
Enter Info, the documentation browser." (interactive) (byte-code "!! " [nil get-buffer "*info*" switch-to-buffer Info-directory] 4))

(defun Info-find-node (filename nodename &optional no-going-back) (byte-code "D!\"?
\"	!'	C!
\"	!<	C
\"\")K?W`E
B!=e  ȉ?\"	ȉ
\"db!\"#?!`!!)p!qˉ !
\")!)\" e
bQ#Qp!p!=?N@!X܁A\")eBZ]b)CD!EQFG)H )eb" [filename temp Info-directory Info-current-file no-going-back Info-history Info-current-node major-mode nil buffer-read-only Info-current-subfile t default-directory Info-tag-table-marker nodename pos buf case-fold-search buffer-file-name guesspos regexp hist substitute-in-file-name expand-file-name string-match "^\\./" file-exists-p downcase error "Info file %s does not exist" switch-to-buffer "*info*" Info-mode widen ((byte-code "	@A
8b)" [Info-current-node no-going-back hist Info-history t Info-find-node 0 1 2] 4)) equal erase-buffer insert-file-contents set-buffer-modified-p file-name-directory set-marker forward-line -8 "*" search-forward "
End tag table
" search-backward "
Tag table:
" 2 looking-at "(Indirect)
" get-buffer-create " *info tag table*" insert-buffer-substring match-end 0 file-name-sans-versions Info-set-mode-line marker-position marker-buffer "Node: " "" read get-buffer Info-read-subfile "No such node: \"%s\"" 1000 "Node: *" regexp-quote " *[,	
]" foo (byte-code "##!`!
#\")\"" [nil t beg regexp nodename search-forward "
" forward-line 1 re-search-backward throw foo error "No such node: %s"] 8) Info-select-node] 44))

(defun Info-read-subfile (nodepos) (byte-code "!qeb!!΍!q
)eb!	Z`\\*" [Info-tag-table-marker lastfilepos lastfilename Info-current-subfile buffer-read-only nil buffer-file-name nodepos marker-buffer search-forward "
" forward-line 2 foo (byte-code "!?=l?9`!`Z\"p!	V/\"
	+" [beg thisfilepos thisfilename nodepos t lastfilename lastfilepos looking-at "" nil search-forward ": " buffer-substring 2 read throw foo] 8) get-buffer "*info*" equal widen erase-buffer insert-file-contents set-buffer-modified-p] 12))

(defun Info-select-node nil (byte-code "!!!`!`\"  `#@`S!<!bp!Ad\"J	!))" [Info-current-node active-expression nil t Info-enable-active-nodes search-backward "
" forward-line 2 re-search-forward "Node:[ 	]*" buffer-substring skip-chars-forward "^,	
" Info-set-mode-line beginning-of-line narrow-to-region "
[]" looking-at "[
]*execute: " match-end 0 read eval] 16))

(defun Info-set-mode-line nil (byte-code "		!
R" [mode-line-buffer-identification Info-current-file Info-current-node "Info:  (" file-name-nondirectory "" ")"] 5))

(defun Info-goto-node (nodename) "\
Go to info node named NAME.  Give just NODENAME or (FILENAME)NODENAME." (interactive "sGoto node: ") (byte-code "È	\"!!Uɂ	!!O	!!O\"
O)	\"
O)\"YÂZ	\"eЂf	\")" [filename nodename trim nil string-match "\\s *\\((\\s *\\([^	)]*\\)\\s *)\\s *\\|\\)\\(.*\\)" match-beginning 1 match-end "" 2 3 "\\s *\\'" 0 Info-find-node equal "Top"] 15))

(defvar Info-last-search nil "\
Default regexp for Info S command to search for.")

(defun Info-search (regexp) "\
Search for REGEXP, starting from point, and select node it's found in." (interactive "sSearch (regexp): ") (byte-code "È\"	`
Q! m?!!\\bp!!!\"BB!Tbq!@@A)@A\"@@!Aeb#`É
	EB." [regexp Info-last-search found nil current onode Info-current-node ofile Info-current-file opoint osubfile Info-current-subfile list Info-tag-table-marker t Info-history equal "" widen re-search-forward err (byte-code "!`" [regexp found re-search-forward] 3) ((search-failed (byte-code "" [nil] 1))) ((byte-code "?	!	b " [found opoint Info-read-subfile Info-select-node] 3)) marker-buffer search-forward "

Indirect:" narrow-to-region "
" "
" ": " beginning-of-line "\\(^.*\\): [0-9]+$" match-end 1 2 read buffer-substring match-beginning 0 nreverse message "Searching subfile %s..." Info-read-subfile signal search-failed Info-select-node] 29))

(defun Info-extract-pointer (name &optional errorname) (byte-code "eb!P#!!P!!b )" [name nil t errorname forward-line 1 re-search-backward ":" error "Node has no " capitalize match-end 0 Info-following-node-name] 7))

(defun Info-following-node-name (&optional allowedchars) (byte-code "!`
Q!*P!!&!!`\"" [allowedchars skip-chars-forward " 	" buffer-substring looking-at "[" "^,	
" "]" "(" "^)" skip-chars-backward " "] 9))

(defun Info-next nil "\
Go to the next node of this node." (interactive) (byte-code "!!" [nil Info-goto-node Info-extract-pointer "next"] 3))

(defun Info-prev nil "\
Go to the previous node of this node." (interactive) (byte-code "\"!" [nil Info-goto-node Info-extract-pointer "prev[ious]*" "previous"] 4))

(defun Info-up nil "\
Go to the superior node of this node." (interactive) (byte-code "!!" [nil Info-goto-node Info-extract-pointer "up"] 3))

(defun Info-last nil "\
Go back to the last node visited." (interactive) (byte-code "Ĉ	!@@@A@@AA@A	
\"Ab+" [Info-history filename nodename opoint nil error "This is the first Info node you looked at" Info-find-node] 4))

(defun Info-directory nil "\
Go to the Info directory node." (interactive) (byte-code "\"" [nil Info-find-node "dir" "top"] 3))

(defun Info-follow-reference (footnotename) "\
Follow cross reference named NAME to the node it refers to.
NAME may be an abbreviation of the reference name." (interactive (byte-code "eb#O!`S\"ˉ#CO!OQT\"B
B)
$Cb!," [completion-ignore-case t completions str i nil re-search-forward "\\*note[ 
	]*\\([^:]*\\):" buffer-substring match-beginning 1 0 string-match "[ 
	]+" " " match-end completing-read "Follow reference named: " error "No cross-references in this node"] 12)) (byte-code "ňP#0OTOQ\\eb#B\"!\\b!)#xO!OQ\\R!," [completion-ignore-case t completions str i nil target beg footnotename "\\*note " string-match " " 0 "[ 	
]+" 6 re-search-forward error "No cross-reference named %s" match-beginning 5 Info-extract-menu-node-name "Bad format cross reference" match-end 1 Info-goto-node] 13))

(defun Info-extract-menu-node-name (&optional errmessage) (byte-code "!`!!! `S\"'!!	
I*	+" [beg str i skip-chars-forward " 	
" nil "^:" forward-char 1 looking-at ":" buffer-substring Info-following-node-name "^.,	
" string-match "
" 32] 12))

(defun Info-menu-item-sequence (list) (byte-code "@!A" [list Info-menu-item] 4))

(defun Info-menu (menu-item) "\
Go to node for menu item named (or abbreviated) NAME." (interactive (byte-code "`eb#?!#Z	?=0W1!=XE@@!!\"!BB	?ppWp `Xx@@)?		\"$)\"		‰}C)," [completions default nil p last t item completion-ignore-case search-forward "
* menu:" error "No menu in this node" re-search-forward "
\\* \\([^:	
]*\\):" match-beginning 0 buffer-substring 1 match-end end-of-line completing-read format "Menu item (default %s): " "Menu item: " string= ""] 16)) (byte-code "ˆ!!" [completions default nil p last t item completion-ignore-case menu-item Info-goto-node Info-extract-menu-item] 3))

(defun Info-extract-menu-item (menu-item) (byte-code "eb#!
P#(! ! )" [nil t menu-item search-forward "
* menu:" error "No menu in this node" "
* " ":" "No such item in menu" beginning-of-line forward-char 2 Info-extract-menu-node-name] 9))

(defun Info-extract-menu-counting (count) (byte-code "eb#!
$! )" [nil t count search-forward "
* menu:" error "No menu in this node" "
* " "Too few items in menu" Info-extract-menu-node-name] 7))

(defun Info-first-menu-item nil "\
Go to the node of the first menu item." (interactive) (byte-code "!!" [nil Info-goto-node Info-extract-menu-counting 1] 3))

(defun Info-second-menu-item nil "\
Go to the node of the second menu item." (interactive) (byte-code "!!" [nil Info-goto-node Info-extract-menu-counting 2] 3))

(defun Info-third-menu-item nil "\
Go to the node of the third menu item." (interactive) (byte-code "!!" [nil Info-goto-node Info-extract-menu-counting 3] 3))

(defun Info-fourth-menu-item nil "\
Go to the node of the fourth menu item." (interactive) (byte-code "!!" [nil Info-goto-node Info-extract-menu-counting 4] 3))

(defun Info-fifth-menu-item nil "\
Go to the node of the fifth menu item." (interactive) (byte-code "!!" [nil Info-goto-node Info-extract-menu-counting 5] 3))

(defun Info-exit nil "\
Exit Info by selecting some other buffer." (interactive) (byte-code "p!p!!" [nil switch-to-buffer other-buffer bury-buffer] 5))

(defun Info-undefined nil "\
Make command be undefined in Info." (interactive) (byte-code " " [nil ding] 2))

(defun Info-help nil "\
Enter the Info tutorial." (interactive) (byte-code " Wł\"" [nil Info-find-node "info" window-height 23 "Help-Small-Screen" "Help"] 5))

(defun Info-summary nil "\
Display a brief summary of all Info commands." (interactive) (byte-code "Èċ" [ch flag unread-command-char nil ((byte-code "! !cebd!?	#˂$!r\"7Â8	A *" [ch flag unread-command-char nil switch-to-buffer "*Help*" erase-buffer documentation Info-mode pos-visible-in-window-p message "Type Space to see more" "Type Space to return to Info" /= 32 scroll-up] 9))] 1))

(defvar Info-mode-map nil "\
Keymap containing Info commands.")

(if Info-mode-map nil (setq Info-mode-map (make-keymap)) (suppress-keymap Info-mode-map) (define-key Info-mode-map "." (quote beginning-of-buffer)) (define-key Info-mode-map " " (quote scroll-up)) (define-key Info-mode-map "1" (quote Info-first-menu-item)) (define-key Info-mode-map "2" (quote Info-second-menu-item)) (define-key Info-mode-map "3" (quote Info-third-menu-item)) (define-key Info-mode-map "4" (quote Info-fourth-menu-item)) (define-key Info-mode-map "5" (quote Info-fifth-menu-item)) (define-key Info-mode-map "6" (quote undefined)) (define-key Info-mode-map "7" (quote undefined)) (define-key Info-mode-map "8" (quote undefined)) (define-key Info-mode-map "9" (quote undefined)) (define-key Info-mode-map "0" (quote undefined)) (define-key Info-mode-map "?" (quote Info-summary)) (define-key Info-mode-map "b" (quote beginning-of-buffer)) (define-key Info-mode-map "d" (quote Info-directory)) (define-key Info-mode-map "e" (quote Info-edit)) (define-key Info-mode-map "f" (quote Info-follow-reference)) (define-key Info-mode-map "g" (quote Info-goto-node)) (define-key Info-mode-map "h" (quote Info-help)) (define-key Info-mode-map "l" (quote Info-last)) (define-key Info-mode-map "m" (quote Info-menu)) (define-key Info-mode-map "n" (quote Info-next)) (define-key Info-mode-map "p" (quote Info-prev)) (define-key Info-mode-map "q" (quote Info-exit)) (define-key Info-mode-map "s" (quote Info-search)) (define-key Info-mode-map "u" (quote Info-up)) (define-key Info-mode-map "" (quote scroll-down)))

(defun Info-mode nil "\
Info mode provides commands for browsing through the Info documentation tree.
Documentation in Info is divided into \"nodes\", each of which
discusses one topic and contains references to other nodes
which discuss related topics.  Info has commands to follow
the references and show you other nodes.

h	Invoke the Info tutorial.

Selecting other nodes:
n	Move to the \"next\" node of this node.
p	Move to the \"previous\" node of this node.
u	Move \"up\" from this node.
m	Pick menu item specified by name (or abbreviation).
	Picking a menu item causes another node to be selected.
f	Follow a cross reference.  Reads name of reference.
l	Move to the last node you were at.

Moving within a node:
Space	scroll forward a page.     DEL  scroll backward.
b	Go to beginning of node.

Advanced commands:
q	Quit Info: reselect previously selected buffer.
e	Edit contents of selected node.
1	Pick first item in node's menu.
2, 3, 4, 5   Pick second ... fifth item in node's menu.
g	Move to node specified by name.
	You may include a filename as well, as (FILENAME)NODENAME.
s	Search through this Info file for specified regexp,
	and select the node in which the next occurrence is found." (byte-code " ʉˉ
ljlj!!!!! " [major-mode mode-name Info-mode-map text-mode-syntax-table local-abbrev-table text-mode-abbrev-table case-fold-search t buffer-read-only kill-all-local-variables Info-mode "Info" use-local-map set-syntax-table make-local-variable Info-current-file Info-current-subfile Info-current-node Info-tag-table-marker Info-history Info-set-mode-line] 10))

(defvar Info-edit-map nil "\
Local keymap used within `e' command of Info.")

(if Info-edit-map nil (setq Info-edit-map (copy-keymap text-mode-map)) (define-key Info-edit-map "" (quote Info-cease-edit)))

(defun Info-edit-mode nil (byte-code "" ["Major mode for editing the contents of an Info node.
Like text mode with the addition of Info-cease-edit
which returns to Info mode for browsing.
\\{Info-edit-map}"] 1))

(defun Info-edit nil "\
Edit the contents of this Info node.
Allowed only if variable Info-enable-edit is non-nil." (interactive) (byte-code "ň	!	!ɉʉ!ʼn !!!" [Info-enable-edit Info-edit-map major-mode mode-name buffer-read-only nil error "Editing info nodes is not enabled" use-local-map Info-edit-mode "Info Edit" kill-local-variable mode-line-buffer-identification set-buffer-modified-p buffer-modified-p message substitute-command-keys "Editing: Type \\[Info-cease-edit] to return to info"] 8))

(defun Info-cease-edit nil "\
Finish editing Info node; switch back to Info proper." (interactive) (byte-code "ƈ ! !͉̉ ĉ !
!6 6!" [Info-mode-map major-mode mode-name buffer-read-only t Info-tag-table-marker nil buffer-modified-p y-or-n-p "Save the file? " save-buffer use-local-map Info-mode "Info" Info-set-mode-line set-buffer-modified-p marker-position message "Tags may have changed.  Use Info-tagify if necessary"] 11))