* lisp/abbrev.el (expand-abbrev): Try to preserve point.
Fixes: debbugs:5805
This commit is contained in:
parent
afae1d6821
commit
856b2f11d8
2 changed files with 26 additions and 13 deletions
|
@ -1,3 +1,7 @@
|
|||
2011-07-08 Stefan Monnier <monnier@iro.umontreal.ca>
|
||||
|
||||
* abbrev.el (expand-abbrev): Try to preserve point (bug#5805).
|
||||
|
||||
2011-07-08 Michael Albinus <michael.albinus@gmx.de>
|
||||
|
||||
* net/tramp-sh.el (tramp-sh-handle-start-file-process): Use a
|
||||
|
|
|
@ -814,19 +814,28 @@ Returns the abbrev symbol, if expansion took place."
|
|||
(destructuring-bind (&optional sym name wordstart wordend)
|
||||
(abbrev--before-point)
|
||||
(when sym
|
||||
(unless (or ;; executing-kbd-macro
|
||||
noninteractive
|
||||
(window-minibuffer-p (selected-window)))
|
||||
;; Add an undo boundary, in case we are doing this for
|
||||
;; a self-inserting command which has avoided making one so far.
|
||||
(undo-boundary))
|
||||
;; Now sym is the abbrev symbol.
|
||||
(setq last-abbrev-text name)
|
||||
(setq last-abbrev sym)
|
||||
(setq last-abbrev-location wordstart)
|
||||
;; If this abbrev has an expansion, delete the abbrev
|
||||
;; and insert the expansion.
|
||||
(abbrev-insert sym name wordstart wordend)))))
|
||||
(let ((startpos (copy-marker (point) t))
|
||||
(endmark (copy-marker wordend t)))
|
||||
(unless (or ;; executing-kbd-macro
|
||||
noninteractive
|
||||
(window-minibuffer-p (selected-window)))
|
||||
;; Add an undo boundary, in case we are doing this for
|
||||
;; a self-inserting command which has avoided making one so far.
|
||||
(undo-boundary))
|
||||
;; Now sym is the abbrev symbol.
|
||||
(setq last-abbrev-text name)
|
||||
(setq last-abbrev sym)
|
||||
(setq last-abbrev-location wordstart)
|
||||
;; If this abbrev has an expansion, delete the abbrev
|
||||
;; and insert the expansion.
|
||||
(prog1
|
||||
(abbrev-insert sym name wordstart wordend)
|
||||
;; Yuck!! If expand-abbrev is called with point slightly
|
||||
;; further than the end of the abbrev, move point back to
|
||||
;; where it started.
|
||||
(if (and (> startpos endmark)
|
||||
(= (point) endmark)) ;Obey skeletons that move point.
|
||||
(goto-char startpos))))))))
|
||||
|
||||
(defun unexpand-abbrev ()
|
||||
"Undo the expansion of the last abbrev that expanded.
|
||||
|
|
Loading…
Add table
Reference in a new issue