From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Stefan Monnier via Users list for the GNU Emacs text editor Newsgroups: gmane.emacs.help Subject: Re: Attach a map to another Date: Sat, 19 Feb 2022 13:29:56 -0500 Message-ID: References: <20220219130737.esdd2kou35avl75e.ref@Ergus> <20220219130737.esdd2kou35avl75e@Ergus> Reply-To: Stefan Monnier Mime-Version: 1.0 Content-Type: text/plain Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="21055"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/29.0.50 (gnu/linux) To: help-gnu-emacs@gnu.org Cancel-Lock: sha1:zR0MCPN1/RMJbm58mLhxyv3L8H8= Original-X-From: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane-mx.org@gnu.org Sat Feb 19 19:31:09 2022 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 1nLUVh-0005Nm-PB for geh-help-gnu-emacs@m.gmane-mx.org; Sat, 19 Feb 2022 19:31:09 +0100 Original-Received: from localhost ([::1]:58142 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nLUVg-0002yA-KZ for geh-help-gnu-emacs@m.gmane-mx.org; Sat, 19 Feb 2022 13:31:08 -0500 Original-Received: from eggs.gnu.org ([209.51.188.92]:55610) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nLUUj-0002xe-07 for help-gnu-emacs@gnu.org; Sat, 19 Feb 2022 13:30:09 -0500 Original-Received: from ciao.gmane.io ([116.202.254.214]:52426) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nLUUg-0004UC-8g for help-gnu-emacs@gnu.org; Sat, 19 Feb 2022 13:30:08 -0500 Original-Received: from list by ciao.gmane.io with local (Exim 4.92) (envelope-from ) id 1nLUUe-0004Ba-4N for help-gnu-emacs@gnu.org; Sat, 19 Feb 2022 19:30:04 +0100 X-Injected-Via-Gmane: http://gmane.org/ Received-SPF: pass client-ip=116.202.254.214; envelope-from=geh-help-gnu-emacs@m.gmane-mx.org; helo=ciao.gmane.io X-Spam_score_int: -16 X-Spam_score: -1.7 X-Spam_bar: - X-Spam_report: (-1.7 / 5.0 requ) BAYES_00=-1.9, HEADER_FROM_DIFFERENT_DOMAINS=0.249, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=no 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" Xref: news.gmane.io gmane.emacs.help:136012 Archived-At: > I think that having a keymap entry in another one makes the trick > according to the documentation: > (keymap > (keymap > (26 . extra-functions)) > (24 . normal-functions)) Yes, it's the low-level representation used for multi-keymap inheritance. > but I am wondering if there is an api to do that more conveniently?? The only API available which uses that is `make-composed-keymap`. [ Well, there's also `lookup-key` since multiple inheritance can appear naturally in some cases as the result of looking up bindings in keymaps with single inheritance. Fixing those corner cases was actually the original motivation for introducing support for multiple inheritance. ] > (define-minor-mode my-mode > :keymap 'my-mode-keymap > (if my-mode > (keymap-set isearch-mode-map my-mode-isearch-map) > (keymap-unset isearch-mode-map ))) This code isn't right, but I see what you mean, and indeed, that's a good use case. We sadly don't yet have good functions for that, so you have to get dirty and do it by hand, with something like: (define-minor-mode my-mode (if my-mode (cl-pushnew my-mode-map (cdr isearch-mode-map)) (delq my-mode-map isearch-mode-map))) -- Stefan