fix: update plugin to use DocumentSelector
This commit is contained in:
parent
0e7976de91
commit
066ab59016
1 changed files with 16 additions and 6 deletions
22
src/main.rs
22
src/main.rs
|
@ -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,
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue