X-Git-Url: http://git.hcoop.net/bpt/emacs.git/blobdiff_plain/6e6c82a4e687708d5a7a3887f92db45bd74da276..c644523bd8a23e518c91b61a1b8520e866b715b9:/src/cmds.c
diff --git a/src/cmds.c b/src/cmds.c
index 225c26b082..c06a9edd16 100644
--- a/src/cmds.c
+++ b/src/cmds.c
@@ -22,8 +22,8 @@ along with GNU Emacs. If not, see . */
#include
#include "lisp.h"
#include "commands.h"
-#include "buffer.h"
#include "character.h"
+#include "buffer.h"
#include "syntax.h"
#include "window.h"
#include "keyboard.h"
@@ -296,7 +296,10 @@ At the end, it runs `post-self-insert-hook'. */)
if (remove_boundary
&& CONSP (BVAR (current_buffer, undo_list))
- && NILP (XCAR (BVAR (current_buffer, undo_list))))
+ && NILP (XCAR (BVAR (current_buffer, undo_list)))
+ /* Only remove auto-added boundaries, not boundaries
+ added be explicit calls to undo-boundary. */
+ && EQ (BVAR (current_buffer, undo_list), last_undo_boundary))
/* Remove the undo_boundary that was just pushed. */
BVAR (current_buffer, undo_list) = XCDR (BVAR (current_buffer, undo_list));
@@ -443,7 +446,8 @@ internal_self_insert (int c, EMACS_INT n)
/* If we expanded an abbrev which has a hook,
and the hook has a non-nil `no-self-insert' property,
return right away--don't really self-insert. */
- if (SYMBOLP (sym) && ! NILP (sym) && ! NILP (XSYMBOL (sym)->function)
+ if (SYMBOLP (sym) && ! NILP (sym)
+ && ! NILP (XSYMBOL (sym)->function)
&& SYMBOLP (XSYMBOL (sym)->function))
{
Lisp_Object prop;