✨ feat(fish): auto activate python env
This commit is contained in:
parent
a80dbb44e2
commit
0f9543225e
1 changed files with 30 additions and 0 deletions
30
.config/fish/conf.d/venv.fish
Normal file
30
.config/fish/conf.d/venv.fish
Normal file
|
@ -0,0 +1,30 @@
|
||||||
|
# Based on https://gist.github.com/bastibe/c0950e463ffdfdfada7adf149ae77c6f
|
||||||
|
# Changes:
|
||||||
|
# * Instead of overriding cd, we detect directory change. This allows the script to work
|
||||||
|
# for other means of cd, such as z.
|
||||||
|
# * Update syntax to work with new versions of fish.
|
||||||
|
# * Handle virtualenvs that are not located in the root of a git directory.
|
||||||
|
|
||||||
|
function __auto_source_venv --on-variable PWD --description "Activate/Deactivate virtualenv on directory change"
|
||||||
|
status --is-command-substitution; and return
|
||||||
|
|
||||||
|
# Check if we are inside a git directory
|
||||||
|
if git rev-parse --show-toplevel &>/dev/null
|
||||||
|
set gitdir (realpath (git rev-parse --show-toplevel))
|
||||||
|
set cwd (pwd -P)
|
||||||
|
# While we are still inside the git directory, find the closest
|
||||||
|
# virtualenv starting from the current directory.
|
||||||
|
while string match "$gitdir*" "$cwd" &>/dev/null
|
||||||
|
if test -e "$cwd/.venv/bin/activate.fish"
|
||||||
|
source "$cwd/.venv/bin/activate.fish" &>/dev/null
|
||||||
|
return
|
||||||
|
else
|
||||||
|
set cwd (path dirname "$cwd")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
# If virtualenv activated but we are not in a git directory, deactivate.
|
||||||
|
if test -n "$VIRTUAL_ENV"
|
||||||
|
deactivate
|
||||||
|
end
|
||||||
|
end
|
Loading…
Add table
Reference in a new issue