summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndy Wingo <wingo@pobox.com>2012-01-23 11:13:12 +0100
committerAndy Wingo <wingo@pobox.com>2012-01-23 11:13:12 +0100
commit21ad60a1d29032ab5f2a9d798ced9d1a1a8420b2 (patch)
treeb9b8b2cea036ba967720926795878b482775ae82
parent73c080f9c07a8eed713c0e62bdbdce31ac5bbf86 (diff)
downloadguile-21ad60a1d29032ab5f2a9d798ced9d1a1a8420b2.tar.gz
current-filename canonicalizes path, remove add-to-path
* module/ice-9/boot-9.scm (current-filename): Canonicalize the path, so that the result is independent of the current directory, and so that `dirname' can traverse up the file system, as in the add-to-load-path example. (add-to-path): Remove. The eval-when semantics make this macro too tricky to explain -- people will start using it on other path-like things, in lexical contours, whereas it only really makes sense with load-like paths at the toplevel. * doc/ref/api-evaluation.texi (Loading): Fix link to load-with-path docs, and remove add-to-path docs.
-rw-r--r--doc/ref/api-evaluation.texi9
-rw-r--r--module/ice-9/boot-9.scm12
2 files changed, 5 insertions, 16 deletions
diff --git a/doc/ref/api-evaluation.texi b/doc/ref/api-evaluation.texi
index ed3b88cbb..ef3e602bb 100644
--- a/doc/ref/api-evaluation.texi
+++ b/doc/ref/api-evaluation.texi
@@ -781,7 +781,7 @@ change occurs at the right time.
A procedure to be called @code{(%load-hook @var{filename})} whenever a
file is loaded, or @code{#f} for no such call. @code{%load-hook} is
used by all of the loading functions (@code{load} and
-@code{primitive-load}, and @code{load-path} and
+@code{primitive-load}, and @code{load-from-path} and
@code{primitive-load-path} documented in the next section).
For example an application can set this to show what's loaded,
@@ -832,13 +832,6 @@ It's better to use @code{add-to-load-path} than to modify
@code{%load-path} directly, because @code{add-to-load-path} takes care
of modifying the path both at compile-time and at run-time.
-There is a more general version for use with other paths, like
-@code{%load-compiled-path}:
-
-@deffn {Scheme Syntax} add-to-path path dir
-Add @var{dir} to @var{path}.
-@end deffn
-
@deffn {Scheme Procedure} primitive-load-path filename [exception-on-not-found]
@deffnx {C Function} scm_primitive_load_path (filename)
Search @code{%load-path} for the file named @var{filename} and
diff --git a/module/ice-9/boot-9.scm b/module/ice-9/boot-9.scm
index 3e43b8ca0..2c87d13fb 100644
--- a/module/ice-9/boot-9.scm
+++ b/module/ice-9/boot-9.scm
@@ -521,8 +521,8 @@ If there is no handler at all, Guile prints an error and then exits."
"A macro that expands to the current filename: the filename that
the (current-filename) form appears in. Expands to #f if this
information is unavailable."
- (and=> (syntax-source x)
- (lambda (s) (assq-ref s 'filename)))))
+ (false-if-exception
+ (canonicalize-path (assq-ref (syntax-source x) 'filename)))))
(define-syntax-rule (define-once sym val)
(define sym
@@ -1402,14 +1402,10 @@ VALUE."
(start-stack 'load-stack
(primitive-load-path name)))
-(define-syntax-rule (add-to-path path elt)
- "Add ELT to PATH, at compile-time and at run-time."
- (eval-when (compile load eval)
- (set! path (cons elt path))))
-
(define-syntax-rule (add-to-load-path elt)
"Add ELT to Guile's load path, at compile-time and at run-time."
- (add-to-path %load-path elt))
+ (eval-when (compile load eval)
+ (set! %load-path (cons elt %load-path))))
(define %load-verbosely #f)
(define (assert-load-verbosity v) (set! %load-verbosely v))