From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED!not-for-mail From: Eric Abrahamsen Newsgroups: gmane.emacs.bugs Subject: bug#25294: 26.0.50; Allow more catch-all values for cl-defmethod's &context plus major-mode specializer Date: Mon, 11 Dec 2017 15:57:15 -0800 Message-ID: <87374gstr8.fsf@ericabrahamsen.net> References: <874m1mo8ez.fsf@ericabrahamsen.net> <877f6i826e.fsf@users.sourceforge.net> NNTP-Posting-Host: blaine.gmane.org Mime-Version: 1.0 Content-Type: text/plain X-Trace: blaine.gmane.org 1513036693 19407 195.159.176.226 (11 Dec 2017 23:58:13 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Mon, 11 Dec 2017 23:58:13 +0000 (UTC) User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.0.50 (gnu/linux) Cc: 25294@debbugs.gnu.org To: npostavs@users.sourceforge.net Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Tue Dec 12 00:58:09 2017 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by blaine.gmane.org with esmtp (Exim 4.84_2) (envelope-from ) id 1eOXxZ-0004lE-88 for geb-bug-gnu-emacs@m.gmane.org; Tue, 12 Dec 2017 00:58:09 +0100 Original-Received: from localhost ([::1]:56050 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eOXxe-0005Ab-Np for geb-bug-gnu-emacs@m.gmane.org; Mon, 11 Dec 2017 18:58:14 -0500 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:58047) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eOXxW-00054E-0l for bug-gnu-emacs@gnu.org; Mon, 11 Dec 2017 18:58:06 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eOXxS-0001ET-4L for bug-gnu-emacs@gnu.org; Mon, 11 Dec 2017 18:58:06 -0500 Original-Received: from debbugs.gnu.org ([208.118.235.43]:48778) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1eOXxR-0001EG-UE for bug-gnu-emacs@gnu.org; Mon, 11 Dec 2017 18:58:02 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1eOXxR-0002XR-HH for bug-gnu-emacs@gnu.org; Mon, 11 Dec 2017 18:58: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, 11 Dec 2017 23:58:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 25294 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: moreinfo Original-Received: via spool by 25294-submit@debbugs.gnu.org id=B25294.15130366409696 (code B ref 25294); Mon, 11 Dec 2017 23:58:01 +0000 Original-Received: (at 25294) by debbugs.gnu.org; 11 Dec 2017 23:57:20 +0000 Original-Received: from localhost ([127.0.0.1]:57459 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1eOXwm-0002WK-1G for submit@debbugs.gnu.org; Mon, 11 Dec 2017 18:57:20 -0500 Original-Received: from mail.ericabrahamsen.net ([50.56.99.223]:59378) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1eOXwk-0002WB-DT for 25294@debbugs.gnu.org; Mon, 11 Dec 2017 18:57:18 -0500 Original-Received: from localhost (71-212-75-109.tukw.qwest.net [71.212.75.109]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) (Authenticated sender: eric@ericabrahamsen.net) by mail.ericabrahamsen.net (Postfix) with ESMTPSA id 7B5E1C0854; Mon, 11 Dec 2017 23:57:16 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mail.ericabrahamsen.net; s=mail; t=1513036636; bh=RuJymF/rLLZaI4bGfet6/xysP2ErcGwlNpiwVaoWi6U=; h=From:To:Cc:Subject:References:Date:In-Reply-To:From; b=NLiI1ZJmJUthna33OeNkYA8q+vq545YJC25toL/YYQ74ksFHI4QEjAEGy2WIMAyNe Vt4LVxHuRwRoL+3ZSgVn19ZqEJE6OON0ig6r1yi+1jZppFj+wAVhuGBuRGYT0RLFfd PvYbHl1974EgraRu3ktpnYaZeHfc7MaFpJQtBQZg= In-Reply-To: <877f6i826e.fsf@users.sourceforge.net> (npostavs's message of "Thu, 29 Dec 2016 23:35:05 -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: 208.118.235.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:140957 Archived-At: Ahem, I only just noticed (a year later) that there was a response to this when I searched for bug reports I'd opened -- sorry about that. > Is this about the undocumented specializer mentioned in cl-generic.el? > > ;;; Dispatch on major mode. > > ;; Two parts: > ;; - first define a specializer (derived-mode ) to match symbols > ;; representing major modes, while obeying the major mode hierarchy. > ;; - then define a context-rewriter so you can write > ;; "&context (major-mode c-mode)" rather than > ;; "&context (major-mode (derived-mode c-mode))". Yes, that's it. >> there should be more acceptable options for >> catch-all or fall-through methods. Ie, we want to create a method that >> fires regardless of the major mode. > > If you want to ignore the major mode, why do you want to use the > major-mode specializer? It's the equivalent of the "t" branch in a `cond' statement. You write methods to handle specific major modes, and write another method to handle the catch-all case of "all other modes". >> These signatures don't work, but >> should: >> >> (cl-defmethod example-method ((&context (major-mode fundamental-mode)))) >> > > Should that be > > (cl-defmethod example-method (&context (major-mode fundamental-mode))) > > The reason this doesn't work is because fundamental isn't actually the > parent mode of text-mode or prog-mode, i.e., (get 'text-mode > 'derived-mode-parent) => nil. Right -- I still think either t or nil should do it.