diff options
Diffstat (limited to '.config/fish/functions')
| -rw-r--r-- | .config/fish/functions/fish_commandline_toggle.fish | 26 | ||||
| -rw-r--r-- | .config/fish/functions/fish_ssh_agent.fish | 32 |
2 files changed, 58 insertions, 0 deletions
diff --git a/.config/fish/functions/fish_commandline_toggle.fish b/.config/fish/functions/fish_commandline_toggle.fish new file mode 100644 index 0000000..688c97e --- /dev/null +++ b/.config/fish/functions/fish_commandline_toggle.fish @@ -0,0 +1,26 @@ +function __commandline_stash -d 'Stash current command line' + set -g __stash_command_position (commandline -C) + set -g __stash_command (commandline -b) + commandline -r "" +end + +function __commandline_pop -d 'Pop last stashed command line' + if not set -q __stash_command + return + end + commandline -r $__stash_command + if set -q __stash_command_position + commandline -C $__stash_command_position + end + set -e __stash_command + set -e __stash_command_position +end + +function fish_commandline_toggle -d 'Stash current commandline if not empty, otherwise pop last stashed commandline' + set -l cmd (commandline -b) + if test "$cmd" + __commandline_stash + else + __commandline_pop + end +end diff --git a/.config/fish/functions/fish_ssh_agent.fish b/.config/fish/functions/fish_ssh_agent.fish new file mode 100644 index 0000000..5960b75 --- /dev/null +++ b/.config/fish/functions/fish_ssh_agent.fish @@ -0,0 +1,32 @@ +function __ssh_agent_is_started -d "check if ssh agent is already started" + if begin; test -f $SSH_ENV; and test -z "$SSH_AGENT_PID"; end + source $SSH_ENV > /dev/null + end + + if test -z "$SSH_AGENT_PID" + return 1 + end + + ps -ef | grep $SSH_AGENT_PID | grep -v grep | grep -q ssh-agent + #pgrep ssh-agent + return $status +end + + +function __ssh_agent_start -d "start a new ssh agent" + ssh-agent -c | sed 's/^echo/#echo/' > $SSH_ENV + chmod 600 $SSH_ENV + source $SSH_ENV > /dev/null + true # suppress errors from setenv, i.e. set -gx +end + + +function fish_ssh_agent --description "Start ssh-agent if not started yet, or uses already started ssh-agent." + if test -z "$SSH_ENV" + set -xg SSH_ENV $HOME/.ssh/environment + end + + if not __ssh_agent_is_started + __ssh_agent_start + end +end |
