GNU bug report logs -
#38252
27.0.50; Gnus server definitions and generic function specializers
Previous Next
Full log
View this message in rfc822 format
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.
This bug report was last modified 5 years and 251 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.