]> git.eshelyaron.com Git - emacs.git/commitdiff
Ensure fns in electric-layout-rules are called in right position
authorJoão Távora <joaotavora@gmail.com>
Fri, 18 Jan 2019 22:05:36 +0000 (22:05 +0000)
committerJoão Távora <joaotavora@gmail.com>
Fri, 18 Jan 2019 22:05:50 +0000 (22:05 +0000)
* lisp/electric.el (electric-layout-rules): Ensure rules are
called from right spot.

lisp/electric.el

index 4791f8e18c4c47ca39806173bb7a38daa7060f60..6977a950349942d921b542f27e5f4d81b70c7118 100644 (file)
@@ -383,8 +383,8 @@ in the same place.
 
 Instead of the (CHAR . WHERE) form, a rule can also be just a
 function of a single argument, the character just inserted.  It
-should return a value compatible with WHERE if the rule matches,
-or nil if it doesn't match.
+is called at that position, and should return a value compatible with
+WHERE if the rule matches, or nil if it doesn't match.
 
 If multiple rules match, only first one is executed.")
 
@@ -408,7 +408,11 @@ If multiple rules match, only first one is executed.")
                             (save-excursion
                               (goto-char
                                (or pos (setq pos (electric--after-char-pos))))
-                              (funcall probe last-command-event))))
+                              ;; Ensure probe is called at the
+                              ;; promised place. FIXME: maybe warn if
+                              ;; it isn't
+                              (when (eq (char-before) last-command-event)
+                                (funcall probe last-command-event)))))
                        (when res (throw 'done res)))))))))
     (when (and rule
                (or pos (setq pos (electric--after-char-pos)))