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

From: Thierry Volpiatto <[email-masked]>
Date: Mon, 18 Aug 2014 18:24:34 +0200

Stefan Monnier <[email-masked]> writes:

> 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?

It occur in the following code at beginning of `inferior-python-mode'

>
>
>> ,----[ 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?

Yes :-) it is not my code but the current code where the change have to
occur.

IMO what you need is:

Remove the let-binding completely and use only:

(set (make-local-variable 'python-shell-interpreter) python-shell-interpreter)
(set (make-local-variable 'python-shell-interpreter-args) python-shell-interpreter-args)

But maybe I am wrong, I am not familiar with python.el.

@@ -2369,9 +2369,7 @@ variable.
-  (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))
+  (set (make-local-variable 'python-shell-interpreter) python-shell-interpreter)
+  (set (make-local-variable '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.

-- 
Thierry
Get my Gnupg key:
gpg --keyserver pgp.mit.edu --recv-keys 59F29997