static void do_start_extend (w, event, params, num_params, use_cursor_loc) Widget w; XEvent *event;			 String *params GCC_UNUSED; Cardinal *num_params GCC_UNUSED; Bool use_cursor_loc;
static void do_start_extend ( Widget w, XEvent *event,			 String *params GCC_UNUSED, Cardinal *num_params GCC_UNUSED, Bool use_cursor_loc)
static void do_start_extend (w, event, params, num_params, use_cursor_loc)Widget w;XEvent *event;			/* must be XButtonEvent* */String *params GCC_UNUSED;Cardinal *num_params GCC_UNUSED;Bool use_cursor_loc;{	TScreen *screen;	int row, col, coord;	if (!IsXtermWidget(w))		return;	screen = &((XtermWidget)w)->screen;	if (SendMousePosition(w, event)) return;	firstValidRow = 0;	lastValidRow  = screen->max_row;	selectUnit = EvalSelectUnit(event->xbutton.time, selectUnit);	replyToEmacs = FALSE;	if (numberOfClicks == 1) {		/* Save existing selection so we can reestablish it if the guy		   extends past the other end of the selection */		saveStartRRow = startERow = startRRow;		saveStartRCol = startECol = startRCol;		saveEndRRow   = endERow   = endRRow;		saveEndRCol   = endECol   = endRCol;	} else {		/* He just needed the selection mode changed, use old values. */		startERow = startRRow = saveStartRRow;		startECol = startRCol = saveStartRCol;		endERow   = endRRow   = saveEndRRow;		endECol   = endRCol   = saveEndRCol;	}	if (use_cursor_loc) {	    row = screen->cursor_row;	    col = screen->cursor_col;	} else {	    PointToRowCol(event->xbutton.y, event->xbutton.x, &row, &col);	}	coord = Coordinate(row, col);	if (Abs(coord - Coordinate(startSRow, startSCol))	     < Abs(coord - Coordinate(endSRow, endSCol))	    || coord < Coordinate(startSRow, startSCol)) {	 	/* point is close to left side of selection */		eventMode = LEFTEXTENSION;		startERow = row;		startECol = col;	} else {	 	/* point is close to left side of selection */		eventMode = RIGHTEXTENSION;		endERow = row;		endECol = col;	}	ComputeSelect(startERow, startECol, endERow, endECol, True);}