Added "daisy arg", a hooking tool that allows you to re-use arguments from previous commands.
This commit is contained in:
parent
0859ba819b
commit
60cc207011
3 changed files with 70 additions and 24 deletions
13
README.md
13
README.md
|
|
@ -235,6 +235,19 @@ Edits ld.source and re-sources it, similarly to shrc. Append "-e" to edit
|
||||||
Append "-d" to edit "daisy.command.source".
|
Append "-d" to edit "daisy.command.source".
|
||||||
················································································
|
················································································
|
||||||
|
|
||||||
|
< daisy arg >
|
||||||
|
················································································
|
||||||
|
This tool intercepts the arguments of the last command executed in your shell.
|
||||||
|
You can retrieve specific arguments by index (starting at 1) or all arguments
|
||||||
|
at once using "@". The command itself (index 0) is excluded from "@".
|
||||||
|
Arguments containing spaces are correctly preserved.
|
||||||
|
|
||||||
|
Usage: $(daisy arg <index>)
|
||||||
|
$(daisy arg @)
|
||||||
|
Example: ls -l "My Folder"
|
||||||
|
cd "$(daisy arg 2)" # Changes directory to "My Folder"
|
||||||
|
················································································
|
||||||
|
|
||||||
< daisy reload >
|
< daisy reload >
|
||||||
················································································
|
················································································
|
||||||
Re-sources ld.source. Essentially `ldrc` without editing.
|
Re-sources ld.source. Essentially `ldrc` without editing.
|
||||||
|
|
|
||||||
|
|
@ -419,6 +419,18 @@ daisy ()
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
|
arg)
|
||||||
|
local index=$2
|
||||||
|
if [[ "$index" == "@" ]]; then
|
||||||
|
echo "${DAISY_LAST_ARGS[@]:1}"
|
||||||
|
elif [[ "$index" =~ ^[0-9]+$ ]]; then
|
||||||
|
if [[ -n "$ZSH_VERSION" ]]; then echo "${DAISY_LAST_ARGS[$((index+1))]}"; else echo "${DAISY_LAST_ARGS[$index]}"; fi
|
||||||
|
else
|
||||||
|
echo "Usage: daisy arg <index|@>"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
|
||||||
reload)
|
reload)
|
||||||
LD_INTERNAL=0 source "$LD_SOURCE_FILE"
|
LD_INTERNAL=0 source "$LD_SOURCE_FILE"
|
||||||
;;
|
;;
|
||||||
|
|
|
||||||
69
ld.source
69
ld.source
|
|
@ -91,30 +91,6 @@ ld_dbg cat $LD_ESOURCEFILE
|
||||||
ld_dbg cat $LD_SHORTFILE
|
ld_dbg cat $LD_SHORTFILE
|
||||||
|
|
||||||
# Source everything in the config folder
|
# Source everything in the config folder
|
||||||
function _ld.source_configs
|
|
||||||
{
|
|
||||||
while IFS= read -r -d '' f; do
|
|
||||||
source "$f"
|
|
||||||
done < <(find "$LD_CONFIG_FOLDER" -name "*.src" -type f -print0)
|
|
||||||
}
|
|
||||||
|
|
||||||
# Installation into PATH
|
|
||||||
if [[ ! $PATH == *"$LD_FOLDER"* ]];
|
|
||||||
then
|
|
||||||
export PATH="$PATH:$LD_FOLDER"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Set up the basic alias for `shrc`
|
|
||||||
# Do not set these up if LD_INTERNAL=1 is set, or infinite recursion could
|
|
||||||
# occur!
|
|
||||||
if [[ ! -v LD_INTERNAL ]];
|
|
||||||
then
|
|
||||||
alias shrc=". shrc"
|
|
||||||
fi
|
|
||||||
|
|
||||||
###############################################################################
|
|
||||||
# FUNCTIONS and ALIASES #######################################################
|
|
||||||
###############################################################################
|
|
||||||
|
|
||||||
function multicd
|
function multicd
|
||||||
{
|
{
|
||||||
|
|
@ -350,6 +326,51 @@ _daisy_def_alias combine
|
||||||
_daisy_def_alias help
|
_daisy_def_alias help
|
||||||
_daisy_def_alias list
|
_daisy_def_alias list
|
||||||
_daisy_def_alias check
|
_daisy_def_alias check
|
||||||
|
_daisy_def_alias arg
|
||||||
|
|
||||||
|
|
||||||
|
# --- Argument Interception Hook ---
|
||||||
|
_daisy_intercept_args() {
|
||||||
|
local last_cmd
|
||||||
|
if [[ -n "$ZSH_VERSION" ]]; then
|
||||||
|
last_cmd=$(fc -ln -1 | sed "s/^[[:space:]]*//")
|
||||||
|
else
|
||||||
|
last_cmd=$(fc -ln -1 2>/dev/null | sed "s/^[[:space:]]*//")
|
||||||
|
fi
|
||||||
|
[[ -z "$last_cmd" ]] && return
|
||||||
|
[[ "$last_cmd" == daisy* ]] && return
|
||||||
|
[[ "$last_cmd" == ld_* ]] && return
|
||||||
|
[[ "$last_cmd" == daisy_* ]] && return
|
||||||
|
local -a tmp_args
|
||||||
|
if [[ -n "$ZSH_VERSION" ]]; then
|
||||||
|
tmp_args=(${(z)last_cmd})
|
||||||
|
else
|
||||||
|
eval "tmp_args=($last_cmd)" 2>/dev/null
|
||||||
|
fi
|
||||||
|
if [[ ${#tmp_args[@]} -gt 0 ]]; then
|
||||||
|
export DAISY_LAST_ARGS=("${tmp_args[@]}")
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
if [[ -n "$ZSH_VERSION" ]]; then
|
||||||
|
if [[ ! "$precmd_functions" == *_daisy_intercept_args* ]]; then
|
||||||
|
precmd_functions+=(_daisy_intercept_args)
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
if [[ "$PROMPT_COMMAND" != *_daisy_intercept_args* ]]; then
|
||||||
|
if [[ -z "$PROMPT_COMMAND" ]]; then
|
||||||
|
PROMPT_COMMAND="_daisy_intercept_args"
|
||||||
|
else
|
||||||
|
PROMPT_COMMAND="_daisy_intercept_args; $PROMPT_COMMAND"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
function _ld.source_configs
|
||||||
|
{
|
||||||
|
while IFS= read -r -d "" f; do
|
||||||
|
source "$f"
|
||||||
|
done < <(find "$LD_CONFIG_FOLDER" -name "*.src" -type f -print0)
|
||||||
|
}
|
||||||
|
|
||||||
_ld.source_configs
|
_ld.source_configs
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue