mirror of
https://github.com/denoland/deno.git
synced 2025-01-06 22:35:51 -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
74e59abc5b
commit
99dc674a36
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>,
|
||||
force: bool,
|
||||
},
|
||||
Lsp {
|
||||
parent_pid: Option<u32>,
|
||||
},
|
||||
Lsp,
|
||||
Lint {
|
||||
files: 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':
|
||||
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> {
|
||||
|
@ -1633,11 +1621,8 @@ fn install_parse(flags: &mut Flags, matches: &clap::ArgMatches) {
|
|||
};
|
||||
}
|
||||
|
||||
fn lsp_parse(flags: &mut Flags, matches: &clap::ArgMatches) {
|
||||
let parent_pid = matches
|
||||
.value_of("parent-pid")
|
||||
.map(|val| val.parse().unwrap());
|
||||
flags.subcommand = DenoSubcommand::Lsp { parent_pid };
|
||||
fn lsp_parse(flags: &mut Flags, _matches: &clap::ArgMatches) {
|
||||
flags.subcommand = DenoSubcommand::Lsp;
|
||||
}
|
||||
|
||||
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]
|
||||
fn lint() {
|
||||
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::LanguageId;
|
||||
use super::lsp_custom;
|
||||
use super::parent_process_checker;
|
||||
use super::performance::Performance;
|
||||
use super::registries;
|
||||
use super::sources;
|
||||
|
@ -523,6 +524,11 @@ impl Inner {
|
|||
info!("Starting Deno language server...");
|
||||
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 version = format!(
|
||||
|
|
|
@ -23,14 +23,10 @@ mod text;
|
|||
mod tsc;
|
||||
mod urls;
|
||||
|
||||
pub async fn start(parent_pid: Option<u32>) -> Result<(), AnyError> {
|
||||
pub async fn start() -> Result<(), AnyError> {
|
||||
let stdin = tokio::io::stdin();
|
||||
let stdout = tokio::io::stdout();
|
||||
|
||||
if let Some(parent_pid) = parent_pid {
|
||||
parent_process_checker::start(parent_pid);
|
||||
}
|
||||
|
||||
let (service, messages) =
|
||||
LspService::new(language_server::LanguageServer::new);
|
||||
Server::new(stdin, stdout)
|
||||
|
|
|
@ -470,8 +470,8 @@ async fn install_command(
|
|||
tools::installer::install(flags, &module_url, args, name, root, force)
|
||||
}
|
||||
|
||||
async fn lsp_command(parent_pid: Option<u32>) -> Result<(), AnyError> {
|
||||
lsp::start(parent_pid).await
|
||||
async fn lsp_command() -> Result<(), AnyError> {
|
||||
lsp::start().await
|
||||
}
|
||||
|
||||
async fn lint_command(
|
||||
|
@ -1265,7 +1265,7 @@ fn get_subcommand(
|
|||
} => {
|
||||
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 {
|
||||
files,
|
||||
rules,
|
||||
|
|
Loading…
Reference in a new issue