Commit 5571b83
committed
fix(complete): Trailing space after zsh directory completions
zsh dynamic completions would add a trailing space after all
completions, including directories. This prevented natural path
completion. Users had to delete the trailing space before continuing to
type or tab-complete within the directory.
The fix is for the dynamic completion script to separate completions
into directories and non-directories, and providing the directory
completions to zsh with a different _describe invocation.
For directories:
1. Strip the trailing slash from the completion value
2. Let zsh add it back as a suffix using `_describe -S '/'`
3. Also provide `-r '/'` to make the slash auto-removable when typing '/'
This makes dynamic path completions reasonably emulate zsh-native file
completions.
This matches the behavior already implemented for bash completions which
uses 'compopt -o nospace' to achieve the same result.
Fixes: #6178
Ref: jj-vcs/jj#55821 parent 06a2311 commit 5571b83
File tree
3 files changed
+67
-2
lines changed- clap_complete
- src/env
- tests
- snapshots/home/dynamic-env/exhaustive/zsh/zsh
- testsuite
3 files changed
+67
-2
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
381 | 381 | | |
382 | 382 | | |
383 | 383 | | |
384 | | - | |
| 384 | + | |
| 385 | + | |
| 386 | + | |
| 387 | + | |
| 388 | + | |
| 389 | + | |
| 390 | + | |
| 391 | + | |
| 392 | + | |
| 393 | + | |
| 394 | + | |
| 395 | + | |
| 396 | + | |
| 397 | + | |
| 398 | + | |
| 399 | + | |
| 400 | + | |
| 401 | + | |
| 402 | + | |
385 | 403 | | |
386 | 404 | | |
387 | 405 | | |
| |||
Lines changed: 19 additions & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
11 | 11 | | |
12 | 12 | | |
13 | 13 | | |
14 | | - | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
15 | 33 | | |
16 | 34 | | |
17 | 35 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
370 | 370 | | |
371 | 371 | | |
372 | 372 | | |
| 373 | + | |
| 374 | + | |
| 375 | + | |
| 376 | + | |
| 377 | + | |
| 378 | + | |
| 379 | + | |
| 380 | + | |
| 381 | + | |
| 382 | + | |
| 383 | + | |
| 384 | + | |
| 385 | + | |
| 386 | + | |
| 387 | + | |
| 388 | + | |
| 389 | + | |
| 390 | + | |
| 391 | + | |
| 392 | + | |
| 393 | + | |
| 394 | + | |
| 395 | + | |
| 396 | + | |
| 397 | + | |
| 398 | + | |
| 399 | + | |
| 400 | + | |
| 401 | + | |
0 commit comments