all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
* default :initialize function
       [not found] <DNEMKBNJBGPAOPIJOOICKEJPCAAA.drew.adams@oracle.com>
@ 2004-10-12  0:29 ` Luc Teirlinck
  2004-10-12 15:11   ` Stefan Monnier
  2004-10-17  7:24   ` Richard Stallman
  0 siblings, 2 replies; 4+ messages in thread
From: Luc Teirlinck @ 2004-10-12  0:29 UTC (permalink / raw)
  Cc: rms, emacs-devel

Drew Adams wrote:

   If I understand right, you said that clicking the Convenience group loads
   fringe.el, which executes a defcustom for fringe-mode, which calls
   set-fringe-mode-1. That means that clicking a _navigational_ button in
   customize has the side effect of changing the default-frame-alist. Not good
   (if I understand right).

Yes, just _browsing_ Custom buffers _without customizing anything_ can
easily change Emacs' behavior and override user customizations made
outside of Custom.  The reason is that the default :initialize
function is now `custom-initialize-reset' and that function can be a
real bully.  If you want to customize a user option outside of Custom,
because you do not like the :set function, then that will be to no
avail.  Loading the file will call the :set function anyway whether
the user likes it or not.

I am actually surprised that the problem arises with `fringe-mode',
because that one _seemed_ harmless.  The problem definitely used to be
very bad with the old implementation of `ielm-prompt', where attempts
to customize it to a non read-only value in .emacs got overridden by
loading ielm, which made it read-only anyway by calling a :set
function.  That _particular_ problem is now gone, because I changed
the implementation.

I wonder why `custom-initialize-reset' is now the default :initialize
function.  It completely breaks what I believe to be two fundamental
principles of Emacs.

The first one is that just loading a file should only make functions
and variables available, not actually change Emacs' behavior by
_calling_ functions or changing variables.  In particular, using Custom
for browsing purposes should not change Emacs behavior and override
user customizations.

The second one is that use of Custom is optional, not mandatory.
Non-Custom customizations made by the user in his .emacs should not be
overridden by :set functions.

I believe the 21.3 default for :initialize, `custom-initialize-set',
should be restored.

Sincerely,

Luc.

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: default :initialize function
  2004-10-12  0:29 ` default :initialize function Luc Teirlinck
@ 2004-10-12 15:11   ` Stefan Monnier
  2004-10-12 15:54     ` Luc Teirlinck
  2004-10-17  7:24   ` Richard Stallman
  1 sibling, 1 reply; 4+ messages in thread
From: Stefan Monnier @ 2004-10-12 15:11 UTC (permalink / raw)
  Cc: rms, drew.adams, emacs-devel

> I wonder why `custom-initialize-reset' is now the default :initialize
> function.  It completely breaks what I believe to be two fundamental
> principles of Emacs.
[...]
> I believe the 21.3 default for :initialize, `custom-initialize-set',
> should be restored.

When was it changed?  Why?


        Stefan

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: default :initialize function
  2004-10-12 15:11   ` Stefan Monnier
@ 2004-10-12 15:54     ` Luc Teirlinck
  0 siblings, 0 replies; 4+ messages in thread
From: Luc Teirlinck @ 2004-10-12 15:54 UTC (permalink / raw)
  Cc: rms, drew.adams, emacs-devel

Stefan Monnier wrote:

   > I wonder why `custom-initialize-reset' is now the default :initialize
   > function.  It completely breaks what I believe to be two fundamental
   > principles of Emacs.
   [...]
   > I believe the 21.3 default for :initialize, `custom-initialize-set',
   > should be restored.

   When was it changed?  Why?

It is much older than I thought.  It already was the default in 21.3,
unlike what I said in the above quote.  I _thought_ it was relatively
recent, because that change only got documented in the Elisp manual
two years ago.

1997-08-25  Richard Stallman  <rms@psilocin.gnu.ai.mit.edu>

            * custom.el (custom-declare-variable): Use custom-initialize-reset
            by default, rather than custom-initialize-set.
            (custom-initialize-reset, custom-initialize-set): Doc fixes.

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: default :initialize function
  2004-10-12  0:29 ` default :initialize function Luc Teirlinck
  2004-10-12 15:11   ` Stefan Monnier
@ 2004-10-17  7:24   ` Richard Stallman
  1 sibling, 0 replies; 4+ messages in thread
From: Richard Stallman @ 2004-10-17  7:24 UTC (permalink / raw)
  Cc: drew.adams, emacs-devel

I made a fix that prevents loading of fringe.el from overriding
any explicit settings of fringe properties in default-frame-alist.
Instead detects that the properties have been specified there,
and updates the value of fringe-mode to match them.

This is not totally clean.  fringe-mode really ought, I think,
to apply only to frames in which nothing else has been done
to individually set their properties.  However, there is no
existing mechanism which is natural for that, and I don't
think this is worth the trouble to implement one.

If other such problems are encountered, a variant of this approach
should do the job.

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2004-10-17  7:24 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <DNEMKBNJBGPAOPIJOOICKEJPCAAA.drew.adams@oracle.com>
2004-10-12  0:29 ` default :initialize function Luc Teirlinck
2004-10-12 15:11   ` Stefan Monnier
2004-10-12 15:54     ` Luc Teirlinck
2004-10-17  7:24   ` Richard Stallman

Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.