diff --git a/crates/language/src/language.rs b/crates/language/src/language.rs index bab8d90f7c..c5d546298f 100644 --- a/crates/language/src/language.rs +++ b/crates/language/src/language.rs @@ -14,7 +14,7 @@ use futures::{ future::{BoxFuture, Shared}, FutureExt, TryFutureExt, }; -use gpui::{MutableAppContext, Task}; +use gpui::{AsyncAppContext, MutableAppContext, Task}; use highlight_map::HighlightMap; use lazy_static::lazy_static; use parking_lot::{Mutex, RwLock}; @@ -339,8 +339,9 @@ impl LanguageRegistry { Self::new(Task::ready(())) } - pub fn add(&self, language: Arc) { + pub fn add(&self, language: Arc, theme: &SyntaxTheme) { self.languages.write().push(language.clone()); + language.set_theme(theme); *self.subscription.write().0.borrow_mut() = (); } @@ -387,11 +388,14 @@ impl LanguageRegistry { .read() .iter() .find(|language| { - language - .config - .path_suffixes - .iter() - .any(|suffix| dbg!(path_suffixes.contains(&Some(dbg!(suffix.as_str()))))) + language.config.path_suffixes.iter().any(|suffix| { + if path_suffixes.contains(&Some(suffix.as_str())) { + dbg!(format!("found {}", suffix)); + true + } else { + false + } + }) }) .cloned() } @@ -713,6 +717,7 @@ impl Language { if let Some(highlights_query) = &grammar.highlights_query { *grammar.highlight_map.lock() = HighlightMap::new(highlights_query.capture_names(), theme); + dbg!("highlighting"); } } } diff --git a/crates/project/src/project.rs b/crates/project/src/project.rs index 96e33de17e..511a5bbf6d 100644 --- a/crates/project/src/project.rs +++ b/crates/project/src/project.rs @@ -2028,7 +2028,7 @@ impl Project { ) -> Task<()> { let mut subscription = languages.subscribe(); cx.spawn_weak(|project, mut cx| async move { - while let Some(_) = subscription.next().await { + while let Some(()) = subscription.next().await { if let Some(project) = project.upgrade(&cx) { project.update(&mut cx, |project, cx| { let mut buffers_without_language = Vec::new(); @@ -2041,8 +2041,10 @@ impl Project { } for buffer in buffers_without_language { + dbg!("notified that new language was added"); project.assign_language_to_buffer(&buffer, cx); project.register_buffer_with_language_server(&buffer, cx); + dbg!(buffer.read(cx).language().map(|x| x.name())); } }); } @@ -2055,6 +2057,7 @@ impl Project { buffer: &ModelHandle, cx: &mut ModelContext, ) -> Option<()> { + dbg!("assigning language to buffer"); // If the buffer has a language, set it and start the language server if we haven't already. let full_path = buffer.read(cx).file()?.full_path(cx); let language = self.languages.select_language(&full_path)?; @@ -2078,6 +2081,7 @@ impl Project { language: Arc, cx: &mut ModelContext, ) { + dbg!(format!("starting lsp for {:?}", language.name())); if !cx .global::() .enable_language_server(Some(&language.name())) @@ -2343,6 +2347,8 @@ impl Project { server_id }); + + dbg!("Done starting lsp"); } // Returns a list of all of the worktrees which no longer have a language server and the root path @@ -3273,8 +3279,8 @@ impl Project { position: T, cx: &mut ModelContext, ) -> Task>> { + // dbg!("getting highlights"); let position = position.to_point_utf16(buffer.read(cx)); - self.request_lsp(buffer.clone(), GetDocumentHighlights { position }, cx) } diff --git a/crates/zed/src/main.rs b/crates/zed/src/main.rs index 4fceaed2d8..71fc253453 100644 --- a/crates/zed/src/main.rs +++ b/crates/zed/src/main.rs @@ -226,6 +226,7 @@ fn main() { let languages = languages.clone(); |cx| async move { init_languages.await; + dbg!("all languages initialized, starting setting highlighting"); cx.read(|cx| languages.set_theme(&cx.global::().theme.editor.syntax)); } }) diff --git a/plugins/json_language/src/lib.rs b/plugins/json_language/src/lib.rs index 9809085547..fe6d268ac9 100644 --- a/plugins/json_language/src/lib.rs +++ b/plugins/json_language/src/lib.rs @@ -27,13 +27,8 @@ pub fn fetch_latest_server_version() -> Option { versions: Vec, } - // TODO: command returns error code let output = command("npm info vscode-json-languageserver --json").expect("could not run command"); - // if !output.is_ok() { - // return None; - // } - let output = String::from_utf8(output).unwrap(); let mut info: NpmInfo = serde_json::from_str(&output).ok()?;