:group 'info)
(defface info-node
- '((((class color) (background light)) (:foreground "brown" :bold t :italic t))
- (((class color) (background dark)) (:foreground "white" :bold t :italic t))
- (t (:bold t :italic t)))
+ '((((class color) (background light)) (:foreground "brown" :weight bold :slant italic))
+ (((class color) (background dark)) (:foreground "white" :weight bold :slant italic))
+ (t (:weight bold :slant italic)))
"Face for Info node names."
:group 'info)
:group 'info)
(defface info-xref
- '((((class color) (background light)) (:foreground "magenta4" :bold t))
- (((class color) (background dark)) (:foreground "cyan" :bold t))
- (t (:bold t)))
+ '((((class color) (background light)) (:foreground "magenta4" :weight bold))
+ (((class color) (background dark)) (:foreground "cyan" :weight bold))
+ (t (:weight bold)))
"Face for Info cross-references."
:group 'info)
(if Info-fontify (Info-fontify-node))
(if Info-use-header-line
(Info-setup-header-line)
- (setq Info-header-line nil))
+ (setq Info-header-line nil)
+ (setq header-line-format nil)) ; so the header line isn't displayed
(run-hooks 'Info-selection-hook)))))
(defun Info-set-mode-line ()
(defvar Info-complete-cache nil)
(defun Info-complete-menu-item (string predicate action)
+ ;; This uses two dynamically bound variables:
+ ;; - `Info-complete-menu-buffer' which contains the buffer in which
+ ;; is the menu of items we're trying to complete.
+ ;; - `Info-complete-next-re' which, if non-nil, indicates that we should
+ ;; also look for menu items in subsequent nodes as long as those
+ ;; nodes' names match `Info-complete-next-re'. This feature is currently
+ ;; only used for completion in Info-index.
(save-excursion
(set-buffer Info-complete-menu-buffer)
(let ((completion-ignore-case t)
(defvar info-tool-bar-map
(if (display-graphic-p)
- (let ((tool-bar-map (make-sparse-keymap)))
- (tool-bar-add-item-from-menu 'Info-exit "close" Info-mode-map)
- (tool-bar-add-item-from-menu 'Info-prev "left_arrow" Info-mode-map)
- (tool-bar-add-item-from-menu 'Info-next "right_arrow" Info-mode-map)
- (tool-bar-add-item-from-menu 'Info-up "up_arrow" Info-mode-map)
- (tool-bar-add-item-from-menu 'Info-last "undo" Info-mode-map)
- (tool-bar-add-item-from-menu 'Info-top-node "home" Info-mode-map)
- (tool-bar-add-item-from-menu 'Info-index "index" Info-mode-map)
- (tool-bar-add-item-from-menu 'Info-goto-node "jump_to" Info-mode-map)
- (tool-bar-add-item-from-menu 'Info-search "search" Info-mode-map)
- tool-bar-map)))
+ (let ((map (make-sparse-keymap)))
+ (tool-bar-local-item-from-menu 'Info-exit "close" map Info-mode-map)
+ (tool-bar-local-item-from-menu 'Info-prev "left_arrow" map Info-mode-map)
+ (tool-bar-local-item-from-menu 'Info-next "right_arrow" map Info-mode-map)
+ (tool-bar-local-item-from-menu 'Info-up "up_arrow" map Info-mode-map)
+ (tool-bar-local-item-from-menu 'Info-last "undo" map Info-mode-map)
+ (tool-bar-local-item-from-menu 'Info-top-node "home" map Info-mode-map)
+ (tool-bar-local-item-from-menu 'Info-index "index" map Info-mode-map)
+ (tool-bar-local-item-from-menu 'Info-goto-node "jump_to" map Info-mode-map)
+ (tool-bar-local-item-from-menu 'Info-search "search" map Info-mode-map)
+ map)))
(defvar Info-menu-last-node nil)
;; Last node the menu was created for.
\\[Info-prev] Move to the \"previous\" node of this node.
\\[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.
+ 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.
Moving within a node:
\\[Info-scroll-up] Normally, scroll forward a full screen.
-Once you scroll far enough in a node that its menu appears on the screen
-but after point, the next scroll moves into its first subnode.
-When after all menu items (or if their is no menu), move up to
-the parent node.
+ Once you scroll far enough in a node that its menu appears on the
+ screen but after point, the next scroll moves into its first
+ subnode. When after all menu items (or if there is no menu),
+ move up to the parent node.
\\[Info-scroll-down] Normally, scroll backward. If the beginning of the buffer is
-already visible, try to go to the previous menu entry, or up if there is none.
+ already visible, try to go to the previous menu entry, or up
+ if there is none.
\\[beginning-of-buffer] Go to beginning of node.
Advanced commands:
1 Pick first item in node's menu.
2, 3, 4, 5 Pick second ... fifth item in node's menu.
\\[Info-goto-node] Move to node specified by name.
- You may include a filename as well, as (FILENAME)NODENAME.
+ You may include a filename as well, as (FILENAME)NODENAME.
\\[universal-argument] \\[info] Move to new Info file with completion.
\\[Info-search] Search through this Info file for specified regexp,
- and select the node in which the next occurrence is found.
+ and select the node in which the next occurrence is found.
\\[Info-next-reference] Move cursor to next cross-reference or menu item.
\\[Info-prev-reference] Move cursor to previous cross-reference or menu item."
(kill-all-local-variables)
;; Only fontify the node if it hasn't already been done. [We pass in
;; LIMIT arg to `next-property-change' because it seems to search past
;; (point-max).]
- (unless (< (next-property-change (point-min) nil (point-max))
- (point-max))
+ (unless (and (< (next-property-change (point-min) nil (point-max))
+ (point-max))
+ ;; But do put the text properties if the local-map property
+ ;; is inconsistent with Info-use-header-line's value.
+ (eq
+ (= (next-single-property-change
+ (point-min) 'local-map nil (point-max))
+ (point-max))
+ (null Info-use-header-line)))
(save-excursion
(let ((buffer-read-only nil)
(case-fold-search t))
(if (string-equal tag "Node")
(put-text-property nbeg nend 'face 'info-header-node)
(put-text-property nbeg nend 'face 'info-header-xref)
- (put-text-property nbeg nend 'mouse-face 'highlight)
+ (put-text-property tbeg nend 'mouse-face 'highlight)
(put-text-property tbeg nend
'help-echo
(concat "Go to node "
(buffer-substring nbeg nend)))
- (let ((fun (cdr (assoc tag '(("Prev" . Info-prev)
- ("Next" . Info-next)
- ("Up" . Info-up))))))
- (when fun
- (let ((keymap (make-sparse-keymap)))
- (define-key keymap [header-line down-mouse-1] fun)
- (define-key keymap [header-line down-mouse-2] fun)
- (put-text-property tbeg nend 'local-map keymap))))
- ))))
+ ;; Don't bind mouse events on the header line if we
+ ;; aren't going to display the header line.
+ (when Info-use-header-line
+ (let ((fun (cdr (assoc tag '(("Prev" . Info-prev)
+ ("Next" . Info-next)
+ ("Up" . Info-up))))))
+ (when fun
+ (let ((keymap (make-sparse-keymap)))
+ (define-key keymap [header-line mouse-1] fun)
+ (define-key keymap [header-line mouse-2] fun)
+ (put-text-property tbeg nend 'local-map keymap)))))
+ (if (not Info-use-header-line)
+ ;; In case they switched Info-use-header-line off
+ ;; in the middle of an Info session, some text
+ ;; properties may have been left lying around from
+ ;; past visits of this node. Remove them.
+ (remove-text-properties tbeg nend '(local-map nil)))
+ ))))
(goto-char (point-min))
(while (re-search-forward "\n\\([^ \t\n].+\\)\n\\(\\*+\\|=+\\|-+\\|\\.+\\)$"
nil t)
;; frame types at once. We want this text to be invisible
;; on frames that can display the font above.
(when (memq (framep (selected-frame)) '(x pc w32 mac))
- (add-text-properties (match-end 1) (match-end 2)
- '(invisible t intangible t))
- (add-text-properties (1- (match-end 1)) (match-end 2)
- '(intangible t))))
+ (add-text-properties (match-beginning 2) (1+ (match-end 2))
+ '(invisible t intangible t))))
(goto-char (point-min))
(while (re-search-forward "\\*Note[ \n\t]+\\([^:]*\\):" nil t)
(if (= (char-after (1- (match-beginning 0))) ?\") ; hack