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

problem with emacs configuration scripts



Many package place emacs configuration scripts in
/etc/emacs/site-start.d (and the emacs-version specific directories
too).

Some of these packages specify the scripts they add as conffiles.  I
believe this is incorrect; it causes a problem when the package is
removed.

Specifically, because the files are conffiles, they are not removed
when the package is removed, and so the files stay around to continue
to affect the behavior of emacs.  This happened to me with the user-de
and user-es packages, which I installed long ago, and long ago
removed.  But the scripts they install have a bug on current emacs20,
and because the scripts are conffiles, they didn't get deleted.

I think we should specify that programs should not install conffiles
which change the behavior of different packages, because it has this
problem: deleting the package causes the other program to still have
its behavior changed.  It should not be necessary to purge in this
circumstance; apt doesn't even support purge.

That leaves open the question: what if the reason for a conffile (that
a user or sysadmin needs to modify it) applies to such a file?  In
that case, the thing to modify should go in a separate file, marked a
conffile, and the other-package-behavior-modifying part should go in
the normal place, not as a conffile, but contain a callout to the new
separate conffile.

To spell out: suppose we have a script 20frob.el in the frob package.
This is a file that changes the behavior of the emacs20 package, and
so under my proposal it would not be allowed to be a conffile.  But it
happens that 20frob.el needs to be a conffile, because it contains the
following line, that sysadmins often need to change:
  (setq default-frobnication-host "localhost")

My proposal is that the frob package install *two* files.  The
20frob.el file would not be a conffile and would not contain that
line, but would instead say 
  (load-file "/usr/share/frob/emacs-frob-config.el")

The /usr/share/frob/emacs-frob-config.el file *would* be a conffile,
and would contain
  (setq default-frobnication-host "localhost")

Now, if the user deletes the frob package, the right thing happens:
any customizations to the default-frobnication-host are preserved
across the removal, but once the package is removed it stops affecting
the behavior of emacs.

Thomas



Reply to: