Subject: Re: bug#25025: python-shell-calculate-command is wrong

From: Clément Pit--Claudel <[email-masked]>
Date: Fri, 25 Nov 2016 09:44:17 -0500

On 2016-11-25 03:32, Eli Zaretskii wrote:
>> From: Clément Pit--Claudel <[email-masked]>
>> Date: Fri, 25 Nov 2016 02:03:38 -0500
>>
>> On 2016-11-25 01:24, Fabrice Popineau wrote:
>>> The python shell name is not passed to any underlying shell.
>>> It is used to create a process, so it must not be quoted in anyway.
>>
>> Are you sure? Looking at the code, I see this:
>>
>>   (python-shell-make-comint
>>       (or cmd (python-shell-calculate-command)) …)
>>
>> And python-shell-make-comint does this:
>>
>>   (split-string-and-unquote cmd)
>>
>> (ok, this is weird).  But still, if the command is "C:\Program Files\Python\python.exe", then we *do* need the shell quoting, right?
> 
> The quoting needs to be done only where a shell command is created
> that is about to be passed to a shell.  I believe in this case the
> quoting is done too early.

Certainly; but it seems like we'll need to modify more than just python-shell-calculate-command; in fact, we probably could remove it entirely: there's no need to glue together the command name and its arguments before passing them to comint, is there?

I was just pointing out that Fabrice's solution of writing

  (format "%s %s"
          python-shell-interpreter
          python-shell-interpreter-args))

would probably break things.  Won't it?