美文网首页
简易代码编缉器的编写

简易代码编缉器的编写

作者: dc的梦呓 | 来源:发表于2019-02-28 21:12 被阅读0次

    最近由于项目需要,需用 c# 写一个简易 python 代码编缉器,嵌入在 winform 程序中。需实现以下几个基本功能:

    • 行号显示;
    • 撤销重做;
    • 代码高亮;
    • 代码缩进;
    • 代码折叠;
    • 代码提示、补全,即 Intellisense 功能。

    找了一圈,找到一个第三放开源控件 Scintilla ,可以满足需求,但此控件是 c++。幸运的是,有大神写了 c# 版本 ScintillaNet ,是对 SciLexer 进行的包装(wrapper)。因此,可基于 ScintillaNet 进行二次开发,记录如下。

    1、行号显示

    设置 scintilla 的 Margions 区域:
    scintilla.Margins[0].Width = 16;

    2、撤销重做

    scintilla 已有自带,可调用其 Redo、Undo 方法。

    3、代码高亮

    已有相应语言的 Recipe ,如 python 的设置

    4、代码缩进

    参考1参考2

    5、代码折叠

    参考

    6、Intellisense 功能

    在 CharAdded 事件里判断,调用 AutoCShow 来显示提醒功能。但这只是最基本的提醒功能。要做的完整些,比较复杂,需能提前获取到所需提醒的所有信息,同时需考虑性能问题。正在研究中。

    更多使用方法,请参考官方 wiki

    相关文章

      网友评论

          本文标题:简易代码编缉器的编写

          本文链接:https://www.haomeiwen.com/subject/nsokuqtx.html