fix: pass vec with args for lsp server
This commit is contained in:
parent
62298f07ba
commit
66579787b8
1 changed files with 21 additions and 2 deletions
23
src/main.rs
23
src/main.rs
|
@ -16,18 +16,32 @@ struct State {}
|
|||
const LANGUAGE_ID: &str = "language_id";
|
||||
|
||||
fn initialize(params: InitializeParams) -> Result<()> {
|
||||
let mut server_args = vec![];
|
||||
|
||||
// Check for user specified LSP server path
|
||||
// ```
|
||||
// [lapce-plugin-name.lsp]
|
||||
// serverPath = "[path or filename]"
|
||||
// serverArgs = ["--arg1", "--arg2"]
|
||||
// ```
|
||||
if let Some(options) = params.initialization_options.as_ref() {
|
||||
if let Some(lsp) = options.get("lsp") {
|
||||
if let Some(args) = lsp.get("serverArgs") {
|
||||
if let Some(args) = args.as_array() {
|
||||
for arg in args {
|
||||
if let Some(arg) = arg.as_str() {
|
||||
server_args.push(arg.to_string());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if let Some(server_path) = lsp.get("serverPath") {
|
||||
if let Some(server_path) = server_path.as_str() {
|
||||
if !server_path.is_empty() {
|
||||
PLUGIN_RPC.start_lsp(
|
||||
Url::parse(&format!("urn:{}", server_path))?,
|
||||
server_args,
|
||||
LANGUAGE_ID,
|
||||
params.initialization_options,
|
||||
);
|
||||
|
@ -67,11 +81,16 @@ fn initialize(params: InitializeParams) -> Result<()> {
|
|||
|
||||
// Plugin working directory
|
||||
let volt_uri = VoltEnvironment::uri()?;
|
||||
let exec_path = Url::parse(&volt_uri)?.join("[filename]")?;
|
||||
let server_path = Url::parse(&volt_uri)?.join("[filename]")?;
|
||||
|
||||
// Available language IDs
|
||||
// https://github.com/lapce/lapce/blob/HEAD/lapce-proxy/src/buffer.rs#L173
|
||||
PLUGIN_RPC.start_lsp(exec_path, LANGUAGE_ID, params.initialization_options);
|
||||
PLUGIN_RPC.start_lsp(
|
||||
server_path,
|
||||
server_args,
|
||||
LANGUAGE_ID,
|
||||
params.initialization_options,
|
||||
);
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue