Index: genshi/template/markup.py
===================================================================
--- genshi/template/markup.py	(revision 806)
+++ genshi/template/markup.py	(working copy)
@@ -275,8 +275,9 @@
                     if 'match_once' not in hints \
                             and 'not_recursive' not in hints:
                         inner = self._match(inner, ctxt, [match_templates[idx]])
-                    content = list(self._include(chain([event], inner, tail),
-                                                 ctxt))
+                    content = self._include(chain([event], inner, tail), ctxt)
+                    if 'not_buffered' not in hints:
+                        content = list(content)
 
                     for test in [mt[0] for mt in match_templates]:
                         test(tail[0], namespaces, ctxt, updateonly=True)
Index: genshi/template/directives.py
===================================================================
--- genshi/template/directives.py	(revision 806)
+++ genshi/template/directives.py	(working copy)
@@ -440,6 +440,8 @@
     def attach(cls, template, stream, value, namespaces, pos):
         hints = []
         if type(value) is dict:
+            if value.get('buffer', '').lower() == 'false':
+                hints.append('not_buffered')
             if value.get('once', '').lower() == 'true':
                 hints.append('match_once')
             if value.get('recursive', '').lower() == 'false':
