From: Maxim Nikulin <manikulin@gmail.com> To: emacs-orgmode@gnu.org Subject: Re: BUG: org-lint false missing arguments for macro with optional arguments Date: Thu, 12 Aug 2021 23:44:19 +0700 [thread overview] Message-ID: <sf3j5q$bou$1@ciao.gmane.io> (raw) In-Reply-To: <CAP7OBxK7k_5e9f2bnrEfz2P5XJgd8wSF6LAEMaN9urkteSRNcw@mail.gmail.com> 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
prev parent reply other threads:[~2021-08-12 16:45 UTC|newest] Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top 2021-06-30 13:30 Michael Dauer 2021-08-12 8:32 ` Ihor Radchenko 2021-08-12 16:44 ` Maxim Nikulin [this message]
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style List information: https://www.orgmode.org/ * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to='sf3j5q$bou$1@ciao.gmane.io' \ --to=manikulin@gmail.com \ --cc=emacs-orgmode@gnu.org \ --subject='Re: BUG: org-lint false missing arguments for macro with optional arguments' \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
Code repositories for project(s) associated with this inbox: https://git.savannah.gnu.org/cgit/emacs/org-mode.git This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).