# HG changeset patch # User Eli Zaretskii # Date 913816905 0 # Node ID 74c3c643e90cb600d1098535a3d8c1e270d6da7f # Parent 7d1efca4eadc5f8e0f75a3c00f9fb2684bc5dd34 (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. diff -r 7d1efca4eadc -r 74c3c643e90c lisp/info.el --- 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)))