diff options
author | João Távora <joaotavora@gmail.com> | 2014-04-07 00:23:45 +0100 |
---|---|---|
committer | João Távora <joaotavora@gmail.com> | 2014-04-07 00:23:45 +0100 |
commit | 7aecc2f6ca3842395436f111449dbdcdce494ad5 (patch) | |
tree | c78d04a004e0e1185e78fb4fbe36f4729d8641e8 | |
parent | 89f20f76d8fa700d2a534834bf178ac8796d35cf (diff) | |
download | emacs-7aecc2f6ca3842395436f111449dbdcdce494ad5.tar.gz |
Fix triple-quoting electricity in python-mode
* lisp/progmodes/python.el (python-electric-pair-string-delimiter): Fix
triple-quoting electricity.
* test/automated/python-tests.el (python-triple-quote-pairing): New test.
(python-syntax-after-python-backspace): New test.
Fixes: debbugs:17192
-rw-r--r-- | lisp/ChangeLog | 7 | ||||
-rw-r--r-- | lisp/progmodes/python.el | 5 | ||||
-rw-r--r-- | test/ChangeLog | 5 | ||||
-rw-r--r-- | test/automated/python-tests.el | 39 |
4 files changed, 53 insertions, 3 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 7d6436cfafc..c30c02dcef3 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,9 +1,14 @@ 2014-04-06 João Távora <joaotavora@gmail.com> + * progmodes/python.el (python-electric-pair-string-delimiter): Fix + triple-quoting electricity. (Bug#17192) + +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) + electric-pair--skip-whitespace. (Bug#17183) 2014-04-06 Eli Zaretskii <eliz@gnu.org> diff --git a/lisp/progmodes/python.el b/lisp/progmodes/python.el index b0102c55ffd..240cf8aff8c 100644 --- a/lisp/progmodes/python.el +++ b/lisp/progmodes/python.el @@ -3651,8 +3651,9 @@ returned as is." (let ((count 0)) (while (eq (char-before (- (point) count)) last-command-event) (cl-incf count)) - (= count 3))) - (save-excursion (insert (make-string 3 last-command-event))))) + (= count 3)) + (eq (char-after) last-command-event)) + (save-excursion (insert (make-string 2 last-command-event))))) (defvar electric-indent-inhibit) diff --git a/test/ChangeLog b/test/ChangeLog index 846da9621fc..d483b0b2f9e 100644 --- a/test/ChangeLog +++ b/test/ChangeLog @@ -1,5 +1,10 @@ 2014-04-06 João Távora <joaotavora@gmail.com> + * automated/python-tests.el (python-triple-quote-pairing): New test. + (python-syntax-after-python-backspace): New test. + +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) diff --git a/test/automated/python-tests.el b/test/automated/python-tests.el index dc58138ced4..8fe8f71264f 100644 --- a/test/automated/python-tests.el +++ b/test/automated/python-tests.el @@ -134,6 +134,16 @@ aliqua." ;;; Font-lock and syntax +(ert-deftest python-syntax-after-python-backspace () + ;; `python-indent-dedent-line-backspace' garbles syntax + :expected-result :failed + (python-tests-with-temp-buffer + "\"\"\"" + (goto-char (point-max)) + (python-indent-dedent-line-backspace 1) + (should (string= (buffer-string) "\"\"")) + (should (null (nth 3 (syntax-ppss)))))) + ;;; Indentation @@ -2696,6 +2706,9 @@ def foo(a, b, c): (equal (symbol-value (car ccons)) (cdr ccons))))) (kill-buffer buffer))) + +;;; Electricity + (ert-deftest python-util-forward-comment-1 () (python-tests-with-temp-buffer (concat @@ -2708,6 +2721,32 @@ def foo(a, b, c): (python-util-forward-comment -1) (should (= (point) (point-min))))) +(ert-deftest python-triple-quote-pairing () + (python-tests-with-temp-buffer + "\"\"\n" + (goto-char (1- (point-max))) + (let ((last-command-event ?\")) + (call-interactively 'self-insert-command)) + (should (string= (buffer-string) + "\"\"\"\"\"\"\n")) + (should (= (point) 4))) + (python-tests-with-temp-buffer + "\n" + (let ((last-command-event ?\")) + (dotimes (i 3) + (call-interactively 'self-insert-command))) + (should (string= (buffer-string) + "\"\"\"\"\"\"\n")) + (should (= (point) 4))) + (python-tests-with-temp-buffer + "\"\n\"\"\n" + (goto-char (1- (point-max))) + (let ((last-command-event ?\")) + (call-interactively 'self-insert-command)) + (should (= (point) (1- (point-max)))) + (should (string= (buffer-string) + "\"\n\"\"\"\n")))) + (provide 'python-tests) |