-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Patch __fasd_run.fish to use fish built-in functions
This is based from this PR: fishgretel/fasd#23
- Loading branch information
1 parent
e212114
commit 63cf942
Showing
1 changed file
with
5 additions
and
5 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,19 +1,19 @@ | ||
function __fasd_expand_vars -d "Expands only the first occurance of a variable in the passed string without evaluating the string" | ||
set -lx vars (echo -n $argv | grep -oP '(?!\\\\)\$\K([A-z_][A-z0-9_]*?)([^A-z0-9_]|\b|\n)' | perl -pe 's/(.+?)(?:[^A-z0-9_]|\b)$/\1\n/' | sort -u) | ||
set -lx vars (string match -a -r '(?!\\\\)\$\K([A-z_][A-z0-9_]*?)(?:[^A-z0-9_]|\b|\n)' "$argv" | string replace -r '(.+?)(?:[^A-z0-9_]|\b)$' '$1' | sort -u) | ||
for var in $vars | ||
# Only replace if the variable is defined | ||
if set -q $var | ||
# Replacing the variable once is enough | ||
set argv (string replace -r '([^\\\\]|\b)\$'"$var" '$1'"$$var" "$argv") | ||
set argv (string replace -r '([^\\\\]|\b)\$'"$var" '${1}'"$$var" "$argv") | ||
end | ||
end | ||
# The following pipe does the same thing as fasd --sanitize | ||
printf '%s\\n' "$argv" | sed -e 's/\([^\]\)$( *[^ ]* *\([^)]*\)))*/\1\2/g' -e 's/\([^\]\)[|&;<>$`{}]\{1,\}/\1 /g' | tr -s " " \n | ||
printf %s\n $argv | sed -e 's/\([^\]\)$( *[^ ]* *\([^)]*\)))*/\1\2/g' -e 's/\([^\]\)[|&;<>$`{}]\{1,\}/\1 /g' | tr -s " " \n | ||
end | ||
|
||
function __fasd_run -e fish_postexec -d "fasd records the directories changed into" | ||
set -lx RETVAL $status | ||
if test $RETVAL -eq 0 # if there was no error | ||
if test $status -eq 0 # if there was no error | ||
command fasd --proc (__fasd_expand_vars $argv) > "/dev/null" 2>&1 & | ||
disown | ||
end | ||
end |