Commit graph

592 commits

Author SHA1 Message Date
shannmu
d1e0f6073c feat(clap_complete): Support hiding long flags and their long aliases 2024-07-19 22:49:35 +08:00
shannmu
903b73bd1c test(clap_complete): Add test cases for hiding long flags and their long aliases 2024-07-19 22:49:35 +08:00
Ed Page
7f903005b8
Merge pull request #5586 from shannmu/glue_documentation
docs: Add document comments how to source dynamic completions
2024-07-19 09:29:32 -05:00
shannmu
43e17f2c2b docs: Add document comments how to source dynamic completions 2024-07-19 22:04:12 +08:00
shannmu
67e31af334 refactor(clap_complete): Add CompletionCandidate to replace (OsString, Option<StyledStr>) 2024-07-19 18:29:16 +08:00
shannmu
697b88e28f feat(clap_complete): Add elvish support for native completion 2024-07-18 13:44:27 +08:00
Ed Page
4a8d6806d9
Merge pull request #5549 from shannmu/hidden_aliases
feat(clap_complete): Add support for visible subcommand aliases
2024-07-17 16:20:17 -05:00
shannmu
cef9393c5d feat(clap_complete): Add zsh support for native completion 2024-07-17 23:29:48 +08:00
shanmu
152b2e8a55 feat(clap_complete): Add support for visible subcommand aliases 2024-07-16 16:26:52 +08:00
shanmu
c41d41cbdc test(clap_complete): Add test case for visible subcommand aliases 2024-07-16 16:26:02 +08:00
Ed Page
44189f3388 chore: Release 2024-07-10 20:34:37 -05:00
Ed Page
f5e7b7a16a docs: Update changelog 2024-07-10 20:34:29 -05:00
Lzu Tao
6243d65463 fix: Only generate stubs if has subcommands 2024-07-11 06:01:42 +07:00
Lzu Tao
76b9c46241 style: Prefer matching with enum name 2024-07-09 07:51:21 +07:00
Lzu Tao
0462be61cc doc: Explain why we fallback to the old behavior 2024-07-09 07:40:11 +07:00
Lzu Tao
eba26a9376 chore: Explain why -lt 3 levels of subcommands 2024-07-09 06:56:31 +07:00
Lzu Tao
1dd1056cd7 fix: Check for real optional arguments 2024-07-07 07:27:47 +07:00
Lzu Tao
e276fc420b fix: Fix conditions to generate helpers
Both should be met.
2024-07-07 00:26:53 +07:00
Lzu Tao
6c706d534b chore: Use get_action to filter out help/version flags 2024-07-07 00:16:48 +07:00
Lzu Tao
2167fee212 fix(fish): Don't handle level 3 nested subcommand
Nested subcommand more than 3 levels is not practical in public.
Take rustup for example, `rustup toolchain install <version>`,
there is only 3 levels of nested subcommands. But there is also
the case of `rustup help toolchain install`, or `rustup toolchain help install`.
2024-07-06 07:58:43 +07:00
Lzu Tao
a6ac45f566 feat(fish): Support nested subcommand completion 2024-07-06 07:27:56 +07:00
Lzu Tao
1c5a625ad0 fix: Fix wrong cfg(linux) 2024-07-05 15:35:01 -05:00
Lzu Tao
2d2d1f4987 chore: Bump completest 2024-07-05 15:35:01 -05:00
Lzu Tao
7c00ad2e3e test(comlete): Show all fish completions 2024-07-05 15:34:42 -05:00
Ed Page
3689a4c867 test(complete): Fix snapshots 2024-07-05 15:02:08 -05:00
Ed Page
469d847d35 chore: Release 2024-06-28 12:44:19 -04:00
Ed Page
e323b912a6 docs: Update changelog 2024-06-28 12:43:51 -04:00
Lzu Tao
5ee1a2570e fix(fish): Don't ignore files if has positional args 2024-06-28 10:20:09 +07:00
Lzu Tao
1e3681bfbc refactor: Pass list to __fish_seen_subcommand_from 2024-06-27 07:22:04 +07:00
Lzu Tao
b1a0508cf9 refactor: Rewrite iterator for followup changes 2024-06-27 07:21:18 +07:00
Ed Page
5cc44bb91e
Merge pull request #5548 from tesuji/fish-escape-tab
style: fish: escaping tab as \t for more readibility
2024-06-26 12:27:13 -05:00
Ed Page
0724b7ba2b chore: Remove tarpaulin support 2024-06-26 09:03:34 -04:00
Lzu Tao
b16f987ad7 style: Escaping tab as \t for more readability for fish 2024-06-25 08:42:49 +07:00
Ed Page
9c1153d6b4 chore: Release 2024-06-19 16:03:52 -05:00
Ed Page
b3effeae10 style: Make clippy happy 2024-06-13 12:45:33 -05:00
Ed Page
2f645d3e81 chore: Release 2024-06-07 16:13:55 -05:00
Ed Page
6e1e0368f9 docs: Update changelog 2024-06-07 16:12:56 -05:00
Ben Rogers
8e3c273b61 fix(zsh): Separate options from _arguments options 2024-06-07 15:20:04 -04:00
Ed Page
ff3713d770 chore: Release 2024-06-06 16:41:05 -05:00
Ed Page
3572ab8fa3 chore(complete): Require latest clap 2024-06-06 16:37:19 -05:00
Ed Page
d87dee6d48
Merge pull request #5476 from pzmarzly/issue-4265
feat(complete): generate completions for visible aliases
2024-06-06 16:33:01 -05:00
Ed Page
f087c39884 chore: Release 2024-06-06 15:14:24 -05:00
Ed Page
5e3386bb40 docs: Link to repo, not webpage inside repo 2024-06-04 15:36:17 -05:00
Ed Page
75e2199415 chore: Upgrade snapbox 2024-05-24 10:13:50 -05:00
Pawel Zmarzly
5000d58f38 feat(complete): Add autocomplete for visible_alias
Let's generate autocompletions for aliased subcommands.

    $ source before.zsh
    $ clap-test [TAB] <- gives me "foo bar --"
    $ clap-test foo [TAB] <- gives me "--my-flag"
    $ clap-test bar [TAB] <- no reaction

    $ source after.zsh
    $ clap-test [TAB] <- gives me "foo bar --"
    $ clap-test foo [TAB] <- gives me "--my-flag"
    $ clap-test bar [TAB] <- gives me "--my-flag"
