diff options
Diffstat (limited to 'top-refs.scm')
| -rw-r--r-- | top-refs.scm | 48 | 
1 files changed, 26 insertions, 22 deletions
diff --git a/top-refs.scm b/top-refs.scm index 29e25dc..3647dc4 100644 --- a/top-refs.scm +++ b/top-refs.scm @@ -74,12 +74,13 @@  (define (top-refs:include filename)    (cond ((not (and (string? filename) (file-exists? filename)))  	 (top-refs:warn 'top-refs:include 'skipping filename)) -	(else (fluid-let ((*load-pathname* filename)) -		(call-with-input-file filename -		  (lambda (port) -		    (do ((exp (read port) (read port))) -			((eof-object? exp)) -		      (top-refs:top-level exp)))))))) +	(else (call-with-input-file filename +		(lambda (port) +		  (with-load-pathname filename +		    (lambda () +		      (do ((exp (read port) (read port))) +			  ((eof-object? exp)) +			(top-refs:top-level exp)))))))))  (define (top-refs:top-level exp)    (cond ((not (and (pair? exp) (list? exp))) @@ -238,7 +239,7 @@  ;;@dots{} (info) indexes of @1.  The identifiers have the case that  ;;the implementation's @code{read} uses for symbols.  Identifiers  ;;containing spaces (eg. @code{close-base on base-table}) are -;;@emph{not} included. +;;@emph{not} included.  #f is returned if the index is not found.  ;;  ;;Each info index is headed by a @samp{* Menu:} line.  To list the  ;;symbols in the first and third info indexes do: @@ -266,20 +267,23 @@  		(do ((line (read-line port) (read-line port)))  		    ((or (eof-object? line)  			 (not (and (> (string-length line) 5) -				   (string=? "* " (substring line 0 2))))) +				   (or (string=? "* " (substring line 0 2)) +				       (substring? "(line " line)))))  		     (loop (read-line port) (+ 1 iidx) (cdr ndxs))) -		  (let ((<n> (substring? " <" line))) -		    (define csi (or (and <n> -					 (> (string-length line) (+ 3 <n>)) -					 (string-index -					  "0123456789" -					  (string-ref line (+ 2 <n>))) -					 <n>) -				    (substring? ": " line))) -		    (and -		     csi -		     (let ((str (substring line 2 csi))) -		       (if (and (not (substring? " " str)) -				(not (memq (string-ci->symbol str) exports))) -			   (set! exports (cons (string-ci->symbol str) exports)))))))) +		  (and +		   (string=? "* " (substring line 0 2)) +		   (let ((<n> (substring? " <" line))) +		     (define csi (or (and <n> +					  (> (string-length line) (+ 3 <n>)) +					  (string-index +					   "0123456789" +					   (string-ref line (+ 2 <n>))) +					  <n>) +				     (substring? ": " line))) +		     (and +		      csi +		      (let ((str (substring line 2 csi))) +			(if (and (not (substring? " " str)) +				 (not (memq (string-ci->symbol str) exports))) +			    (set! exports (cons (string-ci->symbol str) exports)))))))))  	       (else (loop (read-line port) (+ 1 iidx) ndxs))))))))  | 
