首页
社区
课程
招聘
[原创] 分享一下写了N年的自用编辑器 -- EDX
2021-10-3 18:26 76886

[原创] 分享一下写了N年的自用编辑器 -- EDX

2021-10-3 18:26
76886

20年前写了个编辑器,一直自用。
今年捡起来稍加完善,感觉可以拿出来见人了。拿出来分享给大家。
官方网站: https://www.ed-x.cc/
下载链接: https://www.ed-x.cc/versions/edx.zip
32位版本: https://www.ed-x.cc/versions/edx-x86.zip

 

可以支持C/C++项目的开发和调试。
可以调试VC,Mingw以及WSL下的程序。(调试VC目标基于dbgeng,调试32位目标容易使目标产生运行异常,是dbgeng自身的问题...)
内建调试符号美化功能,方便查看复杂类型的数据。性能还行,能够查看较大规模的数据对象。
支持CMake工程管理。
支持无工程的单文件编译调试,方便开发测试。
支持基于Clangd的语法提示,补全。
支持打开4G以上的大型文本。
支持自动搜索工具链(VS,MSYS2,MINGW,CLANG,LLVM-MINGW,Intel OneAPI,WSL)
占用的资源很小,速度飞快。
日常使用,无论是打开文件还是打开工程都是秒开。

 

以下为WSL下调试的截图:
WSL下开发调试


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

最后于 2021-12-11 13:51 被无心红叶编辑 ,原因: 添加x86版本下载地址
收藏
点赞52
打赏
分享
最新回复 (301)
雪    币: 1412
活跃值: (4133)
能力值: ( LV13,RANK:240 )
在线值:
发帖
回帖
粉丝
IamHuskar 4 2021-10-3 18:33
2
0
大佬牛逼。
雪    币: 2440
活跃值: (2681)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
院士 2021-10-3 18:38
3
0
牛啊,大佬。
雪    币: 3794
活跃值: (1862)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
欧阳休 2021-10-3 20:08
4
0
20年!辛苦了!
雪    币: 1195
活跃值: (1125)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
初学小潘 2021-10-3 20:24
5
0
大佬厉害啊
雪    币: 178
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
mb_hgrbqfun 2021-10-3 20:34
6
0
牛逼啊,界面引擎可以开源吗
雪    币: 357
活跃值: (2593)
能力值: ( LV3,RANK:25 )
在线值:
发帖
回帖
粉丝
KooJiSung 2021-10-3 20:38
7
3

POST https://www.ed-x.cc/api/checkin HTTP/1.1
Accept: */*
Content-Length: 100
Host: www.ed-x.cc
User-Agent: EDX
Cache-Control: no-cache

{"lang":"zh-CN","sig":"xxxxxxxxxxxxx","token":"","version":"0.4.0.788"}

会收集bios,cpu,disk,mainboard,memory,nic,os

最后于 2021-10-3 20:44 被KooJiSung编辑 ,原因:
雪    币: 178
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
mb_hgrbqfun 2021-10-3 20:40
8
0
让我想起了这个项目 https://github.com/rxi/lite
雪    币: 4653
活跃值: (3349)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
无心红叶 2021-10-3 20:46
9
0
KooJiSung POST https://www.ed-x.cc/api/checkin HTTP/1.1Accept: */*Content-Length:&a ...

^_^认证和升级还没弄好,暂时是个半成品


刚才重新发了个新版本,去除过于敏感的信息,免得大家误会。只保留了一些基本信息。并且修正了频繁调用此接口的问题。


如下:

{

"cpu":"Intel(R) Core(TM) i7-8750H CPU @ 2.20GHz",

"machine":[

"机器信息HASH1",

"机器信息HASH2"

],

"mem":65536,

"os":{

"arch":"64 ",

"name":"Microsoft Windows 11 ",

"ver":"10.0.22000"

}

}


最后于 2021-10-3 22:27 被无心红叶编辑 ,原因:
雪    币: 4653
活跃值: (3349)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
无心红叶 2021-10-3 21:02
10
0
mb_hgrbqfun 牛逼啊,界面引擎可以开源吗
没啥界面引擎,UI部分的框架是与WTL类似的自有库。暂时没有开源的打算,一是没精力维护,二自己用的话改起来就比较随心所欲。如果你想参考Windows上的UI框架,WTL是个很容易上手的例子。
雪    币: 2261
活跃值: (1403)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
boyving 2021-10-7 21:27
11
0
大佬牛逼,会不会支持autolisp语言呀。
雪    币: 4653
活跃值: (3349)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
无心红叶 2021-10-8 00:53
12
0
boyving 大佬牛逼,会不会支持autolisp语言呀。[em_76]
没玩过autolisp呀,OCaml倒是玩过几天。一直半会儿怕是支持不了。目前基本上是我用到啥功能,我就加啥功能。总共没几个人用,就先自给自足了。
雪    币: 4653
活跃值: (3349)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
无心红叶 2021-10-8 01:53
13
0

这两天给vc目标的调试器添加表达器求值功能。

目前,能处理大部分C++03中的表达式语法。函数指针不支持,数组指针部分支持,调试器应该不怎么用得到。

之所以不用dbgeng自己的表达式求值功能,是因为我这里的调试器符号是基于imghlp手工处理的,这样可以完美实现符号美化功能。而dbgeng中的符号信息与imghlp还隔了一层纱。这也意味着我这个方案不支持vc程序的远程调试。

