none
关于MEF 智能提示(IntelliSense )的问题 RRS feed

  • 问题

  • 我想扩展一下该IntelliSense 智能提示,用来显示某些自定义的html标签(非asp.net),目的仅仅是想把自己自定义的html标签追加到vs的html中的智能感知中。

    找了两天的官方文档,发现有一个 GetUIElement(Completion itemToRender, ICompletionSession context, UIElementType elementType) 可以获取用户选择的其中的一个item,但是我是想让插入自己的自定义的html标签。

    CompletionSet 类

    表示当前文本视图中显示的 IntelliSense 完成列表。 

    就想把自定义的html标签以扩展的方式插入到vs的智能提示中

    例如我可以在c#中的item中有add方法,可以添加到其中,但是这个连item都没有,怎么插入....

    实在是想不出办法来了,请教各位有什么比较好的思路没有。。。

    谢谢大家了。。。。新年快乐。。。。

    2017年1月26日 6:41

全部回复

  • 你好,

    新年好,关于智能提示的vs插件开发,请参看下面的链接,使用ICompletionSource 和Completion 来实现,你可以把你的自定义的html 标签放到哪个list变量中。

    https://msdn.microsoft.com/zh-cn/library/ee372314.aspx

    Best regards,

    Cole Wu


    MSDN Community Support
    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    2017年1月26日 12:24
    版主
  • 恩,我试着做出来了,但是我最终的想法是把这几个自定义的html 标签插入到原生的提示插件中去

    因此,我找到了CompletionSet中的Completions ,但是这个没有set访问器,然而注释上面说可以set或get

    原话:

            // 摘要:
            //     Gets or sets the list of completions that are part of this completion set.
            //
            // 返回结果:
            //     A list of Microsoft.VisualStudio.Language.Intellisense.Completion objects.

    public virtual IList<Completion> Completions { get; }

    思来想后,我想用指针的方式去访问这个私有成员变量,不知需要如何做呢?

    2017年1月26日 13:00
  • 你好 chinaxke,

    请参考下面的代码。

    void ICompletionSource.AugmentCompletionSession(ICompletionSession session, IList<CompletionSet> completionSets)
        {
            List<string> strList = new List<string>();
            strList.Add("addition");
            strList.Add("adaptation");
            strList.Add("subtraction");
            strList.Add("summation");
            m_compList = new List<Completion>();
            foreach (string str in strList)
                m_compList.Add(new Completion(str, str, str, null, null));
    
            completionSets.Add(new CompletionSet(
                "Tokens",    //the non-localized title of the tab
                "Tokens",    //the display title of the tab
                FindTokenSpanAtPosition(session.GetTriggerPoint(m_textBuffer),
                    session),
                m_compList,
                null));
        }
    

    Best regards,

    Cole Wu


    MSDN Community Support
    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    2017年2月13日 7:22
    版主