fix: improve tcsh completion support#9503
fix: improve tcsh completion support#9503ThomasWaldmann wants to merge 1 commit intoborgbackup:masterfrom
Conversation
This commit fixes critical evaluation crashes in the generated tcsh completion script and significantly cleans up the Python generation logic: - monkeypatch shtab to natively support positional completion under subcommands for tcsh (e.g., `borg help <topic>`). - fix "if: Empty if." errors in tcsh by injecting array bounds checks (`$#cmd >= max_idx`) inside the monkeypatched shtab generator. - fix recursive parser crashes in tcsh by replacing unescaped nested backticks (`...`) with safe `eval` evaluations. - deduplicate tcsh fallback rules to reduce the script payload size, preventing tcsh memory buffer truncations that led to cryptic "Illegal variable name." exceptions. - no support yet for archive, aid:, and tags completion features for tcsh
|
This was created with AI assistance (Gemini Flash/Pro) and likely needs more work:
|
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## master #9503 +/- ##
==========================================
+ Coverage 83.36% 83.40% +0.04%
==========================================
Files 87 87
Lines 15439 15523 +84
Branches 2309 2336 +27
==========================================
+ Hits 12870 12947 +77
- Misses 1818 1821 +3
- Partials 751 755 +4 ☔ View full report in Codecov by Sentry. |
|
@simaoafonso-pwt Could you have a look at that monkeypatch please? |
Thanks for tagging me, I know that tcsh support is not fully featured, but it was the best I could do. I see that monkey patching is changing a single function, can you please create a diff between that new function, and the one on |
This commit fixes critical evaluation crashes in the generated tcsh completion script and significantly cleans up the Python generation logic:
borg help <topic>).$#cmd >= max_idx) inside the monkeypatched shtab generator....) with safeevalevaluations.Description
Checklist
master(or maintenance branch if only applicable there)toxor the relevant test subset)