diff options
author | Andy Wingo <wingo@pobox.com> | 2012-01-23 11:13:12 +0100 |
---|---|---|
committer | Andy Wingo <wingo@pobox.com> | 2012-01-23 11:13:12 +0100 |
commit | 21ad60a1d29032ab5f2a9d798ced9d1a1a8420b2 (patch) | |
tree | b9b8b2cea036ba967720926795878b482775ae82 | |
parent | 73c080f9c07a8eed713c0e62bdbdce31ac5bbf86 (diff) | |
download | guile-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.texi | 9 | ||||
-rw-r--r-- | module/ice-9/boot-9.scm | 12 |
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)) |