@@ -51,46 +51,7 @@ impl Editor {
54− pub fn open(&mut self, path: PathBuf, action: Action) -> Result<DocumentId, Error> {
54+ fn _open(&mut self, id: DocumentId, action: Action) -> Result<DocumentId, Error> {
57− .find(|doc| doc.path() == Some(&path))
60− let id = if let Some(id) = id {
63− let mut doc = Document::load(path, self.theme.scopes())?;
65− // try to find a language server based on the language name
66− let language_server = doc
69− .and_then(|language| self.language_servers.get(language, self.executor));
71− if let Some(language_server) = language_server {
72− doc.set_language_server(Some(language_server.clone()));
74− let language_id = doc
76− .and_then(|s| s.split('.').last()) // source.rust
77− .map(ToOwned::to_owned)
78− .unwrap_or_default();
80− smol::block_on(language_server.text_document_did_open(
89− let id = self.documents.insert(doc);
90− self.documents[id].id = id;
94 use crate::tree::Layout;
55 use crate::tree::Layout;
95 use helix_core::Selection;
56 use helix_core::Selection;
96 match action {
57 match action {
@@ -134,6 +95,57 @@ impl Editor {
98+ pub fn new_file(&mut self, action: Action) -> Result<DocumentId, Error> {
99+ use helix_core::Rope;
100+ let doc = Document::new(Rope::from("\n"));
101+ let id = self.documents.insert(doc);
102+ self.documents[id].id = id;
103+ self._open(id, action)
106+ pub fn open(&mut self, path: PathBuf, action: Action) -> Result<DocumentId, Error> {
109+ .find(|doc| doc.path() == Some(&path))
112+ let id = if let Some(id) = id {
115+ let mut doc = Document::load(path, self.theme.scopes())?;
117+ // try to find a language server based on the language name
118+ let language_server = doc
121+ .and_then(|language| self.language_servers.get(language, self.executor));
123+ if let Some(language_server) = language_server {
124+ doc.set_language_server(Some(language_server.clone()));
126+ let language_id = doc
128+ .and_then(|s| s.split('.').last()) // source.rust
129+ .map(ToOwned::to_owned)
130+ .unwrap_or_default();
132+ smol::block_on(language_server.text_document_did_open(
141+ let id = self.documents.insert(doc);
142+ self.documents[id].id = id;
146+ self._open(id, action)
137 pub fn close(&mut self, id: ViewId) {
149 pub fn close(&mut self, id: ViewId) {
138 let view = self.tree.get(self.tree.focus);
150 let view = self.tree.get(self.tree.focus);
139 // get around borrowck issues
151 // get around borrowck issues