mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2024-11-23 07:19:15 +00:00
*** empty log message ***
This commit is contained in:
parent
bc93c09718
commit
aea2a8dafe
82
lisp/info.el
82
lisp/info.el
@ -30,10 +30,16 @@ Each element of list is a list (FILENAME NODENAME BUFFERPOS).")
|
||||
"Non-nil allows Info to execute Lisp code associated with nodes.
|
||||
The Lisp code is executed when the node is selected.")
|
||||
|
||||
(defvar Info-directory-list t
|
||||
(defvar Info-default-directory-list nil
|
||||
"List of default directories to search for Info documentation files.
|
||||
This value is used as the default for `Info-directory-list'. It is set
|
||||
in paths.el.")
|
||||
|
||||
(defvar Info-directory-list nil
|
||||
"List of directories to search for Info documentation files.
|
||||
t means not yet initialized. In this case, Info uses the environment
|
||||
variable INFODIR to initialize it.")
|
||||
nil means not yet initialized. In this case, Info uses the environment
|
||||
variable INFODIR to initialize it, or `Info-default-directory-list'
|
||||
if there is no INFODIR variable in the environment.")
|
||||
|
||||
(defvar Info-current-file nil
|
||||
"Info file that Info is now looking at, or nil.")
|
||||
@ -59,15 +65,19 @@ In interactive use, a prefix argument directs this command
|
||||
to read a file name from the minibuffer."
|
||||
(interactive (if current-prefix-arg
|
||||
(list (read-file-name "Info file name: " nil nil t))))
|
||||
(if (eq Info-directory-list t)
|
||||
(let ((path (getenv "INFOPATH"))
|
||||
list)
|
||||
(and path
|
||||
(while (> (length path) 0)
|
||||
(let ((idx (or (string-match ":" path) (length path))))
|
||||
(setq list (cons (substring path 0 idx) list)
|
||||
path (substring path (min (1+ idx) (length path)))))))
|
||||
(setq Info-directory-list (nreverse list))))
|
||||
(or Info-directory-list
|
||||
(setq Info-directory-list
|
||||
(let ((path (getenv "INFOPATH")))
|
||||
(if path
|
||||
(let ((list nil)
|
||||
idx)
|
||||
(while (> (length path) 0)
|
||||
(setq idx (or (string-match ":" path) (length path))
|
||||
list (cons (substring path 0 idx) list)
|
||||
path (substring path (min (1+ idx)
|
||||
(length path)))))
|
||||
(nreverse list))
|
||||
Info-default-directory-list))))
|
||||
(if file
|
||||
(Info-goto-node (concat "(" file ")"))
|
||||
(if (get-buffer "*info*")
|
||||
@ -299,6 +309,14 @@ to read a file name from the minibuffer."
|
||||
(Info-find-node (if (equal filename "") nil filename)
|
||||
(if (equal nodename "") "Top" nodename))))
|
||||
|
||||
(defun Info-restore-point (hl)
|
||||
"If this node has been visited, restore the point value when we left."
|
||||
(if hl
|
||||
(if (and (equal (nth 0 (car hl)) Info-current-file)
|
||||
(equal (nth 1 (car hl)) Info-current-node))
|
||||
(goto-char (nth 2 (car hl)))
|
||||
(Info-restore-point (cdr hl)))))
|
||||
|
||||
(defvar Info-last-search nil
|
||||
"Default regexp for \\<info-mode-map>\\[Info-search] command to search for.")
|
||||
|
||||
@ -407,7 +425,8 @@ to read a file name from the minibuffer."
|
||||
(defun Info-up ()
|
||||
"Go to the superior node of this node."
|
||||
(interactive)
|
||||
(Info-goto-node (Info-extract-pointer "up")))
|
||||
(Info-goto-node (Info-extract-pointer "up"))
|
||||
(Info-restore-point Info-history))
|
||||
|
||||
(defun Info-last ()
|
||||
"Go back to the last node visited."
|
||||
@ -536,9 +555,9 @@ Completion is allowed, and the menu item point is on is the default."
|
||||
default)
|
||||
"Menu item: ")
|
||||
completions nil t)))
|
||||
;; we rely on the bug (which RMS won't change for his own reasons)
|
||||
;; that ;; completing-read accepts an input of "" even when the
|
||||
;; require-match argument is true and "" is not a valid possibility
|
||||
;; we rely on the fact that completing-read accepts an input
|
||||
;; of "" even when the require-match argument is true and ""
|
||||
;; is not a valid possibility
|
||||
(if (string= item "")
|
||||
(if default
|
||||
(setq item default)
|
||||
@ -736,14 +755,14 @@ SIG optional fourth argument, controls action on no match
|
||||
(t
|
||||
(error "No %s around position %d" errorstring pos))))))
|
||||
|
||||
(defun Info-follow-nearest-node (event)
|
||||
(defun Info-follow-nearest-node (click)
|
||||
"\\<Info-mode-map>Follow a node reference near point. Like \\[Info-menu], \\Info-follow-reference], \\[Info-next], \\[Info-previous] or \\Info-up] command.
|
||||
At end of the node's text, moves to the next node."
|
||||
(interactive "@e")
|
||||
(let* ((relative-coordinates (coordinates-in-window-p (car event)
|
||||
(interactive "K")
|
||||
(let* ((relative-coordinates (coordinates-in-window-p (mouse-coords click)
|
||||
(selected-window)))
|
||||
(rel-x (car relative-coordinates))
|
||||
(rel-y (car (cdr relative-coordinates))))
|
||||
(rel-y (cdr relative-coordinates)))
|
||||
(move-to-window-line rel-y)
|
||||
(move-to-column rel-x))
|
||||
(let (node)
|
||||
@ -802,20 +821,8 @@ At end of the node's text, moves to the next node."
|
||||
(define-key Info-mode-map "q" 'Info-exit)
|
||||
(define-key Info-mode-map "s" 'Info-search)
|
||||
(define-key Info-mode-map "u" 'Info-up)
|
||||
(define-key Info-mode-map "\177" 'scroll-down))
|
||||
|
||||
(defvar Info-mode-mouse-map nil
|
||||
"Mouse map for use with Info mode.")
|
||||
|
||||
(if Info-mode-mouse-map
|
||||
nil
|
||||
(if (null (cdr global-mouse-map))
|
||||
nil
|
||||
(setq Info-mode-mouse-map (make-sparse-keymap))
|
||||
(define-key Info-mode-mouse-map mouse-button-middle
|
||||
'Info-follow-nearest-node)
|
||||
(define-key Info-mode-mouse-map mouse-button-left 'mouse-scroll-up-full)
|
||||
(define-key Info-mode-mouse-map mouse-button-right 'mouse-scroll-down-full)))
|
||||
(define-key Info-mode-map "\177" 'scroll-down)
|
||||
)
|
||||
|
||||
;; Info mode is suitable only for specially formatted data.
|
||||
(put 'info-mode 'mode-class 'special)
|
||||
@ -835,6 +842,7 @@ Selecting other nodes:
|
||||
\\[Info-up] Move \"up\" from this node.
|
||||
\\[Info-menu] Pick menu item specified by name (or abbreviation).
|
||||
Picking a menu item causes another node to be selected.
|
||||
\\[Info-directory] Go to the Info directory node.
|
||||
\\[Info-follow-reference] Follow a cross reference. Reads name of reference.
|
||||
\\[Info-last] Move to the last node you were at.
|
||||
|
||||
@ -842,11 +850,6 @@ Moving within a node:
|
||||
\\[scroll-up] scroll forward a full screen. \\[scroll-down] scroll backward.
|
||||
\\[beginning-of-buffer] Go to beginning of node.
|
||||
|
||||
Mouse commands:
|
||||
Middle Button Go to node mentioned in the text near where you click.
|
||||
Left Button Scroll forward a full screen.
|
||||
Right Button Scroll backward.
|
||||
|
||||
Advanced commands:
|
||||
\\[Info-exit] Quit Info: reselect previously selected buffer.
|
||||
\\[Info-edit] Edit contents of selected node.
|
||||
@ -864,7 +867,6 @@ Advanced commands:
|
||||
(setq local-abbrev-table text-mode-abbrev-table)
|
||||
(setq case-fold-search t)
|
||||
(setq buffer-read-only t)
|
||||
(setq buffer-mouse-map Info-mode-mouse-map)
|
||||
(make-local-variable 'Info-current-file)
|
||||
(make-local-variable 'Info-current-subfile)
|
||||
(make-local-variable 'Info-current-node)
|
||||
|
Loading…
Reference in New Issue
Block a user