# HG changeset patch # User Gerd Moellmann # Date 946556813 0 # Node ID b5ce0c4504097155de4f5bb7d60cf5c98b3a10ef # Parent fe88ae65ed75a62ae07a49a4ced21fa958b8bc58 (Fexpand_abbrev): If expanding an abbrev which has only a hook, and the hook has a non-nil `no-self-insert' property, let the return value of the hook specify whether an expansion took place. If it returns nil, no expansion has been performed. diff -r fe88ae65ed75 -r b5ce0c450409 src/abbrev.c --- a/src/abbrev.c Thu Dec 30 12:25:22 1999 +0000 +++ b/src/abbrev.c Thu Dec 30 12:26:53 1999 +0000 @@ -364,7 +364,20 @@ hook = XSYMBOL (sym)->function; if (!NILP (hook)) - call0 (hook); + { + Lisp_Object expanded, prop; + + /* If expanding an abbrev which has only a hook, and the hook + has a non-nil `no-self-insert' property, let the return value + of the hook specify whether an expansion took place. If it + returns nil, no expansion has been done. */ + expanded = call0 (hook); + if (SYMBOLP (hook) + && NILP (expanded) + && (prop = Fget (hook, intern ("no-self-insert")), + !NILP (prop))) + value = Qnil; + } return value; }