QsciScintilla自动代码完成实现原理
创始人
2024-03-21 20:01:57
//自带代码完成工作原理是这样的:lexer负责词法分析,就是一个状态机
//词法分析器里有个关键字keyword数组可以设置,但是这个是给词法分析器分析的时候识别单词用的,上色用的
//不会反映在代码智能提示里的
//自动代码完成的源头有两个:本文档字符串(这个应该是词法分析器完成的),还有 QsciAPIs
//qsci编辑器负责结果项的展示,主要是从qsci的头文件里关于Completion这个关键词搜索一下入手
//可以知道如何做代码提示。估计是,自己增加QsciAPIs,
//然后还有个showUserList()函数可以用,这个直接强行指定编辑器提示框显示的内容了

因为 QsciAPIs 能提供一些高级的功能,比如能自动逐个提示函数的形参列表,加入一个图标等功能,所以这个是专门为代码智能提示而设计的功能类,所以实现代码智能提示,主要是操作这个类。

看看它的头文件或者下载源码就能知道,它的 原理就是把我们添加的字符串转为有功能性的提示字符串了,这个是通过内部新建的 worker线程实现的,具体用法,读读源码就很清楚了。但是他写得逻辑有问题,比如取消preparation的时候,它直接删除了这个线程,而不管该线程是否正在运行,这是有问题的。这个需要我们避免去用它有坑的用法,要么修改它的源码,要么自己关联他的信号函数来实现正确的功能。

主要参考一下这个博客吧,就很清楚了:https://qscintilla.com/#autocompletion/general_autocompletion

 一个编辑器用于提示的符号库更新方法:

切换到了当前编辑器,让当前编辑器异步调gcc获取依赖头文件(这里必须要动态获取,当然如果知道从上次获取到现在以来没有任何文件发生或修改,那这里倒是也不用重复获取了),然后拿到这些头文件所有的符号,加入当前编辑器符号库。

相关内容

热门资讯

“来扬州·过新年·行大运”活动... 来源:扬州日报-扬州网活动现场人头攒动、热闹非凡。 司新利 摄市民选购商品。司新利 摄特色美食受欢迎...
隋文静韩聪带伤拼下银牌:我们对... 来源:中新体坛 2026年国际滑联四大洲花样滑冰锦标赛双人滑项目的角逐24日在北京国家体育馆结束。带...
伊朗军方称已做好迎战敌人准备 本文转自【央视新闻客户端】;伊朗伊斯兰革命卫队副总司令瓦希迪24日表示,革命卫队已经做好准备,应对敌...
《柳叶刀》揭示:每天多动5分钟... 健康离不开科学运动,根据世界卫生组织的建议,成年人每周至少进行150~300分钟中等强度有氧运动,或...
革命旧址在法治护航下焕发勃勃生...    延安革命纪念馆   图①:2025年10月,陕西省丹凤县检察院检察官在王柏栋烈士故居听烈士亲属...