Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
class MyCA : BulbItemImpl, IContextAction
{
private readonly ICSharpContextActionDataProvider myProvider;
protected MyCa(ICSharpContextActionDataProvider provider)
{
myProvider = provider;
}
public bool IsAvailable(IUserDataHolder cache)
{
return ...;
}
public override string Text
{
get { return "My menu item text"; }
}
protected override Action<ITextControl> ExecuteTransaction(ISolution solution, IProgressIndicator progress)
{
//Do Something
//here you can return 'null'
return control =>
{
//Do something with caret, selection, etc.
//Ex: control.Caret.MoveTo(myElement.GetDocumentRange().TextRange.StartOffset);
};
}
}
советую набросать простенькую DSL на том же F#, например, потому что поиск по дереву в C# выглядит неопрятно, со всеми этими приведениями типов, проверками на null и так далее.
Расширяем ReSharper — Context Actions