From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp1 ([2001:41d0:2:4a6f::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms11 with LMTPS id AD9iIhs0n174JQAA0tVLHw (envelope-from ) for ; Tue, 21 Apr 2020 17:57:47 +0000 Received: from aspmx1.migadu.com ([2001:41d0:2:4a6f::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp1 with LMTPS id CJfkISE0n178KwAAbx9fmQ (envelope-from ) for ; Tue, 21 Apr 2020 17:57:53 +0000 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by aspmx1.migadu.com (Postfix) with ESMTPS id D79E0941B63 for ; Tue, 21 Apr 2020 17:57:51 +0000 (UTC) Received: from localhost ([::1]:33956 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jQx9Z-0004ze-Sj for larch@yhetil.org; Tue, 21 Apr 2020 13:57:49 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:39344) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jQx9B-0004y3-GY for emacs-orgmode@gnu.org; Tue, 21 Apr 2020 13:57:25 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.90_1) (envelope-from ) id 1jQx9A-0000Xd-IC for emacs-orgmode@gnu.org; Tue, 21 Apr 2020 13:57:25 -0400 Received: from relay2-d.mail.gandi.net ([217.70.183.194]:61001) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jQx99-0000W7-Rh for emacs-orgmode@gnu.org; Tue, 21 Apr 2020 13:57:24 -0400 X-Originating-IP: 185.131.40.67 Received: from localhost (40-67.ipv4.commingeshautdebit.fr [185.131.40.67]) (Authenticated sender: admin@nicolasgoaziou.fr) by relay2-d.mail.gandi.net (Postfix) with ESMTPSA id 3D2D74000D; Tue, 21 Apr 2020 17:57:19 +0000 (UTC) From: Nicolas Goaziou To: Benjamin Andresen via "General discussions about Org-mode." Subject: Re: Public API change: How to handle function signature change gracefully References: Mail-Followup-To: Benjamin Andresen via "General discussions about Org-mode." , Benjamin Andresen Date: Tue, 21 Apr 2020 19:57:18 +0200 In-Reply-To: (Benjamin Andresen via's message of "Sun, 19 Apr 2020 08:42:19 +0200 (CEST)") Message-ID: <87pnc0pvr5.fsf@nicolasgoaziou.fr> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.3 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Received-SPF: pass client-ip=217.70.183.194; envelope-from=mail@nicolasgoaziou.fr; helo=relay2-d.mail.gandi.net X-detected-operating-system: by eggs.gnu.org: First seen = 2020/04/21 13:57:20 X-ACL-Warn: Detected OS = Linux 3.11 and newer [fuzzy] X-Received-From: 217.70.183.194 X-BeenThere: emacs-orgmode@gnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Benjamin Andresen Errors-To: emacs-orgmode-bounces+larch=yhetil.org@gnu.org Sender: "Emacs-orgmode" X-Scanner: scn0 X-Spam-Score: -1.11 Authentication-Results: aspmx1.migadu.com; dkim=none; dmarc=none; spf=pass (aspmx1.migadu.com: domain of emacs-orgmode-bounces@gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=emacs-orgmode-bounces@gnu.org X-Scan-Result: default: False [-1.11 / 13.00]; RCVD_VIA_SMTP_AUTH(0.00)[]; GENERIC_REPUTATION(0.00)[-0.56815419796765]; HAS_XOIP(0.00)[]; R_SPF_ALLOW(-0.20)[+ip4:209.51.188.0/24:c]; IP_REPUTATION_HAM(0.00)[asn: 22989(0.23), country: US(-0.01), ip: 209.51.188.17(-0.57)]; TO_DN_ALL(0.00)[]; MX_GOOD(-0.50)[cached: eggs.gnu.org]; RCPT_COUNT_TWO(0.00)[2]; MAILLIST(-0.20)[mailman]; FORGED_RECIPIENTS_MAILLIST(0.00)[]; RCVD_IN_DNSWL_LOW(-0.10)[209.51.188.17:from]; RCVD_TLS_LAST(0.00)[]; R_DKIM_NA(0.00)[]; ASN(0.00)[asn:22989, ipnet:209.51.188.0/24, country:US]; MID_RHS_MATCH_FROM(0.00)[]; TAGGED_FROM(0.00)[larch=yhetil.org]; ARC_NA(0.00)[]; RCVD_COUNT_FIVE(0.00)[6]; FROM_NEQ_ENVFROM(0.00)[mail@nicolasgoaziou.fr,emacs-orgmode-bounces@gnu.org]; FROM_HAS_DN(0.00)[]; MIME_GOOD(-0.10)[text/plain]; MIME_TRACE(0.00)[0:+]; DMARC_NA(0.00)[nicolasgoaziou.fr]; HAS_LIST_UNSUB(-0.01)[]; FORGED_SENDER_MAILLIST(0.00)[] X-TUID: sOmQcphiKyoz Hello, Benjamin Andresen writes: > > I would like to change the public API of the :face part of `org-link-set-= parameters': > > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 (org-link-set-parameters "file= " :face 'org-link) > > My ultimate goal is to have org-links be able to be have their face chang= ed based on the contents, not just the path of the link. > > I found the relevant code in org.el in the function `org-activate-links': > > =C2=A0=C2=A0 'face (pcase (org-link-get-parameter type :face) > =C2=A0=C2=A0 ((and (pred functionp) face) (funcall face path)) > =C2=A0=C2=A0 ((and (pred facep) face) face) > =C2=A0=C2=A0 ((and (pred consp) face) face) ;anonymous > =C2=A0=C2=A0 (_ 'org-link)) > > and would like to change this to=20 > > =C2=A0=C2=A0 'face (pcase (org-link-get-parameter type :face) > =C2=A0=C2=A0 ((and (pred functionp) face) (funcall face path contents)) ;= ; this is the change > =C2=A0=C2=A0 ((and (pred facep) face) face) > =C2=A0=C2=A0 ((and (pred consp) face) face) ;anonymous > =C2=A0=C2=A0 (_ 'org-link)) > > Now that will introduce a host of call issues because the callees don't e= xpect to the amount of arguments changed under their bottom. > > I would like some guidance how I could get what I think is neat: The > contents of the bracket-style links as an additional parameter to set > faces on and not breaking existing hookups. Isn't the function called with point on the link? You may just need to extract the contents from the environment. Otherwise, a solution is to catch `wrong-number-of-arguments' error and call again the function with the old calling convention. See, e.g., `org-link-open'. > To make this more palatable I would suggest it's changed so that the > 2nd argument will be a list of alists or keywords so to not have this > function signature problem if someone else comes up with a reason to > introduce yet more data. Beware the over-engineering. At this point, someone motivated enough can put an advice to the link fontification function. Regards, --=20 Nicolas Goaziou