Start language servers based on buffers' languages

Co-Authored-By: Nathan Sobo <nathan@zed.dev>
This commit is contained in:
Max Brunsfeld
2021-11-02 17:41:01 -07:00
co-authored by Nathan Sobo
parent a66b81d60a
commit 8d3f42de52
12 changed files with 197 additions and 107 deletions
+10 -4
View File
@@ -127,10 +127,16 @@ impl ItemView for Editor {
cx.spawn(|buffer, mut cx| async move {
save_as.await.map(|new_file| {
let (language, language_server) = worktree.read_with(&cx, |worktree, _| {
let language = worktree.languages().select_language(new_file.full_path());
let language_server = worktree.language_server();
(language.cloned(), language_server.cloned())
let (language, language_server) = worktree.update(&mut cx, |worktree, cx| {
let worktree = worktree.as_local_mut().unwrap();
let language = worktree
.languages()
.select_language(new_file.full_path())
.cloned();
let language_server = language
.as_ref()
.and_then(|language| worktree.ensure_language_server(language, cx));
(language, language_server.clone())
});
buffer.update(&mut cx, |buffer, cx| {