What this does is allow you within a prog to treat multiple lines
as a single one, based on the presence of a + sign at the end.
The syntax for this would be:

>speech_prog p test
say hello $n,+
this is all going to appear+
on a single line because of the concatenation snippet by Eos.
say While this will appear on a separate line because the line+
above it did not end in an plus sign.



Mprog next command becomes this:

char *mprog_next_command( char *clist ) 
{
  bool Append = FALSE;
  char *pointer = clist;

  while ( *pointer != '\0' )
  {
    if (Append == FALSE && (*pointer == '\n' || *pointer == '\r'))
       break;
    if (Append == TRUE && *pointer != '\n' && *pointer != '\r')
       Append = FALSE;
    else if (Append == TRUE && (*pointer == '\n' || *pointer == '\r'))
    {
/* 
       A tilde is one symbol we can be absolutely certain never 
       to have as part of a prog, so can replace the returns with 
       tildes, and then later we will strip all tildes from the
       output before its parse the final time. 
*/
      *pointer = '~';   
    }
    if ( *pointer == '+' )
    {
      Append = TRUE;
      *pointer = ' ';
    }
    pointer++;
  }
  if ( *pointer == '\n' )
    *pointer++  = '\0';
  if ( *pointer == '\r' )
    *pointer++ = '\0';

  return ( pointer );
}

Just above;

  affflags = mob->affected_by;
  xREMOVE_BIT(mob->affected_by, AFF_BLIND);
    /* Evaluate/execute the command, check what happened. */
    result = mprog_do_command( cmnd, mob, actor, obj, vo, rndm, 
            ( ifstate[iflevel][IN_IF] && !ifstate[iflevel][DO_IF] )
            || ( ifstate[iflevel][IN_ELSE] && !ifstate[iflevel][DO_ELSE] ),
            ( ignorelevel > 0 ) );


We add:
  cmnd = strip_tilde( cmnd);

and we add in:

/*
  
     See note above for why we use this.

*/
char *strip_tilde( char *str )
{
    static char newstr[MAX_STRING_LENGTH];
    int i, j;

    for ( i=j=0; str[i] != '\0'; i++ )
	if ( str[i] != '~' )
	{
	  newstr[j++] = str[i];	
	}
    newstr[j] = '\0';
    return newstr;
}

And a prototype for strip tilde in the top of mud_prog.c
char *strip_tilde( char *str );

And we're done.

Unless you're using the auto word-wrap feature, in which case you want to 
do the following to build.c:

Immediately after:
	     if ((strlen_color(buf) + strlen_color(arg) + 1) <= 79)
              sprintf(buf, "%s%s%s", buf, buf[0] == '\0' ? "" : " ", arg);
             else                          // Ok end this line and move onto the next
             {

Add:
              if (ch->substate == SUB_MPROG_EDIT )
                strcat( buf, "+"); // Add this in so concatenates properly.

And this will automatically append the + sign for your builders if a line is too long.