mirror of
https://github.com/kogakure/dotfiles.git
synced 2026-02-03 20:25:30 +00:00
chore(fish): add new fisher plugin
This commit is contained in:
@@ -1,7 +1,7 @@
|
|||||||
for mode in default insert
|
for mode in default insert
|
||||||
bind --mode $mode " " '__abbr_tips_bind_space'
|
bind --mode $mode " " __abbr_tips_bind_space
|
||||||
bind --mode $mode \n '__abbr_tips_bind_newline'
|
bind --mode $mode \n __abbr_tips_bind_newline
|
||||||
bind --mode $mode \r '__abbr_tips_bind_newline'
|
bind --mode $mode \r __abbr_tips_bind_newline
|
||||||
end
|
end
|
||||||
|
|
||||||
set -g __abbr_tips_used 0
|
set -g __abbr_tips_used 0
|
||||||
@@ -21,13 +21,9 @@ function __abbr_tips_install --on-event abbr_tips_install
|
|||||||
set -a ABBR_TIPS_REGEXES '(^(\s?(\w-?)+){1}).*'
|
set -a ABBR_TIPS_REGEXES '(^(\s?(\w-?)+){1}).*'
|
||||||
|
|
||||||
set -Ux ABBR_TIPS_PROMPT "\n💡 \e[1m{{ .abbr }}\e[0m => {{ .cmd }}"
|
set -Ux ABBR_TIPS_PROMPT "\n💡 \e[1m{{ .abbr }}\e[0m => {{ .cmd }}"
|
||||||
set -gx ABBR_TIPS_AUTO_UPDATE 'background'
|
set -gx ABBR_TIPS_AUTO_UPDATE background
|
||||||
|
|
||||||
# Locking mechanism
|
__abbr_tips_init
|
||||||
# Prevent this file to spawn more than one subshell
|
|
||||||
if test "$USER" != 'root'
|
|
||||||
fish -c '__abbr_tips_init' &
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
function __abbr_tips --on-event fish_postexec -d "Abbreviation reminder for the current command"
|
function __abbr_tips --on-event fish_postexec -d "Abbreviation reminder for the current command"
|
||||||
@@ -35,9 +31,9 @@ function __abbr_tips --on-event fish_postexec -d "Abbreviation reminder for the
|
|||||||
set -l cmd (string replace -r -a '\\s+' ' ' -- "$argv" )
|
set -l cmd (string replace -r -a '\\s+' ' ' -- "$argv" )
|
||||||
|
|
||||||
# Update abbreviations lists when adding/removing abbreviations
|
# Update abbreviations lists when adding/removing abbreviations
|
||||||
if test "$command[1]" = "abbr"
|
if test "$command[1]" = abbr
|
||||||
# Parse args as abbr options
|
# Parse args as abbr options
|
||||||
argparse --name 'abbr' --ignore-unknown 'a/add' 'e/erase' 'g/global' 'U/universal' -- $command
|
argparse --name abbr --ignore-unknown a/add e/erase g/global U/universal -- $command
|
||||||
|
|
||||||
if set -q _flag_a
|
if set -q _flag_a
|
||||||
and not contains -- "$argv[2]" $__ABBR_TIPS_KEYS
|
and not contains -- "$argv[2]" $__ABBR_TIPS_KEYS
|
||||||
@@ -48,21 +44,18 @@ function __abbr_tips --on-event fish_postexec -d "Abbreviation reminder for the
|
|||||||
set -e __ABBR_TIPS_KEYS[$abb]
|
set -e __ABBR_TIPS_KEYS[$abb]
|
||||||
set -e __ABBR_TIPS_VALUES[$abb]
|
set -e __ABBR_TIPS_VALUES[$abb]
|
||||||
end
|
end
|
||||||
else if test "$command[1]" = "alias"
|
else if test "$command[1]" = alias
|
||||||
# Update abbreviations list when adding aliases
|
# Update abbreviations list when adding aliases
|
||||||
set -l alias_key
|
set -l alias_key
|
||||||
set -l alias_value
|
set -l alias_value
|
||||||
|
|
||||||
# Parse args as `alias` options
|
# Parse args as `alias` options
|
||||||
argparse --name 'alias' --ignore-unknown 's/save' -- $command
|
argparse --name alias --ignore-unknown s/save -- $command
|
||||||
|
|
||||||
if string match -q '*=*' -- "$argv[2]"
|
if string match -q '*=*' -- "$argv[2]"
|
||||||
if test (count $argv) = 2
|
|
||||||
set command_split (string split '=' -- $argv[2])
|
set command_split (string split '=' -- $argv[2])
|
||||||
set alias_key "a__$command_split[1]"
|
set alias_key "a__$command_split[1]"
|
||||||
set alias_value $command_split[2]
|
set alias_value $command_split[2..-1]
|
||||||
set -a alias_value $command[3..-1]
|
|
||||||
end
|
|
||||||
else
|
else
|
||||||
set alias_key "a__$argv[2]"
|
set alias_key "a__$argv[2]"
|
||||||
set alias_value $argv[3..-1]
|
set alias_value $argv[3..-1]
|
||||||
@@ -77,9 +70,9 @@ function __abbr_tips --on-event fish_postexec -d "Abbreviation reminder for the
|
|||||||
set -a __ABBR_TIPS_KEYS $alias_key
|
set -a __ABBR_TIPS_KEYS $alias_key
|
||||||
set -a __ABBR_TIPS_VALUES $alias_value
|
set -a __ABBR_TIPS_VALUES $alias_value
|
||||||
end
|
end
|
||||||
else if test "$command[1]" = "functions"
|
else if test "$command[1]" = functions
|
||||||
# Parse args as `functions` options
|
# Parse args as `functions` options
|
||||||
argparse --name 'functions' 'e/erase' -- $command
|
argparse --name functions e/erase -- $command
|
||||||
|
|
||||||
# Update abbreviations list when removing aliases
|
# Update abbreviations list when removing aliases
|
||||||
if set -q _flag_e
|
if set -q _flag_e
|
||||||
@@ -102,7 +95,7 @@ function __abbr_tips --on-event fish_postexec -d "Abbreviation reminder for the
|
|||||||
return
|
return
|
||||||
else if string match -q -- "alias $cmd *" (alias)
|
else if string match -q -- "alias $cmd *" (alias)
|
||||||
return
|
return
|
||||||
else if test (type -t "$command[1]") = 'function'
|
else if test (type -t "$command[1]") = function
|
||||||
and count $ABBR_TIPS_ALIAS_WHITELIST >/dev/null
|
and count $ABBR_TIPS_ALIAS_WHITELIST >/dev/null
|
||||||
and not contains "$command[1]" $ABBR_TIPS_ALIAS_WHITELIST
|
and not contains "$command[1]" $ABBR_TIPS_ALIAS_WHITELIST
|
||||||
return
|
return
|
||||||
@@ -136,20 +129,12 @@ function __abbr_tips --on-event fish_postexec -d "Abbreviation reminder for the
|
|||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
function __abbr_tips_uninstall --on-event abbr_tips_uninstall
|
function __abbr_tips_update --on-event abbr_tips_update
|
||||||
bind --erase \n
|
__abbr_tips_clean
|
||||||
bind --erase \r
|
__abbr_tips_install
|
||||||
bind --erase " "
|
end
|
||||||
set --erase __abbr_tips_used
|
|
||||||
set --erase __abbr_tips_run_once
|
function __abbr_tips_uninstall --on-event abbr_tips_uninstall
|
||||||
set --erase __ABBR_TIPS_VALUES
|
__abbr_tips_clean
|
||||||
set --erase __ABBR_TIPS_KEYS
|
functions --erase __abbr_tips_init
|
||||||
set --erase ABBR_TIPS_PROMPT
|
|
||||||
set --erase ABBR_TIPS_AUTO_UPDATE
|
|
||||||
set --erase ABBR_TIPS_ALIAS_WHITELIST
|
|
||||||
set --erase ABBR_TIPS_REGEXES
|
|
||||||
functions --erase __abbr_tips_init
|
|
||||||
functions --erase __abbr_tips_bind_newline
|
|
||||||
functions --erase __abbr_tips_bind_space
|
|
||||||
functions --erase __abbr_tips
|
|
||||||
end
|
end
|
||||||
|
|||||||
52
fish/conf.d/sponge.fish
Normal file
52
fish/conf.d/sponge.fish
Normal file
@@ -0,0 +1,52 @@
|
|||||||
|
# Sponge version
|
||||||
|
set --global sponge_version 1.1.0
|
||||||
|
|
||||||
|
# Allow to repeat previous command by default
|
||||||
|
if not set --query --universal sponge_delay
|
||||||
|
set --universal sponge_delay 2
|
||||||
|
end
|
||||||
|
|
||||||
|
# Purge entries both after `sponge_delay` entries and on exit by default
|
||||||
|
if not set --query --universal sponge_purge_only_on_exit
|
||||||
|
set --universal sponge_purge_only_on_exit false
|
||||||
|
end
|
||||||
|
|
||||||
|
# Add default filters
|
||||||
|
if not set --query --universal sponge_filters
|
||||||
|
set --universal sponge_filters sponge_filter_failed sponge_filter_matched
|
||||||
|
end
|
||||||
|
|
||||||
|
# Don't filter out commands that already have been in the history by default
|
||||||
|
if not set --query --universal sponge_allow_previously_successful
|
||||||
|
set --universal sponge_allow_previously_successful true
|
||||||
|
end
|
||||||
|
|
||||||
|
# Consider `0` the only successful exit code by default
|
||||||
|
if not set --query --universal sponge_successful_exit_codes
|
||||||
|
set --universal sponge_successful_exit_codes 0
|
||||||
|
end
|
||||||
|
|
||||||
|
# No active regex patterns by default
|
||||||
|
if not set --query --universal sponge_regex_patterns
|
||||||
|
set --universal sponge_regex_patterns
|
||||||
|
end
|
||||||
|
|
||||||
|
# Attach event handlers
|
||||||
|
functions --query \
|
||||||
|
_sponge_on_prompt \
|
||||||
|
_sponge_on_preexec \
|
||||||
|
_sponge_on_postexec \
|
||||||
|
_sponge_on_exit
|
||||||
|
|
||||||
|
# Initialize empty state for the first run
|
||||||
|
function _sponge_install --on-event sponge_install
|
||||||
|
set --global _sponge_current_command ''
|
||||||
|
set --global _sponge_current_command_exit_code 0
|
||||||
|
set --global _sponge_current_command_previously_in_history false
|
||||||
|
end
|
||||||
|
|
||||||
|
# Clean up variables
|
||||||
|
function _sponge_uninstall --on-event sponge_uninstall
|
||||||
|
_sponge_clear_state
|
||||||
|
set --erase sponge_version
|
||||||
|
end
|
||||||
@@ -1,6 +1,7 @@
|
|||||||
jorgebucaran/fisher
|
|
||||||
jethrokuan/z
|
|
||||||
jorgebucaran/replay.fish
|
|
||||||
jorgebucaran/autopair.fish
|
|
||||||
gazorby/fish-abbreviation-tips
|
|
||||||
edc/bass
|
edc/bass
|
||||||
|
gazorby/fish-abbreviation-tips
|
||||||
|
jethrokuan/z
|
||||||
|
jorgebucaran/autopair.fish
|
||||||
|
jorgebucaran/fisher
|
||||||
|
jorgebucaran/replay.fish
|
||||||
|
meaningful-ooo/sponge
|
||||||
|
|||||||
@@ -6,5 +6,5 @@ function __abbr_tips_bind_newline
|
|||||||
set -g __abbr_tips_used 0
|
set -g __abbr_tips_used 0
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
commandline -f 'execute'
|
commandline -f execute
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -7,5 +7,5 @@ function __abbr_tips_bind_space
|
|||||||
set -g __abbr_tips_used 0
|
set -g __abbr_tips_used 0
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
commandline -f 'expand-abbr'
|
commandline -f expand-abbr
|
||||||
end
|
end
|
||||||
|
|||||||
16
fish/functions/__abbr_tips_clean.fish
Normal file
16
fish/functions/__abbr_tips_clean.fish
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
function __abbr_tips_clean -d "Clean plugin variables and functions"
|
||||||
|
bind --erase \n
|
||||||
|
bind --erase \r
|
||||||
|
bind --erase " "
|
||||||
|
set --erase __abbr_tips_used
|
||||||
|
set --erase __abbr_tips_run_once
|
||||||
|
set --erase __ABBR_TIPS_VALUES
|
||||||
|
set --erase __ABBR_TIPS_KEYS
|
||||||
|
set --erase ABBR_TIPS_PROMPT
|
||||||
|
set --erase ABBR_TIPS_AUTO_UPDATE
|
||||||
|
set --erase ABBR_TIPS_ALIAS_WHITELIST
|
||||||
|
set --erase ABBR_TIPS_REGEXES
|
||||||
|
functions --erase __abbr_tips_bind_newline
|
||||||
|
functions --erase __abbr_tips_bind_space
|
||||||
|
functions --erase __abbr_tips
|
||||||
|
end
|
||||||
5
fish/functions/_sponge_clear_state.fish
Normal file
5
fish/functions/_sponge_clear_state.fish
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
function _sponge_clear_state
|
||||||
|
set --erase --global _sponge_current_command
|
||||||
|
set --erase --global _sponge_current_command_exit_code
|
||||||
|
set --erase --global _sponge_current_command_previously_in_history
|
||||||
|
end
|
||||||
3
fish/functions/_sponge_on_exit.fish
Normal file
3
fish/functions/_sponge_on_exit.fish
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
function _sponge_on_exit --on-event fish_exit
|
||||||
|
sponge_delay=0 _sponge_remove_from_history
|
||||||
|
end
|
||||||
24
fish/functions/_sponge_on_postexec.fish
Normal file
24
fish/functions/_sponge_on_postexec.fish
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
function _sponge_on_postexec --on-event fish_postexec
|
||||||
|
set --global _sponge_current_command_exit_code $status
|
||||||
|
|
||||||
|
# Remove command from the queue if it's been added previously
|
||||||
|
if set --local index (contains --index -- $_sponge_current_command $_sponge_queue)
|
||||||
|
set --erase _sponge_queue[$index]
|
||||||
|
end
|
||||||
|
|
||||||
|
# Ignore empty commands
|
||||||
|
if test -n $_sponge_current_command
|
||||||
|
set --local command ''
|
||||||
|
# Run filters
|
||||||
|
for filter in $sponge_filters
|
||||||
|
if $filter \
|
||||||
|
$_sponge_current_command \
|
||||||
|
$_sponge_current_command_exit_code \
|
||||||
|
$_sponge_current_command_previously_in_history
|
||||||
|
set command $_sponge_current_command
|
||||||
|
break
|
||||||
|
end
|
||||||
|
end
|
||||||
|
set --prepend --global _sponge_queue $command
|
||||||
|
end
|
||||||
|
end
|
||||||
16
fish/functions/_sponge_on_preexec.fish
Normal file
16
fish/functions/_sponge_on_preexec.fish
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
function _sponge_on_preexec --on-event fish_preexec \
|
||||||
|
--argument-names command
|
||||||
|
_sponge_clear_state
|
||||||
|
|
||||||
|
set --global _sponge_current_command $command
|
||||||
|
|
||||||
|
builtin history search --case-sensitive --exact --max=1 --null $command \
|
||||||
|
| read --local --null found_entries
|
||||||
|
|
||||||
|
# If a command is in the history and in the queue, ignore it, like if it wasn’t in the history
|
||||||
|
if test (count $found_entries) -ne 0; and not contains $command $_sponge_queue
|
||||||
|
set --global _sponge_current_command_previously_in_history true
|
||||||
|
else
|
||||||
|
set --global _sponge_current_command_previously_in_history false
|
||||||
|
end
|
||||||
|
end
|
||||||
5
fish/functions/_sponge_on_prompt.fish
Normal file
5
fish/functions/_sponge_on_prompt.fish
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
function _sponge_on_prompt --on-event fish_prompt
|
||||||
|
if test $sponge_purge_only_on_exit = false
|
||||||
|
_sponge_remove_from_history
|
||||||
|
end
|
||||||
|
end
|
||||||
9
fish/functions/_sponge_remove_from_history.fish
Normal file
9
fish/functions/_sponge_remove_from_history.fish
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
function _sponge_remove_from_history
|
||||||
|
|
||||||
|
while test (count $_sponge_queue) -gt $sponge_delay
|
||||||
|
builtin history delete --case-sensitive --exact -- $_sponge_queue[-1]
|
||||||
|
set --erase _sponge_queue[-1]
|
||||||
|
end
|
||||||
|
|
||||||
|
builtin history save
|
||||||
|
end
|
||||||
11
fish/functions/sponge_filter_failed.fish
Normal file
11
fish/functions/sponge_filter_failed.fish
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
function sponge_filter_failed \
|
||||||
|
--argument-names command exit_code previously_in_history
|
||||||
|
|
||||||
|
if test $previously_in_history = true -a $sponge_allow_previously_successful = true
|
||||||
|
return 1
|
||||||
|
end
|
||||||
|
|
||||||
|
if contains $exit_code $sponge_successful_exit_codes
|
||||||
|
return 1
|
||||||
|
end
|
||||||
|
end
|
||||||
11
fish/functions/sponge_filter_matched.fish
Normal file
11
fish/functions/sponge_filter_matched.fish
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
function sponge_filter_matched \
|
||||||
|
--argument-names command
|
||||||
|
|
||||||
|
for pattern in $sponge_regex_patterns
|
||||||
|
if string match --regex --quiet $pattern -- $command
|
||||||
|
return
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
return 1
|
||||||
|
end
|
||||||
Reference in New Issue
Block a user