Manpage completions: store in $XDG_DATA_HOME

Closes #1343, works towards #1257.
This commit is contained in:
David Adam 2014-09-29 19:39:36 +08:00
parent 15ca3b426f
commit a186f04f15
4 changed files with 17 additions and 4 deletions

View file

@ -36,6 +36,12 @@ if set -q XDG_CONFIG_HOME
set configdir $XDG_CONFIG_HOME set configdir $XDG_CONFIG_HOME
end end
set -l userdatadir ~/.local/share
if set -q XDG_DATA_HOME
set userdatadir $XDG_DATA_HOME
end
# __fish_datadir, __fish_sysconfdir, __fish_help_dir, __fish_bin_dir # __fish_datadir, __fish_sysconfdir, __fish_help_dir, __fish_bin_dir
# are expected to have been set up by read_init from fish.cpp # are expected to have been set up by read_init from fish.cpp
@ -51,7 +57,7 @@ if not contains $__fish_datadir/functions $fish_function_path
end end
if not set -q fish_complete_path if not set -q fish_complete_path
set fish_complete_path $configdir/fish/completions $__fish_sysconfdir/completions $__fish_datadir/completions $configdir/fish/generated_completions set fish_complete_path $configdir/fish/completions $__fish_sysconfdir/completions $__fish_datadir/completions $userdatadir/fish/generated_completions
end end
if not contains $__fish_datadir/completions $fish_complete_path if not contains $__fish_datadir/completions $fish_complete_path

View file

@ -19,6 +19,11 @@ function __fish_config_interactive -d "Initializations that should be performed
if set -q XDG_CONFIG_HOME if set -q XDG_CONFIG_HOME
set configdir $XDG_CONFIG_HOME set configdir $XDG_CONFIG_HOME
end end
# Set the correct user data directory
set -l userdatadir ~/.local/share
if set -q XDG_DATA_HOME
set userdatadir $XDG_DATA_HOME
end
# Migrate old (pre 1.22.0) init scripts if they exist # Migrate old (pre 1.22.0) init scripts if they exist
if not set -q __fish_init_1_22_0 if not set -q __fish_init_1_22_0
@ -144,7 +149,7 @@ function __fish_config_interactive -d "Initializations that should be performed
# Generate man page completions if not present # Generate man page completions if not present
# #
if not test -d $configdir/fish/generated_completions if not test -d $userdatadir/fish/generated_completions
#fish_update_completions is a function, so it can not be directly run in background. #fish_update_completions is a function, so it can not be directly run in background.
eval "$__fish_bin_dir/fish -c 'fish_update_completions > /dev/null ^/dev/null' &" eval "$__fish_bin_dir/fish -c 'fish_update_completions > /dev/null ^/dev/null' &"
end end

View file

@ -1,3 +1,4 @@
function fish_update_completions --description "Update man-page based completions" function fish_update_completions --description "Update man-page based completions"
eval \"$__fish_datadir/tools/create_manpage_completions.py\" --manpath --progress --cleanup-in '~/.config/fish/completions' # Clean up old paths
eval \"$__fish_datadir/tools/create_manpage_completions.py\" --manpath --progress --cleanup-in '~/.config/fish/completions' --cleanup-in '~/.config/fish/generated_completions'
end end

View file

@ -973,7 +973,8 @@ if __name__ == "__main__":
if not WRITE_TO_STDOUT and not output_directory: if not WRITE_TO_STDOUT and not output_directory:
# Default to ~/.config/fish/generated_completions/ # Default to ~/.config/fish/generated_completions/
# Create it if it doesn't exist # Create it if it doesn't exist
output_directory = os.path.expanduser('~/.config/fish/generated_completions/') xdg_data_home = os.getenv('XDG_DATA_HOME', '~/.local/share')
output_directory = os.path.expanduser(xdg_data_home + '/fish/generated_completions/')
try: try:
os.makedirs(output_directory) os.makedirs(output_directory)
except OSError as e: except OSError as e: