You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
64 lines
1.9 KiB
Fish
64 lines
1.9 KiB
Fish
6 years ago
|
function __fzf_open -d "Open files and directories."
|
||
|
function __fzf_open_get_open_cmd -d "Find appropriate open command."
|
||
|
if type -q xdg-open
|
||
|
echo "xdg-open"
|
||
|
else if type -q open
|
||
|
echo "open"
|
||
|
end
|
||
|
end
|
||
|
|
||
|
set -l commandline (__fzf_parse_commandline)
|
||
|
set -l dir $commandline[1]
|
||
|
set -l fzf_query $commandline[2]
|
||
|
|
||
|
if not type -q argparse
|
||
|
set created_argparse
|
||
|
function argparse
|
||
|
functions -e argparse # deletes itself
|
||
|
end
|
||
|
if contains -- --editor $argv; or contains -- -e $argv
|
||
|
set _flag_editor "yes"
|
||
|
end
|
||
|
if contains -- --preview $argv; or contains -- -p $argv
|
||
|
set _flag_preview "yes"
|
||
|
end
|
||
|
end
|
||
|
|
||
|
set -l options "e/editor" "p/preview=?"
|
||
|
argparse $options -- $argv
|
||
|
|
||
|
set -l preview_cmd
|
||
|
if set -q FZF_ENABLE_OPEN_PREVIEW
|
||
|
set preview_cmd "--preview-window=right:wrap --preview='fish -c \"__fzf_complete_preview {}\"'"
|
||
|
end
|
||
|
|
||
|
set -q FZF_OPEN_COMMAND
|
||
|
or set -l FZF_OPEN_COMMAND "
|
||
|
command find -L \$dir -mindepth 1 \\( -path \$dir'*/\\.*' -o -fstype 'sysfs' -o -fstype 'devfs' -o -fstype 'devtmpfs' \\) -prune \
|
||
|
-o -type f -print \
|
||
|
-o -type d -print \
|
||
|
-o -type l -print 2> /dev/null | sed 's@^\./@@'"
|
||
|
|
||
|
eval "$FZF_OPEN_COMMAND | "(__fzfcmd) $preview_cmd "-m $FZF_DEFAULT_OPTS $FZF_OPEN_OPTS --query \"$fzf_query\"" | read -l select
|
||
|
|
||
|
# set how to open
|
||
|
set -l open_cmd
|
||
|
if set -q _flag_editor
|
||
|
set open_cmd "$EDITOR"
|
||
|
else
|
||
|
set open_cmd (__fzf_open_get_open_cmd)
|
||
|
if test -z "$open_cmd"
|
||
|
echo "Couldn't find appropriate open command to use. Do you have 'xdg-open' or 'open' installed?"; and return 1
|
||
|
end
|
||
|
end
|
||
|
|
||
|
set -l open_status 0
|
||
|
if not test -z "$select"
|
||
|
commandline "$open_cmd \"$select\"" ;and commandline -f execute
|
||
|
set open_status $status
|
||
|
end
|
||
|
|
||
|
commandline -f repaint
|
||
|
return $open_status
|
||
|
end
|