From 80a19b8b7a0f48eac410f66653d975c623d3c79c Mon Sep 17 00:00:00 2001 From: =?utf8?q?Jo=C3=A3o=20T=C3=A1vora?= Date: Sat, 29 Dec 2018 18:34:53 +0000 Subject: [PATCH] Another iteration for an improved electric-layout-mode * lisp/electric.el (electric-layout-rules): Add nil back to symbols list. (electric-layout-post-self-insert-function-1): Call function in correct position. --- lisp/electric.el | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/lisp/electric.el b/lisp/electric.el index b52efb07c7b..0484319ed47 100644 --- a/lisp/electric.el +++ b/lisp/electric.el @@ -372,7 +372,8 @@ just inserted was CHAR. WHERE can be: -* one of the symbols `before', `after', `around', `after-stay'. +* one of the symbols `before', `after', `around', `after-stay', + or nil. * a list of the preceding symbols, processed in order of appearance to insert multiple newlines; @@ -408,10 +409,14 @@ If multiple rules match, only first one is executed.") (eq (car probe) last-command-event)) (throw 'done (cdr probe))) ((functionp probe) - (let ((res (funcall probe last-command-event))) + (let ((res + (save-excursion + (goto-char + (or pos (setq pos (electric--after-char-pos)))) + (funcall probe last-command-event)))) (when res (throw 'done res))))))))) (when (and rule - (setq pos (electric--after-char-pos)) + (or pos (setq pos (electric--after-char-pos))) ;; Not in a string or comment. (not (nth 8 (save-excursion (syntax-ppss pos))))) (goto-char pos) -- 2.39.2