On Thu, Apr 17, 2025 at 2:29 PM Eli Zaretskii wrote: > > > From: Christian Sattler > > Date: Wed, 16 Apr 2025 21:59:01 +0200 > > > > Completing a non-existing prefix attempts to complete it as a filename. > > > > Steps to reproduce: > > > > 1. touch test.file > > 2. emacs -Q > > 3. M-x run-python > > 4. test > > 5. M-x python-shell-completion-complete-or-indent > > > > Outcome: incorrectly completes to test.file. > > > > This regression was introduced in commit 0b9c714. The function > > python-shell-completion-at-point now returns nil instead of an empty > > list of candidates. This causes the next element of > > completion-at-point-functions list to be tried. This is > > comint-completion-at-point and completes filenames, which does not > > make sense in this context. > > Thanks. > > Liu Hui and kobarity, any suggestions for how to fix that? The fix > should be safe enough for the release branch, since the regression was > introduced by Emacs 30.1. We can just remove comint-filename-completion from comint-dynamic-complete-functions, which is called by comint-completion-at-point in completion-at-point-functions. Before commit 0b9c714, comint-filename-completion was actually not used due to python-shell-completion-at-point. Therefore, removing it is safe and acceptable. Users who need proper filename completion in Python shell can use specialized completion backends, e.g. 1. touch test.file 2. export PYTHONSTARTUP="$(python -m jedi repl)"; emacs -Q 3. M-x run-python 4. test => no completion 5. open("test => open("test.file"