Fix completion retrieval parsing.

* progmodes/python.el (python-mode):
(python-util-strip-string): New function.
(python-shell-completion-get-completions): Use it.

* automated/python-tests.el (python-util-strip-string-1): New test.

Fixes: debbugs:17209
This commit is contained in:
Fabián Ezequiel Gallina 2014-06-21 11:14:54 -03:00
parent edd112b7f8
commit 656f99beeb
4 changed files with 32 additions and 2 deletions

View file

@ -1,3 +1,10 @@
2014-06-21 Fabián Ezequiel Gallina <fgallina@gnu.org>
Fix completion retrieval parsing (bug#17209).
* progmodes/python.el (python-mode):
(python-util-strip-string): New function.
(python-shell-completion-get-completions): Use it.
2014-06-21 Eli Zaretskii <eliz@gnu.org>
* skeleton.el (skeleton-insert): Fix last change.

View file

@ -2463,8 +2463,10 @@ LINE is used to detect the context on how to complete given INPUT."
(and completion-code
(> (length input) 0)
(with-current-buffer (process-buffer process)
(let ((completions (python-shell-send-string-no-output
(format completion-code input) process)))
(let ((completions
(python-util-strip-string
(python-shell-send-string-no-output
(format completion-code input) process))))
(and (> (length completions) 2)
(split-string completions
"^'\\|^\"\\|;\\|'$\\|\"$" t)))))))
@ -3644,6 +3646,14 @@ returned as is."
n (1- n)))
(reverse acc))))
(defun python-util-strip-string (string)
"Strip STRING whitespace and newlines from end and beginning."
(replace-regexp-in-string
(rx (or (: string-start (* (any whitespace ?\r ?\n)))
(: (* (any whitespace ?\r ?\n)) string-end)))
""
string))
(defun python-electric-pair-string-delimiter ()
(when (and electric-pair-mode

View file

@ -1,3 +1,7 @@
2014-06-21 Fabián Ezequiel Gallina <fgallina@gnu.org>
* automated/python-tests.el (python-util-strip-string-1): New test.
2014-05-08 Glenn Morris <rgm@gnu.org>
* automated/vc-bzr.el (vc-bzr-test-bug9726, vc-bzr-test-bug9781)

View file

@ -2706,6 +2706,15 @@ def foo(a, b, c):
(equal (symbol-value (car ccons)) (cdr ccons)))))
(kill-buffer buffer)))
(ert-deftest python-util-strip-string-1 ()
(should (string= (python-util-strip-string "\t\r\n str") "str"))
(should (string= (python-util-strip-string "str \n\r") "str"))
(should (string= (python-util-strip-string "\t\r\n str \n\r ") "str"))
(should
(string= (python-util-strip-string "\n str \nin \tg \n\r") "str \nin \tg"))
(should (string= (python-util-strip-string "\n \t \n\r ") ""))
(should (string= (python-util-strip-string "") "")))
;;; Electricity