Skip to content

Commit

Permalink
Patch __fasd_run.fish to use fish built-in functions
Browse files Browse the repository at this point in the history
This is based from this PR: fishgretel/fasd#23
  • Loading branch information
remigourdon committed Apr 11, 2022
1 parent e212114 commit 63cf942
Showing 1 changed file with 5 additions and 5 deletions.
10 changes: 5 additions & 5 deletions private_dot_config/fish/conf.d/__fasd_run.fish
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

0 comments on commit 63cf942

Please sign in to comment.