allow user to customize start number when picking from misspellings interactively

Offen
#3,091 2 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Maintainer antworten meist innerhalb von 1 Tag

Dieses Issue hat noch niemand übernommen.

Bewertung

Schwierigkeit
3/5
Geschätzter Aufwand
1-2 Tage
Anfängerfreundlichkeit
35/100
Issue-Typ
Feature
Klarheit
Größtenteils klar
Aktivitätsstatus
Veraltet
Tech-Stack
python
Bereich
cli

Rechercherichtung

Start with ask_for_word_fix in codespell_lib/_codespell.py, where the issue shows the option numbering and selection logic. Decide whether the starting number should be configurable through an environment variable or CLI flag, then check how that choice fits the existing command-line options. Done means displayed choices and the selected correction both respect the configured start number.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Beschreibung

As an example,

$ cat broken.txt 
OLL

When there are multiple options with -i 3 or -i 2:

$ codespell -i 3 broken.txt
OLL
 Choose an option (blank for none):  0) ALL 1) OLE 2) OLD 3) OLLY 4) OIL: 0
broken.txt:1: OLL ==> ALL

It starts with 0 since the underlying code is using enumerate

When I am interactively correcting a bunch of misspellings, I have my left hand on the numbers above qwerty (1,2,3,4), and my right hand on enter.

But, whenever I have to enter 0 (which is pretty frequent) I have to move my right hand back and forth to 0 and back to enter.

It would be nice to be able to configure this to start at 1, so my hand positions don't have to change and I can just zone out and focus on the misspellings instead of having to think about where to move my fingers

The following changes (or some different version of this, configured through a CLI flag?) would let that be configurable:

diff --git a/codespell_lib/_codespell.py b/codespell_lib/_codespell.py
index ae6bc370..c0caf00c 100644
--- a/codespell_lib/_codespell.py
+++ b/codespell_lib/_codespell.py
@@ -695,6 +695,9 @@ def fix_case(word: str, fixword: str) -> str:
     return fixword
 
 
+start_at = int(os.environ.get("CODESPELL_START_AT", "0"))
+
+
 def ask_for_word_fix(
     line: str,
     match: Match[str],
@@ -735,7 +738,7 @@ def ask_for_word_fix(
         opt = [w.strip() for w in misspelling.data.split(",")]
         while not r:
             print(f"{line_ui} Choose an option (blank for none): ", end="")
-            for i, o in enumerate(opt):
+            for i, o in enumerate(opt, start_at):
                 fixword = fix_case(wrongword, o)
                 print(f" {i}) {fixword}", end="")
             print(": ", end="", flush=True)
@@ -746,7 +749,7 @@ def ask_for_word_fix(
 
             try:
                 i = int(n)
-                r = opt[i]
+                r = opt[i - start_at]
             except (ValueError, IndexError):
                 print("Not a valid option\n")
 
$ CODESPELL_START_AT=1 codespell -i 3
OLL
 Choose an option (blank for none):  1) ALL 2) OLE 3) OLD 4) OLLY 5) OIL: 1
./broken.txt:1: OLL ==> OLE

Am willing to make a PR if this is something that is wanted, would just need to know if it should be a CLI flag or something else

Vorherrschende Sprache
Python
Sterne
2.4k
Forks
531
Ø Merge
15 Std. 55 Min.
Gemergte PRs (30 T.)
17

Entwicklungsumgebung

In Codespaces öffnen

Startet den Dev-Container des Projekts im Browser, mit Ihrem eigenen GitHub-Konto.

  • Kein Dockerfile und keine Docker-Compose-Datei
  • Keine Pull-Request-Vorlage
  • Kein Beitragsleitfaden

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus codespell-project/codespell

Alle Issues in codespell-project/codespell

Ähnliche Issues

Weitere Issues zu Python

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.