how to edit .wsgi file extebtions with IDLE on windows

Gabriel Genellina gagsl-py2 at yahoo.com.ar
Sat Aug 29 17:16:02 EDT 2009


En Sat, 29 Aug 2009 17:14:14 -0300, gert <gert.cuykens at gmail.com> escribió:
> On Aug 29, 9:31 pm, Chris Rebert <c... at rebertia.com> wrote:
>> On Sat, Aug 29, 2009 at 5:40 AM, gert<gert.cuyk... at gmail.com> wrote:
>> > On Aug 29, 6:43 am, "Gabriel Genellina" <gagsl-... at yahoo.com.ar>
>> > wrote:
>> >> En Fri, 28 Aug 2009 15:31:31 -0300, gert <gert.cuyk... at gmail.com>  
>> escribió:
>>
>> >> > I can't figure out how to enable the .py shell and syntax  
>> highlighting
>> >> > for .wsgi file extensions using IDLE for windows ?
>>
>> >> That's a Windows question, not a Python one. You have to associate  
>> the
>> >> .wsgi extension with the Python.File file type (the one used for .py
>> >> files):
>>
>> >> D:\USERDATA\Gabriel>assoc .py
>> >> .py=Python.File
>>
>> >> D:\USERDATA\Gabriel>assoc .wsgi=Python.File
>> >> .wsgi=Python.File
>>
>> > Thanks that does make it open exactly like a .py file, expect that
>> > there is no syntax highlighting. Don't know if this is also a windows
>> > issue or a IDLE issue ?
>>
>> That's an IDLE issue; it only highlights files with .py (and possibly
>> .pyw) extensions.
>>
>
> Any chance they would make a highlight option in the menu ?

Two alternatives:

a) Ensure your scripts contain a shebang - no purpose on Windows, but IDLE  
recognizes the file as a Python file. That is, make sure the very first  
line is like this:

#!c:\python26\python.exe

(it must start with #! and contain the word "python" somewhere)

b) Edit IDLE sources:

- Locate the file EditorWindow.py in the idlelib package.

- Add this line near the top:
   import _winreg

- Modify function ispythonsource near line 580 as follows:

     def ispythonsource(self, filename):
         if not filename or os.path.isdir(filename):
             return True
         base, ext = os.path.splitext(os.path.basename(filename))
         if os.path.normcase(ext) in (".py", ".pyw"):
             return True
         ### add these 4 lines ###
         with _winreg.OpenKey(_winreg.HKEY_CLASSES_ROOT, ext) as key:
             ftype = _winreg.QueryValueEx(key, None)[0]
             if ftype.lower() in ("python.file","python.noconfile"):
                 return True
         ### end ###
         try:
             f = open(filename)
             line = f.readline()
             f.close()
         except IOError:
             return False
         return line.startswith('#!') and line.find('python') >= 0



-- 
Gabriel Genellina




More information about the Python-list mailing list