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.
next prev parent 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.