Hi,

few comments from the peanut gallery.

I personally am unsure this needs to be configurable, but that is up to
others. ^_^

wreed <wr...@disroot.org> writes:

> Hello,
>
> The following patch to module/ice-9/boot-9.scm adds an optional
> GUILE_USER_INIT environment variable that allows users to specify an

While risking some bike shedding, what about `GUILE_INIT_FILE'?

> alternative location for their init file. When the variable is unset
> or the specified file doesn't exist, it falls back to the existing
> '~/.guile' behavior automatically.
>
> I also updated doc/guile.1 to reflect the addition.
>
> Since this touches documentation, I've requested copyright assignment
> forms as a precaution.
>
> Thanks.
>
> ---
>
> diff --git a/doc/guile.1 b/doc/guile.1
> index 77c8639..2c2e3d6 100644
> --- a/doc/guile.1
> +++ b/doc/guile.1
> @@ -212,6 +212,16 @@ Scheme files (.go files) when loading.
>  It should be a colon-separated list of directories,
>  which will be prefixed to the default
>  .B %load-compiled-path.
> +.TP
> +.B GUILE_USER_INIT
> +If
> +.RB $ GUILE_USER_INIT
> +is set before
> +.B guile
> +is started and points to a file,
> +its contents are executed before any other processing occurs.
> +If not net, the default is
> +.I ~/.guile
>  .
>  .SH FILES
>  .TP
> diff --git a/module/ice-9/boot-9.scm b/module/ice-9/boot-9.scm
> index aaa9987..3ff3377 100644
> --- a/module/ice-9/boot-9.scm
> +++ b/module/ice-9/boot-9.scm
> @@ -2200,12 +2200,16 @@ not already present.  This helps create file names."
>  ;; scm_compile_shell_switches.
>
>  (define (load-user-init)
> -  (let* ((home (or (getenv "HOME")
> -                   (false-if-exception (passwd:dir (getpwuid (getuid))))
> -                   file-name-separator-string))  ;; fallback for cygwin etc.
> -         (init-file (in-vicinity home ".guile")))
> -    (if (file-exists? init-file)
> -        (primitive-load init-file))))
> +  (let ((user-init-path (getenv "GUILE_USER_INIT")))
> +    (if (and user-init-path (file-exists? user-init-path))

I am unsure about ignoring the user's choice if the file does not exist,
should it not be an error instead?

> +      (begin (primitive-load user-init-path))

The begin does not seem necessary here.  Also I believe it should be
indented below the `(and' above, not just by two spaces.

> +      (begin
> +        (let* ((home (or (getenv "HOME")
> +                         (false-if-exception (passwd:dir (getpwuid 
> (getuid))))
> +                         file-name-separator-string)) ;; fallback for cygwin
> etc.
> +               (init-file (in-vicinity home ".guile")))
> +          (if (file-exists? init-file)
> +              (primitive-load init-file)))))))

-- 
There are only two hard things in Computer Science:
cache invalidation, naming things and off-by-one errors.

Reply via email to