fix whole-buffer evaluation order and symbol intrusion in related macros