1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2024-11-23 07:19:15 +00:00

Fix Python completion when point in shell buffer is before prompt

* lisp/progmodes/python.el (python-shell-completion-at-point): Limit
prompt boundaries check to shell buffer.
* test/lisp/progmodes/python-tests.el (python-shell-completion-2):
(python-shell-completion-native-2): New tests (bug#58441).
This commit is contained in:
kobarity 2022-10-12 13:14:33 +02:00 committed by Lars Ingebrigtsen
parent 2953d89d74
commit aa559c1553
2 changed files with 37 additions and 2 deletions

View File

@ -4069,7 +4069,8 @@ With argument MSG show activation/deactivation message."
Optional argument PROCESS forces completions to be retrieved
using that one instead of current buffer's process."
(setq process (or process (get-buffer-process (current-buffer))))
(let* ((line-start (if (derived-mode-p 'inferior-python-mode)
(let* ((is-shell-buffer (derived-mode-p 'inferior-python-mode))
(line-start (if is-shell-buffer
;; Working on a shell buffer: use prompt end.
(cdr (python-util-comint-last-prompt))
(line-beginning-position)))
@ -4100,7 +4101,8 @@ using that one instead of current buffer's process."
(completion-fn
(with-current-buffer (process-buffer process)
(cond ((or (null prompt)
(< (point) (cdr prompt-boundaries)))
(and is-shell-buffer
(< (point) (cdr prompt-boundaries))))
#'ignore)
((or (not python-shell-completion-native-enable)
;; Even if native completion is enabled, for

View File

@ -4411,6 +4411,22 @@ import abc
(insert "A")
(should (completion-at-point)))))
(ert-deftest python-shell-completion-2 ()
"Should work regardless of the point in the Shell buffer."
(skip-unless (executable-find python-tests-shell-interpreter))
(python-tests-with-temp-buffer-with-shell
"
import abc
"
(let ((inhibit-message t))
(python-shell-send-buffer)
(python-tests-shell-wait-for-prompt)
(python-shell-with-shell-buffer
(goto-char (point-min)))
(goto-char (point-max))
(insert "abc.")
(should (completion-at-point)))))
(ert-deftest python-shell-completion-native-1 ()
(skip-unless (executable-find python-tests-shell-interpreter))
(python-tests-with-temp-buffer-with-shell
@ -4427,6 +4443,23 @@ import abc
(insert "A")
(should (completion-at-point)))))
(ert-deftest python-shell-completion-native-2 ()
"Should work regardless of the point in the Shell buffer."
(skip-unless (executable-find python-tests-shell-interpreter))
(python-tests-with-temp-buffer-with-shell
"
import abc
"
(let ((inhibit-message t))
(python-shell-completion-native-turn-on)
(python-shell-send-buffer)
(python-tests-shell-wait-for-prompt)
(python-shell-with-shell-buffer
(goto-char (point-min)))
(goto-char (point-max))
(insert "abc.")
(should (completion-at-point)))))
(ert-deftest python-shell-completion-native-with-ffap-1 ()
(skip-unless (executable-find python-tests-shell-interpreter))
(python-tests-with-temp-buffer-with-shell