fix: update plugin to use DocumentSelector

This commit is contained in:
Jakub Panek 2022-09-18 08:43:01 +02:00
parent 0e7976de91
commit 066ab59016

View file

@ -1,7 +1,7 @@
use anyhow::Result; use anyhow::Result;
use lapce_plugin::{ use lapce_plugin::{
psp_types::{ psp_types::{
lsp_types::{request::Initialize, InitializeParams, Url}, lsp_types::{request::Initialize, DocumentFilter, DocumentSelector, InitializeParams, Url},
Request, Request,
}, },
register_plugin, LapcePlugin, VoltEnvironment, PLUGIN_RPC, register_plugin, LapcePlugin, VoltEnvironment, PLUGIN_RPC,
@ -13,9 +13,15 @@ struct State {}
register_plugin!(State); register_plugin!(State);
const LANGUAGE_ID: &str = "language_id";
fn initialize(params: InitializeParams) -> Result<()> { fn initialize(params: InitializeParams) -> Result<()> {
let document_selector: DocumentSelector = vec![DocumentFilter {
// lsp language id
language: Some(String::from("language_id")),
// glob pattern
pattern: Some(String::from("**/*.{ext1,ext2}")),
// like file:
scheme: None,
}];
let mut server_args = vec![]; let mut server_args = vec![];
// Check for user specified LSP server path // Check for user specified LSP server path
@ -39,10 +45,11 @@ fn initialize(params: InitializeParams) -> Result<()> {
if let Some(server_path) = lsp.get("serverPath") { if let Some(server_path) = lsp.get("serverPath") {
if let Some(server_path) = server_path.as_str() { if let Some(server_path) = server_path.as_str() {
if !server_path.is_empty() { if !server_path.is_empty() {
let server_uri = Url::parse(&format!("urn:{}", server_path))?;
PLUGIN_RPC.start_lsp( PLUGIN_RPC.start_lsp(
Url::parse(&format!("urn:{}", server_path))?, server_uri,
server_args, server_args,
LANGUAGE_ID, document_selector,
params.initialization_options, params.initialization_options,
); );
return Ok(()); return Ok(());
@ -83,12 +90,15 @@ fn initialize(params: InitializeParams) -> Result<()> {
let volt_uri = VoltEnvironment::uri()?; let volt_uri = VoltEnvironment::uri()?;
let server_path = Url::parse(&volt_uri)?.join("[filename]")?; let server_path = Url::parse(&volt_uri)?.join("[filename]")?;
// if you want to use server from PATH
// let server_path = Url::parse(&format!("urn:{filename}"))?;
// Available language IDs // Available language IDs
// https://github.com/lapce/lapce/blob/HEAD/lapce-proxy/src/buffer.rs#L173 // https://github.com/lapce/lapce/blob/HEAD/lapce-proxy/src/buffer.rs#L173
PLUGIN_RPC.start_lsp( PLUGIN_RPC.start_lsp(
server_path, server_path,
server_args, server_args,
LANGUAGE_ID, document_selector,
params.initialization_options, params.initialization_options,
); );