8000 GitHub - pfgray/fish-completion-sync: A fish plugin to help dynamically load fish completions from `$XDG_DATA_DIRS`.
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

pfgray/fish-completion-sync

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 

Repository files navigation

fish-completion-sync

A fish plugin to help dynamically load fish completions from $XDG_DATA_DIRS.

Installation

home-manager

{
  programs.fish = {
    # ...
    plugins = [
      #...
      {
        name = "fish-completion-sync";
        src = pkgs.fetchFromGitHub {
          owner = "pfgray";
          repo = "fish-completion-sync";
          rev = "ba70b6457228af520751eab48430b1b995e3e0e2";
          sha256 = "sha256-JdOLsZZ1VFRv7zA2i/QEZ1eovOym/Wccn0SJyhiP9hI=";
        };
      }
    ];
  };
}

fisher

fisher install pfgray/fish-completion-sync

Why

Fish only considers $XDG_DATA_DIRS on shell startup, and thus will not dynamically load completions if $XDG_DATA_DIRS changes sometime after the shell starts. This leads to problems when using tools like direnv, which try to add completions on a per-folder basis.

This plugin tries to alleviate this issue.

tl;dr; it's the bit of glue between: fish-shell/fish-shell#8261 and: direnv/direnv#443

How it works

Fish will search $fish_complete_path dynamically, so the idea is to implement a function which listens for changes to $XDG_DATA_DIRS, and attempts to keep that in sync with $fish_complete_path.

function fish_completion_sync --on-variable XDG_DATA_DIRS
   
  # If there are paths in $FISH_COMPLETION_ADDITIONS,
  # but not in $XDG_DATA_DIRS
  #   remove them from $fish_complete_path
  #   remove them from $FISH_COMPLETION_ADDITIONS

  # if there are paths in $XDG_DATA_DIRS
  # but not in $FISH_COMPLETION_ADDITIONS
  #   add them to $fish_complete_path
  #   add them to $FISH_COMPLETION_ADDITIONS

  echo "got new data dirs: $XDG_DATA_DIRS"
end

Caveats

This has been working well for me, but it's stopped working a few times, and I haven't been able to pinpoint why. If you experience this, you can set the environment variable FISH_COMPLETION_DEBUG to help debug:

set -x FISH_COMPLETION_DEBUG 1

Submit an issue if the problem persists.

About

A fish plugin to help dynamically load fish completions from `$XDG_DATA_DIRS`.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •  

Languages

0