Initial impl of NodeRuntime w/JSON borked and a deadlock :)

Co-Authored-By: Antonio Scandurra <me@as-cii.com>
This commit is contained in:
Julia 2023-03-26 23:59:49 -04:00
parent 1a2e509e35
commit c72d33e029
20 changed files with 435 additions and 375 deletions

View file

@ -105,10 +105,10 @@ struct Error {
}
impl LanguageServer {
pub fn new(
pub fn new<T: AsRef<std::ffi::OsStr>>(
server_id: usize,
server_name: Option<String>,
mut command: process::Command,
binary_path: &Path,
arguments: &[T],
root_path: &Path,
cx: AsyncAppContext,
) -> Result<Self> {
@ -118,13 +118,14 @@ impl LanguageServer {
root_path.parent().unwrap_or_else(|| Path::new("/"))
};
let mut server = dbg!(command
let mut server = process::Command::new(binary_path)
.current_dir(working_dir)
.args(arguments)
.stdin(Stdio::piped())
.stdout(Stdio::piped())
.stderr(Stdio::inherit())
.kill_on_drop(true))
.spawn()?;
.kill_on_drop(true)
.spawn()?;
let stdin = server.stdin.take().unwrap();
let stout = server.stdout.take().unwrap();
@ -147,8 +148,8 @@ impl LanguageServer {
},
);
if let Some(name) = server_name {
server.name = name;
if let Some(name) = binary_path.file_name() {
server.name = name.to_string_lossy().to_string();
}
Ok(server)
}