From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Nikolay Kudryavtsev Newsgroups: gmane.emacs.help Subject: Re: Strategies for Composable Modular Configuration? Date: Wed, 22 Nov 2023 15:58:55 +0300 Message-ID: <60ada9d4-8036-41d8-bdbf-012b8f5b2747@gmail.com> References: Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="38096"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Mozilla Thunderbird To: Psionic K , help-gnu-emacs@gnu.org Original-X-From: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane-mx.org@gnu.org Wed Nov 22 14:00:17 2023 Return-path: Envelope-to: geh-help-gnu-emacs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1r5mq0-0009kD-Jw for geh-help-gnu-emacs@m.gmane-mx.org; Wed, 22 Nov 2023 14:00:16 +0100 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1r5mor-000527-N6; Wed, 22 Nov 2023 07:59:05 -0500 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1r5moq-00051r-IU for help-gnu-emacs@gnu.org; Wed, 22 Nov 2023 07:59:04 -0500 Original-Received: from mail-lf1-x12a.google.com ([2a00:1450:4864:20::12a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1r5mom-0006wC-Kb for help-gnu-emacs@gnu.org; Wed, 22 Nov 2023 07:59:04 -0500 Original-Received: by mail-lf1-x12a.google.com with SMTP id 2adb3069b0e04-50aab0ca90aso5120186e87.0 for ; Wed, 22 Nov 2023 04:58:59 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1700657939; x=1701262739; darn=gnu.org; h=content-transfer-encoding:in-reply-to:content-language:references :to:subject:user-agent:mime-version:date:message-id:from:from:to:cc :subject:date:message-id:reply-to; bh=xEj4Uteih5CCZkNRgCISEALniTU8xwn/EFzcmpnhkUA=; b=jKbGJJOENF65jLKLZWcbEb+zasdxdB1ppIeRNIBcEVu33v8FlZ4oW9MHT4eHVrdKdS qqzWh/KotIItcbN3UFP2Ib9h+RQyc+rD+jtXeCRI3QGaILFud2/Z+0tCBNePxZXYIrpv UJEmsw1nqXapLifb7sVPruakW8u0RMMnaHEU3PtT6JPH5gjBy8gNLYoJxZztwk9aGxeS JjRIePUcPmf19qOWdrSis1eV7ljiFX+NIIY/93Eww3GMJaqz5vaYUXNsIYdHtJzLd4yu Ftfn90gDHGJC6neiyi+7oeRgU1zHBFiSq2syRfrgt9X+umSeyKpre5c3r8uKsfelKYLc am2w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1700657939; x=1701262739; h=content-transfer-encoding:in-reply-to:content-language:references :to:subject:user-agent:mime-version:date:message-id:from :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=xEj4Uteih5CCZkNRgCISEALniTU8xwn/EFzcmpnhkUA=; b=Ufeu1agKDsf2Q0ZS9Rm3DuT+0T56RzI0KRwnxOhlgtWgUbrYh8+NngK5aF5ut+5ySu 3pS0Q7iMSTtU7jv0to18WshF+D0nBctEXYCBUnTXpybCaGgtbMcHyQaYYMvG1KKmSup9 ZbrEijY9+hvuoq3deoKtG/GalLzqTEVwxwDQDTqztHbJ4U+Px8HwjvU0H8Wfoorp6lmI lH22iBxNNeEktvazO5O3ijCMNhFrpHfY83frwaW5knAg6B2Wtylr9SgU0QotZGQDppT3 /W6tNb6zxY/SQlaJMPpUuU5xZDvgLJFaI72YWAArZhwSg7B1RzAl/8ydplDTA2AfZaAW ZZrw== X-Gm-Message-State: AOJu0YzJrA5gkls8JOunUV5UMeWxFYbiCkF6ViWRKCBwcEMHbzZJQZqx 0aJhltpxd8xeP3jVCdVi+p/nCDheeNNvTv8m X-Google-Smtp-Source: AGHT+IHE2brlJ+Qy2ZQ/QaGB7H3PNDoAAa6IswPvqYcMKJN/5pyAowfd3gWF140Z5QPsUuiQ5LYkFg== X-Received: by 2002:a05:6512:244:b0:506:87a3:c27c with SMTP id b4-20020a056512024400b0050687a3c27cmr1270574lfo.53.1700657938447; Wed, 22 Nov 2023 04:58:58 -0800 (PST) Original-Received: from [192.168.199.2] (broadband-90-154-73-8.ip.moscow.rt.ru. [90.154.73.8]) by smtp.gmail.com with ESMTPSA id m1-20020ac24ac1000000b0050a71ac3f45sm1828127lfp.203.2023.11.22.04.58.57 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 22 Nov 2023 04:58:58 -0800 (PST) X-Google-Original-From: Nikolay Kudryavtsev Content-Language: ru, en-US In-Reply-To: Received-SPF: pass client-ip=2a00:1450:4864:20::12a; envelope-from=nikolay.kudryavtsev@gmail.com; helo=mail-lf1-x12a.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: help-gnu-emacs@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Users list for the GNU Emacs text editor List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane-mx.org@gnu.org Original-Sender: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.help:145559 Archived-At: 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.