Subject: bug#68559: [PATCH] Improve Python shell completion

From: "Basil L. Contovounesios" <[email-masked]>
Date: Wed, 21 Feb 2024 15:55:31 +0100

Liu Hui [2024-02-21 18:00 +0800] wrote:

> The attached patch should fix the problem.

Thanks!  The patch fixes the error, but that's because
python-shell-completion-at-point-ipython is now skipped:
in particular, python-shell-readline-completer-delims evaluates to
"\s\t\n`~!@#$%^&*()-=+[{]}\\|;:'\",<>/?" rather than the empty string.

Any idea why that happens?

> -           (progn
> -             (run-python nil t)
> -             (insert ,contents)
> -             (goto-char (point-min))
> -             (python-tests-shell-wait-for-prompt)
> -             ,@body)
> +           ;; Prevent test failures when Jedi is used as a completion
> +           ;; backend, either directly or indirectly (e.g., via
> +           ;; IPython).  Jedi needs to store cache, but the
> +           ;; "/nonexistent" HOME directory is not writable.
> +           (ert-with-temp-directory cache-dir
                                       ^^^^^^^^^
Should this be an uninterned symbol instead?

> +             (with-environment-variables (("XDG_CACHE_HOME" cache-dir))
> +               (run-python nil t)
> +               (insert ,contents)
> +               (goto-char (point-min))
> +               (python-tests-shell-wait-for-prompt)
> +               ,@body))
>           (when (python-shell-get-buffer)
>             (python-shell-with-shell-buffer
>               (let (kill-buffer-hook kill-buffer-query-functions)

Thanks,
-- 
Basil