From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED.blaine.gmane.org!not-for-mail From: Eric Abrahamsen Newsgroups: gmane.emacs.bugs Subject: bug#38252: 27.0.50; Gnus server definitions and generic function specializers Date: Mon, 18 Nov 2019 12:43:37 -0800 Message-ID: <87v9rgncee.fsf@ericabrahamsen.net> References: <877e3yb0em.fsf@ericabrahamsen.net> <87imnhan3t.fsf@ericabrahamsen.net> Mime-Version: 1.0 Content-Type: text/plain Injection-Info: blaine.gmane.org; posting-host="blaine.gmane.org:195.159.176.226"; logging-data="60272"; mail-complaints-to="usenet@blaine.gmane.org" User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.0.50 (gnu/linux) Cc: larsi@gnus.org, 38252@debbugs.gnu.org To: Stefan Monnier Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Mon Nov 18 21:44:10 2019 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([209.51.188.17]) by blaine.gmane.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.89) (envelope-from ) id 1iWnsX-000FZE-T6 for geb-bug-gnu-emacs@m.gmane.org; Mon, 18 Nov 2019 21:44:10 +0100 Original-Received: from localhost ([::1]:39206 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iWnsW-0000YG-Pz for geb-bug-gnu-emacs@m.gmane.org; Mon, 18 Nov 2019 15:44:08 -0500 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:58592) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iWnsQ-0000Xw-QC for bug-gnu-emacs@gnu.org; Mon, 18 Nov 2019 15:44:03 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iWnsP-0001Zl-Ry for bug-gnu-emacs@gnu.org; Mon, 18 Nov 2019 15:44:02 -0500 Original-Received: from debbugs.gnu.org ([209.51.188.43]:37512) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1iWnsP-0001ZJ-Nz for bug-gnu-emacs@gnu.org; Mon, 18 Nov 2019 15:44:01 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1iWnsP-0003bs-Ik for bug-gnu-emacs@gnu.org; Mon, 18 Nov 2019 15:44:01 -0500 X-Loop: help-debbugs@gnu.org Resent-From: Eric Abrahamsen Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Mon, 18 Nov 2019 20:44:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 38252 X-GNU-PR-Package: emacs Original-Received: via spool by 38252-submit@debbugs.gnu.org id=B38252.157410982713847 (code B ref 38252); Mon, 18 Nov 2019 20:44:01 +0000 Original-Received: (at 38252) by debbugs.gnu.org; 18 Nov 2019 20:43:47 +0000 Original-Received: from localhost ([127.0.0.1]:46333 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iWnsA-0003bF-Lk for submit@debbugs.gnu.org; Mon, 18 Nov 2019 15:43:46 -0500 Original-Received: from ericabrahamsen.net ([52.70.2.18]:43230 helo=mail.ericabrahamsen.net) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iWns8-0003b1-6Z for 38252@debbugs.gnu.org; Mon, 18 Nov 2019 15:43:44 -0500 Original-Received: from localhost (unknown [205.175.106.77]) (Authenticated sender: eric@ericabrahamsen.net) by mail.ericabrahamsen.net (Postfix) with ESMTPSA id 845A6FA087; Mon, 18 Nov 2019 20:43:38 +0000 (UTC) In-Reply-To: (Stefan Monnier's message of "Sun, 17 Nov 2019 23:36:09 -0500") X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 209.51.188.43 X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Original-Sender: "bug-gnu-emacs" Xref: news.gmane.org gmane.emacs.bugs:171937 Archived-At: On 11/17/19 23:36 PM, Stefan Monnier wrote: >> But just so I don't feel like I wasted my afternoon: how *would* one >> write the generalizer I'm talking about? > > Ah, that part. > I guess It could look like (guaranteed 100% untested): > > (defvar gnus--legacy-server-tag (make-symbol "gnus-legacy-server")) > (cl-generic-define-generalizer gnus-legacy-server-generalizer > 90 (lambda (varname &rest _) > `(and (consp ,varname) > (symbolp (car ,varname)) > (assq (car ,varname) nnoo-definition-alist) > (stringp (cadr ,varname)) > gnus--legacy-server-tag)) > (lambda (tag &rest _) > (when (eq tag gnus--legacy-server-tag) (list tag)))) > > (cl-defmethod cl-generic-generalizers ((_ (eql gnus-legacy-server))) > "Dispatch on old-style Gnus server definitions." > (list gnus-legacy-server-generalizer)) That's perfect, thanks. I don't need tested code, I just needed to understand the logic of which bit is responsible for what. I wonder if it would be useful to have an example of this, either in the manual or cl-generic.el code comments? There's still a lot of work to do before struct servers and cons servers can coexist within Gnus, but it's nice to have this piece of the puzzle solved.