Notepad++ lua插件开发(前传)

xiaoxiao2021-02-28  28

         我对lua一直是情有独钟,主要是因为它是开源的,非常小巧,整个源码也才五百来K,可以很方便地嵌入到程序中(无论是桌面端还是移动端),从而为程序提供灵活的扩展和定制功能,其次它简洁的语法,动态语言的特点及很方便地使用c/c++进行功能扩展,是非常吸引我这种c++程序猿的.

      不过,虽然语言是好的,但是IDE却很不友好,网上下个luastudio也是收费的(也不知道是不是官方做的,界面还是挺粗糙的,竟然还能用微信/支付宝/淘宝进行购买).初学lua的时候,在网上翻遍了也没找到很顺手的IDE,我用过算比较好用的话,有Decoda和ZeroBraneStudio这两个,前者本身也是收费的好像,但是现在已经放弃治疗并开源了,我也试过在它的基础上做开发,写出了一个用lua进行报表定制的工具,不过它本身的bug也很多,而且是基于wxWidgets写的,对这个东西很不熟悉,导致修改后的软件bug更多了,也是十分无奈. ZeroBraneStudio是同事推荐的,本身是提供了lua语法高亮及智能提示的,对其不是很了解,据说也是开源的了,有时间也可以学习学习它的源码,它还支持远程调试,这点是非常好的(Decoda也支持调试,不过是采用dll注入的方式,有的时候会失败,而且官方停止了维护,最高只是支持到5.1好像).

       如果只是学习lua的语法,并不使用它来做具体开发的话,上面提到的两款软件甚至notepad++/sublime这种软件都能满足了.但其实用lua来进行开发,最大的障碍来自于我们封装后的c/c++的部分,我们封装后的模块,类和函数得不到智能提示,则无法知道到底有哪些类或者函数可以使用,没有智能补全则很容易就会敲错代码,没有函数提示,就要经常去翻文档,查看接口说明.我认为没有提示的情况下用lua去做开发是一件非常非常非常恶心的事情,分分钟就想摔键盘.

       程序猿总是很倔强的,在茫茫网海中找不到顺手的工具,就诞生了自己写一个的想法.我想先借鉴一下别人是怎么写编辑器,就在网上搜索相关的资料,然后他们都说要看看notepad++的源码,我就去下了.看了一下,嗯,有点复杂,想想要不算了吧,一个全面的编辑器做起来还真不简单.然后无意中发现,notepad++支持插件开发,看了下还不是很复杂,官方给的例子一编就过(这种感觉爽爆了),顿时对它的好感暴增,决定试试它的插件开发,以此来满足我的要求.其实,做插件开发跟直接修改开源编辑器的源码的方式是差别是巨大的,插件开发的话接口都给你准备好了,也会对你的输入做一些校验,也就是双方在有约定的情况下做的开发,而直接修改人家源码,在不熟悉的情况下,每改动一行都有可能带来bug,开发出来的东西稳定性会是很大的问题.

       Notepad++的插件开发是不复杂,不过中文的相关资料非常非常少,碰到问题很难找到解决办法,只能去官网翻英文的文档,不过好在现在的翻译软件都很强大,大部分的问题也都能得到解决,后续我就记录一下这次插件开发碰到的一些问题,也算是为notepad++的插件开发提供一点中文参考资料.

       最后,列举一下我实现的功能吧.有

智能提示部分:

智能提示&智能补全/函数参数提示/类与函数说明提示/接口数据管理/接口说明自动跳转/变量类型可手动指定/提示自动根据引用次数排序

快捷输入部分:

自定义代码段输入/返回值自动补全

Lua额外支持部分:

lua格式整理/lua语法验证/lua直接运行/驱动其他程序运行lua

后续会有这几个部分的开发记录,感兴趣的可以关注

notepad++ 网上就可以下载得到,有安装版本和绿色版本

插件安装包地址:点击

下载后解压到notepad++根目录再重新打开notepad++就可以了(之所以插件这么大,是因为用了qt..)

转载请注明原文地址: https://www.6miu.com/read-1450018.html

最新回复(0)