mirror of
https://github.com/fish-shell/fish-shell
synced 2025-01-13 05:28:49 +00:00
a step to remove __fish_sgrep per issue #2450
This commit is contained in:
parent
0be8d0d385
commit
cc3efcc3ab
2 changed files with 22 additions and 9 deletions
|
@ -3,6 +3,25 @@
|
|||
#
|
||||
__fish_complete_ssh scp
|
||||
|
||||
# Helper functions to simplify the completions.
|
||||
function __scp2ssh_port_number
|
||||
# There is a silly inconsistency between the ssh and scp commands regarding the short flag name
|
||||
# for specifying the TCP port number. This function deals with that by extracting the port
|
||||
# number if present and emitting it as a flag appropriate for ssh.
|
||||
set -l port (commandline -c | string match -r -- ' -P ?(\d+)\b')
|
||||
and echo -p\n$port[2]
|
||||
end
|
||||
|
||||
function __scp_remote_target
|
||||
set -l target (commandline -ct | string match -r -- '(.*):')
|
||||
and echo $target[2]
|
||||
end
|
||||
|
||||
function __scp_remote_path_prefix
|
||||
set -l path_prefix (commandline -ct | string match -r -- ':(.*)')
|
||||
and echo $path_prefix[2]
|
||||
end
|
||||
|
||||
#
|
||||
# scp specific completions
|
||||
#
|
||||
|
@ -11,7 +30,6 @@ __fish_complete_ssh scp
|
|||
# Hostname
|
||||
#
|
||||
complete -c scp -d Hostname -n "commandline --cut-at-cursor --current-token | string match -v '*:*'" -a "
|
||||
|
||||
(__fish_print_hostnames):
|
||||
|
||||
(
|
||||
|
@ -29,15 +47,10 @@ complete -c scp -d "Local Path" -n "commandline -ct | string match ':'"
|
|||
# Remote path
|
||||
#
|
||||
complete -c scp -d "Remote Path" -f -n "commandline --cut-at-cursor --current-token | string match -r '.+:'" -a "
|
||||
|
||||
(
|
||||
#Prepend any user@host information supplied before the remote completion
|
||||
commandline -ct| __fish_sgrep -o '.*:'
|
||||
)(
|
||||
#Get the list of remote files from the specified ssh server
|
||||
ssh (commandline -c| __fish_sgrep -o '\-P [0-9]*'|tr P p) -o \"BatchMode yes\" (commandline -ct|sed -ne 's/\(.*\):.*/\1/p') ls\ -dp\ (commandline -ct|sed -ne 's/.*://p')\* 2> /dev/null
|
||||
(__scp_remote_target):(
|
||||
# Get the list of remote files from the scp target.
|
||||
ssh (__scp2ssh_port_number) -o 'BatchMode yes' (__scp_remote_target) ls\ -dp\ (__scp_remote_path_prefix)\* 2>/dev/null
|
||||
)
|
||||
|
||||
"
|
||||
complete -c scp -s B -d "Batch mode"
|
||||
complete -c scp -s l -x -d "Bandwidth limit"
|
||||
|
|
Loading…
Reference in a new issue