;; GNU Emacs is free software; you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
-;; the Free Software Foundation; either version 2, or (at your option)
+;; the Free Software Foundation; either version 3, or (at your option)
;; any later version.
;; GNU Emacs is distributed in the hope that it will be useful,
:type 'boolean
:group 'info)
-(defcustom Info-fontify-maximum-menu-size 1000000
+(defcustom Info-fontify-maximum-menu-size 100000
"*Maximum size of menu to fontify if `font-lock-mode' is non-nil.
Set to nil to disable node fontification."
:type 'integer
(defvar Info-current-subfile nil
"Info subfile that is actually in the *info* buffer now.
-nil if current Info file is not split into subfiles.")
+It is 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.")
nil t)
(let* ((start (match-beginning 1))
(parameter-alist (Info-split-parameter-string (match-string 2)))
- (src (cdr (assoc-string "src" parameter-alist)))
- (image-file (if src (if (file-name-absolute-p src) src
- (concat default-directory src))
- ""))
- (image (if (file-exists-p image-file)
- (create-image image-file)
- "[broken image]")))
- (if (not (get-text-property start 'display))
- (add-text-properties
- start (point) `(display ,image rear-nonsticky (display)))))))
+ (src (cdr (assoc-string "src" parameter-alist))))
+ (if (display-images-p)
+ (let* ((image-file (if src (if (file-name-absolute-p src) src
+ (concat default-directory src))
+ ""))
+ (image (if (file-exists-p image-file)
+ (create-image image-file)
+ "[broken image]")))
+ (if (not (get-text-property start 'display))
+ (add-text-properties
+ start (point) `(display ,image rear-nonsticky (display)))))
+ ;; text-only display, show alternative text if provided, or
+ ;; otherwise a clue that there's meant to be a picture
+ (delete-region start (point))
+ (insert (or (cdr (assoc-string "text" parameter-alist))
+ (cdr (assoc-string "alt" parameter-alist))
+ (and src
+ (concat "[image:" src "]"))
+ "[image]"))))))
(set-buffer-modified-p nil)))
;; Texinfo 4.7 adds cookies of the form ^@^H[NAME CONTENTS ^@^H].
(defvar Info-mode-line-node-keymap
(let ((map (make-sparse-keymap)))
- (define-key map [mode-line mouse-1] 'Info-scroll-up)
- (define-key map [mode-line mouse-3] 'Info-scroll-down)
+ (define-key map [mode-line mouse-1] 'Info-mouse-scroll-up)
+ (define-key map [mode-line mouse-3] 'Info-mouse-scroll-down)
map)
"Keymap to put on the Info node name in the mode line.")
(t (Info-next-preorder)))
(scroll-up))))
+(defun Info-mouse-scroll-up (e)
+ "Scroll one screenful forward in Info, using the mouse.
+See `Info-scroll-up'."
+ (interactive "e")
+ (save-selected-window
+ (if (eventp e)
+ (select-window (posn-window (event-start e))))
+ (Info-scroll-up)))
+
(defun Info-scroll-down ()
"Scroll one screenful back in Info, considering all nodes as one sequence.
If point is within the menu of a node, and `Info-scroll-prefer-subnodes'
(Info-last-preorder)
(scroll-down))))
+(defun Info-mouse-scroll-down (e)
+ "Scroll one screenful backward in Info, using the mouse.
+See `Info-scroll-down'."
+ (interactive "e")
+ (save-selected-window
+ (if (eventp e)
+ (select-window (posn-window (event-start e))))
+ (Info-scroll-down)))
+
(defun Info-next-reference (&optional recur)
"Move cursor to the next cross-reference or menu item in the node."
(interactive)
(defvar info-tool-bar-map
(if (display-graphic-p)
(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-history-back "left-arrow" map Info-mode-map)
- (tool-bar-local-item-from-menu 'Info-history-forward "right-arrow" map Info-mode-map)
- (tool-bar-local-item-from-menu 'Info-prev "prev-node" map Info-mode-map)
- (tool-bar-local-item-from-menu 'Info-next "next-node" map Info-mode-map)
+ (tool-bar-local-item-from-menu 'Info-history-back "left-arrow" map Info-mode-map
+ :rtl "right-arrow")
+ (tool-bar-local-item-from-menu 'Info-history-forward "right-arrow" map Info-mode-map
+ :rtl "left-arrow")
+ (tool-bar-local-item-from-menu 'Info-prev "prev-node" map Info-mode-map
+ :rtl "next-node")
+ (tool-bar-local-item-from-menu 'Info-next "next-node" map Info-mode-map
+ :rtl "prev-node")
(tool-bar-local-item-from-menu 'Info-up "up-node" 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-goto-node "jump-to" map Info-mode-map)
(tool-bar-local-item-from-menu 'Info-index "index" map Info-mode-map)
(tool-bar-local-item-from-menu 'Info-search "search" map Info-mode-map)
+ (tool-bar-local-item-from-menu 'Info-exit "exit" map Info-mode-map)
map)))
(defvar Info-menu-last-node nil)
;; Fontify http and ftp references
(goto-char (point-min))
(when not-fontified-p
- (while (re-search-forward "[hf]t?tp://[^ \t\n\"`({<>})']+" nil t)
+ (while (re-search-forward "\\(https?\\|ftp\\)://[^ \t\n\"`({<>})']+" nil t)
(add-text-properties (match-beginning 0) (match-end 0)
'(font-lock-face info-xref
mouse-face highlight