allow user to customize start number when picking from misspellings interactively
メンテナーはふだん 1 日以内に返信
まだ誰も着手していません。
評価
調査の方向性
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.
索引モデルが issue の本文から書いたものです。
説明
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
- 主要言語
- Python
- スター
- 2.4k
- フォーク
- 531
- 平均マージ
- 15時間 55分
- マージ済み PR(30日)
- 17
環境構築
このプロジェクトの開発コンテナを、あなたの GitHub アカウントでブラウザ上に起動します。
- Dockerfile・Docker Compose ファイルなし
- プルリクエストのテンプレートなし
- コントリビューションガイドなし
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
codespell-project/codespell のほかの issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 65/100
codespell-project/codespell#3997 ·
メンテナーはふだん 1 日以内に返信
-
enhancement
難易度 2/5 1〜3時間 初心者へのやさしさ 63/100
codespell-project/codespell#3965 · コメント 3 件 ·
メンテナーはふだん 1 日以内に返信
-
Add "marcos"対応中かも @ekanshul が 22 日前に担当しました。 オープンdictionary
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
codespell-project/codespell#3920 · コメント 3 件 ·
メンテナーはふだん 1 日以内に返信
-
question
難易度 3/5 1〜2日 初心者へのやさしさ 55/100
codespell-project/codespell#4005 ·
メンテナーはふだん 1 日以内に返信
-
duplicate question
難易度 2/5 1〜3時間 初心者へのやさしさ 35/100
codespell-project/codespell#3998 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
codespell-project/codespell の issue をすべて見る
似ている issue
-
PluginProvider.storeInstance races and clobbers the dedup cache for concurrent loads対応中かも @Wilson0511 が今日担当しました。 オープンneeds-triage
難易度 2/5 1〜3時間 初心者へのやさしさ 62/100
メンテナーはふだん 2 日以内に返信
-
community documentation good first issue
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
-
難易度 2/5 1〜3時間 初心者へのやさしさ 62/100
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 85/100
kagent-dev/kagent#3462 ·
メンテナーはふだん 1 日以内に返信