Configuration
Configuration 请求
从版本 3.6.0 开始
请求从服务器发送到客户端,以从客户端获取配置设置。该请求可以在一次往返中获取多个配置设置。返回的配置设置的顺序对应于传递的 ConfigurationItems
的顺序(例如,响应中的第一项是参数中第一个配置项的结果)。
ConfigurationItem
由要请求的配置节和其他范围 URI 组成。请求的配置部分由服务器定义,不一定需要与客户端使用的配置存储相对应。因此,服务器可能会要求提供配置 cpp.formatterOptions
,但客户端以不同的方式将配置存储在 XML 存储布局中。由客户端进行必要的转换。如果提供了作用域 URI,则客户端应返回作用域为所提供资源的设置。例如,如果客户端使用 EditorConfig
管理其设置,则应为传递的资源 URI 返回配置。如果客户端无法为给定范围提供配置设置,则返回的数组中需要存在 null
。
此拉取模型取代了旧的推送模型,客户端通过事件发出配置更改信号。如果服务器仍需要对配置更改做出反应(因为服务器缓存 workspace/configuration
请求的结果),则服务器应使用注册模式注册空配置更改。
客户端能力(Client capability):
- 属性路径:
workspace.configuration
- 属性类型:
boolean
请求(Request):
- method: "workspace/configuration"
- params:
ConfigurationParams
, 定义如下:
export interface ConfigurationParams {
items: ConfigurationItem[];
}
export interface ConfigurationItem {
/**
* The scope to get the configuration section for.
*/
scopeUri?: URI;
/**
* The configuration section asked for.
*/
section?: string;
}
响应(Response):
- result:
LSPAny[]
- error:
code
和message
,以防在请求期间发生异常。
DidChangeConfiguration 通知
从客户端发送到服务器的通知,以发出配置设置更改的信号。要让客户端发送此通知,则必须动态注册此通知。
客户端能力(Client capability):
- 属性路径:
workspace.didChangeConfiguration
- 属性类型:
DidChangeConfigurationClientCapabilities
, 定义如下:
export interface DidChangeConfigurationClientCapabilities {
/**
* Did change configuration notification supports dynamic registration.
*
* @since 3.6.0 to support the new pull model.
*/
dynamicRegistration?: boolean;
}
注册选项(Registration Options): undefined
,因为只有动态注册了此通知,此通知才会被客户端发送,如果不注册此通知,那么服务器不应该缓存配置设置
通知(Notification):
- method: "workspace/didChangeConfiguration"
- params:
DidChangeConfigurationParams
, 定义如下:
interface DidChangeConfigurationParams {
/**
* The actual changed settings
*/
settings: LSPAny;
}