为所选文本和远程代码生成ReSharper的API(Resharper API for select

2019-09-19 06:48发布

我想编写一个插件ReSharper的,让我产生的基础上突出显示的文本另一个类代码和API还不是最透明的。 我应该看看以访问选定的文本,以及当前类之外的代码产生什么样的方法?

Answer 1:

当你写背景下行动或类似这样的东西(在这里阅读http://confluence.jetbrains.net/display/ReSharper/ReSharper+7+Plugin+Development关于动作和上下文的动作),您会收到IDataContext的一个实例。 以从中文本控件,文件和选择这种方式:

var textControl = context.GetData(TextControl.DataContext.DataConstants.TEXT_CONTROL);
var document = textControl.Document;
var solution = projectFile.GetSolution();
TextRange selection = textControl.Selection.OneDocRangeWithCaret();

使用document.GetText获得了选择范围的文本。

为了您的当前类以外的生成代码,你需要找到你的其他类声明的元素。 为此,您需要使用IDeclarationsCache,看到http://confluence.jetbrains.net/display/ReSharper/4.01+Caches+%28R7%29一下吧。 当你将得到声明的元素,使用GetDeclarations()方法来获得访问所有类声明的(可以有几个声明,因为局部类的),并将其转换为IClassLikeDeclaration。 使用AddClassMemberDeclaration方法添加成员和RemoveClassMemberDeclaration删除。 当添加类成员,使用元件工厂创建附加元件(见http://confluence.jetbrains.net/display/ReSharper/3.2+Creating+Code+Elements+%28R7%29 )。

不要犹豫,如果您还有其他疑问,请联系我。



文章来源: Resharper API for selected text and remote code generation