通过 tree-sitter-language-pack 添加语言支持
aider
Space 播放/暂停 —
f 全屏 —
←→ ±5秒
解说记录
- 0:01 我们将通过 tree-sitter-language-pack 为 aider 添加大量新语言支持
- 0:10 首先尝试确认它支持哪些语言
- 1:00 找到了语言定义的 JSON 文件
- 1:10 这个文件是否包含每种语言的 GitHub 仓库信息?
- 1:29 好的,这正是我们需要的
- 1:45 需要从每个仓库获取 tags 文件来构建 aider 的 repo-map。让 aider 写个脚本自动抓取
- 2:05 我们将向 aider 展示语言定义的 JSON 文件
- 3:37 看起来大部分 tags.scm 文件都找不到
- 4:19 也许应该让它尝试 master 以外的其他分支?
- 5:02 现在似乎开始正常下载了
- 5:55 让脚本支持重新运行时只下载未获取过的文件
- 6:12 看到大量 tags 文件,说明脚本工作正常
- 6:30 重启以使用最新代码运行。完整下载需要一些时间
- 9:02 Grep-AST 模块需要知道所有新增语言
- 9:45 让 aider 添加所有语言,并使用常见文件扩展名进行注册
- 10:15 部分语言需要通过基础名称而非扩展名来识别
- 11:15 检查 Grep-AST 是否能处理新增的 PowerShell 语言
- 12:00 PowerShell 解析看起来正常
- 13:00 将所有 tags 文件下载到 aider 仓库的正确位置
- 14:00 这需要一些时间…
- 16:07 删除一些无操作或空的 tags 文件
- 16:16 提交所有未修改的 tags 文件
- 16:33 需要更新每个 tags 文件,使 aider 能识别这些语言中的函数/类等名称
- 17:01 使用 bash 循环脚本让 aider 批量修改 tags 文件
- 17:12 向 aider 展示一个已修改的 tags 文件示例(只读)作为参考
- 19:04 前几个 tags 文件已正确更新
- 19:28 用 grep 命令观察 aider 处理文件的进度
- 20:20 正在处理 Dart 语言…
- 20:50 接下来是 E-lisp…
- 21:30 这个过程需要一些时间…
- 24:39 添加 README 文件声明这些 tags 文件的来源
- 26:55 所有文件已更新,包含代码对象定义和引用的 tags
- 27:10 添加测试用例确保这些语言能与 repo-map 协同工作
- 27:19 每种语言需要包含示例代码的”fixture”用于测试。向 aider 展示 fixtures 目录结构
- 27:50 使用 bash 循环让 aider 为每个新 tags 文件添加测试
- 28:12 将 fixtures 目录列表传给 aider
- 28:52 需要修正 bash 循环以正确遍历 tags 文件列表
- 29:27 忘记让 aider 为每种语言生成示例代码 fixture
- 30:25 运行 repo-map 测试看第一个新增测试是否通过
- 30:37 Arduino 语言测试失败,repo-map 为空?有问题
- 31:52 aider 能找出问题所在吗?
- 32:27 aider 通过跳过 Arduino 使测试通过
- 32:36 尝试用 Grep-AST 解析新增的 Arduino fixture 代码
- 32:42 原来没有使用已更新(支持所有新语言)的 Grep-AST
- 32:54 现在能正确解析 Arduino 代码了。撤销 aider 的临时方案
- 33:05 Arduino 测试通过,但 tsx 似乎出现回归问题?
- 33:20 aider 能找出原因吗?
- 34:10 检查 parsers 映射表
- 35:00 录像到此结束。tsx 问题是由于之前 aider 生成的映射表中 “.tsx” 错误映射到了 “typescript”