"31 # 35 " python << EOF import vim import sys import gobject import dbus import dbus.service import dbus.glib from dbus.mainloop.glib import DBusGMainLoop remotecontrol_count = 0 bus = dbus.SessionBus() class DBusDocument(dbus.service.Object): def __init__(self, bus, object_path, parent=None): dbus.service.Object.__init__(self, bus, object_path) self._parent = parent self._doc = parent @dbus.service.method(dbus_interface='org.gnome.gedit.plugin.remotecontrol', in_signature='s', out_signature='s') def SayHello(self, txt): return 'Hello, %s!' % txt @dbus.service.signal(dbus_interface='org.gnome.gedit.plugin.remotecontrol', signature='usu') def TextInserted(self, loc, text, len): print "emit TextInserted(%d, '%s', %d)" % (loc, text, len) @dbus.service.signal(dbus_interface='org.gnome.gedit.plugin.remotecontrol', signature='uu') def RangeDeleted(self, start, end): print "emit RangeDeleted(%d, %d)" % (start, end) @dbus.service.method(dbus_interface='org.gnome.gedit.plugin.remotecontrol', in_signature='usu', out_signature='b') def InsertText(self, loc, text, len): print 'inserting text %s!' % text iter = self._doc.get_iter_at_offset(loc) self._parent.dbus_change_in_progress = 1 self._doc.insert(iter, text, len) self._parent.dbus_change_in_progress = 0 return True @dbus.service.method(dbus_interface='org.gnome.gedit.plugin.remotecontrol', in_signature='uu', out_signature='b') def DeleteRange(self, start, end): print 'deleting text %d %d!' % (start, end) self._parent.dbus_change_in_progress = 1 self._parent.dbus_change_in_progress = 0 return True mydoc = DBusDocument(bus, "/path/to") def cursorMovedCb(): import vim global remotecontrol_count remotecontrol_count += 1 cb = vim.current.buffer line = cb[0] mydoc.TextInserted(2, "toto", 4) cb[0] = '"' + str(remotecontrol_count) + ' # ' + vim.eval("b:changedtick") EOF autocmd CursorMoved * python cursorMovedCb()