From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp0 ([2001:41d0:2:4a6f::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms0.migadu.com with LMTPS id IDOuAzdQFWH0LAEAgWs5BA (envelope-from ) for ; Thu, 12 Aug 2021 18:45:43 +0200 Received: from aspmx1.migadu.com ([2001:41d0:2:4a6f::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp0 with LMTPS id UHAOOzZQFWH6YgAA1q6Kng (envelope-from ) for ; Thu, 12 Aug 2021 16:45:42 +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 63006530D for ; Thu, 12 Aug 2021 18:45:42 +0200 (CEST) Received: from localhost ([::1]:45230 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mEDps-0003sp-FC for larch@yhetil.org; Thu, 12 Aug 2021 12:45:40 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:48920) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mEDp9-0003sg-BO for emacs-orgmode@gnu.org; Thu, 12 Aug 2021 12:44:55 -0400 Received: from ciao.gmane.io ([116.202.254.214]:37546) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mEDp7-0001Vo-W2 for emacs-orgmode@gnu.org; Thu, 12 Aug 2021 12:44:55 -0400 Received: from list by ciao.gmane.io with local (Exim 4.92) (envelope-from ) id 1mEDp5-0003Ni-40 for emacs-orgmode@gnu.org; Thu, 12 Aug 2021 18:44:51 +0200 X-Injected-Via-Gmane: http://gmane.org/ To: emacs-orgmode@gnu.org From: Maxim Nikulin Subject: Re: BUG: org-lint false missing arguments for macro with optional arguments Date: Thu, 12 Aug 2021 23:44:19 +0700 Message-ID: References: Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.11.0 In-Reply-To: Content-Language: en-US Received-SPF: pass client-ip=116.202.254.214; envelope-from=geo-emacs-orgmode@m.gmane-mx.org; helo=ciao.gmane.io X-Spam_score_int: 28 X-Spam_score: 2.8 X-Spam_bar: ++ X-Spam_report: (2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_ADSP_CUSTOM_MED=0.001, FORGED_GMAIL_RCVD=1, FORGED_MUA_MOZILLA=2.309, FREEMAIL_FORGED_FROMDOMAIN=0.249, FREEMAIL_FROM=0.001, HEADER_FROM_DIFFERENT_DOMAINS=0.25, NICE_REPLY_A=-0.001, NML_ADSP_CUSTOM_MED=0.9, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action 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: , Errors-To: emacs-orgmode-bounces+larch=yhetil.org@gnu.org Sender: "Emacs-orgmode" X-Migadu-Flow: FLOW_IN ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=yhetil.org; s=key1; t=1628786742; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=RcNro5gSGEN/vt+ZAeCXmlPwtx6FekB4vHuCJ7L2OHc=; b=szEmim0/mJcJd/j5gW1MwHuugYSy2SVWOEy6jyQ7edZJBnVncPogZqa3i/vppsirlrVbRI FWl4msKk/wjvellgG2C9ssTifQW6r/CdMrCwid4IWr5vBhWlqroDl+6mSh2Avmvpyagq3R INIXvi0+40ecE6K6tlQEzDxwhI7WdO9ykSINvtOuyXVt0ab45Khyq2MUPv8kLnqTZyafJt O7uZRZU2mGI+MNayp5sHK/ODZmgbG9UDaopJ18/Qm8alz/BCGAS/S5Qn8lib7ITGA4iuqd PTF+gxdoHmBV5vgAOhCdtVXOUdS+VKkKCopNyc5WhhKaj6nuyOMNONAnBQnMkA== ARC-Seal: i=1; s=key1; d=yhetil.org; t=1628786742; a=rsa-sha256; cv=none; b=lf1zLk6GzpV1rXnZXt/cbspvJaW3tAb+XPM6C+wMJhvEvSsHwFq5dwKpZh36tCcu3PBaBi zvzQCziZW12VV4QPEf0YmZ29ZkNv1m3SROZnvnG77fgdQUVJi4F3+aKYfM6u3oWPdIpiq6 Y0yi5DXdVGzyfU/QWFz4ZSOswY8K4Yr5eBV+c/mN+6ZZ0EO+rJeTYbpU3qgNJclkaMnUGh zDNS8hZXmDTt3i7cqhP9L0ve5P2MKZhk/VTEJJkGTtdn99rEGVH53M0dIM2lk7NGZfFBFq S1NemFRuYtyd2LvdCa/7eaDFUeLMFTpKOTJ1EzfbPZvLtJN8JtlGlyQw0N3pPQ== ARC-Authentication-Results: i=1; aspmx1.migadu.com; dkim=none; dmarc=fail reason="SPF not aligned (relaxed), No valid DKIM" header.from=gmail.com (policy=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-Migadu-Spam-Score: -1.81 Authentication-Results: aspmx1.migadu.com; dkim=none; dmarc=fail reason="SPF not aligned (relaxed), No valid DKIM" header.from=gmail.com (policy=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-Migadu-Queue-Id: 63006530D X-Spam-Score: -1.81 X-Migadu-Scanner: scn0.migadu.com X-TUID: hJWu700J3LZk On 30/06/2021 20:30, Michael Dauer wrote: > > I've the following: > (defun ct-action-plan (&optional up recently-done) > ... > (push '("action_plan" . "(eval (ct-action-plan $1 $2))") > org-export-global-macros) Didn't you report that adding macros directly to `org-export-global-macros' are not supported by `org-lint' at all? On 30/06/2021 16:40, Michael Dauer wrote: > I have a lot of global macros defined in org-export-global-macros. > Wherever they are used in my org files org-lint reports them as undefined. end of 30/06/2021 16:40 message > The arguments of the function are specified as optional. The macro just > call it with $1 and $2, which are nil if not stated like in the following: > {{{action_plan}}} > > But here org-lint reports: > 327 low   Missing arguments in macro "action_plan" I can not reproduce it with current master and macros defined inside an org document #+begin_src emacs-lisp :results silent :eval never-export (defun tst-macro-wrapper (args) (apply #'tst-macro args)) (defun tst-macro (&optional one two) (format "one: %S two: %S." one two)) #+end_src #+macro: mcropt (eval (tst-macro-wrapper _)) #+macro: mcrarg (eval (tst-macro $1 $2)) - opt :: + {{{mcropt}}} + {{{mcropt(onlyone)}}} + {{{mcropt(first,second)}}} - arg :: + {{{mcrarg}}} + {{{mcrarg(onlyone)}}} + {{{mcrarg(first,second)}}} `org-lint' reports no issues. mcropt relies on undocumented details of implementation. > Is this a bug? Any ideas for a work-around to avoid confusion for my users. Since eval expression may be arbitrary complex, it is a challenge to parse a general form to find whether arguments are optional at particular call site. More precise analysis of macro arguments would be a great feature. Unsure if it is feasible. P.S. Various static code analyzers for programming languages allows to suppress particular warnings at specific lines by adding special comments. P.P.S "Rest" arguments substitution in macros (e.g. $_) may mitigate an issue with phrases including commas as an argument https://orgmode.org/list/s7gfc6$hj1$1@ciao.gmane.io