multi-shell multi-command argument completer
MIT License
Bot releases are visible (Hide)
Published by rsteube about 2 years ago
Switched to a custom pflag fork with adaptions for non-posix variants like long shorthands (e.g. -shorthand
).
So far this has been done by patching
os.Args
which was rather hacky.
Modifications to the flag parser are quite complex though, so there might be some issues.
see https://github.com/rsteube/carapace-bin/pull/1293/files
Spec files support non-posix flags now as well:
flags:
-np: non-posix shorthand
-np, -nonposix: non-posix shorthand and longhand
-np, --nonposix: non-posix shorthand mixed with posix longhand
Published by rsteube about 2 years ago
Published by rsteube about 2 years ago
Added support for homedir (~
) and static named directories.
These are not expanded by zsh for the completion function are thus now handled by carapace.
Quoting of special characters is now also done in carapace instead of compadd to skip ~
at appropriate times.
Edge cases where this doesn't work and some initial bugs regarding special characters not yet being handled correctly are expected.
see https://github.com/rsteube/carapace-bin/issues/1277
Published by rsteube about 2 years ago
https://github.com/nushell/nushell/pull/6295 adds support for external completers to nushell.
For this config.nu
must be updated manually according to the snippet output of carapace
.
Here's an example with carapace
as default completer and a couple custom completers:
let external_completer = {|spans|
{
$spans.0: { carapace $spans.0 nushell $spans | from json } # default
example: { example _carapace nushell $spans | from json }
pkill: { carapace --spec '/home/rsteube/.config/carapace/specs/pkill.yaml' nushell $spans | from json }
vault: { carapace --bridge vault/posener nushell $spans | from json }
} | get $spans.0 | each {|it| do $it}
}
let-env config = {
external_completer: $external_completer
}
Published by rsteube about 2 years ago
Published by rsteube about 2 years ago
DEB
and RPM
packages are now published to fury.io (Installation)
Published by rsteube about 2 years ago
xonsh.built_ins.XSH
Published by rsteube over 2 years ago
Published by rsteube over 2 years ago
Published by rsteube over 2 years ago
Published by rsteube over 2 years ago
Published by rsteube over 2 years ago
Published by rsteube over 2 years ago
Published by rsteube over 2 years ago
Published by rsteube over 2 years ago
Published by rsteube over 2 years ago
Published by rsteube over 2 years ago
Published by rsteube over 2 years ago
Published by rsteube over 2 years ago
Specs placed in ${UserConfigDir}/carapace/specs/
(UserConfigDir) are now registered with carapace _carapace
.
File name must be the command to be completed and match ^[0-9a-zA-Z_\-.]+\.yaml$
(sanity check to avoid breakage in scripts).
Exposed actions as custom macros (list with carapace --macros
).
Removed the _
prefix from core macros to avoid clashes (e.g. $files
, $directories
).
Arguments are parsed as yaml
($macro(yaml)
- e.g.: $_tools.gh.Users({users: true})
).
Brackets are optional when no argument is passed ($files
instead of $files()
).
Variables are replaced using drone/envsubst for contextual completion:
name: myzip
completion:
positional:
- ["$files([.zip])"] # ${C_ARG0}
positionalany: ["$_fs.ZipFileContents(${C_ARG0})"] # ${C_ARG1},${C_ARG2},...
Flags are only added to env when their value changed (thus: ${C_FLAG_FLAGNAME:-default}
):
name: myrefs
flags:
--tags: list tags # ${C_FLAG_TAGS}
--localbranches: list local branches # ${C_FLAG_LOCALBRANCHES}
--commits=: amount of commits # ${C_FLAG_COMMITS}
completion:
positional:
- ["$_tools.git.Refs({tags: ${C_FLAG_TAGS:-false}, localbranches: ${C_FLAG_LOCALBRANCHES:-false}, commits: ${C_FLAG_COMMITS:-0}})"] # refs based on flag values with defaults
- ["$_tools.git.Refs"] # default refs
- ["$(env)"] # env
Published by rsteube over 2 years ago
Generic alteration of completion before execution which enables features like directory change in git -C <DIR>
:
Experimental support for simple completions using yaml
spec files:
name: example
description:
flags:
--dynamic=: dynamic value
-o, --optarg?: optarg flag
-s, --styled=: styled values
completion:
flag:
dynamic: ["$(git branch --all | cut -c 3- | sed 's/$/\t\tblue/')", "static value"]
optarg: ["first", "second", "third"]
styled:
- "blue\tblue\tblue"
- "cyan\tcyan\tcyan"
positional:
- ["pos1-a", "pos1-b", "pos1-c"]
- ["$_files"]