Re: [code] Proposal: Change to Python/Ruby syntax checking commands

From: Mitchell <m.att.foicica.com>
Date: Wed, 16 Sep 2015 18:07:25 -0400 (EDT)

Hi Arnel,

On Wed, 16 Sep 2015, Arnel wrote:

> On 9/15/2015 1:02 AM, Arnel wrote:
>> On 9/14/2015 10:55 AM, Mitchell wrote:
>>> Hi Arnel,
>>>
>>> On Fri, 11 Sep 2015, Arnel wrote:
>>>
>>>> On 9/9/2015 7:30 AM, Mitchell wrote:
>>>>> Hi Arnel,
>>>>>
>>>>> On Tue, 8 Sep 2015, Arnel wrote:
>>>>>
>>>>>> On 9/8/2015 1:43 AM, Mitchell wrote:
>>>>>>> Hi Arnel,
>>>>>>>
>>>>>>> On Mon, 7 Sep 2015, jalespring.att.gmail.com wrote:
>>>>>>>
>>>>>>>> Hi Mitchell,
>>>>>>>>
>>>>>>>> Attached is a change I would like to propose to the Python syntax
>>>>>>>> checking command and the Ruby syntax error pattern. This change is
>>>>>>>> done against revision cd5906e1c812.
>>>>>>>>
>>>>>>>> I noticed the syntax checking process change did not work for some
>>>>>>>> reason with Python and Ruby files in the new TA version (v8.2 and
>>>>>>>> the
>>>>>>>> nightly version).
>>>>>>>>
>>>>>>>> For Python, I initially tried replacing the single quotation marks
>>>>>>>> with doubles, which partly fixed the issue, but was giving me errors
>>>>>>>> with the shebang line. Bringing it back to using the 'py_compile'
>>>>>>>> module worked fine.
>>>>>>>>
>>>>>>>> For Ruby, the new pattern was not taking the source filename into
>>>>>>>> account. So I just added it.
>>>>>>>>
>>>>>>>> My current workaround is to set the following in my init.lua:
>>>>>>>>
>>>>>>>> textadept.run.syntax_commands.python = [[python -m py_compile
>>>>>>>> "%f"]]
>>>>>>>> textadept.run.syntax_error_patterns.ruby = '.+:(%d+):
>>>>>>>> ([^\r\n]+).-[\r\n]+(%s*)'
>>>>>>>>
>>>>>>>> I hope the change will be considered.
>>>>>>>
>>>>>>> Thanks for your report. Which version of Python were you using?
>>>>>>> What was
>>>>>>> the filename? The reason against using py_compile is that Python2 and
>>>>>>> Python3 report different error messages, whereas Textadept's existing
>>>>>>> command outputs the same message regardless of version.
>>>>>>
>>>>>> I was using Python 3 (v3.4.3, to be exact).
>>>>>>
>>>>>> I'm sorry - what "filename" are you referring to? If you meant the one
>>>>>> for Python, on Windows, that would just be "python.exe," same as for
>>>>>> Python 2.x.
>>>>>
>>>>> Sorry for the confusion. The name of the Python source file you were
>>>>> saving, the one being syntax checked. I thought maybe it had some odd
>>>>> character in it that was interfering with the quotes in the syntax
>>>>> checking command.
>>>>
>>>> Sorry for the trouble. No, the filenames I use consist of vanilla
>>>> ASCII characters (/a-zA-Z0-9/ plus the odd hyphen or underscore).
>>>
>>> It is quite odd that you would have a problem with such standard
>>> filenames. If you can still reproduce this with the latest nightly, some
>>> more details would be quite helpful in tracking this down.
>>
>> Hi Mitchell,
>>
>> The Ruby issue appears fixed with the new nightly build (2015-09-13).
>> The Python one still recurs with this minimal script:
>>
>> #!/usr/bin/env python
>>
>> def f(x):
>> if x ~= 5:
>> print('not equal to 5')
>>
>> I deliberately entered the tilde character beside the equals sign there
>> to induce the error, but no "syntax error" message still appears with
>> the new nightly. I tested this already with a blank 'init.lua' in my
>> ~/.textadept directory in Windows 8.1. The filename I used is simply
>> 'ex.py.'
>>
>> I currently have Python 3.5 installed, no Python 2.7.x.
>>
>> If I put in the following line in the otherwise empty 'init.lua':
>>
>> textadept.run.syntax_commands.python = [[python -m py_compile "%f"]]
>>
>> The syntax-checking works fine.
>>
>> Is there any other information you need me to get to you? I'm not
>> familiar with debugging Lua code (other than the usual "print" statements).
>>
>> Thanks for looking further into this.
>>
>> --Arnel
>
> Hi Mitchell,
>
> It looks like I may have found the culprit.
>
> On Windows, the filename that's getting passed to the compile() command for
> Python was lacking an extra backslash after the drive letter (it was
> expecting "C:\\dirname\\subdirname\\filename.py" but was getting
> "C:\dirname\\subdirname\\filename.py" instead).
>
> If I replace the command passed to io.popen() from
>
> local p = io.popen(command:gsub('%%f', filename)..' 2>&1')
>
> to
>
> local p = io.popen(command:gsub('%%f', filename:gsub('\\', '\\\\'))..'
> 2>&1')
>
> then the syntax checking works as it should.
>
> However, the syntax_command for Python still needs to be changed to
>
> [[python -c "compile(open('%f').read(),'%f','exec',0,1)"]]
>
> I transposed the single- and double-quotation marks to where it's acceptable
> on Windows. Hopefully it will be acceptable in bash and other non-Windows
> shells as well.

Thanks for looking into this! I will fix this.

Cheers,
Mitchell

-- 
You are subscribed to code.att.foicica.com.
To change subscription settings, send an e-mail to code+help.att.foicica.com.
To unsubscribe, send an e-mail to code+unsubscribe.att.foicica.com.
Received on Wed 16 Sep 2015 - 18:07:25 EDT

This archive was generated by hypermail 2.2.0 : Thu 17 Sep 2015 - 06:54:58 EDT