private void Scintilla_SelectionChanged(object sender, EventArgs e)
{
Range sr = Scintilla.Selection.Range;
if (_snippetLinks.IsActive)
{
SnippetLink oldActiveSnippetLink = _snippetLinks.ActiveSnippetLink;
SnippetLinkRange oldActiveRange = _snippetLinks.ActiveRange;
_snippetLinks.ActiveSnippetLink = null;
_snippetLinks.ActiveRange = null;
for (int i = 0; i < _snippetLinks.Count; i++)
{
SnippetLink sl = _snippetLinks[i];
foreach (SnippetLinkRange r in sl.Ranges)
{
if (r.IntersectsWith(sr))
{
_snippetLinks.ActiveSnippetLink = sl;
_snippetLinks.ActiveRange = r;
break;
}
}
if (_snippetLinks.ActiveRange != null)
break;
}
foreach (SnippetLink sl in _snippetLinks.Values)
foreach (Range r in sl.Ranges)
{
if (sl == _snippetLinks.ActiveSnippetLink)
{
r.ClearIndicator(Scintilla.Snippets.InactiveSnippetIndicator);
r.SetIndicator(Scintilla.Snippets.ActiveSnippetIndicator);
}
else
{
r.SetIndicator(Scintilla.Snippets.InactiveSnippetIndicator);
r.ClearIndicator(Scintilla.Snippets.ActiveSnippetIndicator);
}
}
}
}