+extern "C" void
+edit_push_string(Context* context, const gchar* s)
+{
+ assert(context != NULL);
+ assert(s != NULL);
+ GUI_freeze();
+ context->parser.freeze();
+ for (unsigned i = 0; s[i]; i++) context->lexer.push(s[i]);
+ context->parser.thaw();
+ GUI_thaw();
+}
+
+extern "C" void
+edit_drop(Context* context, gboolean alt)
+{
+ assert(context != NULL);
+ GUI_freeze();
+ context->lexer.drop(alt);
+ GUI_thaw();
+}
+
+void