Function: abbrev--default-expand
abbrev--default-expand is a byte-compiled function defined in
abbrev.el.gz.
Signature
(abbrev--default-expand)
Documentation
Default function to use for abbrev-expand-function.
This also respects the obsolete wrapper hook abbrev-expand-functions.
(See with-wrapper-hook for details about wrapper hooks.)
Calls abbrev-insert to insert any expansion, and returns what it does.
Source Code
;; Defined in /usr/src/emacs/lisp/abbrev.el.gz
(defun abbrev--default-expand ()
"Default function to use for `abbrev-expand-function'.
This also respects the obsolete wrapper hook `abbrev-expand-functions'.
\(See `with-wrapper-hook' for details about wrapper hooks.)
Calls `abbrev-insert' to insert any expansion, and returns what it does."
(subr--with-wrapper-hook-no-warnings abbrev-expand-functions ()
(pcase-let ((`(,sym ,name ,wordstart ,wordend) (abbrev--before-point)))
(when sym
(let ((startpos (copy-marker (point) t))
(endmark (copy-marker wordend t)))
(unless (or ;; executing-kbd-macro
noninteractive
(window-minibuffer-p))
;; 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))))))))