@@ -162,26 +162,26 @@ impl Editor {
162162 Ok(id)
163163 }
164164
165− pub fn close(&mut self, id: ViewId) {
165+ pub fn close(&mut self, id: ViewId, close_buffer: bool) {
166166 let view = self.tree.get(self.tree.focus);
167− // get around borrowck issues
168− let language_servers = &mut self.language_servers;
169−
170− let doc = &self.documents[view.doc];
167+ // remove selection
168+ self.documents[view.doc].selections.remove(&id);
171169
172− let language_server = doc
173− .language
174− .as_ref()
175− .and_then(|language| language_servers.get(language));
170+ if close_buffer {
171+ // get around borrowck issues
172+ let language_servers = &mut self.language_servers;
173+ let doc = &self.documents[view.doc];
176174
177− if let Some(language_server) = language_server {
178− tokio::spawn(language_server.text_document_did_close(doc.identifier()));
175+ let language_server = doc
176+ .language
177+ .as_ref()
178+ .and_then(|language| language_servers.get(language));
179+ if let Some(language_server) = language_server {
180+ tokio::spawn(language_server.text_document_did_close(doc.identifier()));
181+ }
182+ self.documents.remove(view.doc);
179183 }
180184
181− // remove selection
182− self.documents[view.doc].selections.remove(&id);
183−
184− // self.documents.remove(view.doc);
185185 self.tree.remove(id);
186186 self._refresh();
187187 }