首页 > 编程语言 >lapce源码学习-启动过程

lapce源码学习-启动过程

时间:2024-07-28 19:06:29浏览次数:16  
标签:文件 启动 更新 window 源码 channel lapce 压缩包 加载

一、记录日志

1.1、panic恐慌(异常)记录跟踪

调用堆栈,如果有源代码信息时,则记录文件路径、行、列、堆栈;否则仅记录堆栈。

window系统,调用win32接口弹出模态框窗口提醒。

1.2、链路追踪日志,输出到文件和控制台配置

文件:文件数目、文件前缀/后缀名、文件收集各目标日志最小级别(红色标注)

 

控制台:从环境变量(LAPCE_LOG)加载各目标日志最小级别(蓝色标注)

注册链路追踪:输出到文件、控制台

控制台,环境变量LAPCE_LOG设置如:

二、加载特殊字体

字体特性时,加载字体字节数组,然后写到系统字体中。

三、标准输入非终端,获取环境本机变量值

判断当前操作系统,如:window,通过powershell,输出解析

powershell输出环境变量效果:

拆分每行(\n),然后等号(=),再拆分Name、value,然后通过 std::env::set_var 设置。

四、命令行参数

4.1、wait

对应中说明:lapce源码学习-编译调试 - 攀攀 - 博客园 (cnblogs.com)

4.2、new 是否在打开新窗口

否:判断是否有已打开窗口,有则打开目录或者文件(对应行、列)

   LocalSocket通信另外进程,写入 打开目录或者文件;通过channel异步读取 打开成功返回 received 则返回 true;等待超时或者false则返回错误。

  为什么不是LocalSocket写入后,直接LocalSocket读取等待,而是用了channel实现。是因为channel读取可设置超时时间,channel没有么?

 

另外进程接收“打开目录或者文件”消息的处理代码:线程LocalSocket监听后,channel 触发信号 create_effect 打开。 

循环监听,写入要“打开目录或者文件”,回写 received。

是:启动窗口时,打开目录或者文件

五、代码高亮配置加载

5.1、语法解析,tree-sitter grammars文件更新最新版本;加载成功触发代码高亮配置加载。

  用途:是用于定义编程语言的抽象语法树(AST)的规则。这些语法文件通过解析源代码生成AST,并且可以支持多种编程语言,如Python、TypeScript等。它们主要关注于如何从源代码中提取结构信息,以便进行语法分析和进一步处理。

 代码流程:判断创建目录、调用接口反序列后根据version文件与响应中字段对比判断版本是否一致、下载压缩包、解压压缩包、删除压缩包、回写version文件版本号

5.2、查询,tree-sitter queries文件更新最新版本;加载成功触发代码高亮配置加载。

  用途:树查询是基于Tree-sitter语法树的一种模式匹配系统。它允许开发者定义特定的模式来查找和高亮显示源代码中的特定部分,例如代码块、变量名或函数调用等。

  代码流程:判断创建目录、调用接口反序列后根据version文件与响应中字段对比判断版本是否一致、下载压缩包、解压压缩包、删除压缩包、回写version文件版本号




思考总结:两者就保存目录不一样,其他流程都一致(通知配置更新、文件更新),感觉这块代码重复太多。

六、程序更新

window:删除升级残余的备份文件.bak

线程,获取更新最新版本信息



界面操作命令,触发更新:用上面最新版本号判断是否需要更新、更新进度信号(影响菜单显示)、下载文件、解压替换文件、重启程序

window:与上面备份文件.bak删除对应,用下面文件替换程序文件



重启程序,window:cmd下命令执行 杀死进程、启动进程

进度信号(影响菜单显示),true:显示正在更新+禁用菜单、false:显示重启+RestartToUpdate操作(对应上面触发更新操作)

标签:文件,启动,更新,window,源码,channel,lapce,压缩包,加载
From: https://www.cnblogs.com/yinyunpan/p/18324183

相关文章

  • SQLite?低调不是小众...【送源码】
    前几天在一个群里看到一位同学说:“SQLite这么小众的数据库,到底是什么人在用啊?”首先要说的是SQLite可不是小众的数据库,相反,SQLite是世界上装机量最多的数据库,远超MySQL,只不过比较低调而已。低调到我想在官网上找一个好看的用来当插图的图片都找不到,只能截一张官网首页来撑......
  • [附开题]flask框架的全国汽车销售信息查询系统的设计与实现7m1w0(python+源码)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着中国汽车市场的蓬勃发展,汽车品牌的日益丰富以及消费者购车需求的多样化,汽车销售信息的准确性与时效性成为了市场关注的焦点。传统汽车......
  • [附开题]flask框架的校园停车场管理系统的设计与实现61m0e(源码+论文+python)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着高等教育的普及和校园规模的不断扩大,校园内车辆数量急剧增加,停车难问题日益凸显。传统的人工停车场管理模式已难以满足现代校园对高效......
  • [附开题]flask框架的校园学生管理系统s8h32(源码+论文+python)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着教育技术的不断进步和高校规模的不断扩大,传统的学生管理方式已难以满足现代校园管理的需求。学生数量激增、课程种类繁多、选课流程复......
  • [附开题]flask框架的校园疫情管理系统92tl0(源码+论文+python)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着新冠疫情的持续影响,校园作为人群密集、流动性大的场所,其疫情防控工作显得尤为重要。传统的手工记录和口头报告方式已难以满足当前复杂......
  • XCode 编译 PAG 源码
    最近工作中要使用PAG替换Lottie,为了方便阅读源码,使用XCode对其源码进行了编译。1下载源码编译源码首先要下载源码,有关PAG源码可直接到github上下载。2添加相关依赖下载源码之后,进入到PAG项目根目录,执行如下脚本:./sync_deps.sh3构建iOSPAGViewer工程PAG项目包含多种......
  • Java----CAS算法与AtomicInteger源码解读
    CAS介绍:为了确保对数据操作的原子性,在java.util.concurrent.atomic下定义许多关于各种基本类型数据的提供原子操作的类。这里我们以AtomicInteger为例子。AtomicInteger的本质:自旋锁+CAS算法CAS的全称是:CompareAndSwap(比较再交换);是现代CPU广泛支持的一种对内存中的......
  • 微信小程序图书馆座位预约管理系统(SpringBoot后端+Vue管理端)附项目源码与配套文档
    目的和意义微信小程序图书馆座位预约管理系统可以对微信小程序图书馆座位预约管理系统信息进行集中管理,可以真正避免传统管理的缺陷。微信小程序图书馆座位预约管理系统是一款运用软件开发技术设计实现的应用系统,在信息处理上可以达到快速的目的,不管是针对数据添加,数据维护和......
  • SpringBoot+Vue电影院售票系统 - 附源码与配套文档
    1.1 研究背景随着互联网技术的迅速发展和普及,人们的生活方式发生了深刻变革,对于文化娱乐消费的需求日益增长,而作为文化消费重要组成部分的电影行业也迎来了前所未有的发展机遇。然而,传统的电影院售票模式,如现场购票、电话预定等,已难以满足现代消费者对便捷性、灵活性和个性......
  • 2024最新一元云购源码.完美运营版.机器人自动下单.可指定中奖.一元购源码.一元夺宝源
    2024年最新云购源码一元云购H5新版本新UI 完美运行版•带易支付接口机器人自动购买•可指定中奖云购演示站:yun.6323g.com/ 源码下载链接:https://pan.baidu.com/s/1UsSE3IX_um_eAEcMIBLpHA?pwd=akjd 提取码:akjd  免责声明:该资源仅供学习和研究使用,一切关于该资源......