changeset 23904:74c3c643e90c

(Info-find-node): Add 1 to the position read from the tag table. Don't fail if the node delimiter ^_ is the first character in the file. (Info-insert-dir): Don't fail when the node delimiter ^_ is the first character in the file. (Info-read-subfile): Likewise. (Info-select-node): Likewise. (Info-build-node-completions): Likewise.
author Eli Zaretskii <eliz@gnu.org>
date Wed, 16 Dec 1998 14:01:45 +0000
parents 7d1efca4eadc
children d36d3bab8291
files lisp/info.el
diffstat 1 files changed, 42 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/info.el	Wed Dec 16 06:41:52 1998 +0000
+++ b/lisp/info.el	Wed Dec 16 14:01:45 1998 +0000
@@ -474,7 +474,7 @@
                     (setq found-in-tag-table
                           (re-search-forward regexp nil t))
                     (if found-in-tag-table
-                        (setq guesspos (read (current-buffer))))
+                        (setq guesspos (1+ (read (current-buffer)))))
                     (setq found-mode major-mode))
 
                   ;; Indirect file among split files
@@ -502,6 +502,15 @@
                     ;; (or from beg of buffer)
                     ;; to find the actual node.
                     (catch 'foo
+		      (if (and (eq (point) (point-min))
+			       (looking-at "\^_")
+			       (= (forward-line 1) 0))
+			  (let ((beg (point)))
+			    (forward-line 1)
+			    (if (re-search-backward regexp beg t)
+				(progn
+				  (beginning-of-line)
+				  (throw 'foo t)))))
                       (while (search-forward "\n\^_" nil t)
                         (forward-line 1)
                         (let ((beg (point)))
@@ -517,6 +526,15 @@
 	      ;; Now search from our advised position (or from beg of buffer)
 	      ;; to find the actual node.
 	      (catch 'foo
+		(if (and (eq (point) (point-min))
+			 (looking-at "\^_")
+			 (= (forward-line 1) 0))
+		    (let ((beg (point)))
+		      (forward-line 1)
+		      (if (re-search-backward regexp beg t)
+			  (progn
+			    (beginning-of-line)
+			    (throw 'foo t)))))
 		(while (search-forward "\n\^_" nil t)
 		  (forward-line 1)
 		  (let ((beg (point)))
@@ -643,7 +661,9 @@
 	      (let (beg nodename end)
 		(forward-line 1)
 		(setq beg (point))
-		(search-backward "\n\^_")
+		(or (search-backward "\n\^_" nil 'move)
+		    (looking-at "\^_")
+		    (signal 'search-failed (list "\n\^_")))
 		(search-forward "Node: ")
 		(setq nodename (Info-following-node-name))
 		(search-forward "\n\^_" nil 'move)
@@ -682,7 +702,7 @@
 	(let ((nodename (car (car nodes))))
 	  (goto-char (point-min))
 	  ;; Find the like-named node in the main buffer.
-	  (if (re-search-forward (concat "\n\^_.*\n.*Node: "
+	  (if (re-search-forward (concat "^\^_.*\n.*Node: "
 					 (regexp-quote nodename)
 					 "[,\n\t]")
 				 nil t)
@@ -719,7 +739,8 @@
 	(save-excursion
 	  (set-buffer (marker-buffer Info-tag-table-marker))
 	  (goto-char (point-min))
-	  (search-forward "\n\^_")
+	  (or (looking-at "\^_")
+	      (search-forward "\n\^_"))
 	  (forward-line 2)
 	  (catch 'foo
 	    (while (not (looking-at "\^_"))
@@ -750,7 +771,9 @@
 	  (set-buffer-modified-p nil)
 	  (setq Info-current-subfile lastfilename)))
     (goto-char (point-min))
-    (search-forward "\n\^_")
+    (if (looking-at "\^_")
+	(forward-char 1)
+      (search-forward "\n\^_"))
     (if (numberp nodepos)
 	(+ (- nodepos lastfilepos) (point)))))
 
@@ -760,8 +783,11 @@
   (let ((case-fold-search t))
     (save-excursion
      ;; Find beginning of node.
-     (search-backward "\n\^_")
-     (forward-line 2)
+     (if (search-backward "\n\^_" nil 'move)
+	 (forward-line 2)
+       (if (looking-at "\^_")
+	   (forward-line 1)
+	 (signal 'search-failed (list "\n\^_"))))
      ;; Get nodename spelled as it is in the node.
      (re-search-forward "Node:[ \t]*")
      (setq Info-current-node
@@ -866,6 +892,15 @@
 				compl))))
 	      (widen)
 	      (goto-char (point-min))
+	      (if (and (looking-at "\^_")
+		       (= (forward-line 1) 0))
+		  (let ((beg (point)))
+		    (forward-line 1)
+		    (if (re-search-backward "Node: *\\([^,\n]*\\) *[,\n\t]"
+					    beg t)
+			(setq compl 
+			      (list (buffer-substring (match-beginning 1)
+						      (match-end 1)))))))
 	      (while (search-forward "\n\^_" nil t)
 		(forward-line 1)
 		(let ((beg (point)))