all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: taylanbayirli@gmail.com (Taylan Ulrich Bayırlı/Kammer)
To: Stefan Monnier <monnier@IRO.UMontreal.CA>
Cc: Philipp Stephani <p.stephani2@gmail.com>,
	Artur Malabarba <bruce.connor.am@gmail.com>,
	emacs-devel <emacs-devel@gnu.org>
Subject: Re: Calling (package-initialize) sooner during initialization
Date: Mon, 20 Apr 2015 16:31:29 +0200	[thread overview]
Message-ID: <878udmj2gu.fsf@taylan.uni.cx> (raw)
In-Reply-To: <jwv7ft7m0y3.fsf-monnier+emacs@gnu.org> (Stefan Monnier's message of "Mon, 20 Apr 2015 08:42:58 -0400")

Stefan Monnier <monnier@IRO.UMontreal.CA> writes:

>> A user is likely to expect everything defined by a package to be
>> available during the execution of their init.el; the failure to meet
>> this expectation is why we get so many confused users asking for help,
>> receiving the answer "just put (package-initialize) at the top of your
>> .emacs".
>
> But the current code in Emacs's "master" solves this problem by adding
> "(package-initialize)" in the user's ~/.emacs.

I had not realized this is already implemented.

I generally feel uncomfortable about a tool automatically editing a file
that I assume to have control over, but maybe that's fine.

A concrete problem I can think of is when one has some settings for
package.el in their init file, then Emacs ends up putting
(package-initialize) at the top, when it should be after the package
related settings.  Is this not a problem?

Other than that, it simply feels wrong to "solve" the problem with a
trick like this as if initializing packages after init.el is the normal
case, when the normal case is that init.el assumes presence of installed
packages.  That is, behavior is broken by default, but gets auto-fixed
with a trick like this.  WTF?  It might be simple to implement, but
conceptually it's rather confusing.

One might argue it doesn't get conceptually any simpler because there's
simply one init.el and it's agnostic towards package.el, but that's both
wrong (packages are automatically initialized after loading init.el if
it hasn't been done there) and a sign of the package system being
crudely bolted on top of existing machinery.  That's stinky engineering.

I hope I'm not coming off as religious.

>> If nobody sees any disadvantages, and nobody beats me to it, I might
>> start working on implementing the solution that separates pre-package
>> configuration from normal configuration, including Customize.
>
> I don't really know what solution you're referring to.  But so far
> I haven't seen any solution proposed that's really better than
> what we already have.

Splitting pre-package-initialization configuration from normal
configuration.  (Here "configuration" refers to the user's init file as
well as Customize.)  Making Emacs init look like:

    1. pre-package-init.el, & Customize settings in it (or loading
       `package-custom-file')
       
    2. package-initialize
    
    3. init.el, & Customize settings in it (or loading `custom-file')

This entails extending Customize functionality to offer something like a
:pre-package-init flag which tells the system to write customization for
the relevant defcustom into `package-custom-file' (falling back to
pre-package-init.el) instead of `custom-file' (falling back to init.el).

Yes, this is a more involved solution, but it brings some structure into
Emacs initialization with regard to the role of the package system, and
its interaction with Customize.


By the way, I just noticed our support for default.el and site-start.el.
I guess said separation of pre- and post-package-init configuration
would be applied to those as well if we were being idealistic, though I
think it should be fine to leave that be and only load default.el and
site-start.el after package initialization.  Or can anyone think of
valid use-cases for a site admin to hook in some Elisp before users'
package initialization?

Taylan



  reply	other threads:[~2015-04-20 14:31 UTC|newest]

Thread overview: 104+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-04-18 12:25 Calling (package-initialize) sooner during initialization Taylan Ulrich Bayırlı/Kammer
2015-04-18 13:32 ` Artur Malabarba
2015-04-18 14:24   ` Nic Ferrier
2015-04-18 15:16     ` Taylan Ulrich Bayırlı/Kammer
2015-04-18 17:35       ` Artur Malabarba
2015-04-18 18:25         ` Nic Ferrier
2015-04-18 18:48           ` Artur Malabarba
2015-04-18 15:11   ` Taylan Ulrich Bayırlı/Kammer
2015-04-18 17:16   ` Stefan Monnier
2015-04-18 17:56     ` Dmitry Gutov
2015-04-18 18:16       ` Taylan Ulrich Bayırlı/Kammer
2015-04-18 18:32         ` Artur Malabarba
2015-04-19  0:24           ` Drew Adams
2015-04-19  0:38             ` Artur Malabarba
2015-04-18 18:24       ` Artur Malabarba
2015-04-18 18:32         ` Dmitry Gutov
2015-04-19  8:19           ` Artur Malabarba
2015-04-18 18:04     ` Taylan Ulrich Bayırlı/Kammer
2015-04-18 18:23       ` Artur Malabarba
2015-04-19  3:07       ` Stefan Monnier
2015-04-19  6:44       ` Philipp Stephani
2015-04-19  8:11         ` Artur Malabarba
2015-04-18 22:37     ` chad
2015-04-19  6:40     ` Philipp Stephani
2015-04-19  8:04       ` Artur Malabarba
2015-04-20  0:43         ` Stefan Monnier
2015-04-20  7:54           ` Taylan Ulrich Bayırlı/Kammer
2015-04-20 12:42             ` Stefan Monnier
2015-04-20 14:31               ` Taylan Ulrich Bayırlı/Kammer [this message]
2015-04-20 16:01                 ` Artur Malabarba
2015-04-20 17:29                   ` chad
2015-04-20 18:38                     ` Artur Malabarba
2015-04-20 19:40                       ` chad
2015-04-20 19:07                 ` Stefan Monnier
2015-04-20 15:19               ` Mark Oteiza
2015-04-27  9:52               ` Thierry Volpiatto
2015-04-27 11:03                 ` Taylan Ulrich Bayırlı/Kammer
2015-04-27 14:01                   ` Drew Adams
2015-04-27 12:32                 ` Artur Malabarba
2015-04-27 14:10                   ` Drew Adams
2015-04-27 14:15                     ` Artur Malabarba
2015-04-27 14:36                   ` Thierry Volpiatto
2015-04-27 12:46                 ` Stefan Monnier
2015-04-27 13:43                   ` Andy Moreton
2015-04-27 15:46                     ` Stefan Monnier
2015-04-28 10:11                       ` Artur Malabarba
2015-04-28  7:25                     ` Oleh Krehel
2015-04-28  7:39                       ` Artur Malabarba
2015-04-28  7:42                         ` Oleh Krehel
2015-04-28 14:54                           ` Wolfgang Jenkner
2015-04-28 16:46                             ` Drew Adams
2015-04-28 17:29                               ` Wolfgang Jenkner
2015-04-28 18:52                                 ` Artur Malabarba
2015-04-29  1:20                                   ` Stefan Monnier
2015-04-28 15:32                           ` raman
2015-04-29  8:25                           ` Thierry Volpiatto
2015-04-28 15:26                       ` raman
2015-04-27 14:13                   ` Drew Adams
2015-04-27 14:46                   ` Thierry Volpiatto
2015-04-27 15:15                     ` Artur Malabarba
2015-04-27 15:52                     ` Stefan Monnier
2015-04-28  0:30                       ` Stephen J. Turnbull
2015-04-29  8:01                       ` Thierry Volpiatto
2015-04-29 13:09                         ` Stefan Monnier
2015-04-28  0:25                     ` Stephen J. Turnbull
  -- strict thread matches above, loose matches on Subject: below --
2015-04-12 12:09 Jorgen Schäfer
2015-04-12 14:26 ` Artur Malabarba
2015-04-12 14:45   ` Jorgen Schäfer
2015-04-12 20:46     ` Stefan Monnier
2015-04-12 14:40 ` Aneesh Kumar K.V
2015-04-12 16:23   ` Artur Malabarba
2015-04-12 20:44 ` Stefan Monnier
2015-04-12 21:02   ` Jorgen Schäfer
2015-04-12 23:22     ` Stefan Monnier
2015-04-13 22:52       ` Artur Malabarba
2015-04-13 22:49     ` Artur Malabarba
2015-04-11 23:10 Vasilij Schneidermann
2015-04-12  1:00 ` Artur Malabarba
2015-04-12 16:46   ` Mark Oteiza
2015-04-12 19:43     ` Artur Malabarba
2015-04-12 20:05       ` Mark Oteiza
2015-04-12 20:28         ` Artur Malabarba
2015-04-12  3:56 ` Stefan Monnier
2015-04-12  9:58   ` Artur Malabarba
2015-04-12 12:02     ` Stefan Monnier
     [not found]   ` <20150412082125.GA490@odonien>
2015-04-12 10:07     ` Vasilij Schneidermann
2015-04-12 10:28       ` Artur Malabarba
2015-03-30 19:01 Artur Malabarba
2015-03-30 20:44 ` Stefan Monnier
2015-03-31 10:52   ` Artur Malabarba
2015-03-31 12:34     ` Stefan Monnier
2015-04-18 10:46   ` Ted Zlatanov
2015-03-31  8:53 ` Thierry Volpiatto
2015-03-31 10:55   ` Artur Malabarba
2015-03-31 12:29   ` Stefan Monnier
2015-03-31 12:48     ` Dmitry Gutov
2015-03-31 13:19     ` Thierry Volpiatto
2015-03-31 13:47       ` Thierry Volpiatto
2015-03-31 14:03         ` Thierry Volpiatto
2015-03-31 14:56           ` Artur Malabarba
2015-04-01  6:04             ` Thierry Volpiatto
2015-03-31 14:51 ` Sebastian Wiesner
2015-03-31 15:40   ` Artur Malabarba
2015-03-31 20:46   ` Stefan Monnier

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=878udmj2gu.fsf@taylan.uni.cx \
    --to=taylanbayirli@gmail.com \
    --cc=bruce.connor.am@gmail.com \
    --cc=emacs-devel@gnu.org \
    --cc=monnier@IRO.UMontreal.CA \
    --cc=p.stephani2@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.