[RFC] readtags: introducing macros
I'm enjoying using -Q.
However, writing a long S expression on CLI is painful. Writing completion rules in zsh is a choice, but I don't have enough time.
So I'm thinking about the standard way of lisp programmer: introducing macros.
$ cat ~/extern.es
;; -*- emacs-lisp -*- supports regex literals.
(defmacro +extern? ((input :string))
(and (subst? $input input)
(#/func.*|var.*/ $kind)
(or (#/extern/ (or ($ "properties") ""))
(and (not (#/static/ (or ($ "properties") "")))
(not (#/fileScope|reference|inputFile/ (or $extras "")))))))
$ readtags --rc ~/extern.es -Q '(+extern? "foo.c")' -l
...
This one is for extracting exported names in C source files.
The + prepended to extern? represents a request for the macro expansion.
With this prefix, we can avoid conflict between user-defined macros and the built-ins we will introduce.
@AmaiKinono, I would like to hear your comments.
I don't use -Q directly so I can't say I have a good understanding of this proposal, but it do look useful for power users.
In https://github.com/universal-ctags/citre/issues/172 I planned to create an interactive tool to filter a tags file. I think I should support using filter/sorter expressions directly so power users could combine user-defined macros with the convenience of a client tool.