On 13-12-23 12:52 AM, Thomas Martitz wrote:
Am 23.12.2013 09:40, schrieb Matthew Brush:
On 13-12-21 11:30 AM, James Brierley wrote:
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.
Just for fun I made a little experiment doing what I was talking about:
Nice! Could scope detection potentially also be used to add local variables to autocompletion?
I'm not sure but I doubt it, it's just using Scintilla fold points as described in the simple algorithm above (roughly).
PS: The video didn't play in VLC (stuck on first frame) but did with ffplay.
Dunno, plays here locally in VLC. IIRC it's using H.264 in an AVI container.
Cheers, Matthew Brush