其次,顺手借鉴(抄袭)了VS格式化后缀语法,实现了

  1. wm, win32 message的值到名称映射,调试win32程序的消息时不用去查表了。更进一步的消息体解析(类似spy++的那种还不支持。vs也不支持,先模仿一下,以后再做超越吧:)

  2. hr, HRESULT的值到FormatMessage的映射

  3. x, 16进制格式化

  4. b, 2进制格式化

  5. 其它更多格式化功能还没来得及做,以后留个扩展接口在lua里搞


好久没写复杂的解析器了,把形式语言的那些理论知识都忘得七七八八了。这么个简单的表达式解析就写了大半天。

另外,再次吐槽一下,C/C++的运算符对解析器的确不怎么友好,各种二义性问题,上下文无关文法都搞不定。

改天翻一下以前写的C++解析器,已经忘了当初是怎么搞的了。

最后于 2021-10-8 01:54 被无心红叶编辑 ,原因:
雪    币: 2261
活跃值: (1403)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
boyving 2021-10-8 10:36
14
0
无心红叶 没玩过autolisp呀,OCaml倒是玩过几天。一直半会儿怕是支持不了。目前基本上是我用到啥功能,我就加啥功能。总共没几个人用,就先自给自足了。
大佬一看就懂怎么玩了。
雪    币: 4653
活跃值: (3349)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
无心红叶 2021-10-13 12:35
15
0

Windows 11正式发布了,我也非正式支持了一下Windows 11的右键菜单,如下:

有以下两种方法:

方法一:

    最新版本里已经包含了生成MSIX包的必要文件,会搞自签名的朋友自己把这个包打成MSIX并签名安装即可。

方法二:

    打开 系统设置 > 开发人员模式 > 从任意源安装应用 选项,如下图:

   

    运行 regsvr32 shell_ext.dll 手工注册文件管理器扩展

    运行 powershell -command add-appxpackage -register appxmanifest.xml 注册应用

雪    币: 0
活跃值: (913)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
spring丶必应 2021-10-13 15:25
16
0
如果下面再增加个控制台会不会更方便一点
雪    币: 52
活跃值: (2158)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
实都 2021-10-13 16:46
17
0
6666 大佬牛逼阿
雪    币: 4653
活跃值: (3349)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
无心红叶 2021-10-13 20:57
18
0
spring丶必应 如果下面再增加个控制台会不会更方便一点
有此打算,不过做有WindowsTerminal在前面顶着,慢慢来吧。就一般使用来说,独立的控制台会更常用也更方便。IDE里集成的控制台只是个补充,先放后面慢慢弄。
雪    币: 4653
活跃值: (3349)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
无心红叶 2021-10-22 00:02
19
0

新鲜出炉十六进制编辑功能。以前写了个开头搁置了十几年的功能,花了一周搞定。

十六进制编辑器做为一个基础组件,在调试器以及后续的其它功能中也有用武之地。

现在只完成了基本的编辑功能,后续还要补充搜索,替换,定位,数据分析相关功能。

另外,新版本内嵌了标准的Mono字体,以保证在不同系统里有一致的UI呈现效果。

欢迎大家来找茬,帮忙测试一下BUG

雪    币: 3758
活跃值: (5475)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
huangjw 2021-10-24 20:29
20
0
very good
雪    币: 4427
活跃值: (3449)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
木志本柯 2021-10-24 20:31
21
0
优秀
雪    币: 5045
活跃值: (4349)
能力值: ( LV5,RANK:65 )
在线值:
发帖
回帖
粉丝
gamehack 2021-10-24 21:06
22
0
大佬牛逼!感谢分享!
雪    币: 4653
活跃值: (3349)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
无心红叶 2021-11-6 00:53
23
0

定期添加新功能,最近主要改进点:

  1. xml/json的格式化功能。以前只支持自动缩进,现在可以支持自动换行

  2. 文件结构分析视图。配合16进制编辑器,可以分析已知文件的结构。目前仅支持Archive(*.a, *.lib), PE(*.exe, *.dll), COFF(*.o *.obj), PNG四种格式。

  3. 修正了一些小BUG


雪    币: 4653
活跃值: (3349)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
无心红叶 2021-11-16 23:44
24
0

花了两天研究了一下libgit2, 画了一个人模狗样的git版本视图。

绘制算法用了自己都要看不下去的极其丑陋的设计, 一时半会儿怕也想不出啥好算法...

为了顺应业界“能用就好”的主流设计风潮,暂时也不打算花精力去优化了。先把源码管理的基本功能补全再说。

查看类似v8/skia这种十万条提交记录以下中等规模的代码库算是勉强可用。只要不是gcc这种几十年的老代码库,差不多都可以应付。

雪    币: 4653
活跃值: (3349)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
无心红叶 2021-12-8 17:16
25
0

搞了三周就搞了这点东西出来:

优化GIT历史记录迭代相关逻辑

实现基于libgit2的代码更新,获取,提交,推送等功能(不依赖于GIT命令行工具)

支持保存git认证信息

添加第三方开源库的授权信息

libgit2/libssh2改用mbedtls后端,以正确支持ssh协议

支持PCAPNG格式分析

优化搜索对话框行为(自动根据选区切换搜索范围)

优化DPI切换性能

部分UI相关BUG修正


发个版本纪念一下。libgit2真够底层的,距离实现git的功能还有一大截路要走。

GIT的内部设计是很不错的,简单又灵活;但它的命令接口把原本简单的设计变得让人有点晕头转向。

游客
登录 | 注册 方可回帖
返回