syntax = "proto2"; package cursor; import "user.proto"; // empty request message MovedResponse {} // a tuple indicating row and column message RowCol { required int32 row = 1; required int32 col = 2; } // cursor position object message CursorPosition { // path of current buffer this cursor is into required string buffer = 1; // cursor start position required RowCol start = 2; // cursor end position required RowCol end = 3; } // cursor event, with user id and cursor position message CursorEvent { // user moving the cursor required user.UserIdentity user = 1; // new cursor position required CursorPosition position = 2; }