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: Help making a map-do/seq-do based code work on emacs 26.3 Date: Wed, 04 May 2022 22:20:38 -0400 Message-ID: References: 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="35742"; 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:9O02Lcn3vyir+RGdC2L+rYd29vM= Original-X-From: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane-mx.org@gnu.org Thu May 05 04:21:18 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 1nmR7F-0009Ab-UQ for geh-help-gnu-emacs@m.gmane-mx.org; Thu, 05 May 2022 04:21:17 +0200 Original-Received: from localhost ([::1]:59974 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nmR7E-0000CW-IC for geh-help-gnu-emacs@m.gmane-mx.org; Wed, 04 May 2022 22:21:16 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:50652) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nmR6l-0000Bw-5C for help-gnu-emacs@gnu.org; Wed, 04 May 2022 22:20:47 -0400 Original-Received: from ciao.gmane.io ([116.202.254.214]:40834) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nmR6j-0004m5-Pm for help-gnu-emacs@gnu.org; Wed, 04 May 2022 22:20:46 -0400 Original-Received: from list by ciao.gmane.io with local (Exim 4.92) (envelope-from ) id 1nmR6i-0008Uj-DN for help-gnu-emacs@gnu.org; Thu, 05 May 2022 04:20:44 +0200 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:137125 Archived-At: Kaushal Modi [2022-05-04 14:50:37] wrote: > Hello, > > I recently published the tomelr package on GNU ELPA that can take in a > plist or alist and return a TOML string. > > Now I need to tackle a small problem that makes the package fail at > run-time only on emacs 26.3 (not on emacs 27+) when a plist is passed > to its tomelr-encode function. > > Recipe to reproduce failure: > > 1. Load emacs 26.3 > 2. Install tomelr from GNU ELPA > 3. (require 'tomelr) > 4. M-: (tomelr-encode '(:int 123)) > > Error backtrace > > Test test-plist backtrace: > #f(compiled-function (pair) #)(:int) > mapc(#f(compiled-function (pair) #) (:int 123)) > seq-do(#f(compiled-function (pair) #) (:int 123)) > map--do-alist(tomelr--print-pair (:int 123)) > map-do(tomelr--print-pair (:int 123)) % grep -C2 plist etc/NEWS.27 ** map.el *** Now also understands plists. *** Now defined via generic functions that can be extended via 'cl-defmethod'. *** Deprecate the 'map-put' macro in favor of a new 'map-put!' function. % IOW, you need a map that's more recent than the one that comes with Emacs<27. > - Is there a function or few of them that I can override so that > (tomelr-encode '(:int 123)) works on emacs 26.3 as well? You can use something else than the `map` library. The `map` library in Emacs-26 doesn't make it easy to extend :-( > - Can I force install map and seq from GNU ELPA on emacs 26.3? For `seq`, yes, but `map` is not in GNU ELPA. > But how can I do that if a user's package.el is installing tomelr.el > from GNU ELPA as a dependency? For `seq`, just add the dependency on the corresponding version of `seq` in `Package-Requires:`. > Also package.el will refuse to install map and > seq because they are already present in Emacs 26.3 core. No, if the builtin package is older, it will (modulo bugs, as always) install (and use) the version from GNU ELPA. Stefan