pherrymason/c3-lsp · 文件 下载 ZIP
文件最后提交记录最后更新时间
README.md
以下内容由 AI 翻译,如有问题请点此提交 issue 反馈
C3 语言的语言服务器。
C3 语言](https://github.com/c3lang/c3c) 的 WIP LSP
目录
功能
支持的语言服务器功能:
- 补全
- 转到定义
- 转到声明
- 悬停
- 签名帮助
此外,LSP 能够解析标准库符号信息(针对支持的 C3c 版本),从而在补全和悬停功能中使用。
用法
在文本编辑器 / IDE 中使用
通常,您会使用编辑器的插件,该插件会自动使用所需的参数运行服务器。
某些插件/扩展可能已经包含二进制文件,请查阅其文档。
如果未包含,它们可能允许您指定 lsp 二进制文件的路径,因此请下载 lsp 二进制文件并配置插件/扩展指向其位置。
在 wiki 中阅读更多。
独立使用
只需运行 c3lsp 即可启动服务器。
它支持以下选项:
- help: 显示接受的选项。
- send-reports: 如果启用(默认禁用),将向 Sentry 发送 crash 报告,以便轻松调试错误。
- lang-version: 使用它来指定特定的 c3 语言版本。默认情况下,
c3lsp将选择最后支持的版本。
安装
该项目使用 Golang 编写,因此理论上可以构建到 Golang 支持的任何操作系统。
以下操作系统的预编译二进制文件可用:Linux、Windows 11 和 MacOs。
在发布页面]查找最新构建的二进制文件
你也可以从源码构建:
- 下载并安装 golang: https://go.dev/
- 克隆此仓库
- 运行
make build: 这将在server/bin文件夹中创建c3lsp。
项目目标
编写语言服务器协议 (LSP) 可能是一项复杂且具有挑战性的任务。为了管理这种复杂性,我们最初的重点是覆盖典型 LSP 实现的基本但必要的需求。
当前目标
当前的主要目标,是覆盖最核心的功能,即扫描项目中源代码内使用的符号的精确信息。
然后,IDE 可以利用这些信息来启用以下功能:
- 转到定义: 导航到符号定义的确切位置。
- 悬停信息: 在悬停于符号上时显示有关符号的详细信息。
- 自动补全: 在输入时建议相关的符号和代码补全。
这些功能将通过提供准确且高效的代码导航和辅助,显著改善开发体验。
未来计划
一旦这些初始目标完成,我们将探索可以添加到项目中的额外功能,进一步增强其能力和实用性。
有用的链接:
- LSP 规范:https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/
- treesitter
- C3 treesitter 语法:https://github.com/c3lang/tree-sitter-c3
- 查询文档:https://tree-sitter.github.io/tree-sitter/using-parsers#pattern-matching-with-queries
- 查询:https://emacs-tree-sitter.github.io/syntax-highlighting/queries/
- Tree-sitter - 一种用于编程工具的新解析系统(视频) https://www.thestrangeloop.com/2018/tree-sitter---a-new-parsing-system-for-programming-tools.html