6 个版本
0.0.6 | 2024年7月24日 |
---|---|
0.0.5 | 2024年5月1日 |
0.0.4 | 2024年2月14日 |
#928 in 开发工具
每月 120 次下载
200KB
5.5K SLoC
Ginko
Ginko是一个设备树源解析器、分析器和语言服务器。该项目的主要目标是使设备树的处理变得简单。例如,对于以下设备树
/dts-v1/;
/ {
pic@10000000 {
phandle = <1>;
interrupt-controller;
reg = <0x10000000 0x100>;
}
};
dtc
生成以下输出
Error: test.dts:9.1-2 syntax error
FATAL ERROR: Unable to parse input tree
而 ginko
生成以下输出
--> test.dts:8:6
|
8 | }
| ^ Expected ';'
目前,命令行工具 ginko
仅检查设备树源。它目前不能生成设备树二进制文件,也不能输出格式化后的设备树源文件。
项目
ginko
安装和使用
要使用Rust工具链安装ginko,只需调用
cargo install ginko
此外,还有适用于x86 Linux和x86 Windows的预构建的二进制文件。只需下载并将可执行文件添加到路径上的目录,即可运行工具。还有适用于在苹果硅上运行的macOS的预构建二进制文件,但这些文件未签名且未经苹果验证,因此安装更为繁琐。有关更多信息,请参阅此处。
运行
ginko <path/to/file.dts>
在设备树源文件上运行ginko并检查内容。
目标
- 完整的设备树源解析器
- 对设备树使用的错误容忍解析
- 向用户提供可读和有帮助的反馈
不足之处
该项目处于初级阶段。因此,一些功能尚未支持
- C样式包含(即
#include "some_header.h"
) - 表达式(括号表达式被忽略且不会引发错误)
- 二进制设备树格式
- 稳定的API
ginko_ls
ginko_ls旨在成为功能齐全的设备树语言服务器。语言服务器可用于许多编辑器,如Visual Studio Code、Emacs或Vim。
功能
- 大纲
- 转到定义(节点)
- 悬停
计划功能
- 增量分析
- 完成
- 格式化
编辑器配置
Neovim
您可以手动安装 ginko_ls
,或者可以使用 :Mason
进行安装。
使用 nvim-lspconfig
配置服务器,配置名称为 ginko_ls
。
为了配置它,只需将以下内容添加到您的 init.lua
中
lspconfig = require('lspconfig')
lspconfig['ginko_ls'].setup({
on_attach = on_attach,
capabilities = capabilities
})
这假设您已经定义了 on_attach
和 capabilities
,有关更多信息,请参阅 nvim-lspconfig
文档。
VSCode
使用 Ginko VSCode
Helix
如果您想使用 Helix Editor,您可以在 languages.toml
中修改 devicetree
语言定义。下面是一个示例。
[[language]]
name = "devicetree"
language-servers = ["ginko_ls"]
[language-server.ginko_ls]
command = "ginko_ls"
config = { provideFormatter = false }
所有形式的贡献,无论是通过 Pull Requests 还是 Issues,都受到高度赞赏和欢迎。
依赖关系
~9–17MB
~237K SLoC