Make block undo and single undo work again.

pull/3/head
Jonathan Moore Liles 2008-03-05 11:03:17 -06:00
parent bccdecdee6
commit 2f91da168d
2 changed files with 20 additions and 7 deletions

View File

@ -242,15 +242,26 @@ Loggable::undo ( void )
int ui = _undo_index;
block_start();
if ( strcmp( b, "{" ) )
{
/* It's a single undo, get rid of trailing messages in this block */
n = 1;
s = b + 2;
s += strlen( s ) - 1;
}
while ( n-- )
{
while ( s >= b && *(--s) );
s++;
if ( ( ! strcmp( s, "{" ) )
|| ( ! strcmp( s, "}" ) ) )
continue;
if ( ! strcmp( s, "{" ) )
break;
if ( *s == '\t' )
s++;
@ -313,6 +324,8 @@ Loggable::undo ( void )
s -= 2;
}
block_end();
// FIXME: bogus... needs to account for multiple events.
_undo_index = ui + 1;

View File

@ -84,17 +84,17 @@ public:
void
block_start ( void )
{
// indent();
// log( "{\n" );
++Loggable::_level;
}
static
void
block_end ( void )
{
assert( --Loggable::_level >= 0 );
// indent();
// log( "}\n" );
if ( Loggable::_level == 0 )
flush();
}
static