519 |
} |
} |
520 |
else if (EQ (car, Qnil)) |
else if (EQ (car, Qnil)) |
521 |
{ |
{ |
522 |
/* Element (nil prop val beg . end) is property change. */ |
/* Element (nil PROP VAL BEG . END) is property change. */ |
523 |
Lisp_Object beg, end, prop, val; |
Lisp_Object beg, end, prop, val; |
524 |
|
|
525 |
prop = Fcar (cdr); |
prop = Fcar (cdr); |
543 |
Fgoto_char (car); |
Fgoto_char (car); |
544 |
Fdelete_region (car, cdr); |
Fdelete_region (car, cdr); |
545 |
} |
} |
546 |
|
else if (SYMBOLP (car)) |
547 |
|
{ |
548 |
|
Lisp_Object oldlist = current_buffer->undo_list; |
549 |
|
/* Element (FUNNAME . ARGS) means call FUNNAME to undo. */ |
550 |
|
apply1 (car, cdr); |
551 |
|
/* Make sure this produces at least one undo entry, |
552 |
|
so the test in `undo' for continuing an undo series |
553 |
|
will work right. */ |
554 |
|
if (EQ (oldlist, current_buffer->undo_list)) |
555 |
|
current_buffer->undo_list |
556 |
|
= Fcons (list2 (Qcdr, Qnil), current_buffer->undo_list); |
557 |
|
} |
558 |
else if (STRINGP (car) && INTEGERP (cdr)) |
else if (STRINGP (car) && INTEGERP (cdr)) |
559 |
{ |
{ |
560 |
/* Element (STRING . POS) means STRING was deleted. */ |
/* Element (STRING . POS) means STRING was deleted. */ |
601 |
UNGCPRO; |
UNGCPRO; |
602 |
return unbind_to (count, list); |
return unbind_to (count, list); |
603 |
} |
} |
604 |
|
|
605 |
void |
void |
606 |
syms_of_undo () |
syms_of_undo () |
607 |
{ |
{ |