mirror of
https://github.com/denoland/deno.git
synced 2025-01-03 04:48:52 -05:00
chore: use lsp to get parent process id (#11083)
Removes the previously added internal `--parent-pid` flag. This solution is better.
This commit is contained in:
parent
02f7a52235
commit
477273085f
4 changed files with 13 additions and 52 deletions
47
cli/flags.rs
47
cli/flags.rs
|
@ -84,9 +84,7 @@ pub enum DenoSubcommand {
|
||||||
root: Option<PathBuf>,
|
root: Option<PathBuf>,
|
||||||
force: bool,
|
force: bool,
|
||||||
},
|
},
|
||||||
Lsp {
|
Lsp,
|
||||||
parent_pid: Option<u32>,
|
|
||||||
},
|
|
||||||
Lint {
|
Lint {
|
||||||
files: Vec<PathBuf>,
|
files: Vec<PathBuf>,
|
||||||
ignore: Vec<PathBuf>,
|
ignore: Vec<PathBuf>,
|
||||||
|
@ -878,16 +876,6 @@ go-to-definition support and automatic code formatting.
|
||||||
|
|
||||||
How to connect various editors and IDEs to 'deno lsp':
|
How to connect various editors and IDEs to 'deno lsp':
|
||||||
https://deno.land/manual/getting_started/setup_your_environment#editors-and-ides")
|
https://deno.land/manual/getting_started/setup_your_environment#editors-and-ides")
|
||||||
.arg(
|
|
||||||
Arg::with_name("parent-pid")
|
|
||||||
.long("parent-pid")
|
|
||||||
.help("The parent process id to periodically check for the existence of or exit")
|
|
||||||
.takes_value(true)
|
|
||||||
.validator(|val: String| match val.parse::<usize>() {
|
|
||||||
Ok(_) => Ok(()),
|
|
||||||
Err(_) => Err("parent-pid should be a number".to_string()),
|
|
||||||
}),
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fn lint_subcommand<'a, 'b>() -> App<'a, 'b> {
|
fn lint_subcommand<'a, 'b>() -> App<'a, 'b> {
|
||||||
|
@ -1633,11 +1621,8 @@ fn install_parse(flags: &mut Flags, matches: &clap::ArgMatches) {
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
fn lsp_parse(flags: &mut Flags, matches: &clap::ArgMatches) {
|
fn lsp_parse(flags: &mut Flags, _matches: &clap::ArgMatches) {
|
||||||
let parent_pid = matches
|
flags.subcommand = DenoSubcommand::Lsp;
|
||||||
.value_of("parent-pid")
|
|
||||||
.map(|val| val.parse().unwrap());
|
|
||||||
flags.subcommand = DenoSubcommand::Lsp { parent_pid };
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fn lint_parse(flags: &mut Flags, matches: &clap::ArgMatches) {
|
fn lint_parse(flags: &mut Flags, matches: &clap::ArgMatches) {
|
||||||
|
@ -2317,32 +2302,6 @@ mod tests {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
|
||||||
fn lsp() {
|
|
||||||
let r = flags_from_vec(svec!["deno", "lsp"]);
|
|
||||||
assert_eq!(
|
|
||||||
r.unwrap(),
|
|
||||||
Flags {
|
|
||||||
subcommand: DenoSubcommand::Lsp { parent_pid: None },
|
|
||||||
..Flags::default()
|
|
||||||
}
|
|
||||||
);
|
|
||||||
|
|
||||||
let r = flags_from_vec(svec!["deno", "lsp", "--parent-pid", "5"]);
|
|
||||||
assert_eq!(
|
|
||||||
r.unwrap(),
|
|
||||||
Flags {
|
|
||||||
subcommand: DenoSubcommand::Lsp {
|
|
||||||
parent_pid: Some(5),
|
|
||||||
},
|
|
||||||
..Flags::default()
|
|
||||||
}
|
|
||||||
);
|
|
||||||
|
|
||||||
let r = flags_from_vec(svec!["deno", "lsp", "--parent-pid", "invalid-arg"]);
|
|
||||||
assert!(r.is_err());
|
|
||||||
}
|
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn lint() {
|
fn lint() {
|
||||||
let r = flags_from_vec(svec!["deno", "lint", "script_1.ts", "script_2.ts"]);
|
let r = flags_from_vec(svec!["deno", "lint", "script_1.ts", "script_2.ts"]);
|
||||||
|
|
|
@ -39,6 +39,7 @@ use super::diagnostics::DiagnosticSource;
|
||||||
use super::documents::DocumentCache;
|
use super::documents::DocumentCache;
|
||||||
use super::documents::LanguageId;
|
use super::documents::LanguageId;
|
||||||
use super::lsp_custom;
|
use super::lsp_custom;
|
||||||
|
use super::parent_process_checker;
|
||||||
use super::performance::Performance;
|
use super::performance::Performance;
|
||||||
use super::registries;
|
use super::registries;
|
||||||
use super::sources;
|
use super::sources;
|
||||||
|
@ -530,6 +531,11 @@ impl Inner {
|
||||||
info!("Starting Deno language server...");
|
info!("Starting Deno language server...");
|
||||||
let mark = self.performance.mark("initialize", Some(¶ms));
|
let mark = self.performance.mark("initialize", Some(¶ms));
|
||||||
|
|
||||||
|
// exit this process when the parent is lost
|
||||||
|
if let Some(parent_pid) = params.process_id {
|
||||||
|
parent_process_checker::start(parent_pid)
|
||||||
|
}
|
||||||
|
|
||||||
let capabilities = capabilities::server_capabilities(¶ms.capabilities);
|
let capabilities = capabilities::server_capabilities(¶ms.capabilities);
|
||||||
|
|
||||||
let version = format!(
|
let version = format!(
|
||||||
|
|
|
@ -23,14 +23,10 @@ mod text;
|
||||||
mod tsc;
|
mod tsc;
|
||||||
mod urls;
|
mod urls;
|
||||||
|
|
||||||
pub async fn start(parent_pid: Option<u32>) -> Result<(), AnyError> {
|
pub async fn start() -> Result<(), AnyError> {
|
||||||
let stdin = tokio::io::stdin();
|
let stdin = tokio::io::stdin();
|
||||||
let stdout = tokio::io::stdout();
|
let stdout = tokio::io::stdout();
|
||||||
|
|
||||||
if let Some(parent_pid) = parent_pid {
|
|
||||||
parent_process_checker::start(parent_pid);
|
|
||||||
}
|
|
||||||
|
|
||||||
let (service, messages) =
|
let (service, messages) =
|
||||||
LspService::new(language_server::LanguageServer::new);
|
LspService::new(language_server::LanguageServer::new);
|
||||||
Server::new(stdin, stdout)
|
Server::new(stdin, stdout)
|
||||||
|
|
|
@ -467,8 +467,8 @@ async fn install_command(
|
||||||
tools::installer::install(flags, &module_url, args, name, root, force)
|
tools::installer::install(flags, &module_url, args, name, root, force)
|
||||||
}
|
}
|
||||||
|
|
||||||
async fn lsp_command(parent_pid: Option<u32>) -> Result<(), AnyError> {
|
async fn lsp_command() -> Result<(), AnyError> {
|
||||||
lsp::start(parent_pid).await
|
lsp::start().await
|
||||||
}
|
}
|
||||||
|
|
||||||
async fn lint_command(
|
async fn lint_command(
|
||||||
|
@ -1295,7 +1295,7 @@ fn get_subcommand(
|
||||||
} => {
|
} => {
|
||||||
install_command(flags, module_url, args, name, root, force).boxed_local()
|
install_command(flags, module_url, args, name, root, force).boxed_local()
|
||||||
}
|
}
|
||||||
DenoSubcommand::Lsp { parent_pid } => lsp_command(parent_pid).boxed_local(),
|
DenoSubcommand::Lsp => lsp_command().boxed_local(),
|
||||||
DenoSubcommand::Lint {
|
DenoSubcommand::Lint {
|
||||||
files,
|
files,
|
||||||
rules,
|
rules,
|
||||||
|
|
Loading…
Reference in a new issue