diff -ur v36/ezmd.py v37/ezmd.py --- v36/ezmd.py 2019-10-15 20:40:16.000000000 +0900 +++ v37/ezmd.py 2019-10-15 20:51:00.000000000 +0900 @@ -124,10 +124,12 @@ def buf_loop_new(buf, is_call, func): e = Empty() e.mode = e.next_mode = None + e.buf = buf e.tmp = [] def run(): - for e.s in buf: + while e.buf: + e.s = e.buf.pop(0) if is_call(e): func(e) e.tmp = [] @@ -640,9 +642,7 @@ def do_mode(mode, buf, hd_names): if mode == 'macro': macro_dic_update(buf) - return - if mode != 'pre': - buf = do_macro(buf) + return if mode in heads: buf = lst_strip(buf) @@ -739,6 +739,9 @@ (buf, hd_names) = ( [], [] ) def is_call(e): + if e.mode not in ('pre', 'macro'): + r = do_macro( [e.s] ) + (e.s, e.buf) = ( r[0], r[1:] + e.buf ) next_mode_switch(e) return e.next_mode != e.mode