From f07c325d1f49e4b722f76aa730ac5d084bd0e77a Mon Sep 17 00:00:00 2001 From: Philipp Stephani Date: Sun, 31 Dec 2017 18:05:03 +0100 Subject: [PATCH] Fix a small bug in electric quoting. MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Before this commit, if 'electric-quote-replace-double' is non-nil, typing " '" turned into " ‘" even if 'electric-quote-context-sensitive' was nil. * lisp/electric.el (electric-quote-post-self-insert-function): Insert context-sensitive double quote only if the last character is actually a double quote character. * test/lisp/electric-tests.el (electric-quote-replace-double-no-context-single): New unit test. --- lisp/electric.el | 3 ++- test/lisp/electric-tests.el | 7 +++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/lisp/electric.el b/lisp/electric.el index a694665dbbf..8343d8c1b13 100644 --- a/lisp/electric.el +++ b/lisp/electric.el @@ -501,7 +501,8 @@ This requotes when a quoting key is typed." (let ((backtick ?\`)) (if (or (eq last-command-event ?\`) (and (or electric-quote-context-sensitive - electric-quote-replace-double) + (and electric-quote-replace-double + (eq last-command-event ?\"))) (save-excursion (backward-char) (or (bobp) (bolp) diff --git a/test/lisp/electric-tests.el b/test/lisp/electric-tests.el index 83e0c678e3b..44bdbc7b8c8 100644 --- a/test/lisp/electric-tests.el +++ b/test/lisp/electric-tests.el @@ -735,6 +735,13 @@ baz\"\"" :bindings '((electric-quote-replace-double . t)) :test-in-comments nil :test-in-strings nil) +(define-electric-pair-test electric-quote-replace-double-no-context-single + " " "-'" :expected-string " ’" :expected-point 3 + :modes '(text-mode) + :fixture-fn #'electric-quote-local-mode + :bindings '((electric-quote-replace-double . t)) + :test-in-comments nil :test-in-strings nil) + ;; Simulate ‘markdown-mode’: it sets both ‘comment-start’ and ;; ‘comment-use-syntax’, but derives from ‘text-mode’. (define-electric-pair-test electric-quote-markdown-in-text -- 2.11.4.GIT