(Info-find-node-2): Set `Info-current-subfile' to nil
authorJuri Linkov <juri@jurta.org>
Sat, 5 Dec 2009 19:49:47 +0000 (19:49 +0000)
committerJuri Linkov <juri@jurta.org>
Sat, 5 Dec 2009 19:49:47 +0000 (19:49 +0000)
for virtual nodes.  (Bug#4147)
(Info-find-node-2): Set `Info-current-node-virtual' to nil
when moving from a virtual node.
(Info-mode-menu): Add `Info-virtual-index' to the menu.
(Info-mode): Add `Info-virtual-index' to the docstring.

lisp/ChangeLog
lisp/info.el

index 47b361a..59f6646 100644 (file)
@@ -1,3 +1,12 @@
+2009-12-05  Juri Linkov  <juri@jurta.org>
+
+       * info.el (Info-find-node-2): Set `Info-current-subfile' to nil
+       for virtual nodes.  (Bug#4147)
+       (Info-find-node-2): Set `Info-current-node-virtual' to nil
+       when moving from a virtual node.
+       (Info-mode-menu): Add `Info-virtual-index' to the menu.
+       (Info-mode): Add `Info-virtual-index' to the docstring.
+
 2009-12-05  Eric Ludlam  <zappo@gnu.org>
 
        * cedet/semantic/bovine/c.el (semantic-c-describe-environment):
index 7e03856..1bd82ef 100644 (file)
@@ -912,10 +912,12 @@ a case-insensitive match is tried."
        (cond
         ((functionp virtual-fun)
          (let ((filename (or filename Info-current-file)))
-           (setq buffer-file-name nil)
            (setq buffer-read-only nil)
+           (setq Info-current-file filename
+                 Info-current-subfile nil
+                 Info-current-file-completions nil
+                 buffer-file-name nil)
            (erase-buffer)
-           (setq Info-current-file filename)
            (Info-virtual-call virtual-fun filename nodename no-going-back)
            (set-marker Info-tag-table-marker nil)
            (setq buffer-read-only t)
@@ -928,8 +930,11 @@ a case-insensitive match is tried."
                    (equal Info-current-file filename))))
          ;; Switch files if necessary
          (let ((inhibit-read-only t))
-           (if (and Info-current-node-virtual (null filename))
-               (setq filename Info-current-file))
+           (when Info-current-node-virtual
+             ;; When moving from a virtual node.
+             (set (make-local-variable 'Info-current-node-virtual) nil)
+             (if (null filename)
+                 (setq filename Info-current-file)))
            (setq Info-current-file nil
                  Info-current-subfile nil
                  Info-current-file-completions nil
@@ -3650,6 +3655,8 @@ If FORK is non-nil, it is passed to `Info-goto-node'."
      :help "Look for a string in the index items"]
     ["Next Matching Item" Info-index-next :active Info-index-alternatives
      :help "Look for another occurrence of previous item"]
+    ["Lookup a string and display index of results..." Info-virtual-index
+     :help "Look for a string in the index items and display node with results"]
     ["Lookup a string in all indices..." info-apropos
      :help "Look for a string in the indices of all manuals"])
    ["Copy Node Name" Info-copy-current-node-name
@@ -3824,6 +3831,7 @@ Advanced commands:
 \\[isearch-forward], \\[isearch-forward-regexp]        Use Isearch to search through multiple Info nodes.
 \\[Info-index] Search for a topic in this manual's Index and go to index entry.
 \\[Info-index-next]    (comma) Move to the next match from a previous \\<Info-mode-map>\\[Info-index] command.
+\\[Info-virtual-index] Look for a string and display the index node with results.
 \\[info-apropos]       Look for a string in the indices of all manuals.
 \\[Info-goto-node]     Move to node specified by name.
          You may include a filename as well, as (FILENAME)NODENAME.