diff --git a/kitty/shell_integration.py b/kitty/shell_integration.py index 8f94065b3..f8773436a 100644 --- a/kitty/shell_integration.py +++ b/kitty/shell_integration.py @@ -65,15 +65,12 @@ def setup_fish_integration(env: Dict[str, str]) -> None: def setup_fish_env(env: Dict[str, str]) -> None: val = env.get('XDG_DATA_DIRS') - if val is None: + env['KITTY_FISH_XDG_DATA_DIR'] = shell_integration_dir + if not val: env['XDG_DATA_DIRS'] = shell_integration_dir - elif not val: - env['XDG_DATA_DIRS'] = shell_integration_dir - env['KITTY_FISH_XDG_DATA_DIRS'] = '' else: dirs = list(filter(None, val.split(os.pathsep))) dirs.insert(0, shell_integration_dir) - env['KITTY_FISH_XDG_DATA_DIRS'] = val env['XDG_DATA_DIRS'] = os.pathsep.join(dirs) diff --git a/shell-integration/fish/vendor_conf.d/kitty-shell-integration.fish b/shell-integration/fish/vendor_conf.d/kitty-shell-integration.fish index 6a1b4866d..37a2b132d 100644 --- a/shell-integration/fish/vendor_conf.d/kitty-shell-integration.fish +++ b/shell-integration/fish/vendor_conf.d/kitty-shell-integration.fish @@ -2,14 +2,21 @@ function _ksi_main test -z "$KITTY_SHELL_INTEGRATION" && return - if set -q KITTY_FISH_XDG_DATA_DIRS - set --global --export XDG_DATA_DIRS "$KITTY_FISH_XDG_DATA_DIRS" - else - set --erase XDG_DATA_DIRS + if set -q XDG_DATA_DIRS + set --global --export --path XDG_DATA_DIRS "$XDG_DATA_DIRS" + if set -q KITTY_FISH_XDG_DATA_DIR + if set -l index (contains -i "$KITTY_FISH_XDG_DATA_DIR" $XDG_DATA_DIRS) + set --erase --global XDG_DATA_DIRS[$index] + test -z "$XDG_DATA_DIRS" && set --erase --global XDG_DATA_DIRS + end + end + if set -q XDG_DATA_DIRS + set --global --export --unpath XDG_DATA_DIRS "$XDG_DATA_DIRS" + end end set --local _ksi (string split " " -- "$KITTY_SHELL_INTEGRATION") set --erase KITTY_SHELL_INTEGRATION - set --erase KITTY_FISH_XDG_DATA_DIRS + set --erase KITTY_FISH_XDG_DATA_DIR function _ksi_osc printf "\e]%s\a" "$argv[1]"