qq_18420155 2017-04-07 07:09 采纳率: 0%
浏览 1966

有用过Scintilla 的嘛?我想开发一个代码补全和代码提示

我想要的效果
图片说明

分别实现的效果
this.AutoComplete.Show();
图片说明
this.CallTip.Show("CallTipShowing");
图片说明
两句同时存在代码补全就没有了

我添加监视
图片说明

图片说明

有熟悉这个插件的嘛?谢谢

  • 写回答

1条回答 默认 最新

  • 你知我知皆知 2024-08-05 16:49
    关注

    以下回答参考 皆我百晓生券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。

    Scintilla是一个强大的文本编辑器控件,它支持多种编程语言。然而,关于代码补全和自动完成功能,Scintilla本身并不直接提供这样的功能。通常,这需要使用一些外部库或框架来实现。

    在.NET中,你可以考虑使用NuGet包来安装Microsoft.VSSC.ScriptingMicrosoft.VSSC.Scripting.Interop.这两个包提供了对VSSC(Visual Studio Scripting Component)的API的访问,从而可以创建自定义的代码补全和自动完成行为。

    以下是一个简单的示例,展示如何使用这两个包:

    首先,确保你已经正确安装了这两个包:

    dotnet add package Microsoft.VSSC.Scripting
    dotnet add package Microsoft.VSSC.Scripting.Interop
    

    然后,在你的项目中导入这些包:

    using Microsoft.VSSC.Scripting;
    using Microsoft.VSSC.Scripting.Interop;
    

    接下来,创建一个CodeCompletionProvider类,并重写其方法以实现自动补全功能:

    public class MyCodeCompletionProvider : CodeCompletionProvider
    {
        public override void Initialize()
        {
            // 自定义代码补全逻辑...
        }
    
        protected override bool CanHandleCompletion(string text)
        {
            return text.StartsWith("CallTip", StringComparison.OrdinalIgnoreCase);
        }
    }
    

    最后,在你的应用程序中注册MyCodeCompletionProvider为代码补全服务:

    var provider = new CodeCompletionProvider("myProvider");
    
    provider.Initialize();
    
    // 注册为代码补全服务
    services.AddSingleton<ICodeCompletionService>(provider);
    
    app.Use(async (context, next) =>
    {
        await next();
    });
    

    请注意,上述示例仅为基本示例,实际应用可能需要根据你的具体需求进行更复杂的设置。例如,你可能需要处理多个不同的语言、特定的字符集或者添加更多的自定义功能。此外,为了获取完整的代码补全效果,你需要根据你的具体需求来编写额外的逻辑,比如检查是否需要显示代码补全等。

    评论

报告相同问题?