]> git.eshelyaron.com Git - emacs.git/commitdiff
(Fexpand_abbrev): If expanding an abbrev which has only
authorGerd Moellmann <gerd@gnu.org>
Thu, 30 Dec 1999 12:26:53 +0000 (12:26 +0000)
committerGerd Moellmann <gerd@gnu.org>
Thu, 30 Dec 1999 12:26:53 +0000 (12:26 +0000)
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.

src/abbrev.c

index e3ee9e039b2256a1ea607f07d65b92bd946cdb5f..f5586f5c4d72d894356ebd0c9cb5df2eaf9a2aa3 100644 (file)
@@ -364,7 +364,20 @@ Returns the abbrev symbol, if expansion took place.")
 
   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;
 }