REPL import tab completion moves cursor backward
Personne n'a encore pris cette issue.
- Langage dominant
- Python
- Étoiles
- 77.2k
- Forks
- 35.9k
- Métriques de merge des PR
- Métriques de PR en attente
Description
Bug report
Bug description:
When tab completing ambiguous imports in the Python REPL, pressing tab once will insert the longest unambiguous completion and display "[ complete but not unique ]". Pressing tab a second time will show all the possibilities.
In Ghostty, when you press tab the second time, the cursor moves one cell to the left. This happens with cursor-style = bar as well as the default block cursor.
I reproduced this in Ghostty with both fish shell and bash. I could not reproduce this in Zed's integrated terminal (with a bar cursor) or Terminal.app (with a block cursor).
Originally posted by @injust in https://github.com/ghostty-org/ghostty/discussions/11131
I initially reported this issue to Ghostty, and the maintainer's response was:
This is a bug in Terminal.app in how it handles CUB with the cursor in the pending wrap state. Or, a bug in Python's readline in how it calculates the amount to move the cursor back. Your bug reproduces on xterm, and Ghostty matches xterm. Specifically, CUB moves exactly
ncells back ignoring pending wrap in xterm and Ghostty matches this. In Terminal.app, CUB subtracts one when it is in the pending wrap state.
Since the bug reproduces in both Ghostty and xterm, it might be a bug in the Python REPL.
I captured the bug in this asciicast: https://github.com/user-attachments/files/25683940/ascii.cast.json
CPython versions tested on:
3.14
Operating systems tested on:
macOS
Linked PRs
- gh-145727
Guide de contribution
Ouvrir le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Piste de recherche
Commencez par le comportement de readline lors de la complétion des imports dans le Python REPL et consultez l’asciicast lié pour reproduire le déplacement du curseur lors de la deuxième tabulation. Comparez la position du curseur avant et après une complétion ambiguë dans un terminal ; c’est terminé lorsque des complétions répétées avec Tab ne déplacent plus le curseur vers l’arrière.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- python
- Domaine
- cli
- Type d'issue
- Bug
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Activité
- À l'abandon
- Clarté
- À clarifier
- Accessibilité débutants
- 25/100