Subject: bug#18244: 24.3.92; Error with semantic-mode when python buffers are present.

From: Stefan Monnier <[email-masked]>
Date: Mon, 18 Aug 2014 12:20:13 -0400

Glenn said:
>> Yes, seems like an issue with both semantic and python.el
>> (which maybe does not need to call executable-find,

Haven't looked at the Semantic code, but I removed the executable-find
call in python.el since it was redundant anyway and hence ended up just
hiding the name of the program we're looking for.

I also added some FIXME comments in other code using executable-find
where several things look fishy.

Fabián, can you take a look at those FIXMEs?

>> and maybe does not need its own special value for exec-path?).

It does, in order to support Python's virtualenv.

BTW, Fabián, could you also rename python-shell-virtualenv-path to
something else (e.g python-shell-virtualenv-root or
python-shell-virtualenv-directory or python-shell-virtualenv-filename or
just python-shell-virtualenv?) since the GNU convention is to use "path"
only to mean "a list of directories in which we search", as in $PATH,
$MANPATH, load-path, ...

Thierry said:
> Also the (annoying) warning message about setting local vars while
> let-bound can be easily avoided:

I know the kind of message you're talking about, but I don't know when
it occurs.  Do you have a recipe?

> ,----[ python.el, inferior-python-mode ]
> |   (let ((interpreter python-shell-interpreter)
> |         (args python-shell-interpreter-args))
> |     (when python-shell--parent-buffer
> |       (python-util-clone-local-variables python-shell--parent-buffer))
> |     ;; Users can override default values for these vars when calling
> |     ;; `run-python'.  This ensures new values let-bound in
> |     ;; `python-shell-make-comint' are locally set.
> |     (set (make-local-variable 'python-shell-interpreter) interpreter)
> |     (set (make-local-variable 'python-shell-interpreter-args) args))
> |     [...]
> `----

Not sure if someone installed your code already or what, but the above
looks identical to the current code.  Am I missing something?

        Stefan