#device-tree #language-server #lsp #dts #command-line-tool

应用 ginko_ls

设备树语言服务器

6 个版本

0.0.6 2024年7月24日
0.0.5 2024年5月1日
0.0.4 2024年2月14日

#928 in 开发工具

Download history 121/week @ 2024-04-30 1/week @ 2024-05-14 5/week @ 2024-05-21 15/week @ 2024-07-02 113/week @ 2024-07-23 7/week @ 2024-07-30

每月 120 次下载

MIT 许可证

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_attachcapabilities,有关更多信息,请参阅 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