summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoão Távora <joaotavora@gmail.com>2014-04-07 00:09:19 +0100
committerJoão Távora <joaotavora@gmail.com>2014-04-07 00:09:19 +0100
commit89f20f76d8fa700d2a534834bf178ac8796d35cf (patch)
tree8b3a2f1a6bd427320ddb303d69a25dfb87ba5b8a
parentaa5ccb01a59901cb15a25995b70a7f49d2b03b57 (diff)
downloademacs-89f20f76d8fa700d2a534834bf178ac8796d35cf.tar.gz
Fix electric-pair-skip-whitespace with quotes in text-mode
* lisp/elec-pair.el (electric-pair-post-self-insert-function): Don't skip whitespace for quote syntax when `electric-pair-text-pairs' and `electric-pair-pairs' were used. * test/automated/electric-tests.el (electric-pair-define-test-form): More readable test docstrings. (whitespace-skipping-for-quotes-not-ouside) (whitespace-skipping-for-quotes-only-inside) (whitespace-skipping-not-without-proper-syntax): Fixes: debbugs:17183
-rw-r--r--lisp/ChangeLog7
-rw-r--r--lisp/elec-pair.el10
-rw-r--r--test/ChangeLog8
-rw-r--r--test/automated/electric-tests.el29
4 files changed, 48 insertions, 6 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index b082670dc54..7d6436cfafc 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,10 @@
+2014-04-06 João Távora <joaotavora@gmail.com>
+
+ * elec-pair.el (electric-pair-post-self-insert-function): Don't
+ skip whitespace when `electric-pair-text-pairs' and
+ `electric-pair-pairs' were used. syntax to
+ electric-pair--skip-whitespace. (Bug#17183)
+
2014-04-06 Eli Zaretskii <eliz@gnu.org>
* leim/quail/ipa.el (ipa-x-sampa): Fix the character produced for
diff --git a/lisp/elec-pair.el b/lisp/elec-pair.el
index 52ad9bc0249..2c1ea7262d3 100644
--- a/lisp/elec-pair.el
+++ b/lisp/elec-pair.el
@@ -485,10 +485,12 @@ happened."
(funcall electric-pair-skip-self last-command-event)
electric-pair-skip-self))
(save-excursion
- (when (setq skip-whitespace-info
- (if (functionp electric-pair-skip-whitespace)
- (funcall electric-pair-skip-whitespace)
- electric-pair-skip-whitespace))
+ (when (and (not (and unconditional
+ (eq syntax ?\")))
+ (setq skip-whitespace-info
+ (if (functionp electric-pair-skip-whitespace)
+ (funcall electric-pair-skip-whitespace)
+ electric-pair-skip-whitespace)))
(electric-pair--skip-whitespace))
(eq (char-after) last-command-event))))
;; This is too late: rather than insert&delete we'd want to only
diff --git a/test/ChangeLog b/test/ChangeLog
index 5e5a8ae73af..846da9621fc 100644
--- a/test/ChangeLog
+++ b/test/ChangeLog
@@ -1,3 +1,11 @@
+2014-04-06 João Távora <joaotavora@gmail.com>
+
+ * automated/electric-tests.el (electric-pair-define-test-form):
+ More readable test docstrings.
+ (whitespace-skipping-for-quotes-not-ouside)
+ (whitespace-skipping-for-quotes-only-inside)
+ (whitespace-skipping-for-quotes-in-text-mode): New tests.
+
2014-03-24 Barry O'Reilly <gundaetiapo@gmail.com>
* automated/undo-tests.el (undo-test-marker-adjustment-nominal):
diff --git a/test/automated/electric-tests.el b/test/automated/electric-tests.el
index e3ffd1abd2e..184a91f5105 100644
--- a/test/automated/electric-tests.el
+++ b/test/automated/electric-tests.el
@@ -114,8 +114,8 @@
mode
extra-desc))
()
- ,(format "With \"%s\", try input %c at point %d. \
-Should %s \"%s\" and point at %d"
+ ,(format "With |%s|, try input %c at point %d. \
+Should %s |%s| and point at %d"
fixture
char
(1+ pos)
@@ -341,6 +341,31 @@ Should %s \"%s\" and point at %d"
:test-in-code nil
:test-in-comments t)
+(define-electric-pair-test whitespace-skipping-for-quotes-not-ouside
+ " \" \"" "\"-----" :expected-string "\"\" \" \""
+ :expected-point 2
+ :bindings '((electric-pair-skip-whitespace . chomp))
+ :test-in-strings nil
+ :test-in-code t
+ :test-in-comments nil)
+
+(define-electric-pair-test whitespace-skipping-for-quotes-only-inside
+ " \" \"" "---\"--" :expected-string " \"\""
+ :expected-point 5
+ :bindings '((electric-pair-skip-whitespace . chomp))
+ :test-in-strings nil
+ :test-in-code t
+ :test-in-comments nil)
+
+(define-electric-pair-test whitespace-skipping-quotes-not-without-proper-syntax
+ " \" \"" "---\"--" :expected-string " \"\"\" \""
+ :expected-point 5
+ :modes '(text-mode)
+ :bindings '((electric-pair-skip-whitespace . chomp))
+ :test-in-strings nil
+ :test-in-code t
+ :test-in-comments nil)
+
;;; Pairing arbitrary characters
;;;