From 7d9439e3096a37ba381a9fd03d63d1b5fcf4683a Mon Sep 17 00:00:00 2001 From: Philipp Stephani Date: Sun, 2 Jul 2017 18:03:06 +0200 Subject: [PATCH 1/3] Refactor 'electric-quote-mode' * lisp/electric.el (electric-quote-post-self-insert-function): Remove local variable 'start', which was misnamed and only used once. --- lisp/electric.el | 106 +++++++++++++++++++++++++++---------------------------- 1 file changed, 52 insertions(+), 54 deletions(-) diff --git a/lisp/electric.el b/lisp/electric.el index 1564df5949..103f378ed3 100644 --- a/lisp/electric.el +++ b/lisp/electric.el @@ -460,60 +460,58 @@ electric-quote-post-self-insert-function (when (and electric-quote-mode (or (eq last-command-event ?\') (and (not electric-quote-context-sensitive) - (eq last-command-event ?\`)))) - (let ((start - (if (and comment-start comment-use-syntax) - (when (or electric-quote-comment electric-quote-string) - (let* ((syntax (syntax-ppss)) - (beg (nth 8 syntax))) - (and beg - (or (and electric-quote-comment (nth 4 syntax)) - (and electric-quote-string (nth 3 syntax))) - ;; Do not requote a quote that starts or ends - ;; a comment or string. - (eq beg (nth 8 (save-excursion - (syntax-ppss (1- (point))))))))) - (and electric-quote-paragraph - (derived-mode-p 'text-mode) - ;; FIXME: There should be a ‘cl-disjoint’ function. - (null (cl-intersection (face-at-point nil 'multiple) - electric-quote-code-faces - :test #'eq)) - ;; FIXME: Why is the next form there? It’s never - ;; nil. - (or (eq last-command-event ?\`) - (save-excursion (backward-paragraph) (point))))))) - (pcase electric-quote-chars - (`(,q< ,q> ,q<< ,q>>) - (when start - (save-excursion - (let ((backtick ?\`)) - (if (or (eq last-command-event ?\`) - (and electric-quote-context-sensitive - (save-excursion - (backward-char) - (or (bobp) (bolp) - (memq (char-before) (list q< q<<)) - (memq (char-syntax (char-before)) - '(?\s ?\()))) - (setq backtick ?\'))) - (cond ((search-backward (string q< backtick) (- (point) 2) t) - (replace-match (string q<<)) - (when (and electric-pair-mode - (eq (cdr-safe - (assq q< electric-pair-text-pairs)) - (char-after))) - (delete-char 1)) - (setq last-command-event q<<)) - ((search-backward (string backtick) (1- (point)) t) - (replace-match (string q<)) - (setq last-command-event q<))) - (cond ((search-backward (string q> ?') (- (point) 2) t) - (replace-match (string q>>)) - (setq last-command-event q>>)) - ((search-backward "'" (1- (point)) t) - (replace-match (string q>)) - (setq last-command-event q>)))))))))))) + (eq last-command-event ?\`))) + (if (and comment-start comment-use-syntax) + (when (or electric-quote-comment electric-quote-string) + (let* ((syntax (syntax-ppss)) + (beg (nth 8 syntax))) + (and beg + (or (and electric-quote-comment (nth 4 syntax)) + (and electric-quote-string (nth 3 syntax))) + ;; Do not requote a quote that starts or ends + ;; a comment or string. + (eq beg (nth 8 (save-excursion + (syntax-ppss (1- (point))))))))) + (and electric-quote-paragraph + (derived-mode-p 'text-mode) + ;; FIXME: There should be a ‘cl-disjoint’ function. + (null (cl-intersection (face-at-point nil 'multiple) + electric-quote-code-faces + :test #'eq)) + ;; FIXME: Why is the next form there? It’s never + ;; nil. + (or (eq last-command-event ?\`) + (save-excursion (backward-paragraph) (point)))))) + (pcase electric-quote-chars + (`(,q< ,q> ,q<< ,q>>) + (save-excursion + (let ((backtick ?\`)) + (if (or (eq last-command-event ?\`) + (and electric-quote-context-sensitive + (save-excursion + (backward-char) + (or (bobp) (bolp) + (memq (char-before) (list q< q<<)) + (memq (char-syntax (char-before)) + '(?\s ?\()))) + (setq backtick ?\'))) + (cond ((search-backward (string q< backtick) (- (point) 2) t) + (replace-match (string q<<)) + (when (and electric-pair-mode + (eq (cdr-safe + (assq q< electric-pair-text-pairs)) + (char-after))) + (delete-char 1)) + (setq last-command-event q<<)) + ((search-backward (string backtick) (1- (point)) t) + (replace-match (string q<)) + (setq last-command-event q<))) + (cond ((search-backward (string q> ?') (- (point) 2) t) + (replace-match (string q>>)) + (setq last-command-event q>>)) + ((search-backward "'" (1- (point)) t) + (replace-match (string q>)) + (setq last-command-event q>)))))))))) (put 'electric-quote-post-self-insert-function 'priority 10) -- 2.13.2