diff options
author | Stefan Monnier <monnier@iro.umontreal.ca> | 2019-01-18 17:20:21 -0500 |
---|---|---|
committer | Stefan Monnier <monnier@iro.umontreal.ca> | 2019-01-18 17:20:21 -0500 |
commit | 78725e49d2802d907c5b54417e6a91ed868c7c6e (patch) | |
tree | 7df6361edc3ead9f552bd8516b5cd2f1eee31fc3 /lisp/electric.el | |
parent | 0621591687c6f032077213e85280936e35e45af0 (diff) | |
download | emacs-78725e49d2802d907c5b54417e6a91ed868c7c6e.tar.gz |
(electric-layout-post-self-insert-function-1): Simplify.
Call electric--after-char-pos right from the start, and take advantage of the
fact that it guarantees to return the right position or nil.
Diffstat (limited to 'lisp/electric.el')
-rw-r--r-- | lisp/electric.el | 29 |
1 files changed, 12 insertions, 17 deletions
diff --git a/lisp/electric.el b/lisp/electric.el index 6977a950349..e2f9f707436 100644 --- a/lisp/electric.el +++ b/lisp/electric.el @@ -394,28 +394,23 @@ If multiple rules match, only first one is executed.") ;; for edebug's sake, a separate function (defun electric-layout-post-self-insert-function-1 () - (let* (pos + (let* ((pos (electric--after-char-pos)) probe (rules electric-layout-rules) (rule (catch 'done - (while (setq probe (pop rules)) - (cond ((and (consp probe) - (eq (car probe) last-command-event)) - (throw 'done (cdr probe))) - ((functionp probe) - (let ((res - (save-excursion - (goto-char - (or pos (setq pos (electric--after-char-pos)))) - ;; 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 pos + (while (setq probe (pop rules)) + (cond ((and (consp probe) + (eq (car probe) last-command-event)) + (throw 'done (cdr probe))) + ((functionp probe) + (let ((res + (save-excursion + (goto-char pos) + (funcall probe last-command-event)))) + (when res (throw 'done res)))))))))) (when (and rule - (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) |