`abbrev--before-point' does not adjust `pos' to account for when it
deletes the "-" left by abbrev-prefix-mark. Therefore, when
`abbrev-before-point' goes to restore point, it moves point one
character too far forward.
* lisp/abbrev.el (abbrev--before-point): Adjust pos when deleting "-".
(setq start abbrev-start-location)
(setq abbrev-start-location nil)
;; Remove the hyphen inserted by `abbrev-prefix-mark'.
- (if (and (< start (point-max))
- (eq (char-after start) ?-))
- (delete-region start (1+ start)))
+ (when (and (< start (point-max))
+ (eq (char-after start) ?-))
+ (delete-region start (1+ start))
+ (setq pos (1- pos)))
(skip-syntax-backward " ")
(setq end (point))
(when (> end start)