]> code.delx.au - gnu-emacs/blobdiff - lisp/info.el
(info-tool-bar-map): Use "exit" for Info-exit. Move to the right.
[gnu-emacs] / lisp / info.el
index dc08557e28d437e99551910451936ad4348dba9e..5713d1b23aa56aee2b576d4427ba07a54596372e 100644 (file)
@@ -1,7 +1,7 @@
 ;;; info.el --- info package for Emacs
 
 ;; Copyright (C) 1985, 1986, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-;;   2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+;;   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
 
 ;; Maintainer: FSF
 ;; Keywords: help
@@ -145,8 +145,9 @@ The Lisp code is executed when the node is selected.")
   :type 'boolean
   :group 'info)
 
-(defcustom Info-fontify-maximum-menu-size 100000
-  "*Maximum size of menu to fontify if `font-lock-mode' is non-nil."
+(defcustom Info-fontify-maximum-menu-size 1000000
+  "*Maximum size of menu to fontify if `font-lock-mode' is non-nil.
+Set to nil to disable node fontification."
   :type 'integer
   :group 'info)
 
@@ -463,12 +464,12 @@ Do the right thing if the file has been compressed or zipped."
                     (expand-file-name "info/" installation-directory)
                   (if invocation-directory
                       (let ((infodir (expand-file-name
-                                      "../info/"
+                                      "../share/info/"
                                       invocation-directory)))
                         (if (file-exists-p infodir)
                             infodir
                           (setq infodir (expand-file-name
-                                         "../../../info/"
+                                         "../../../share/info/"
                                          invocation-directory))
                           (and (file-exists-p infodir)
                                infodir))))))
@@ -1314,16 +1315,25 @@ any double quotes or backslashes must be escaped (\\\",\\\\)."
              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].
@@ -1551,6 +1561,8 @@ PATH-AND-SUFFIXES is a pair of lists, (DIRECTORIES . SUFFIXES)."
            (node-regexp "Node: *\\([^,\n]*\\) *[,\n\t]"))
        (save-excursion
          (save-restriction
+           (or Info-tag-table-marker
+               (error "No Info tags found"))
            (if (marker-buffer Info-tag-table-marker)
                (let ((marker Info-tag-table-marker))
                  (set-buffer (marker-buffer marker))
@@ -2792,7 +2804,8 @@ Use the \\<Info-mode-map>\\[Info-index-next] command to see the other matches.
 Give an empty topic name to go to the Index node itself."
   (interactive
    (list
-    (let ((Info-complete-menu-buffer (clone-buffer))
+    (let ((completion-ignore-case t)
+         (Info-complete-menu-buffer (clone-buffer))
          (Info-complete-nodes (Info-index-nodes))
          (Info-history-list nil))
       (if (equal Info-current-file "dir")
@@ -2804,6 +2817,11 @@ Give an empty topic name to go to the Index node itself."
        (kill-buffer Info-complete-menu-buffer)))))
   (if (equal Info-current-file "dir")
       (error "The Info directory node has no index; use m to select a manual"))
+  ;; Strip leading colon in topic; index format does not allow them.
+  (if (and (stringp topic)
+          (> (length topic) 0)
+          (= (aref topic 0) ?:))
+      (setq topic (substring topic 1)))
   (let ((orignode Info-current-node)
        (pattern (format "\n\\* +\\([^\n]*%s[^\n]*\\):[ \t]+\\([^\n]*\\)\\.\\(?:[ \t\n]*(line +\\([0-9]+\\))\\)?"
                         (regexp-quote topic)))
@@ -3226,7 +3244,6 @@ If FORK is non-nil, it i spassed to `Info-goto-node'."
 (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)
@@ -3236,6 +3253,7 @@ If FORK is non-nil, it i spassed to `Info-goto-node'."
        (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)
@@ -3697,6 +3715,7 @@ the variable `Info-file-list-for-emacs'."
            (fontify-visited-p ; visited nodes need to be re-fontified
             (and Info-fontify-visited-nodes
                  ;; Don't take time to refontify visited nodes in huge nodes
+                Info-fontify-maximum-menu-size
                  (< (- (point-max) (point-min)) Info-fontify-maximum-menu-size)))
            rbeg rend)
 
@@ -3931,8 +3950,8 @@ the variable `Info-file-list-for-emacs'."
       (goto-char (point-min))
       (when (and (or not-fontified-p fontify-visited-p)
                  (search-forward "\n* Menu:" nil t)
-                 (not (Info-index-node))
                  ;; Don't take time to annotate huge menus
+                Info-fontify-maximum-menu-size
                  (< (- (point-max) (point)) Info-fontify-maximum-menu-size))
         (let ((n 0)
               cont)
@@ -3989,7 +4008,9 @@ the variable `Info-file-list-for-emacs'."
                                    (setq res (car hl) hl nil)
                                  (setq hl (cdr hl))))
                               res))) 'info-xref-visited 'info-xref)))
-             (when (and not-fontified-p (memq Info-hide-note-references '(t hide)))
+             (when (and not-fontified-p
+                        (memq Info-hide-note-references '(t hide))
+                        (not (Info-index-node)))
                (put-text-property (match-beginning 2) (1- (match-end 6))
                                   'invisible t)
                ;; Unhide the file name in parens