classification
Title: IDLE: allow syntax highlighting of files without .py extension
Type: enhancement Stage: patch review
Components: IDLE Versions: Python 3.7, Python 3.6
process
Status: open Resolution:
Dependencies: Superseder:
Assigned To: terry.reedy Nosy List: cvrebert, gert, ggenellina, rhettinger, roger.serwy, terry.reedy, zach.ware
Priority: normal Keywords: patch

Created on 2009-09-07 23:07 by gert, last changed 2017-09-28 06:58 by taleinat.

Files
File name Uploaded Description Edit
issue6858.patch roger.serwy, 2012-07-12 18:54 review
Messages (13)
msg92395 - (view) Author: gert cuykens (gert) Date: 2009-09-07 23:07
http://groups.google.be/group/comp.lang.python/browse_thread/thread/252fa1ccd0251977#

Menu option please, so I can highlight .wsgi .txt .xml files with python
code in it, does not matter if non python code gets wrongly highlighted too.
msg112325 - (view) Author: Terry J. Reedy (terry.reedy) * (Python committer) Date: 2010-08-01 13:45
Interesting idea.
msg112338 - (view) Author: Tal Einat (taleinat) * (Python committer) Date: 2010-08-01 14:55
I'm +1 on adding such an option to the menu, if only to be able to highlight files including only Python code which don't happen to have the .py extension.

If support for files including not only Python code is important to anyone, some examples of such files would be very helpful. I've never seen such files and I don't know how common such uses are.

Supporting files with some Python code in between other stuff is a different matter. Non-Python code being wrongly highlighted may be fine, but we'll need to make sure that the syntax highlighting is robust enough to be able to withstand going through a lot of invalid syntax, and still correctly highlight most of the Python code found in between. If IDLE fails to highlight a file it could of course fail gracefully, give an error message and not highlight, so I don't foresee this causing any stability issues.
msg112339 - (view) Author: Tal Einat (taleinat) * (Python committer) Date: 2010-08-01 14:56
In the last paragraph of my previous post, instead of "is a different matter" read "may be problematic".
msg112377 - (view) Author: gert cuykens (gert) Date: 2010-08-01 20:05
On Sun, Aug 1, 2010 at 4:55 PM, Tal Einat <report@bugs.python.org> wrote:
>
> Tal Einat <taleinat@gmail.com> added the comment:
>
> I'm +1 on adding such an option to the menu, if only to be able to highlight files including only Python code which don't happen to have the .py extension.
>
> If support for files including not only Python code is important to anyone, some examples of such files would be very helpful. I've never seen such files and I don't know how common such uses are.

Really, docs.python.org is full of examples with python code in it :)

Try to parse this html file
(http://docs.python.org/tutorial/controlflow.html)  for testing.

> Supporting files with some Python code in between other stuff is a different matter. Non-Python code being wrongly highlighted may be fine, but we'll need to make sure that the syntax highlighting is robust enough to be able to withstand going through a lot of invalid syntax, and still correctly highlight most of the Python code found in between. If IDLE fails to highlight a file it could of course fail gracefully, give an error message and not highlight, so I don't foresee this causing any stability issues.
>
msg112389 - (view) Author: Terry J. Reedy (terry.reedy) * (Python committer) Date: 2010-08-01 22:06
There are, perhaps 3 main issues with new features;

1. What is the specific proposal?

In particular, where should the new menu entry go and what should it say.

2. Will it hurt anything?
3. Will it be useful.

As to these, I suggest you try your own experiment. Rename x.html to x.py and pull into the editor.

Doing that with controlflow.html shows that this appears to be harmless. For this file, it is also useless:

a. My WinXP32 3.1.2 IDLE edit window does not have a horizontal scroll bar. It does not need one for <80 char lines. It also does not do autowrap, as that would be fatal for code. However, this file has some lines with a few hundred chars and there is no easy way to read them.

b. The html for Python code is not always what you see in a browser. Here is one line from your example: "<span class="k">print</span> <span class="n">x</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">x</span><span class="p">)</span>" (no wrapping in the original).

I think Tal's case of .py-less Python files is a reason to add a menu entry, and let the user beware with anything else.
msg112401 - (view) Author: gert cuykens (gert) Date: 2010-08-01 23:11
On Mon, Aug 2, 2010 at 12:06 AM, Terry J. Reedy <report@bugs.python.org> wrote:
>
> Terry J. Reedy <tjreedy@udel.edu> added the comment:
>
> There are, perhaps 3 main issues with new features;
>
> 1. What is the specific proposal?
>
> In particular, where should the new menu entry go and what should it say.

edit -> syntax highlight

> 2. Will it hurt anything?

no

> 3. Will it be useful.

yes

> As to these, I suggest you try your own experiment. Rename x.html to x.py and pull into the editor.
>
> Doing that with controlflow.html shows that this appears to be harmless. For this file, it is also useless:

In this case useless it is. But try imagining some more <pre></pre>
friendly html. Would it not be asome if you could craft a file that
opens with your browser to see what it does before you run it with
python?

