本章提供了有关在常见使用场景中设置和使用 Eglot 与编程项目的简明说明。
关于 Eglot 设置的更详细说明,请参见 “Eglot 和 LSP 服务器”。
关于使用 Eglot 的详细描述,请参见 “使用 Eglot”,要了解如何将 Eglot 适应于不太常见的使用模式,请参见 “自定义 Eglot”。
以下是如何在你的编程项目中开始使用 Eglot:
- 选择并安装语言服务器。
Eglot 预先配置了许多流行的语言服务器,请参阅 eglot-server-programs 的值。 如果其中提到的服务器能够满足你想要使用 Eglot 的编程语言的需求,你只需要确保这些服务器已安装在你的系统上。 或者,安装一个或多个你选择的服务器,并按照 设置 LSP 服务器 中的说明将它们添加到 eglot-server-programs 的值中。
- 为项目启用 Eglot。
要开始在项目中使用 Eglot,请在访问项目中任意文件的缓冲区中输入 M-x eglot RET。 这将启动为该缓冲区的编程语言配置的语言服务器,并使 Eglot 开始管理使用相同编程语言的所有项目文件。 Eglot 使用的“项目”概念与 Emacs 一致(参见 GNU Emacs 手册中的项目): 在最简单的情况下,“项目”是你正在编辑的单个文件,但它也可以是单个目录中的所有文件或在某个版本控制系统(如 Git)下的目录树。
另外,你可以从用于编程语言的主要模式钩子中自动启动 Eglot;请参见 [启动 Eglot](#)。
- 使用 Eglot。
Eglot 的大多数功能都集成在 Emacs 功能中,如 ElDoc、Flymake、Xref 和 Imenu。 然而,Eglot 也提供了自己的命令,主要用于通过语言服务器执行任务, 例如 M-x eglot-rename(在整个项目中重命名标识符)、M-x eglot-format(重新格式化和缩进代码)等。 详细的 Eglot 命令列表请参见 Eglot 命令。
- 就是这些!
本章介绍如何根据需要设置 Eglot 以及如何启动它。
为了让 Eglot 发挥作用,首先必须将其与合适的语言服务器结合使用。
通常,这意味着将服务器程序作为 Emacs 的子进程在本地运行(参见 GNU Emacs Lisp 参考手册中的进程),并通过标准输入和输出流与之通信。
语言服务器程序需要单独安装,本手册不再进一步讨论;请参阅你想要安装的特定服务器的文档。
要使用语言服务器,Eglot 必须知道如何启动它以及每个服务器支持哪些编程语言。这些信息由变量 eglot-server-programs 提供。
- 变量:eglot-server-programs
此变量将主模式(major mode)与对应每种主模式的编程语言服务器程序的名称和命令行参数关联起来。 它提供了 Eglot 需要了解的关于你正在编辑的源代码的编程语言的所有信息。
该变量的值是一个关联列表(alist),其元素的形式为 (major-mode . server)。
关联列表中的 major-mode 元素可以是 Emacs 主模式的符号,或者是一个形如 (mode :language-id id) 的列表, 其中 mode 是主模式符号,id 是一个字符串,用于向服务器标识语言 (如果 Eglot 自己不能将 major-mode 转换为服务器所需的语言标识符字符串)。 此外,major-mode 还可以是一个包含多种主模式的列表(以上述形式之一指定) ——这意味着一个关联服务器的运行实例负责处理项目中多种主模式或语言的文件。
关联列表中 server 元素部分可以是以下几种之一: