__fish_anypython: do not automatically run python3 on macOS

macOS ships with a stub `/usr/bin/python3` which by default opens a
dialog to install the command line tools. As we run `python3` initially
at launch, this causes the dialog to appear on first run of fish, if the
command line tools are not installed.

Fix this by detecting the case of `/usr/bin/python3` on Darwin without
the command line tools installed, and do not offer that as a viable
python.
This commit is contained in:
ridiculousfish 2022-12-26 13:40:13 -08:00 committed by Peter Ammon
parent a77bc70def
commit 6742d11a0e

View File

@ -1,9 +1,18 @@
function __fish_anypython
# Try python3 first, because that's usually faster and generally nicer.
# Do not consider the stub /usr/bin/python3 that comes installed on Darwin to be Python
# unless Xcode reports a real directory path.
for py in python3 python3.{9,8,7,6,5,4,3} python2 python2.7 python
command -sq $py
and echo $py
and return 0
if set -l py_path (command -s $py)
if string match -q /usr/bin/python3 -- $py_path
and string match -q Darwin -- "$(uname)"
and type -q xcode-select
and not xcode-select --print-path &>/dev/null
continue
end
echo $py
return 0
end
end
# We have no python.
return 1