In build.c repalce:

    if ( edit->size + strlen(argument) + 1 >= MAX_STRING_LENGTH - 1 )
	send_to_char( "You buffer is full.\n\r", ch );
    else
    {
	if ( strlen(argument) > 79 )
	{
	  strncpy( buf, argument, 79 );
	  buf[79] = 0; 
	  send_to_char( "(Long line trimmed)\n\r> ", ch );
	}
	else
	  strcpy( buf, argument );
	strcpy( edit->line[edit->on_line++], buf );
	if ( edit->on_line > edit->numlines )
	  edit->numlines++;
	if ( edit->numlines > max_buf_lines )
	{
	  edit->numlines = max_buf_lines;
	  send_to_char( "Buffer full.\n\r", ch );
	  save = TRUE;
	}
    }


With:

    if ( edit->size + strlen(argument) + 1 >= MAX_STRING_LENGTH - 1 )
	send_to_char( "You buffer is full.\n\r", ch );
    else
    {
	if ( strlen_color(argument) > 79 )
	{
          char arg[MAX_STRING_LENGTH];
          buf[0] = '\0';


          while ( argument[0] != '\0' )
	  {
	     argument = one_argument( argument, arg );

	     if (strlen_color(arg) > 79) // A single word more than 80 long? Skip!
               continue;

	     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
             {
	      strcpy( edit->line[edit->on_line++], buf );
	      if ( edit->on_line > edit->numlines )
	       edit->numlines++;
              buf[0] = '\0'; // Resets the buffer to empty so can start over again.
              strcat(buf, arg); // Adds the word that was too much, to buffer and continues processing 
             }
             if ( edit->numlines > max_buf_lines )
             {
	      edit->numlines = max_buf_lines;
	      send_to_char( "You've run out of room in the editing buffer.\n\r", ch );
	      save = TRUE;
             }
          }      
	  strcpy( edit->line[edit->on_line++], buf );
	  if ( edit->on_line > edit->numlines )
	   edit->numlines++;
          buf[0] = '\0'; // Resets the buffer to empty so can start over again.
          if ( edit->numlines > max_buf_lines )
          {
	      edit->numlines = max_buf_lines;
	      send_to_char( "You've run out of room in the editing buffer.\n\r", ch );
	      save = TRUE;
          }
	}
	else
	  strcpy( buf, argument );
        if (buf[0] != '\0')
	  strcpy( edit->line[edit->on_line++], buf );
	if ( edit->on_line > edit->numlines )
	  edit->numlines++;
	if ( edit->numlines > max_buf_lines )
	{
	  edit->numlines = max_buf_lines;
	  send_to_char( "Buffer full.\n\r", ch );
	  save = TRUE;
	}
    }


mud.h, editor data:
    char              line[49][81];
becomes:
    char              line[99][160];

Then in edit_buffer in build.c
    max_buf_lines = 24;

    if ( ch->substate == SUB_MPROG_EDIT || ch->substate == SUB_HELP_EDIT )
            max_buf_lines = 48;

becomes:
    max_buf_lines = 100;

    if ( ch->substate == SUB_MPROG_EDIT || ch->substate == SUB_HELP_EDIT )
            max_buf_lines = 100;


The standard strlen_color for those who don't have it:

/* Strlen_color by Rusty, useful for skipping over colors */
/* Fixed and edited by Xerves -- 8/29/99 */
int strlen_color (char *argument)
{
    char  *str;
    int    i, length;

    str = argument;
    if (argument == NULL)
        return 0;

    for (length=i=0; i < strlen (argument); ++i)
    {
        if ((str [i] != '&') && (str [i] != '^'))
            ++length;
        if ((str [i] == '&') || (str [i] == '^'))
          {
            if ((str[i] == '&') && (str[i+1] == '&'))
                length=2+length;
            else if ((str[i] == '^') && (str[i+1] == '^'))
                length=2+length;
            else
                --length;
          }
    }
    return length;
}
 

In handler.c in your definition of one_argument you will need to change:
	*arg_first = LOWER(*argument);
to
	*arg_first = *argument;

If you do not want all capitalization to be removed from word wrapped content.