X-Loop: help-debbugs@HIDDEN Subject: bug#57955: 29.0.50; Allow session-local ERC modules Resent-From: "J.P." <jp@HIDDEN> Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> Resent-CC: emacs-erc@HIDDEN, bug-gnu-emacs@HIDDEN Resent-Date: Tue, 20 Sep 2022 13:06:02 +0000 Resent-Message-ID: <handler.57955.B.166367916121316 <at> debbugs.gnu.org> Resent-Sender: help-debbugs@HIDDEN X-GNU-PR-Message: report 57955 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: 57955 <at> debbugs.gnu.org Cc: emacs-erc@HIDDEN X-Debbugs-Original-To: bug-gnu-emacs@HIDDEN X-Debbugs-Original-Xcc: emacs-erc@HIDDEN Received: via spool by submit <at> debbugs.gnu.org id=B.166367916121316 (code B ref -1); Tue, 20 Sep 2022 13:06:02 +0000 Received: (at submit) by debbugs.gnu.org; 20 Sep 2022 13:06:01 +0000 Received: from localhost ([127.0.0.1]:56551 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1oacwq-0005Xc-Is for submit <at> debbugs.gnu.org; Tue, 20 Sep 2022 09:06:01 -0400 Received: from lists.gnu.org ([209.51.188.17]:45430) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <jp@HIDDEN>) id 1oacwo-0005XU-7h for submit <at> debbugs.gnu.org; Tue, 20 Sep 2022 09:05:59 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:33714) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <jp@HIDDEN>) id 1oacwi-0004Tw-9o for bug-gnu-emacs@HIDDEN; Tue, 20 Sep 2022 09:05:57 -0400 Received: from mail-108-mta51.mxroute.com ([136.175.108.51]:41155) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from <jp@HIDDEN>) id 1oacwe-0008N5-LQ for bug-gnu-emacs@HIDDEN; Tue, 20 Sep 2022 09:05:51 -0400 Received: from mail-111-mta2.mxroute.com ([136.175.111.2] filter006.mxroute.com) (Authenticated sender: mN4UYu2MZsgR) by mail-108-mta51.mxroute.com (ZoneMTA) with ESMTPSA id 1835b0115be0002b7a.001 for <bug-gnu-emacs@HIDDEN> (version=TLSv1/SSLv3 cipher=ECDHE-RSA-AES128-GCM-SHA256); Tue, 20 Sep 2022 13:05:41 +0000 X-Zone-Loop: 95530989caf8d8ece97d249344da982d9342f7cb2253 X-Originating-IP: [136.175.111.2] DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=neverwas.me ; s=x; h=Content-Type:MIME-Version:Message-ID:Date:Subject:To:From:Sender: Reply-To:Cc:Content-Transfer-Encoding:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:List-Subscribe: List-Post:List-Owner:List-Archive; bh=3F0SHVhmuVURosZQjIbN1WZS8Cle7NN3rYjG3zwaITc=; b=E7+S5ZNHiUSfKy1+I2JITpIgLk k9RHuII9p3oXNP1JxEMoHuki2AFwk+IFKeXLeGFxyg3wMdnoLXpC6eMRA2pYDpvM+qX10W1vsIm3x XEQD2B0ujRKIvS0QUSjzt3P+4jzNsnHyHo4UUNmMfT4uTyo2mmruuStEmwf0sbe210OUBY3a/eySu pIeB1p7KkmwHpzd05r6wxBXARYzFXONRUd7FT/dCNu2La2XAYCY5wuQpovhA80h96jkMcRj1hKWfY VA08WpOh1BT69HhF9Ro551Q5QZe2gdvP5uCJ0WNQMW4lE1eabYrS3DgaWhy4zJvvxs9jOVKyLz2iO a2/aoXxw==; From: "J.P." <jp@HIDDEN> Date: Tue, 20 Sep 2022 06:05:38 -0700 Message-ID: <8735cm2o2l.fsf@HIDDEN> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/29.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Authenticated-Id: masked@HIDDEN Received-SPF: pass client-ip=136.175.108.51; envelope-from=jp@HIDDEN; helo=mail-108-mta51.mxroute.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, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-Spam-Score: -1.4 (-) X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -2.4 (--) --=-=-= Content-Type: text/plain Tags: patch Hi people, Since its inception, ERC has aimed to support local modules, that is, modules local to a connection. (If you need convincing of this, take a look at `define-erc-module'.) This makes sense for a good many reasons, chief among them simplified semantics when arranging for buffer-local variables and hooks. Ancillary benefits include let-binding `erc-modules' around entry-point invocations and selectively disabling modules for particular sessions (e.g., after capability negotiation). Unfortunately, this dream of ERC's authors was never fully realized. Take a look at `erc-open', where you'll find would-be local vars being set too early and thus clobbered when `erc-mode' (the major mode) is activated. Various kludges have come along to circumvent this. For example, the log module uses `erc-connect-pre-hook' to conduct its buffer-local business. But it shouldn't have to. ERC can do better. This patch aims to address this problem by partially changing the purpose of the function `erc-update-modules' in a backward compatible way. Instead of activating local modules immediately, it now returns them in a list to be activated at a time and place of the caller's choosing. The most opportune place for this, in terms of `erc-open', is after all the core local variables have been determined, which exposes them to module setup code. As a bonus, the major mode hook is likewise deferred to this point. This patch also reworks the module-to-features map and preferred-name migration logic, which was incomplete. As far as third-party packages are concerned, it's only been tested with erc-hl-nicks, thus far, but it "should" work with others too. (Please let me know if that's a lie.) Thanks, J.P. P.S. BTW, if anyone is friendly with the hl-nicks author, please ask them to reach out regarding an unrelated custom.el issue; attempts to contact them via GitHub have so far proven unsuccessful. In GNU Emacs 29.0.50 (build 2, x86_64-pc-linux-gnu, GTK+ Version 3.24.34, cairo version 1.17.6) of 2022-09-19 built on localhost Repository revision: 132d5cb0a3ec94afbb49772631861e00160ffffb Repository branch: master Windowing system distributor 'The X.Org Foundation', version 11.0.12014000 System Description: Fedora Linux 36 (Workstation Edition) Configured using: 'configure --enable-check-lisp-object-type --enable-checking=yes,glyphs 'CFLAGS=-O0 -g3' PKG_CONFIG_PATH=:/usr/lib64/pkgconfig:/usr/share/pkgconfig' Configured features: ACL CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GPM GSETTINGS HARFBUZZ JPEG JSON LCMS2 LIBOTF LIBSELINUX LIBSYSTEMD LIBXML2 M17N_FLT MODULES NOTIFY INOTIFY PDUMPER PNG RSVG SECCOMP SOUND SQLITE3 THREADS TIFF TOOLKIT_SCROLL_BARS WEBP X11 XDBE XIM XINPUT2 XPM GTK3 ZLIB Important settings: value of $LANG: en_US.UTF-8 value of $XMODIFIERS: @im=ibus locale-coding-system: utf-8-unix Major mode: Lisp Interaction Minor modes in effect: tooltip-mode: t global-eldoc-mode: t eldoc-mode: t show-paren-mode: t electric-indent-mode: t mouse-wheel-mode: t tool-bar-mode: t menu-bar-mode: t file-name-shadow-mode: t global-font-lock-mode: t font-lock-mode: t blink-cursor-mode: t line-number-mode: t indent-tabs-mode: t transient-mark-mode: t auto-composition-mode: t auto-encryption-mode: t auto-compression-mode: t Load-path shadows: None found. Features: (shadow sort mail-extr emacsbug message mailcap yank-media puny dired dired-loaddefs rfc822 mml mml-sec password-cache epa derived epg rfc6068 epg-config gnus-util text-property-search time-date subr-x mm-decode mm-bodies mm-encode mail-parse rfc2231 mailabbrev gmm-utils mailheader cl-loaddefs cl-lib sendmail rfc2047 rfc2045 ietf-drums mm-util mail-prsvr mail-utils rmc iso-transl tooltip eldoc paren electric uniquify ediff-hook vc-hooks lisp-float-type elisp-mode mwheel term/x-win x-win term/common-win x-dnd tool-bar dnd fontset image regexp-opt fringe tabulated-list replace newcomment text-mode lisp-mode prog-mode register page tab-bar menu-bar rfn-eshadow isearch easymenu timer select scroll-bar mouse jit-lock font-lock syntax font-core term/tty-colors frame minibuffer nadvice seq simple cl-generic indonesian philippine cham georgian utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao korean japanese eucjp-ms cp51932 hebrew greek romanian slovak czech european ethiopic indian cyrillic chinese composite emoji-zwj charscript charprop case-table epa-hook jka-cmpr-hook help abbrev obarray oclosure cl-preloaded button loaddefs faces cus-face macroexp files window text-properties overlay sha1 md5 base64 format env code-pages mule custom widget keymap hashtable-print-readable backquote threads dbusbind inotify lcms2 dynamic-setting system-font-setting font-render-setting cairo move-toolbar gtk x-toolkit xinput2 x multi-tty make-network-process emacs) Memory information: ((conses 16 36059 6198) (symbols 48 5107 0) (strings 32 13115 1641) (string-bytes 1 372299) (vectors 16 9247) (vector-slots 8 146583 10252) (floats 8 21 25) (intervals 56 220 0) (buffers 1000 10)) --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=0002-Support-local-ERC-modules-in-erc-mode-buffers.patch From b88bcadffba84b64ae91d45b84736313ac49dfef Mon Sep 17 00:00:00 2001 From: "F. Jason Park" <jp@HIDDEN> Date: Mon, 12 Jul 2021 03:44:28 -0700 Subject: [PATCH 2/4] Support local ERC modules in erc-mode buffers * lisp/erc/erc.el (erc-migrate-modules): add some missing mappings. (erc--module-name-migrations, erc--features-to-modules, erc--modules-to-features): add alists to support simplified module-name migrations. (erc-update-modules): Change return value to a list of minor-mode commands for local modules that need deferred activation, if any. Use `custom-variable-p' to detect flavor. Currently, all modules are global, meaning so are their accompanying minor modes. (erc-open): Defer enabling of local modules via `erc-update-modules' until after buffer is initialized with other local vars. Also defer major mode hooks so they can detect things like whether the buffer is a server or target buffer. (define-erc-modules): Don't enable local modules (minor modes) unless `erc-mode' is the major mode. And don't disable them unless the minor mode is actually active. Also, don't mutate `erc-modules' when dealing with a local module. It's believed that the original authors wanted this functionality. --- lisp/erc/erc.el | 108 ++++++++++++++++++++++++------------- test/lisp/erc/erc-tests.el | 47 ++++++++++++++++ 2 files changed, 119 insertions(+), 36 deletions(-) diff --git a/lisp/erc/erc.el b/lisp/erc/erc.el index 20f22c896f..8fa9d0c8a3 100644 --- a/lisp/erc/erc.el +++ b/lisp/erc/erc.el @@ -1390,7 +1390,9 @@ define-erc-module This will define a minor mode called erc-NAME-mode, possibly an alias erc-ALIAS-mode, as well as the helper functions -erc-NAME-enable, and erc-NAME-disable. +erc-NAME-enable, and erc-NAME-disable. Beware that for global +modules, these helpers, as well as the minor-mode toggle, all mutate +the user option `erc-modules'. Example: @@ -1426,16 +1428,21 @@ define-erc-module ,(format "Enable ERC %S mode." name) (interactive) - (add-to-list 'erc-modules (quote ,name)) - (setq ,mode t) - ,@enable-body) + (unless ,local-p + (cl-pushnew (erc--normalize-module-symbol ',name) erc-modules)) + (when (or ,(not local-p) (eq major-mode 'erc-mode)) + (setq ,mode t) + ,@enable-body)) (defun ,disable () ,(format "Disable ERC %S mode." name) (interactive) - (setq erc-modules (delq (quote ,name) erc-modules)) - (setq ,mode nil) - ,@disable-body) + (unless ,local-p + (setq erc-modules (delq (erc--normalize-module-symbol ',name) + erc-modules))) + (when (or ,(not local-p) ,mode) + (setq ,mode nil) + ,@disable-body)) ,(when (and alias (not (eq name alias))) `(defalias ',(intern @@ -2030,14 +2037,40 @@ erc-default-nicks (defvar-local erc-nick-change-attempt-count 0 "Used to keep track of how many times an attempt at changing nick is made.") +(defconst erc--features-to-modules + '((erc-pcomplete completion pcomplete) + (erc-capab capab-identify) + (erc-join autojoin) + (erc-page page ctcp-page) + (erc-sound sound ctcp-sound) + (erc-stamp stamp timestamp) + (erc-services services nickserv)) + "Migration alist mapping a library feature to module names. +Keys need not be unique: a library may define more than one +module.") + +(defconst erc--modules-to-features + (cl-loop for (feature . names) in erc--features-to-modules + append (mapcar (lambda (name) (cons name feature)) names)) + "Migration alist mapping a module's name to library feature.") + +(defconst erc--module-name-migrations + (let (pairs) + (pcase-dolist (`(,_ ,canonical . ,rest) erc--features-to-modules) + (dolist (obsolete rest) + (push (cons obsolete canonical) pairs))) + pairs) + "Association list of obsolete module names to canonical names.") + +(defun erc--normalize-module-symbol (module) + "Canonicalize symbol MODULE for `erc-modules'." + (or (cdr (assq module erc--module-name-migrations)) module)) + (defun erc-migrate-modules (mods) "Migrate old names of ERC modules to new ones." ;; modify `transforms' to specify what needs to be changed ;; each item is in the format '(old . new) - (let ((transforms '((pcomplete . completion)))) - (delete-dups - (mapcar (lambda (m) (or (cdr (assoc m transforms)) m)) - mods)))) + (delete-dups (mapcar #'erc--normalize-module-symbol mods))) (defcustom erc-modules '(netsplit fill button match track completion readonly networks ring autojoin noncommands irccontrols @@ -2116,27 +2149,22 @@ erc-modules :group 'erc) (defun erc-update-modules () - "Run this to enable erc-foo-mode for all modules in `erc-modules'." - (let (req) + "Enable global minor mode for all global modules in `erc-modules'. +Return minor-mode commands for all local modules, possibly for +deferred invocation, as done by `erc-open' whenever a new ERC +buffer is created. Local modules were introduced in ERC 5.6." + (let (local-modules) (dolist (mod erc-modules) - (setq req (concat "erc-" (symbol-name mod))) - (cond - ;; yuck. perhaps we should bring the filenames into sync? - ((string= req "erc-capab-identify") - (setq req "erc-capab")) - ((string= req "erc-completion") - (setq req "erc-pcomplete")) - ((string= req "erc-pcomplete") - (setq mod 'completion)) - ((string= req "erc-autojoin") - (setq req "erc-join"))) - (condition-case nil - (require (intern req)) - (error nil)) + (require (or (alist-get mod erc--modules-to-features) + (intern (concat "erc-" (symbol-name mod)))) + nil 'noerror) ; some modules don't have a corresponding feature (let ((sym (intern-soft (concat "erc-" (symbol-name mod) "-mode")))) - (if (fboundp sym) + (unless (and sym (fboundp sym)) + (error "`%s' is not a known ERC module" mod)) + (if (custom-variable-p sym) (funcall sym 1) - (error "`%s' is not a known ERC module" mod)))))) + (push sym local-modules)))) + local-modules)) (defun erc-setup-buffer (buffer) "Consults `erc-join-buffer' to find out how to display `BUFFER'." @@ -2192,18 +2220,22 @@ erc-open (let* ((target (and channel (erc--target-from-string channel))) (buffer (erc-get-buffer-create server port nil target id)) (old-buffer (current-buffer)) - old-point + (old-recon-count erc-server-reconnect-count) + (old-point nil) + (delayed-modules nil) (continued-session (and erc--server-reconnecting (with-suppressed-warnings ((obsolete erc-reuse-buffers)) erc-reuse-buffers)))) (when connect (run-hook-with-args 'erc-before-connect server port nick)) - (erc-update-modules) (set-buffer buffer) (setq old-point (point)) - (let ((old-recon-count erc-server-reconnect-count)) - (erc-mode) - (setq erc-server-reconnect-count old-recon-count)) + (setq delayed-modules (erc-update-modules)) + + (delay-mode-hooks (erc-mode)) + + (setq erc-server-reconnect-count old-recon-count) + (when (setq erc-server-connected (not connect)) (setq erc-server-announced-name (buffer-local-value 'erc-server-announced-name old-buffer))) @@ -2266,6 +2298,12 @@ erc-open (setq erc-dbuf (when erc-log-p (get-buffer-create (concat "*ERC-DEBUG: " server "*")))) + + (erc-determine-parameters server port nick full-name user passwd) + + (save-excursion (run-mode-hooks)) + (dolist (mod delayed-modules) (funcall mod +1)) + ;; set up prompt (unless continued-session (goto-char (point-max)) @@ -2277,8 +2315,6 @@ erc-open (erc-display-prompt) (goto-char (point-max))) - (erc-determine-parameters server port nick full-name user passwd) - ;; Saving log file on exit (run-hook-with-args 'erc-connect-pre-hook buffer) diff --git a/test/lisp/erc/erc-tests.el b/test/lisp/erc/erc-tests.el index b2ed29e80e..d3d319ab22 100644 --- a/test/lisp/erc/erc-tests.el +++ b/test/lisp/erc/erc-tests.el @@ -975,4 +975,51 @@ erc-message (kill-buffer "ExampleNet") (kill-buffer "#chan"))) +(ert-deftest erc-migrate-modules () + (should (equal (erc-migrate-modules '(autojoin timestamp button)) + '(autojoin stamp button))) + ;; Default unchanged + (should (equal (erc-migrate-modules erc-modules) erc-modules))) + +(ert-deftest erc-update-modules () + (let* (calls + (erc-modules '(fake-foo fake-bar))) + (cl-letf (((symbol-function 'require) + (lambda (s &rest _) (push s calls))) + ((symbol-function 'erc-fake-foo-mode) + (lambda (n) (push (cons 'fake-foo n) calls))) + ;; Here, foo is a global module (minor mode) + ((get 'erc-fake-foo-mode 'standard-value) #'ignore) + ((symbol-function 'erc-fake-bar-mode) + (lambda (n) (push (cons 'fake-bar n) calls))) + ((symbol-function 'erc-autojoin-mode) + (lambda (n) (push (cons 'autojoin n) calls))) + ((get 'erc-autojoin-mode 'standard-value) #'ignore) + ((symbol-function 'erc-networks-mode) + (lambda (n) (push (cons 'networks n) calls))) + ((symbol-function 'erc-completion-mode) + (lambda (n) (push (cons 'completion n) calls))) + ((get 'erc-completion-mode 'standard-value) #'ignore)) + + (ert-info ("Locals") + (should (equal (erc-update-modules) + '(erc-fake-bar-mode))) + ;; Bar still required + (should (equal (nreverse calls) '(erc-fake-foo + (fake-foo . 1) + erc-fake-bar))) + (setq calls nil)) + + (ert-info ("Module name overrides") + (setq erc-modules '(completion autojoin networks)) + (should-not (erc-update-modules)) ; no locals + (should (equal (nreverse calls) + '(erc-pcomplete + (completion . 1) + erc-join + (autojoin . 1) + erc-networks + (networks . 1)))) + (setq calls nil))))) + ;;; erc-tests.el ends here -- 2.37.2 --=-=-=--
Content-Disposition: inline Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-Mailer: MIME-tools 5.505 (Entity 5.505) Content-Type: text/plain; charset=utf-8 X-Loop: help-debbugs@HIDDEN From: help-debbugs@HIDDEN (GNU bug Tracking System) To: "J.P." <jp@HIDDEN> Subject: bug#57955: Acknowledgement (29.0.50; Allow session-local ERC modules) Message-ID: <handler.57955.B.166367916121316.ack <at> debbugs.gnu.org> References: <8735cm2o2l.fsf@HIDDEN> X-Gnu-PR-Message: ack 57955 X-Gnu-PR-Package: emacs X-Gnu-PR-Keywords: patch Reply-To: 57955 <at> debbugs.gnu.org Date: Tue, 20 Sep 2022 13:06:02 +0000 Thank you for filing a new bug report with debbugs.gnu.org. This is an automatically generated reply to let you know your message has been received. Your message is being forwarded to the package maintainers and other interested parties for their attention; they will reply in due course. As you requested using X-Debbugs-CC, your message was also forwarded to emacs-erc@HIDDEN (after having been given a bug report number, if it did not have one). Your message has been sent to the package maintainer(s): bug-gnu-emacs@HIDDEN If you wish to submit further information on this problem, please send it to 57955 <at> debbugs.gnu.org. Please do not send mail to help-debbugs@HIDDEN unless you wish to report a problem with the Bug-tracking system. --=20 57955: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D57955 GNU Bug Tracking System Contact help-debbugs@HIDDEN with problems
X-Loop: help-debbugs@HIDDEN Subject: bug#57955: 29.0.50; Allow session-local ERC modules Resent-From: Michael Albinus <michael.albinus@HIDDEN> Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> Resent-CC: bug-gnu-emacs@HIDDEN Resent-Date: Tue, 20 Sep 2022 17:44:02 +0000 Resent-Message-ID: <handler.57955.B57955.166369583212984 <at> debbugs.gnu.org> Resent-Sender: help-debbugs@HIDDEN X-GNU-PR-Message: followup 57955 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: "J.P." <jp@HIDDEN> Cc: 57955 <at> debbugs.gnu.org, emacs-erc@HIDDEN Received: via spool by 57955-submit <at> debbugs.gnu.org id=B57955.166369583212984 (code B ref 57955); Tue, 20 Sep 2022 17:44:02 +0000 Received: (at 57955) by debbugs.gnu.org; 20 Sep 2022 17:43:52 +0000 Received: from localhost ([127.0.0.1]:59550 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1oahHj-0003NM-QC for submit <at> debbugs.gnu.org; Tue, 20 Sep 2022 13:43:51 -0400 Received: from mout.gmx.net ([212.227.17.21]:56053) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <michael.albinus@HIDDEN>) id 1oahHe-0003N6-3J for 57955 <at> debbugs.gnu.org; Tue, 20 Sep 2022 13:43:50 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1663695816; bh=Dm0aKnKgQdM2xZe7C5wf0rOXyCyfGDfR+czeSn5KpnM=; h=X-UI-Sender-Class:From:To:Cc:Subject:In-Reply-To:References:Date; b=I61CM3mNdsxCffhq29AoNlTWnxklaXAsUQ2uXef0ca19XDV8R3nSmD+EPacaO/L/o zFAuB8iZqT/EncjBPk4C9esVrjM5hN+KDb+UVlpo1t4a4alpXOUlKAzirxBzVcoYgO +/h5235e1kCqyxj4EVVY0GfjhzZi9vwOe1+WZGmk= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Received: from gandalf.gmx.de ([79.140.125.182]) by mail.gmx.net (mrgmx105 [212.227.17.168]) with ESMTPSA (Nemesis) id 1ML9yc-1osm613O8A-00IGfp; Tue, 20 Sep 2022 19:43:35 +0200 From: Michael Albinus <michael.albinus@HIDDEN> In-Reply-To: <8735cm2o2l.fsf__21117.726997339$1663692322$gmane$org@HIDDEN> (J. P.'s message of "Tue, 20 Sep 2022 06:05:38 -0700") References: <8735cm2o2l.fsf__21117.726997339$1663692322$gmane$org@HIDDEN> Date: Tue, 20 Sep 2022 19:43:34 +0200 Message-ID: <87r106eybd.fsf@HIDDEN> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/29.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Provags-ID: V03:K1:YVqWuGgOcu3teWsi7WATMCF0D4/J+t020qlQKEwMW46vQDPpzuc bVXPQpLGUJM0qp5X1Can6/d02mcGOzarO8mCjT+alZ3vhHYP3Uf7sbbfxZanVOkrA8+kMKx rJCkpbWkI+Crb0cywkH8FqqjFh5EW7hUuNUkH4PrpIja6Tm1anbGI6if0bsoBrWXMqYGak+ RMWACwF1yiMuJqkJ4hORQ== X-Spam-Flag: NO X-UI-Out-Filterresults: notjunk:1;V03:K0:/Cs0C6xBtaI=:nI5/EjB5B0wnD1ByaHtdWa eMCwk/kNSAlC+/Qk1Rcr0Lftq/07IdWe0lUeyGw8IwxU3JZeUkXtHurhye5JoOVNqLZjE1Eay 1xRawyDGpbqpnCTK4l2s3xooRVrz0njnbBncI5RXv9dQKaTWhhmf/+kgzdOEDOEFd2P8AVNvf qg83egLyckS4FhYAJBGsmADlbOsjK0B0I72PdcTh0Jcz5EQJ4PajB8e58KpO6vN8O83+rTol/ NdJkjvqKe6neIUrH3n2j53U1Pj9JjlHr36BVkOFQ1yzgh1xKmE52LoujxPNJ2AHAvlfHlJkD2 /+FF9W4/CJ5ngnkbQ0t/0kYctn6sD2uzD0GlPMJl6I0IzFAexlx132P1dXobU0ZCI7RIq1KKC 3Te9v7W7vFsiJVtoyMRJEYjx/hTbCdCk/5Jsf/ni3eFEiri5k18XRTL9vJp6skcEHMqUz8GDW 66Hcv65tkSHoK9bHndWcd0Rdxye6MQpmUsIzFUemGYJgNQeQgk1pEaelSGK82fM55+/olAGQU n8IaP3Cej5qPDifYRjTpZfhwFluwjt2TVj1lVHPnTKEAWaB0wOArx3leMZzRwH32gaQZaX635 dPF9c4LWR2LlOzlVCv19MP4RKFhMpb0vN/RwoRUTQ9o8F3tn4jZpbq94jwZp4M2qdp96Y7utD tEgCJ7ZOOgoIjyxSTfq6fEhRL1O4AkrJ0+PXFnHzwQ4KHUy5lUwq3Cv3zJnp4U8ey5hN0nYmo dxVoARcFXu8ku1rwgpdsgtnRYxB9TziDGVRjCg3KvMIIEJSiZ4lbTajGbAaYiOob4SLm5ICaw 9qcPiCVWwNDAp/LaQsREzB1CERPgOZyALVrchyhK8eW2ybl/s5kScKCLO1BYD//I/oRmSlErV 33v5mF2lSAdmxqAQOAzI/TbN2NcNSv/gpkW/m3lFf1KupnnKt8AQlSjjlGWfMoZMia+mCmgF5 JjBBU5FidXkkL9iG5mQJOOA18e3nWLIkdd9zbEcufolpitkLeHkgo2WhKNbEq44YCVjtJmaR9 q2Z+tZl6b9qO0y2Jcv66Bw4Mmm9yNnnQq2zsIlop47MQNA4VAh2h5nriQI3MHxhb+fyFSD8ns 2wBAJNMo3y6ngz5Jade0vuapwj3Kb59DbGDTn7WIyJDv0auoLYaJIzYPwQ+CMql/HwR3vm+P1 usT+aPbCV36FnlPkxBZEPlKtI2 X-Spam-Score: -0.7 (/) X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.7 (-) "J.P." <jp@HIDDEN> writes: > Hi people, Hi, > Since its inception, ERC has aimed to support local modules, that is, > modules local to a connection. (If you need convincing of this, take a > look at `define-erc-module'.) This makes sense for a good many reasons, > chief among them simplified semantics when arranging for buffer-local > variables and hooks. Ancillary benefits include let-binding > `erc-modules' around entry-point invocations and selectively disabling > modules for particular sessions (e.g., after capability negotiation). Without knowing erc in general and your patch in detail: this sounds like you could profit from connection-local variables. Did you check this? > Thanks, > J.P. Best regards, Michael.
X-Loop: help-debbugs@HIDDEN Subject: bug#57955: 29.0.50; Allow session-local ERC modules Resent-From: "J.P." <jp@HIDDEN> Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> Resent-CC: bug-gnu-emacs@HIDDEN Resent-Date: Wed, 21 Sep 2022 13:17:02 +0000 Resent-Message-ID: <handler.57955.B57955.166376616528473 <at> debbugs.gnu.org> Resent-Sender: help-debbugs@HIDDEN X-GNU-PR-Message: followup 57955 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: Michael Albinus <michael.albinus@HIDDEN> Cc: 57955 <at> debbugs.gnu.org, emacs-erc@HIDDEN Received: via spool by 57955-submit <at> debbugs.gnu.org id=B57955.166376616528473 (code B ref 57955); Wed, 21 Sep 2022 13:17:02 +0000 Received: (at 57955) by debbugs.gnu.org; 21 Sep 2022 13:16:05 +0000 Received: from localhost ([127.0.0.1]:32957 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1oaza9-0007P3-4H for submit <at> debbugs.gnu.org; Wed, 21 Sep 2022 09:16:05 -0400 Received: from mail-108-mta83.mxroute.com ([136.175.108.83]:44859) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <jp@HIDDEN>) id 1oaza6-0007ON-Jd for 57955 <at> debbugs.gnu.org; Wed, 21 Sep 2022 09:16:03 -0400 Received: from mail-111-mta2.mxroute.com ([136.175.111.2] filter006.mxroute.com) (Authenticated sender: mN4UYu2MZsgR) by mail-108-mta83.mxroute.com (ZoneMTA) with ESMTPSA id 1836030c9440002b7a.001 for <57955 <at> debbugs.gnu.org> (version=TLSv1/SSLv3 cipher=ECDHE-RSA-AES128-GCM-SHA256); Wed, 21 Sep 2022 13:15:53 +0000 X-Zone-Loop: ecf00f9e2a5950d8ef4ef8ed05eea8c4a625c2f935a4 X-Originating-IP: [136.175.111.2] DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=neverwas.me ; s=x; h=Content-Type:MIME-Version:Message-ID:Date:References:In-Reply-To: Subject:Cc:To:From:Sender:Reply-To:Content-Transfer-Encoding:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Id:List-Help:List-Unsubscribe:List-Subscribe: List-Post:List-Owner:List-Archive; bh=uYmYjzylxd0k0B59Yss4q7xmduVPxvmXcx40DeCI/A8=; b=IuKKCrc57rfZwehIh+mSYotgAl 3oTuhnn0pDPOBDyIogPMidyepK3WUG1fahpU0R9F6GfJTdBp5VrvM9moqU8tNePtyIhIdkZ4bH2q5 lR7n2ip/ITxUxl5v8eOxWO+jcc7m1QNJPlYkMJK2VNZZQsRL27r1MlB8xU4ZahCMtoI+iz4UgUrPz nTyj8lilabrBvVr6sh7k/zTS4+FE126rxEIJR3GKC019aPP3K4jXly2jZd/RDslPIngD5nmtPmS0R B/T2Om5GYnquIccyMgyiIzJIsxdTLIGjKjCK/Q2sRUk9Tymq0orA9gloCb4oFwpE+NciBcEKuEylB gpt759ow==; From: "J.P." <jp@HIDDEN> In-Reply-To: <87r106eybd.fsf@HIDDEN> (Michael Albinus's message of "Tue, 20 Sep 2022 19:43:34 +0200") References: <8735cm2o2l.fsf__21117.726997339$1663692322$gmane$org@HIDDEN> <87r106eybd.fsf@HIDDEN> Date: Wed, 21 Sep 2022 06:15:48 -0700 Message-ID: <87czboswaj.fsf@HIDDEN> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/29.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Authenticated-Id: masked@HIDDEN X-Spam-Score: 0.0 (/) X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.0 (-) Hi Michael, Michael Albinus <michael.albinus@HIDDEN> writes: > Without knowing erc in general and your patch in detail: this sounds > like you could profit from connection-local variables. Did you check > this? Not quite yet (only superficially). At first glance, I'm not sure they're a perfect fit for this specific issue, but I'll definitely investigate further. Either way, I'm thinking they'd be a great solution (or inspiration) for an initiative we have on the horizon, namely, devising a means of applying user options in a more granular, contextual manner [1]. Also (if you happen to recall), a few of our recent exchanges ended with me pledging to follow through on one thing or another. And yet, most of those promises remain unfulfilled. Please know that I do plan on addressing them "eventually" and that I very much appreciate your help (and your patience). Thanks, J.P. [1] In case you're interested, by "context," I'm referring to various logical (somewhat overlapping) IRC boundaries, such as - message: event-local, i.e., source-wise and message-type-wise - channel: target-local - network: connection-local Basically, I'm looking for something akin to a "context variable" facility, except not so much for managing concurrency but instead for transparently stashing and restoring message-processing environments matched against headers and protocol state. More info: https://lists.gnu.org/archive/html/emacs-erc/2021-10/msg00003.html
Received: (at control) by debbugs.gnu.org; 13 Oct 2022 13:47:41 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Thu Oct 13 09:47:41 2022 Received: from localhost ([127.0.0.1]:60020 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1oiyYm-0005Ct-SP for submit <at> debbugs.gnu.org; Thu, 13 Oct 2022 09:47:41 -0400 Received: from mail-oa1-f46.google.com ([209.85.160.46]:42811) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <stefankangas@HIDDEN>) id 1oiyYj-0005Bp-I0 for control <at> debbugs.gnu.org; Thu, 13 Oct 2022 09:47:37 -0400 Received: by mail-oa1-f46.google.com with SMTP id 586e51a60fabf-1370acb6588so2315816fac.9 for <control <at> debbugs.gnu.org>; Thu, 13 Oct 2022 06:47:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=to:subject:message-id:date:mime-version:from:from:to:cc:subject :date:message-id:reply-to; bh=KBUKUVbeyiQvHc9ZT70wIvwoZHXIZUX1HLKUWrp4Hik=; b=gbUoiC3LSwnhM9a0+5iY8isdydj369UNX2hWQiiw9nssKPpdKrYOvWpakBPFCSBKNd K7BMi/ROSDtfJowNrIjtTuPLCh4NPGnCWrw7mlQQ6olzPluALzYBgLfHQhWLUjRxVWcn rUpsHQetFmPvBaoCWMBy5s2F4tx95lg6vOT8/9tbWfO+iMg53sfRy2wPMCW7YMxH7pTb NNmJlIyGn3ClaiQ+Vdvg+bpPIXRIbVRVU8e6ZptJT7Vd922bzcjpA2D6qYGq9G63v98/ qEe+L3qzJXCijQc3xcKkLnZUXH/+h7RyyyT+TAehYNWWzInTxguNiuzh4eKS8lMKHNgp 8QOQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=to:subject:message-id:date:mime-version:from:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=KBUKUVbeyiQvHc9ZT70wIvwoZHXIZUX1HLKUWrp4Hik=; b=ev9RQIwVISHhzB5YVXOcJm+zkyP4QXnw9xTQujtOT0vs28ZkcIdwR0rfKx/jw9DVJu WfYzGYHuApiUI8UGqFRsgRNXrud6aEj3xGjClD5QM2zrAa2qYFj7QtdMYY4wmrEoglpx BKlma81UvW/TpmtllHHzQkMd8pYm/BRarsf+gpc5oc6X/rd0yPoUUCzPPCARxeP4Zxl7 rswxDeRHVziTLdLl11kpyvujWbekmcv21E31bj8Y6PLknkkg70Ch1SVQUR0xwIWyyC8e h7hgSdXvs2Lm34HJRzJ+EifhvjKmUHy409pN0+nPit/pxcV2O5FMqZfeg0v6phf5D4G8 SitQ== X-Gm-Message-State: ACrzQf28JylIPr2OhIjkImDB844J2Z4ejFgqoXLmT450StOJiLnCp7oH lR8V73UL7R7cBrXpsResNCRNzT22zx3fHT8jcQ8ZMZsZ X-Google-Smtp-Source: AMsMyM6CdyG3oWf2avHjnkPmJyRk4L1L4i4mc0vFQg1o23hnzoQTmcOc+8TWn0pEMKPP32uDjRFpSe0epWjxCpMqAWM= X-Received: by 2002:a05:6870:9126:b0:132:b724:e96c with SMTP id o38-20020a056870912600b00132b724e96cmr5567260oae.199.1665668852005; Thu, 13 Oct 2022 06:47:32 -0700 (PDT) Received: from 753933720722 named unknown by gmailapi.google.com with HTTPREST; Thu, 13 Oct 2022 15:47:31 +0200 From: Stefan Kangas <stefankangas@HIDDEN> X-Hashcash: 1:20:221013:control <at> debbugs.gnu.org::FZjGc0Mt1HEY4lyQ:0L5V MIME-Version: 1.0 Date: Thu, 13 Oct 2022 15:47:31 +0200 Message-ID: <CADwFkmm_nr7t9ipvGtqfyhfxMMVaYdXKMDoYBy5KCsX_c-X6LA@HIDDEN> Subject: control message for bug #57955 To: control <at> debbugs.gnu.org Content-Type: text/plain; charset="UTF-8" X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: control X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.0 (-) severity 57955 wishlist quit
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997 nCipher Corporation Ltd,
1994-97 Ian Jackson.