LGTM - but I don't know the internals well enough to really decide that. What about using two macros instead of one? The first would take a context as a first argument (as it does now), the second one uses 'this' in the macro body, omitting that as a macro argument. The former seems to be a rarer case than the latter.
https://codereview.appspot.com/549890043/