我想在Visual Studio的IntelliSense返回的选项列表的顶部添加一个按钮.单击该按钮时,将执行我的自定义代码(除其他外,这将导致弹出窗口出现).
我将其称为"按钮",因为当用户单击该项目时,我希望显示一个弹出窗口,而不是完成用户输入的正常IntelliSense操作.
例如,当我们在文本编辑器中输入类名时,通常静态属性和静态方法将出现在IntelliSense中.但我想在该列表的顶部添加另一个项目.
无论输入/内容导致IntelliSense出现,此项都应显示在IntelliSense列表的顶部.该项目永远不会改变.
这是可能的吗?如果可以的话,你能提供一些方向来说明我应该如何做到这一点吗?
我前几天问了这个问题并没有得到答案,所以我会再试一次.
我喜欢通过折叠我目前不使用的方法,注释和xml摘要来保持我的代码.但是,每次我在方法,循环,switch语句或代码的任何部分(任何包含{
或}
支撑)中编辑一些大括号时,下面的所有内容都会在1秒后扩展.一切都向下展开,直到当前文件(或区域,如果编辑的代码位于其中)结束.
我不能再忍受了我已经厌倦了一直使用Ctrl
+ M
+ O
然后再次重新找到编辑的字段.VS2010有什么选项或扩展名,可以解决我的问题吗?
更新
我开始意识到没有办法解决问题.但是我也可以接受一个修改过的问题的答案:是否有一种方法或工具可以让我自动删除{
和}
支持只包含1条指令的对?对我的问题来说,这是一个可以接受的解决方法.
我正在使用 Roslyn 创建一个带有 IntelliSense 的 C# 脚本控件。
我通常对得到的结果非常满意,但是,推荐的符号不包含诸如for
和if
等关键字,也不包含类型别名,例如int
, 当它包含Int32
.
更具体地说,我正在使用Microsoft.CodeAnalysis.Recommendations
,即:
Recommender.GetRecommendedSymbolsAtPositionAsync(mySemanticModel, scriptPosition, myAdhocWorkspace);
Run Code Online (Sandbox Code Playgroud)
我的SemanticModel
对象是从 C# 编译获得的,它mscorlib.dll
至少总是有一个引用。
在我的脚本中的所有位置,推荐的完成总是正确的。但是,我认为他们是不完整的,如果缺少关键字,如if
,else
和for
等。
我可以看到,手动将常见类型别名包含在我的 IntelliSense 中对我来说很容易。也就是说,如果Int32
可能完成,那么我可以手动添加int
.
但是,在给定的范围内,if
语句或for
语句甚至is
/何时as
合适就不太明显了。
以这种方式获取推荐符号时,是否可以包含这些关键字?
还有一种方法可以自动包含类型别名吗?
我创建了一个像下面这样的新类
[Order(Before = "High")] [Export(typeof(ICompletionSourceProvider))]
[ContentType("JavaScript"), Name("EnhancedJavaScriptCompletion")]
internal sealed class JavaScriptCompletionSourceProvider
: ICompletionSourceProvider
{ }
Run Code Online (Sandbox Code Playgroud)
而且 CompletionSource
internal sealed class CompletionSource : ICompletionSource, IDisposable
{
public void AugmentCompletionSession(ICompletionSession session, IList<CompletionSet> completionSets)
{
}
public void Dispose()
{
}
}
Run Code Online (Sandbox Code Playgroud)
这些都添加到Visual Studio Package
项目中.因此,当我尝试调试(使用F5)时,我可以看到调试符号正在加载并且调试停止在
protected override void Initialize()
{
Debug.WriteLine(string.Format(CultureInfo.CurrentCulture, "Entering Initialize() of: {0}", this.ToString()));
base.Initialize();
}
Run Code Online (Sandbox Code Playgroud)
然而,当我编辑.js文件中,并调用智能感知(与.
点即是)的deubbger不会闯进ICompletionSourceProvider
也不是ICompletionSource
我的课的方法.
所以我的问题是:
javascript
通过额外选项扩展标准智能感知?ICompletionSourceProvider
班级ContentType
吗?