emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RE: always put Customizations in `custom-file', never in `user-init-file


From: Drew Adams
Subject: RE: always put Customizations in `custom-file', never in `user-init-file'
Date: Mon, 10 Dec 2007 14:08:23 -0800

> Be very careful.  In particular, the natural idea of migrating by
> loading the init file and using Custom to save its internal state to a
> custom-file caused no end of pain to users when it was implemented in
> XEmacs.  If there is any error in the init file, you can lose all
> customizations.

Why? And in what circumstance?

Do you mean an error that pre-exists in the init file or one that is
introduced during migration?

If the former, then why would anything be different after the migration?

If there is not already an error in the init file, then I guess you mean
that an error is introduced by substituting (load-file custom-file) for the
custom-set-* sexps in the init file. What kinds of errors were there? There
could be a disk write error, for instance, but I'm curious what kinds of
errors you are speaking of.

A copy should be made of the original init file, of course, so that in case
of error on next startup, the user can recuperate.

Another possibility would be to copy the Customization code from
`user-init-file' to `custom-file' and then comment-out that code in
`user-init-file' (instead of removing it altogether).

>  > Great. And I guess custom-file should be run after .emacs, since that
>  > makes it possible to chose another custom-file.

I am against that - see my separate response to Lennart.

> Experience in XEmacs showed that users often want to use information
> in the custom-file in their init files.  There were issues (maybe
> XEmacs-specific) with initial values for faces, too.  After the init
> file was run was too late.  It's easy enough to load the custom-file
> late for those users for whom that matters: don't use the default
> name.  Something like
>
> (defvar custom-file "custom.el")
> (defvar default-custom-file-loaded-p nil)
> (progn
>   (do-emacs-early-initializations)
>   (when (file-readable-p custom-file)
>     (load custom-file))
>   (load user-init-file)
>   (when (and (not default-custom-file-loaded-p)
>              (file-readable-p custom-file))
>     (load custom-file)))

Where is such code? I assume it's not in `user-init-file', since this code
loads `user-init-file'.

In any case, IIUYC, users should be able to do whatever they like in the new
situation also, because it would only load `custom-file' upon explicit
request, never automatically.

Users need to be able to control when Customizations get loaded. I, for
example, load `custom-file' last, at the end of my .emacs. Others load it
first. Still others load it somewhere in the middle. There should be no
automatic loading of `custom-file'.






reply via email to

[Prev in Thread] Current Thread [Next in Thread]