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
This commit is contained in:
João Távora 2014-04-07 00:23:45 +01:00
parent 89f20f76d8
commit 7aecc2f6ca
4 changed files with 53 additions and 3 deletions

View file

@ -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>

View file

@ -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)

View file

@ -1,3 +1,8 @@
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):

View file

@ -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)