+ if (!is_text_item (item))
+ return false;
+
+ struct text_item *text_item = to_text_item (item);
+ if (text_item->markup) /* XXX */
+ return false;
+
+ enum text_item_type type = text_item_get_type (text_item);
+ if (type != TEXT_ITEM_SYNTAX && type != TEXT_ITEM_LOG)
+ return false;
+
+ if (!ds_is_empty (&e->deferred_text) && e->deferred_type != type)
+ flush_deferred_text (e);
+
+ e->deferred_type = type;
+
+ if (!ds_is_empty (&e->deferred_text))
+ ds_put_byte (&e->deferred_text, '\n');
+
+ const char *text = text_item_get_text (text_item);
+ ds_put_cstr (&e->deferred_text, text);
+ output_item_unref (item);
+
+ return true;