Commit f87a68b3 authored by Richard M. Stallman's avatar Richard M. Stallman
Browse files

(syms_of_undo): Set up Qinhibit_read_only.

(Fprimitive_undo): Sometimes bind inhibit-read-only to t.
parent a6d570c6
......@@ -26,6 +26,8 @@ and this notice must be preserved on all copies. */
/* Last buffer for which undo information was recorded. */
Lisp_Object last_undo_buffer;
Lisp_Object Qinhibit_read_only;
/* Record an insertion that just happened or is about to happen,
for LENGTH characters at position BEG.
(It is possible to record an insertion before or after the fact
......@@ -286,6 +288,7 @@ Return what remains of the list.")
(count, list)
Lisp_Object count, list;
{
int count = specpdl_ptr - specpdl;
register int arg = XINT (count);
#if 0 /* This is a good feature, but would make undo-start
unable to do what is expected. */
......@@ -298,6 +301,10 @@ Return what remains of the list.")
list = Fcdr (list);
#endif
/* Don't let read-only properties interfere with undo. */
if (NILP (current_buffer->read_only))
specbind (Qinhibit_read_only, Qt);
while (arg > 0)
{
while (1)
......@@ -401,11 +408,14 @@ Return what remains of the list.")
arg--;
}
return list;
return unbind_to (count, list);
}
syms_of_undo ()
{
Qinhibit_read_only = intern ("inhibit-read-only");
staticpro (&Qinhibit_read_only);
defsubr (&Sprimitive_undo);
defsubr (&Sundo_boundary);
}
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment