efm-langserver安装与使用指南
efm-langserverGeneral purpose Language Server项目地址:https://gitcode.com/gh_mirrors/ef/efm-langserver
项目目录结构及介绍
efm-langserver 是一个通用的 Language Server 实现,由 mattn
开发并托管在 GitHub 上。其核心在于提供语言服务,如代码补全、格式化、符号查找等,但不直接内置对任何特定语言的支持,要求用户按需手动配置和集成对应的 formatter 和 linter。
项目的基本目录结构通常包括:
- .gitignore:列出 Git 应该忽略的文件或目录。
- LICENSE:记录软件使用的许可证(MIT 许可证)。
- README.md:项目的快速入门指南和基本信息。
- cmd/efm-langserver: 包含了主程序入口,这里是
efm-langserver
的实现所在。 - internal: 内部库和工具,用于项目的内部逻辑实现。
- vendor: 可能存在的第三方依赖包,虽然现代 Go 项目倾向于使用 modules 管理依赖,但从仓库历史来看这可能是旧版管理方式。
- etc: 示例配置或者其他默认配置文件可能存放的位置。
项目的启动文件介绍
主要的启动文件是位于 cmd/efm-langserver/main.go
的 main
函数。这是应用程序的入口点,负责初始化服务器逻辑,监听客户端的请求并相应地处理语言相关的服务。启动时,通过命令行参数或者配置文件指定选项来定制其行为。
用户不会直接编辑这个文件以改变服务器的行为,而是通过配置文件或命令行参数进行配置。
项目的配置文件介绍
配置文件位置
配置文件默认命名为 config.yaml
,它的位置取决于操作系统:
- UNIX/Linux:
$XDG_CONFIG_HOME/efm-langserver/config.yaml
或$HOME/.config/efm-langserver/config.yaml
。 - Windows:
%APPDATA%\efm-langserver\config.yaml
。
配置文件内容
配置文件允许用户设置多种选项来控制 efm-langserver 的行为,例如启用或禁用特定的功能,如文档格式化、范围内的文档格式化、悬停提示、文档符号、代码动作和完成等功能。一个基本的 config.yaml
示例可能包含以下内容:
documents:
globExclude:
- '**/*.swp'
languagedetect:
disable: false
handlers:
textDocument/didOpen:
- applyfmt
initializeParams:
initializationOptions:
documentFormatting: true
documentRangeFormatting: true
hover: true
documentSymbol: true
codeAction: true
completion: true
此配置告知服务器启用多项功能,并定义了一些文件排除规则以及处理文本文档打开事件时的操作。
使用 efm-langserver 前,确保已经安装所需的语言支持工具(如 yapf 对于 Python,Prettier 对于 JavaScript 等),并在配置中正确设定它们的路径或指令,以便 efm-langserver 能够调用这些外部工具进行格式化和其他操作。
通过这种方式,用户可以根据自身需求,灵活配置 efm-langserver,以达到最佳的开发环境集成效果。
efm-langserverGeneral purpose Language Server项目地址:https://gitcode.com/gh_mirrors/ef/efm-langserver