(when (save-excursion
(skip-chars-backward " \t")
(not (bolp)))
- (setq delete-temp-newline
- (list (point-marker)))
(c-newline-and-indent)
- (setcdr delete-temp-newline (point-marker)))
+ ;; Set markers around the newline and indention inserted
+ ;; above. We insert the start marker here and not before
+ ;; the call to kludge around a misfeature in expand-abbrev:
+ ;; If the line contains e.g. "else" then expand-abbrev will
+ ;; be called when c-newline-and-indent inserts the newline.
+ ;; That function first removes the abbrev "else" and then
+ ;; inserts the expansion, which is an identical "else" in
+ ;; this case. So the marker that we put after "else" would
+ ;; end up before it.
+ (setq delete-temp-newline
+ (cons (copy-marker (c-point 'eopl) t)
+ (point-marker))))
(unwind-protect
(progn
(if (eq last-command-char ?{)