all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Nikolay Kudryavtsev <nikolay.kudryavtsev@gmail.com>
To: Psionic K <psionik@positron.solutions>, help-gnu-emacs@gnu.org
Subject: Re: Strategies for Composable Modular Configuration?
Date: Wed, 22 Nov 2023 15:58:55 +0300	[thread overview]
Message-ID: <60ada9d4-8036-41d8-bdbf-012b8f5b2747@gmail.com> (raw)
In-Reply-To: <CADQMGARAW=DKqgLpgKsRkpj+irzCbwwsnFTQGYKC4g6NrMCPqA@mail.gmail.com>

This topic gets discussed here and there sometimes.

I think the first issue is configuration discoverability. You can run 
someone's init for org and see that you're having a much better 
experience, because of settings A,B,C. But there may also be setting D 
that you don't need. Setting E that actually makes it worse for you. 
Then for you there's actually an even better value for setting B.

Then there's the learning curve problem. Emacs already has quite a 
curve, but any third party configurations almost double it, because you 
now have multiple behavior providers - a thing may be a part of core 
Emacs functionality and the default. While some other thing is provided 
by a third party package X, bundled in your starter kit. Then there's 
the starter kit configuration layers on top of it.

Now onto your questions:

2. Considering your minibuffer package zoo example, I've been thinking 
that something akin to protocols from Clojure would work for this case 
as that extra layer of indirection that can solve those kinds of 
problems. Clojure protocols are its basic are a set of function hooks 
unified under one name. So, for example I decide to use the flight sim 
rudder pedals in my Emacs configuration. Obviously I want them to 
iterate over items. So lets say Emacs had 
item-iteration-binding-protocol. Which has next-item and previous-item 
hooks. Then every minibuffer completion package can implement that and I 
just need to bind my pedals to that next and previous item bindings for 
it to work everywhere. Very obviously this is the best case scenario and 
there would be numerous practical problems when it comes to implementation.

3. I have never played with Doom, but from my limited experience with 
it, Spacemacs seems to be doing as good of a job as possible with its 
layers system, considering the complexity of the problem.




  reply	other threads:[~2023-11-22 12:58 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-11-08  7:25 Strategies for Composable Modular Configuration? Psionic K
2023-11-22 12:58 ` Nikolay Kudryavtsev [this message]
2023-11-22 13:58   ` Psionic K
2023-11-23 11:19     ` Nikolay Kudryavtsev
2023-11-24  1:52       ` Psionic K

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=60ada9d4-8036-41d8-bdbf-012b8f5b2747@gmail.com \
    --to=nikolay.kudryavtsev@gmail.com \
    --cc=help-gnu-emacs@gnu.org \
    --cc=psionik@positron.solutions \
    /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.