> a. My WinXP32 3.1.2 IDLE edit window does not have a horizontal scroll bar. It does not need one for <80 char lines. It also does not do autowrap, as that would be fatal for code. However, this file has some lines with a few hundred chars and there is no easy way to read them.

I can live with arrow keys

>
> b. The html for Python code is not always what you see in a browser. Here is one line from your example: "<span class="k">print</span> <span class="n">x</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">x</span><span class="p">)</span>" (no wrapping in the original).
>
> I think Tal's case of .py-less Python files is a reason to add a menu entry, and let the user beware with anything else.
>

Not a warning message please. Just put it off by default on non py
files, like it currently does. Hilighting is harmless and does not
change the contents of the file.
msg112426 - (view) Author: Tal Einat (taleinat) * (Python committer) Date: 2010-08-02 07:20
I think we are in agreement :)

Regarding the warning message, I was referring only to the case that the syntax highlighter fails completely and raises an exception. I'm not even sure if that can happen, but in case it does an informative message would be better than just not highlighting, and much better than IDLE dying. I'm bringing this up in this context because IMO if we allow highlighting of arbitrary files, we should at least ensure that this doesn't crash IDLE if the highlighting does fail.
msg165328 - (view) Author: Roger Serwy (roger.serwy) * (Python committer) Date: 2012-07-12 18:54
Attached is a patch to allow toggling of the ColorDelegator. It can be toggled using the existing, but undocumented, Control-/ binding. 

The patch modifies the "toggle_colorize_event" to fully remove coloring or fully recolorize the text rather than its existing behavior of disabling/enabling the coloring "thread." It also ensures that a ColorDelegator instance exists in every editor window instead of only those where ispythonsource returns True.

Toggling also works in the shell, but turning highlighting off fails if you start typing again. This is due to issue13495.

The crashing of IDLE described by Tal is likely due to pythonw.exe and is addressed in issue13582.
msg210219 - (view) Author: Tal Einat (taleinat) * (Python committer) Date: 2014-02-04 12:27
Roger's patch LGTM, and should be considered a bug-fix.

I will note, however, that this doesn't address the original issue: It still does not supply an easily discoverable method of toggling highlighting. Having a keyboard shortcut documented in the help file is necessary, but few novice users will ever notice it.
msg225157 - (view) Author: Raymond Hettinger (rhettinger) * (Python committer) Date: 2014-08-10 18:31
I'll try this out in the next couple of weeks in a classroom setting.
msg275981 - (view) Author: Terry J. Reedy (terry.reedy) * (Python committer) Date: 2016-09-12 07:09
There exists a <<toggle-auto-coloring>> bound (at least on Windows) to ^/.  When toggled off, it does not removes existing highlighting.  So accidentally hitting the key has no immediate visible effect (see #27170 for problem this caused someone.)  It does re-highlight existing code when toggled on.  The turn off part should be fixed and maybe a status bar message given.

It only applies to .py files.  With a .txt, it selects the entire file, including the trailing blank (which ^A omits).  For this issue, it should be fixed to allow for any file, just starting off for non .py files.

It is one of many key bindings not in doc or not on menu.  #28097 is about this general issue.
msg275986 - (view) Author: Raymond Hettinger (rhettinger) * (Python committer) Date: 2016-09-12 07:53
+0 from me.
History
Date User Action Args
2017-09-28 06:58:13taleinatsetnosy: - taleinat
2017-06-29 23:56:37terry.reedysetversions: + Python 3.6, Python 3.7, - Python 2.7, Python 3.4, Python 3.5
2016-09-12 21:36:43ppperrysettitle: This is a python file, apply syntax highlighting -> IDLE: allow syntax highlighting of files without .py extension
2016-09-12 07:53:28rhettingersetassignee: rhettinger -> terry.reedy
messages: + msg275986
2016-09-12 07:09:29terry.reedysetmessages: + msg275981
2014-08-10 18:31:43rhettingersetassignee: rhettinger

messages: + msg225157
nosy: + rhettinger
2014-08-09 23:30:15BreamoreBoysetversions: + Python 2.7, Python 3.4, Python 3.5, - Python 3.2, Python 3.3
2014-02-04 12:27:51taleinatsetmessages: + msg210219
2012-07-12 18:54:21roger.serwysetfiles: + issue6858.patch

versions: + Python 3.3
keywords: + patch
nosy: + roger.serwy

messages: + msg165328
stage: patch review
2012-05-14 21:28:34zach.waresetnosy: + zach.ware
2010-08-02 07:20:53taleinatsetmessages: + msg112426
2010-08-01 23:11:32gertsetmessages: + msg112401
2010-08-01 22:06:38terry.reedysetmessages: + msg112389
2010-08-01 20:05:41gertsetmessages: + msg112377
2010-08-01 14:56:59taleinatsetmessages: + msg112339
2010-08-01 14:55:37taleinatsetmessages: + msg112338
2010-08-01 13:45:27terry.reedysetmessages: + msg112325
2010-08-01 11:50:01BreamoreBoysetnosy: + terry.reedy, taleinat
2009-09-08 01:01:29ggenellinasetnosy: + ggenellina
2009-09-08 00:06:07cvrebertsetnosy: + cvrebert
2009-09-07 23:07:51gertcreate