Skip to content

Commit 2356b38

Browse files
authored
Merge pull request #299 from carapace-sh/fish-missing-completions
fish: fix missing completions
2 parents e345d2b + 0cf3ef1 commit 2356b38

2 files changed

Lines changed: 7 additions & 6 deletions

File tree

pkg/actions/bridge/fish.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,12 +25,12 @@ func ActionFish(command ...string) carapace.Action {
2525
args := append(command, c.Args...)
2626
args = append(args, c.Value)
2727

28-
configPath := filepath.Join(configDir, "carapace/bridge/fish/config.fish")
29-
if err := ensureExists(configPath); err != nil {
28+
fishConfigDir := filepath.Join(configDir, "carapace/bridge/fish")
29+
if err := ensureExists(fishConfigDir + "/config.fish"); err != nil {
3030
return carapace.ActionMessage(err.Error())
3131
}
3232

33-
snippet := fmt.Sprintf(`set __fish_config_dir "/var/empty";source "$__fish_data_dir/config.fish";source %#v;complete --do-complete="%v"`, configPath, shlex.Join(args)) // TODO needs custom escaping
33+
snippet := fmt.Sprintf(`set __fish_config_dir %[1]q;source "$__fish_data_dir/config.fish";source %[1]q/config.fish;complete --do-complete=%[2]q`, fishConfigDir, shlex.Join(args)) // TODO needs custom escaping
3434
return carapace.ActionExecCommand("fish", "--no-config", "--command", snippet)(func(output []byte) carapace.Action {
3535
lines := strings.Split(string(output), "\n")
3636

pkg/bridges/fish.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,16 +25,17 @@ func Fish() []string {
2525
return nil, err
2626
}
2727

28-
configPath := filepath.Join(configDir, "carapace/bridge/fish/config.fish")
29-
snippet := fmt.Sprintf(`set __fish_config_dir "/var/empty";source "$__fish_data_dir/config.fish";source %#v;echo $fish_complete_path`, configPath)
28+
fishConfigPath := filepath.Join(configDir, "carapace/bridge/fish/config.fish")
29+
// TODO explicitly adding $__fish_data_dir/completions which is currently missing in $fish_complete_path
30+
snippet := fmt.Sprintf(`set __fish_config_dir %[1]q;source "$__fish_data_dir/config.fish";source %[1]q/config.fish;echo $fish_complete_path $__fish_data_dir/completions`, fishConfigPath)
3031

3132
output, err := execlog.Command("fish", "--no-config", "--command", snippet).Output()
3233
if err != nil {
3334
return nil, err
3435
}
3536

3637
unique := make(map[string]bool)
37-
for _, location := range strings.Split(string(output), " ") {
38+
for location := range strings.SplitSeq(string(output), " ") {
3839
entries, err := os.ReadDir(location)
3940
if err != nil {
4041
continue

0 commit comments

Comments
 (0)