@@ -48,7 +48,7 @@ impl Editor {
49 let language_id = doc
49 let language_id = doc
50 .language()
50 .language()
51− .and_then(|s| s.split(".").last()) // source.rust
51+ .and_then(|s| s.split('.').last()) // source.rust
52 .map(ToOwned::to_owned)
52 .map(ToOwned::to_owned)
53 .unwrap_or_default();
53 .unwrap_or_default();
@@ -66,7 +66,21 @@ impl Editor {
69− pub fn close(&mut self, id: Key) {
69+ pub fn close(&mut self, id: Key, executor: &smol::Executor) {
70+ let view = self.tree.get(self.tree.focus);
71+ // get around borrowck issues
72+ let language_servers = &mut self.language_servers;
76+ let language_server = doc
79+ .and_then(|language| language_servers.get(language, &executor));
81+ if let Some(language_server) = language_server {
82+ smol::block_on(language_server.text_document_did_close(doc.identifier())).unwrap();
70 self.tree.remove(id)
84 self.tree.remove(id)