[Tkinter-discuss] Here's a tough one -- dynamic, multi-line XML syntax highlighting

Jared Cohen Jared.Cohen at noaa.gov
Mon Mar 28 20:45:56 CEST 2005


Actually, I seem to have hit on a solution. It seems that the two 
instances of multi-line highlighting that I mentioned (comments and 
CDATA) are the ONLY two instances there are. And in each of these two 
cases, there are five subcases: when the user inserts/removes a new 
start-delimeter, inserts/removes a new end-delimeter, or makes some 
change between 2 delimeters (changing a delimeter to make it invalid 
counts as "removing" it). With this in mind, I was able to manually test 
for these cases and change the highlighting myself, without having to go 
back to expat and re-parse the file. For all OTHER cases, I use expat to 
just re-parse that one line. So far, it seems to be working perfectly, 
and it's certainly much more efficient than before!

Thanks anyway for the suggestions :-)

Tim Jones wrote:

> On Mar 28, 2005, at 10:21 AM, Jared Cohen wrote:
>
>     Not a bad idea, but real syntax highlighting doesn't work that
>     way. If I'm programming C++ and I type the word "int", the word
>     gets highlighted as a keyword the instant I type the "t", not when
>     there's a pause in my typing. If that were the case, then I could
>     type an entire paragraph and the highlighting wouldn't change
>     until I was done.
>
>     Thanks anyway though. Any other ideas? :-)
>
>
> How about a maintained list of keywords as part of your syntax 
> dictionary that effect from the current insertion point forward (<!-- 
> for example) and keywords that effect the entire document (--> for 
> example)? This way you're not always parsing the entire text on an 
> insertion. And, you might consider only updating the text that is 
> visible at the moment of updating.
>
> As another thought, how about auto-completion of the block for the 
> user: i.e.: They type '<!--' and you automatically insert the closing 
> '-->' on the next line or on a new line at the end of a selected section.
>
> I can't think of anything else at the moment. Have you also considered 
> examining what is done in VIM's syntax highlighting?
>
> Tim
> -- 
> Tim Jones tjmac [at] tolisgroup [dot] com
>
>
>     Tim Jones wrote:
>     On Mar 28, 2005, at 10:10 AM, Jared Cohen wrote:
>
>     <snip>
>
>      When that happens with every single keystroke, it adds up to a
>     whole lot of highlighting. There's got to be a better way, but I
>     can't think of one. Can anyone help?
>
>
>     How about using a timer to monitor the delay between keystrokes? 
>     This way, you only update the highlight if the user pauses in
>     their typing rather than after each keyup.
>
>     Tim
>     -- 
>     Tim Jones                                                 tjmac
>     [at] tolisgroup [dot] com
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.python.org/pipermail/tkinter-discuss/attachments/20050328/4e9ceca2/attachment.html


More information about the Tkinter-discuss mailing list