On 20/12/13 01:03, Matthew Brush wrote:
This would probably make a good plugin.
It should be possible, at least for languages who's lexer supports folding and where folding is roughly equivalent to scope. Maybe something like:
- find the current line's fold level
- walk backwards each line until the fold level decreases
- store that line's start position
- walk forwards each line until the fold level decreases
- store that line's end position
- for each character/cell in between start and end, change style
Indeed, most languages are folded with respect to scope. I hadn’t thought of that because I don’t tend to use folds much. This is more or less the kind of simple algorithm I had in mind, but more general than the concrete brackets/parens example. Good idea.
You could probably also do something similar but calculate the XY pixel coordinates of a box around the scope and draw an overlay window at that box's size and position, allowing input to go through to the Scintilla widget underneath (similar effect to XCode's scope highlighting). This is kind of a similar effect as my "blackout" experiment except around the scope box instead of the whole editor widget:
Interesting idea. I think I’d do it the simpler and less radical way though.
Sounds like writing a little plugin is going on my to-do list then.
Thanks guys,
James