Oops, forgot to attach the example..
#include <gtk/gtk.h> #define EXPR "'GoHello, World!<Esc><C-O>'" void send_hello(GtkButton *btn, gint id) { gchar *command = g_strdup_printf( "gvim --servername %d --remote-send " EXPR, id); g_spawn_command_line_async(command, NULL); } gint main(gint argc, gchar **argv) { gtk_init(&argc, &argv); /* Create window */ GtkWidget *win = gtk_window_new(GTK_WINDOW_TOPLEVEL); GtkWidget *vbox = gtk_vbox_new(FALSE, 0); GtkWidget *sock = gtk_socket_new(); GtkWidget *btn = gtk_button_new_with_label("Hello, World!"); g_signal_connect(sock, "plug-removed", gtk_main_quit, NULL); g_signal_connect(win, "delete-event", gtk_main_quit, NULL); gtk_widget_set_size_request(sock, 200, 200); gtk_box_pack_start(GTK_BOX(vbox), sock, TRUE, TRUE, 0); gtk_box_pack_start(GTK_BOX(vbox), btn, FALSE, TRUE, 0); gtk_container_add(GTK_CONTAINER(win), vbox); gtk_widget_show_all(win); /* Embed vim */ GdkNativeWindow id = gtk_socket_get_id(GTK_SOCKET(sock)); gchar *command = g_strdup_printf( "gvim --servername %d --socketid %d", id, id); g_spawn_command_line_async(command, NULL); g_signal_connect(btn, "clicked", G_CALLBACK(send_hello), (gpointer)id); /* Run */ gtk_main(); return 0; }
Attachment:
pgpT16AO8U9Uo.pgp
Description: PGP signature