2024-05-17 15:17:44 +01:00
Pawel Zmarzly
be15bd5d96 fix(complete): Fix zsh.rs subcommand deduplication
Fixing the iteration over all_subcommands in zsh.rs. We deduplicate
values on (sc_name, bin_name) keys, but then only iterate on bin_name.
This doesn't cause problems now, since all bin names seem to be unique.
However, without fixing this, the next commit would have started
generating duplicated functions with same names.

For example, with an #[long = "foo", visible_alias = "bar"] subcommand,
we'll end up with 2 pairs: [("foo", "foo"), ("bar", "foo")]. Before this
commit, we would have ended up generating _my-app__foo_commands()
functions. These functions should have identical content, so it is not
an error, just an inefficiency that we can fix.
2024-05-17 15:16:43 +01:00
Ed Page
800d7cb8ad chore: Update from template 2024-05-14 12:27:02 -05:00
renovate[bot]
24651fcfef
chore(deps): update compatible (dev) (#5477)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-05-01 01:04:57 +00:00
Ed Page
3092aa4a0d chore: Release 2024-04-09 12:08:43 -05:00
Ed Page
dc333288ec docs: Update changelog 2024-04-09 12:08:33 -05:00
sudotac
cd82f8cc8e fix(complete): Avoid use of -v in bash completion
Because -v is not supported below bash 5.0.
2024-04-07 23:19:50 +09:00
renovate[bot]
9d14f394ba
chore(deps): update compatible (dev) (#5438)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-04-01 00:30:25 +00:00
Pi-Cla
3b35dba160 docs: Add mention of nushell to clap_complete README 2024-03-22 11:43:50 -06:00
renovate[bot]
a2aa644368
chore(deps): update compatible (dev) (#5381)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-01 00:16:52 +00:00
Ed Page
0c01b5558d chore: Release 2024-02-16 16:33:14 -06:00
Ed Page
08e0b5bde4 docs: Update changelog 2024-02-16 16:32:57 -06:00
Alexis (Poliorcetics) Bourget
e782775229 fix(complete): Handle newlines in command/arg descriptions
Found while trying to add Nushell completions to
[`jj`](https://github.com/martinvonz/jj).
2024-02-16 16:17:22 -06:00
Ed Page
fba7c8597b test(complete): Show newline issue 2024-02-16 16:16:36 -06:00
Ed Page
5f9cecb6bd chore: Update snapbox/trycmd 2024-02-14 16:44:57 -06:00
Ed Page
a751c5fe65 chore: Release 2024-02-08 10:34:06 -06:00
Ed Page
9ec6c942b8 chore: Release 2024-02-08 10:33:13 -06:00
Ed Page
0735119775 docs: Update changelog 2024-02-08 10:32:13 -06:00
Ed Page
ea77b98da3 test(complete): Make it order independent 2024-02-08 06:19:06 -06:00
Ed Page
708afa33ef chore: Release 2024-02-02 10:12:09 -06:00
Ed Page
ec74349838 docs: Update changelog 2024-02-02 10:12:02 -06:00
sudotac
1edffb8576 fix(complete): Prevent filenames splitting
Fix #5313
2024-02-02 23:31:03 +09:00
sudotac
fe16f24ed8 test(complete): Verify filename splitting 2024-02-02 23:31:03 +09:00
renovate[bot]
4788918e01
chore(deps): update compatible (dev) (#5333)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-02-01 01:26:55 +00:00
Ed Page
bd9583059b chore: Release 2024-01-22 09:46:21 -06:00
Ed Page
35a96b0824 docs: Update changelog 2024-01-22 09:46:07 -06:00
Ed Page
646134a9a9
Merge pull request #5240 from sudotac/improve-bash-completion-with-compopt
Improve bash completion with compopt
2024-01-22 09:44:11 -06:00
sudotac
13a79804c9 fix(complete): Suppress a useless space completion 2024-01-20 21:29:51 +09:00
sudotac
e25b1abddf feat(complete): Add DirPath support in bash 2024-01-20 21:29:50 +09:00
sudotac
3a222def22 fix(complete): Fix path completion in bash
Fix #5239
2024-01-20 21:29:06 +09:00
sudotac
62a5ace9f1 test(complete): Verify some variants of ValueHint 2024-01-20 21:28:52 +09:00
Ed Page
6a2b3bf4fa chore: Release 2024-01-19 10:47:00 -06:00
Ed Page
069c7a6245 docs: Update changelog 2024-01-19 10:46:46 -06:00
Sebastian Holmin
ba378e635c fix(complete): Use bin_name for subcommands
Bash completions for subcommands used package
name, which broke completions when the `bin_name`
was different.

Update the `custom_bin_name` test to reflect the
correct behavior.
2024-01-19 10:27:36 +01:00
Sebastian Holmin
6411995641 test(complete): Add custom bin name test 2024-01-19 10:26:26 +01:00
Ed Page
c742b8eb0c chore(complete): Update completest-pty 2024-01-15 14:42:42 -06:00
Ed Page
f524d84c1d chore: Release 2024-01-15 13:09:45 -06:00
Ed Page
944fb81cf5 docs: Update changelog 2024-01-15 13:09:24 -06:00
Ed Page
6fcba9821d fix(complete): Don't provide help output for user
We shouldn't be injecting help when being flattened.

Unsure why this made tests fail inconsistentkly between CI and local
2024-01-15 12:51:45 -06:00
Ed Page
419f231dad chore: Update completest 2024-01-15 12:21:42 -06:00
Ed Page
6e862f5617 chore: Update completest 2024-01-15 12:21:41 -06:00
Ed Page
48d28aa689 chore: Release 2024-01-02 15:00:09 -06:00
Ed Page
748ce18cc2 docs: Update changelog 2024-01-02 15:00:00 -06:00
Henry Hsieh
2b48858ba8 fix: Skip nosort option below bash 4.4 2024-01-02 21:14:20 +08:00
renovate[bot]
924b2524d0
chore(deps): update compatible (dev) (#5276)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-01-01 01:44:12 +00:00
Ed Page
29208083b0 test: Update snapshots 2023-12-27 12:09:15 -06:00
Ed Page
28763ebb6d chore: Release 2023-12-27 11:58:25 -06:00
Ed Page
ace7bb5b45 docs(complete): Update changelog 2023-12-27 11:58:12 -06:00
Ed Page
76beca4d4d docs(complete): Polish API reference for dynamic 2023-12-27 11:57:38 -06:00
Ed Page
3724b9e2e4 docs: Include more content on docs.rs 2023-12-27 11:30:42 -06:00
Ed Page
28425e484f style(docs): Resolve warnings 2023-11-07 13:44:41 -06:00
renovate[bot]
14fd853fb9
chore(deps): update compatible (dev) (#5192)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-01 01:03:46 +00:00
Ed Page
9bfa5a338c chore: Release 2023-10-24 13:25:07 -05:00
Ed Page
38b5a2f956 chore: Release 2023-10-24 11:45:21 -05:00
Ed Page
dcced5ae6a chore: Bump completest 2023-10-16 13:16:40 -05:00
Ed Page
dfebb54423 style: Make clippy happy 2023-10-12 08:32:59 -05:00
Ed Page
39f5e807af chore: Release 2023-09-28 14:36:28 -05:00
Ed Page
485b957c4b chore: Upgrade anstream 2023-09-28 14:13:54 -05:00
Ed Page
204552890d chore: Release 2023-09-25 16:31:57 -05:00
Ed Page
55d2230016 docs: Update changelog 2023-09-25 16:31:49 -05:00
Ed Page
017c258be1 fix(complete): Include positionals in subcommands
Fixes #5139
2023-09-25 16:15:02 -05:00
Ed Page
82c93ce024 test(complete): Verify dynamic subcommand positional completion 2023-09-25 16:10:42 -05:00
Ed Page
6eac61154b chore: Release 2023-09-07 08:58:13 -05:00
Ed Page
a2f8b1a0a8 docs: Update changelog 2023-09-07 08:58:02 -05:00
jporwal05
34291a2b46 fix: (fish-completion) Help for value enum
Resolves #5101

- The completion of value enums now displays accurate help text
- This fix encloses help text in single quotes
- Any text after tab is taken as help text
- Comma in help text is not escaped
- This is because the the help text is now treated as literal
- No variable expansion or command substitution in help text
2023-09-07 17:54:28 +05:30
jporwal05
ca06c321c5 test: (completion) enum value help
- Breaking for fish shell
- Matching the bad output to make the test pass
2023-09-07 17:19:43 +05:30
renovate[bot]
dc63cba772
chore(deps): update compatible (dev) (#5108)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-09-01 01:47:45 +00:00
Ed Page
4647a8a860 chore: Update dependencies 2023-08-28 11:12:59 -05:00
Ed Page
2e49645418 chore: Release 2023-08-24 11:08:02 -05:00
Ed Page
7224e5044e docs: Update changelog 2023-08-24 11:06:00 -05:00
Roland Fredenhagen
aa3f47c239
test(complete): Help for possible value 2023-08-07 14:02:57 +07:00
Roland Fredenhagen
65b9c2b37d
test(complete): Helper for asserting dynamic completions 2023-08-07 13:46:27 +07:00
Roland Fredenhagen
5b10a9d83c
test(complete): Test help escaping 2023-08-04 01:20:50 +07:00
Roland Fredenhagen
bdefebf663
feat(complete): Show help in dynamic completions 2023-08-04 01:20:47 +07:00
Roland Fredenhagen
b613548b03
refactor(complete): Stop using generate utils in dynamic 2023-08-03 16:51:01 +07:00
renovate[bot]
1afb100687
chore(deps): update rust crate completest to 0.0.17 2023-08-01 00:56:25 +00:00
Roland Fredenhagen
4f9cf6be20
feat(complete): Dynamic fish completions 2023-08-01 01:42:05 +07:00
Roland Fredenhagen
a59c175396 fix(complete): Return leading dash on short args 2023-07-28 14:52:05 -05:00
Ed Page
0669994bbc style: Make clippy happy 2023-07-28 14:51:57 -05:00
Roland Fredenhagen
edabdf72b5 fix(complete): Only return imidiate child subcommands 2023-07-28 14:51:56 -05:00
Ed Page
12e1877627 fix(complete): Fix bash dynamic completions 2023-07-28 14:10:22 -05:00
Ed Page
56afdabcc0 test(complete): Rename fixture to avoid ambiguity 2023-07-28 13:54:02 -05:00
Ed Page
dc953e95d0 test(complete): Register bash dynamic completions 2023-07-28 13:28:30 -05:00
Roland Fredenhagen
9a6208c795 test(complete): Allow E2E dynamic completion tests 2023-07-28 12:55:57 -05:00
Ed Page
dac33b686b test(complete): Only limit by command when needed 2023-07-28 12:52:44 -05:00
Ed Page
fa95531230 test(complete): Make room for alt completion styles 2023-07-28 12:48:36 -05:00
Ed Page
abdb1d513e refactor(test): Move nushell tests to completest 2023-07-26 21:06:11 -05:00
Ed Page
053c778e98
Merge pull request #5045 from ModProg/fish-dynamic-completions-v3
chore(ci): Verify dynamic completion support
2023-07-27 08:01:17 -05:00
Ed Page
71d6a3d3ca chore: Update completest 2023-07-26 20:48:02 -05:00
Roland Fredenhagen
ab1407f1ae
chore: Fix dynamic completion tests 2023-07-26 23:52:14 +07:00
Roland Fredenhagen
f16a1a76bc
chore: Clippy 2023-07-26 23:48:37 +07:00
Ed Page
f98ba908aa chore(complete): Update completest 2023-07-24 12:57:56 -05:00
Ed Page
0137a8be65 chore(complete): Update completest 2023-07-21 14:42:49 -05:00
Ed Page
51e37af365 test(complete): Add basic tests for all shells 2023-07-20 20:08:58 -05:00
Ed Page
34a7973e53 refactor(complete): Assert on home change 2023-07-20 20:06:28 -05:00
Ed Page
1d0fa2c6ce refactor(complete): Make test code reusable 2023-07-20 20:06:08 -05:00
Ed Page
28be38b3a7 refactor(complete): Split tests up
This makes them easier to read and and easier to manually invoke
2023-07-20 20:06:08 -05:00
Ed Page
5c362fe5b1 refactor(complete): Merge test binaries for better parallelism 2023-07-20 20:06:08 -05:00
Ed Page
010d7c5464 test(complete): First end-to-end test 2023-07-20 20:06:01 -05:00
Ed Page
35a9d8438e fix(complete): Prefer our own sort order
For testing, I'm seeing different sort orders for local and CI despite
using the same bash version...
2023-07-20 12:14:24 -05:00
Ed Page
00e9217183 feat(complete)!: Open to new shells for dynamic completions 2023-07-18 21:50:34 -05:00
Ed Page
830dd740ef feat(complete): Add dynamic-support shell enum 2023-07-18 21:19:54 -05:00
Ed Page
278ae3ec63 refactor(complete): Pull out completer 2023-07-18 21:14:48 -05:00
Ed Page
e3f1ad932b refactor(complete): Generalize dynamic CLI interface 2023-07-18 21:06:29 -05:00
Ed Page
8e9ded2f6a fix(complete)!: Pull out generic completion code 2023-07-18 20:42:46 -05:00
Ed Page
e8622c5391 refactor(complete): Split out bash dynamic code 2023-07-18 20:39:34 -05:00
Ed Page
4bbcf6088f refactor(complete): Split dynamic into a directory 2023-07-18 20:37:51 -05:00
Ed Page
1289534b19 chore: Release 2023-07-05 10:38:09 -05:00
Ed Page
8d7ce55f79 docs: Update changelog 2023-07-05 10:37:56 -05:00
RubixDev
7b5bc6640c
fix(complete): PS short options not case-sensitive
fixes #2145
2023-07-04 15:27:47 +08:00
Ed Page
50f0e6bffb chore: Release 2023-06-01 21:10:46 -05:00
renovate[bot]
534be345d8
chore(deps): update compatible (dev) 2023-06-01 00:38:25 +00:00
Ed Page
9c3dc187cb chore: Release 2023-05-19 11:55:42 -05:00
Ed Page
5047bb40bd chore: Release 2023-05-19 11:48:29 -05:00
Cosmic Horror
863dd90ca4 docs(complete): Demo generating all completions 2023-05-13 11:25:55 -06:00
Ed Page
36f79289ca chore: Release 2023-05-12 10:23:52 +02:00
Ed Page
9d0e4512fa docs: Update changelog 2023-05-12 10:23:40 +02:00
clubby789
b1b2231db2 fix: Don't emit catchall when we have subcommands 2023-05-10 19:44:02 +01:00
Ed Page
2d4644a870 chore: Release 2023-05-09 21:44:11 +02:00
Ed Page
ea38450643 docs: Update changelog 2023-05-09 21:43:28 +02:00
clubby789
2f97216156 fix: Respect ValueHint::Other in bash 2023-05-09 20:11:48 +01:00
Yuri Astrakhan
d0302c5556 chore: Inline simple non-mixed format args 2023-05-04 15:58:04 -04:00
Ed Page
47c3b6f580
Merge pull request #4884 from nyurik/impl-order
chore: Order trait impl same as trait
2023-05-03 21:14:22 -05:00
Ed Page
5fb1b25799
Merge pull request #4883 from nyurik/happy-clippy
chore: Make Clippy happy
2023-05-03 21:13:47 -05:00
Yuri Astrakhan
1dc6304fcf chore: Order trait impl same as trait 2023-05-03 22:01:16 -04:00
Yuri Astrakhan
ebbdce4820 chore: Make Clippy happy 2023-05-03 21:56:07 -04:00
Yuri Astrakhan
797c23c415 chore: Inline format args using clippy fix
This command cleaned up all the format args,
making code significantly shorter and more readable.

```
cargo clippy --workspace --fix -- -A clippy::all -W clippy::uninlined_format_args
```
2023-05-03 21:49:11 -04:00
Yuri Astrakhan
47cbc5f247 chore: Deduplicate powershell code complete
Makes powershell code more concise
2023-05-03 21:02:30 -04:00
Ed Page
43591bc1ee chore: Release 2023-04-21 07:42:44 -05:00
Ed Page
9bda2ac8a0 docs: Update changelog 2023-04-21 07:42:33 -05:00
Huan-Cheng Chang
a379bae895 fix: Escape special characters properly for zsh
Signed-off-by: Huan-Cheng Chang <changhc84@gmail.com>
2023-04-20 21:52:36 +02:00
Ed Page
feddd124b0 style: Move away from banned fns 2023-03-30 02:18:00 -05:00
Ed Page
8fc65e28b6 chore: Release 2023-03-28 02:19:08 -05:00
Ed Page
2852653656 chore: Release 2023-03-27 19:41:39 -05:00
Ed Page
2bb4146374 chore: Release 2023-03-25 03:56:28 -05:00
Ed Page
ea4dada1e4 fix(lex): Allow reporting errors for non-UTF8 longs 2023-03-25 03:42:04 -05:00
Ed Page
6419a0d937 perf!(lex): Build faster by removing os_str_bytes
We are doing direct transmutes between `OsStr` and `[u8]`.
https://github.com/rust-lang/rust/pull/95290 would make this natively
supported but I got tired of waitin for it.

This only saves about 1/4s off of `cargo build`.

This took 2.9 KiB off of `cargo bloat --release --example git`
2023-03-25 01:59:24 -05:00
Ed Page
d9a641bcc8 docs: Consistently use console fence type 2023-03-24 21:33:49 -05:00
mochi33i
7c6cf81476 docs(clap_complete): The file name of the command in the clap_complete example documentation was not supported, so it has been updated 2023-03-27 23:24:50 +09:00
Ed Page
e78bba0ec5 chore: Release 2023-03-16 10:42:06 -05:00
Ed Page
dec82598b2 chore: Upgrade trycmd 2023-03-16 06:07:46 -05:00
Ed Page
6c0600a031 chore: Fully specify dependencies 2023-03-16 06:07:08 -05:00
renovate[bot]
8469554c17
chore(deps): update compatible (dev) (#4741)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-03-01 04:51:19 +00:00
Ed Page
84a9b53cee chore: Release 2023-02-27 04:20:28 -06:00
Ed Page
9fa48d5f92 docs: Update changelog 2023-02-27 04:20:07 -06:00
XiaoXiaoSN
0f3e729358 feat(complete): Support to run ZSH completion as a script 2023-02-27 23:23:50 +08:00
Ed Page
cdb33b6ad2 test(complete): Adjust bash snapshot 2023-02-24 07:40:24 -06:00
Ed Page
2deb372195 chore: Release 2023-02-23 11:56:20 -06:00
Ed Page
c064da01c9 docs: Update changelog 2023-02-23 11:56:12 -06:00
Ed Page
77803337f8
Merge pull request #4612 from davvid/zsh-multi-length-arguments
clap_complete: fix support for two multi-length arguments in zsh
2023-02-23 11:55:17 -06:00
Ed Page
953e2dcd34 docs: Remove remaining references to clap attribute 2023-02-18 18:42:07 -06:00
Ed Page
fb9435d026 chore: Release 2023-02-15 10:27:15 -06:00
Martin
704d0e7a4f chore: Make format!() calls more readable 2023-01-29 19:14:47 +00:00
Ed Page
90c042eeae chore: Release 2023-01-23 13:05:20 -06:00
Ed Page
4f638b5c75 docs: Update changelog 2023-01-23 13:05:15 -06:00
Fredrik Jansson
3426310d8e fix: Bash test cases 2023-01-23 19:20:09 +01:00
Fredrik Jansson
8b455d28e7 fix: Make cmd a local var in bash completion 2023-01-23 19:07:15 +01:00
Ed Page
34d856b449 chore: Release 2023-01-13 09:27:31 -06:00
Ed Page
889ca7a537 chore: Bump versions for 4.1 2023-01-13 09:24:37 -06:00
Ed Page
a41ca2edb0 docs: Update changelog 2023-01-13 07:13:28 -06:00
David Aguilar
170bd59111 fix(complete): Handle multi-valued arguments
zsh completions for commands that have multiple Vec arguments require
special care.

We can have two Vec args separated with a value terminator.
We can also have two Vec args with no value terminators specified
where the final arg uses 'raw' and thus requires '--' to be used.

The 2nd of these scenarios requires special handling to avoid
emitting a duplicate '*:arguments' completion entry.

Currently, the zsh completions generate an error in this scenario:

    $ my-app <TAB>
    _arguments:...: doubled rest argument definition:
    *::second -- second set of of multi-length arguments:

We already use the '-S' option when calling _arguments.
This option makes it so that completion stops after '--' is encountered.
This means that the handling for trailing 'raw' arguments does not need
to specified.

Special-case multi-valued arguments so that we can skip emitting
the final multi-valued argument if a previous multi-valued argument
has already been emitted.

Closes #3022
Signed-off-by: David Aguilar <davvid@gmail.com>
2023-01-10 14:39:33 -08:00
David Aguilar
58b0c504d8 fix(complete): Emit value terminators on zsh
Emit the user-defined value terminator into the zsh completion pattern
to avoid doubled rest-arguments definitions:

    $ my-app <TAB>
    _arguments:comparguments:325: doubled rest argument definition:
    *::second -- second set of of multi-length arguments:

https://github.com/clap-rs/clap/issues/3266#issuecomment-1007901407
noted that including the value terminator is one step towards a
robust solution for handling multiple multi-valued arguments.

This change does not yet handle automatically detecting when a value
terminator is needed, but it does add tests to ensure that
user-specified value terminators are used on zsh.

Related-to: #3022
Signed-off-by: David Aguilar <davvid@gmail.com>
2023-01-10 00:59:25 -08:00
Ed Page
fa02111092 chore: Switch to workspace inheritance 2023-01-09 12:35:54 -06:00
Ed Page
f25fe5b3e0 chore: Bump MSRV to 1.64.0 2023-01-09 12:29:41 -06:00
Ed Page
c2efb60a5f fix(error): Lowercase the start of error messages
This matches the rustc error style
2023-01-03 13:17:46 -06:00
Ed Page
36bc641648 fix(help): Remove extraneous text from built-ins
This is an intermediate solution for #4408.  As there were no agreeed
upon goals, I went with what I felt read well and that I saw commonly
used on non-clap commands.

- "information" isn't really a necessary word.
- I originally favored `Print this help` but realied that doesn't read
  correctly in completions.
- Besides being shorter, the reason for the flipped short/long hint is
  it gives people the context they need for scanning, emphasizing
  "summary" and "more".

Fixes #4409
2023-01-03 11:02:26 -06:00
renovate[bot]
acfc493a35
chore(deps): update compatible (dev) 2023-01-01 02:25:24 +00:00
Ed Page
0eccd556ac chore: Release 2022-12-22 12:40:15 -06:00
renovate[bot]
9b2b718df6
chore(deps): update dev 2022-12-01 21:38:13 +00:00
Ed Page
3262016c26 chore: Release 2022-11-24 11:40:15 -06:00
Ed Page
623ccbc152 style: Make clippy happy 2022-11-24 08:05:21 -06:00
Hugo Osvaldo Barrera
d169849330 docs: Clarify mention of example elsewhere
This points to "the example above", but there's no example above when
this gets rendered in docs.rs:

    https://docs.rs/clap_complete/latest/clap_complete/generator/fn.generate.html

I suppose this reference is just stale since moving docs from a single
markdown file or something similar.
2022-11-19 12:22:37 +01:00
Ed Page
c75b81eeb8 chore: Release 2022-11-07 07:39:49 -06:00
Ed Page
28324d8df7 docs: Update changelog 2022-11-07 07:39:36 -06:00
Ed Page
571f45080e
Merge pull request #4447 from tmccombs/guess-shell
Add support for determining current shell from environment
2022-11-07 07:38:51 -06:00
Ed Page
b4b94af0f8 chore: Release 2022-11-07 06:24:02 -06:00
Thayne McCombs
86db119153 feat(complete): Support getting shell from env
Add functions for getting the Shell from a path and for getting the
current shell form environment variables.

Closes: #4446
2022-11-06 23:39:55 -07:00
Ed Page
a24fb589eb chore: Update trycmd 2022-11-04 10:27:57 -05:00
Ed Page
996636d56f chore: Release 2022-10-18 14:37:53 -05:00
Ed Page
3e23cd102f fix: Require release versions of clap 2022-10-18 14:36:44 -05:00
dependabot[bot]
f0d971562a
chore(deps): bump snapbox from 0.3.3 to 0.4.0
Bumps [snapbox](https://github.com/assert-rs/trycmd) from 0.3.3 to 0.4.0.
- [Release notes](https://github.com/assert-rs/trycmd/releases)
- [Changelog](https://github.com/assert-rs/trycmd/blob/main/CHANGELOG.md)
- [Commits](https://github.com/assert-rs/trycmd/compare/snapbox-v0.3.3...snapbox-v0.4.0)

---
updated-dependencies:
- dependency-name: snapbox
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-01 18:58:27 +00:00
Ed Page
eeafb2574b docs(complete): Don't use deprecated API 2022-09-29 16:11:03 -05:00
Ed Page
80fb67edaa chore: Release 2022-09-29 12:08:47 -05:00
Ed Page
83db04c0c3 docs: Update changelog 2022-09-29 12:08:40 -05:00
Martin von Zweigbergk
33fa7c4c19 fix(complete): Fix command alias and Bash
With the previous fixes for #4273 and #4280 in place, it's now easy to
add support for subcommand aliases, which this commit does. This
addresses #4265 for Bash.
2022-09-29 08:58:32 -07:00
Martin von Zweigbergk
9ee45f7f3d fix(complete): Fix git diff log <TAB> for Bash
This continues the work started with the fix for #4273. There was
another bug caused by using the subcommand names without considering
their position in the argument list. If the user enters `git diff log
<TAB>`, we build up a string that identifies the subcommand. We ended
up making the string `git__diff__log` in this case because we appended
`__log` without considering the current state. Since `git__diff__log`
does not correspond to an actual command, we wouldn't provide any
suggestions.

This commit restructures the code so we walk subcommands and
subsubcommands in `bash.rs`. While walking those, we build up a list
containing triples of the parent `$cmd` name (e.g. `git__diff`), the
current command's name (e.g. `log`), and the `$cmd` for the current
command. We then build the shell script's case arms based on that
information.

We could instead have fixed #4280 by using the second element in the
pair returned from `utils::all_subcommands()` (a stringified list of
the subcommand path) instead of the first one. However, that would not
have helped us solve #4265.

Closes #4280
2022-09-29 08:58:32 -07:00
Martin von Zweigbergk
ea264fde16 fix(complete): Fix git diff git <TAB> for Bash
Early in the Bash-completion script, we build up a string that
identifies the command or subcommand. When we see the top-level
command's name (e.g. `git`) we set the command so far to that
value. We do that regardless of where in the argument list it
appears. For example, if the argument list is `git diff git`, we set
the current command to `git` when run into it the second time. We
therefore suggest arguments to the top-level command afterwards, which
is not correct.

This patch fixes that by also considering the string that identifies
the command so far, so we only set the overall command to `git` if the
command so far is the empty string.

This is actually just a step on the way to getting completion to work
for aliases of subcommands.

Closes #4273
2022-09-29 08:40:54 -07:00
Martin von Zweigbergk
35b5f9b276 refactor(complete): Remove an always-true check
The `text` variable here is clearly never empty, so don't check if it
is.
2022-09-29 08:40:54 -07:00
Martin von Zweigbergk
9c59c69bb0 refactor(complete): Remove unnecessary early return
There seems to be little reason to return early with an empty list
when there are no subcommands, instead of going through the loop 0
times and then returning the empty list.
2022-09-29 08:40:54 -07:00
Martin von Zweigbergk
8d0ef124e0 test(complete): Include a visible command alias
Only zsh includes completion for visible aliases of subcommands. Let's
show that in tests.
2022-09-29 08:40:54 -07:00
Martin von Zweigbergk
5020d739d5 refactor(complete): Add an alias for the subcommand
I want to add support for completion of arguments for aliased
subcommands so it's nice to have an example to test on.
2022-09-29 08:39:49 -07:00
Martin von Zweigbergk
6bc8d2632c refactor(complete): Add a subcommand to examples
It's useful when testing to have a subcommand in the examples.
2022-09-29 08:39:17 -07:00
Martin von Zweigbergk
8b33da3138 fix(complete): Make the two examples consistent
The derive-based example has a `///` comment on one argument, which
ends up as a description for the argument in the generated completion
scripts. Let's switch to `//` so the two scripts produce the same
output (except for the binary name), so they're easy to compare.
2022-09-29 08:37:03 -07:00
Martin von Zweigbergk
59270b1c81 fix(complete): Make example commands match binary
The example binaries were renamed in 89c2b3bb0d, but the commands in
them were not, making the generated completion scripts not work
(because we use the command name as binary name in the examples).
2022-09-29 08:34:19 -07:00
Ed Page
bf42ff04d5 chore: Release 2022-09-28 15:34:33 -05:00
Ed Page
824f6589ad docs: Update changelog 2022-09-28 15:34:25 -05:00
Ed Page
7b886d2c63
Merge pull request #4278 from intgr/zsh-completion-fix-multiple-args-handling
fix(complete): Fix zsh handling of multiple arguments
2022-09-28 15:33:42 -05:00
Marti Raudsepp
89cae3a2b3 fix(complete): Fix handling of multiple arguments 2022-09-28 23:02:31 +03:00
Ed Page
8aafddff01 docs(complete): Ensure examples work
Fixes #4272
2022-09-28 14:34:56 -05:00
Ed Page
3a74d82376 chore: Release 2022-09-28 12:00:48 -05:00
Ed Page
a82029c707 chore: Release 2022-09-20 16:30:29 -05:00
Ed Page
af64699912 chore: Release 2022-09-20 16:28:27 -05:00
Ed Page
7a5dad89ff feat(help): Break out help feature flag
This removes auto-generated help, saving about 50 KiB.
2022-09-19 11:54:10 -05:00
Ed Page
c165b601ac perf: Switch to &'static str by default
Originally, clap carried a lifetime parameter.  When moving away from
that, we took the approach that dynamically generated strings are always
supported and `&'static str` was just an optimization.

The problem is the code size increase from this is dramatic.  So we're
taking the opposite approach and making dynamic formatting opt-in under
the `string` feature flag.  When deciding on an implementation, I
favored the faster one rather than the one with smaller code size since
small code size can be gotten through other means.

Before: 567.2 KiB, 15.975 µs
After: 541.1 KiB, 9.7855 µs
With `string`: 576.6 KiB, 13.016 µs
2022-09-16 16:44:39 -05:00
Roland Fredenhagen
a2cf7f1dea fix: Tests/clippy/errors bash dynamic completion 2022-09-07 20:25:06 -05:00
Ed Page
bffce7f57a fix: Deprecate Command::trailing_var_arg
Now that we have it on `Arg`, we don't need it on `Command`
2022-09-06 19:41:17 -05:00