From c1f2a14453c7621c22b0e4074a9feddac1a62b74 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Bla=C5=BE=20Hrastnik?= <blaz@mxxn.io>
Date: Mon, 29 Mar 2021 15:22:43 +0900
Subject: [PATCH] view: document.rs cleanup

---
 helix-view/src/document.rs | 19 +++++++++----------
 helix-view/src/editor.rs   |  5 +++++
 2 files changed, 14 insertions(+), 10 deletions(-)

diff --git a/helix-view/src/document.rs b/helix-view/src/document.rs
index 231c10bc..abc829c0 100644
--- a/helix-view/src/document.rs
+++ b/helix-view/src/document.rs
@@ -1,4 +1,4 @@
-use anyhow::Error;
+use anyhow::{Context, Error};
 use std::future::Future;
 use std::path::{Path, PathBuf};
 use std::sync::Arc;
@@ -90,7 +90,8 @@ impl Document {
         use std::{env, fs::File, io::BufReader};
         let _current_dir = env::current_dir()?;
 
-        let doc = Rope::from_reader(BufReader::new(File::open(path.clone())?))?;
+        let file = File::open(path.clone()).context(format!("unable to open {:?}", path))?;
+        let doc = Rope::from_reader(BufReader::new(file))?;
 
         // TODO: create if not found
 
@@ -183,7 +184,7 @@ impl Document {
         let success = transaction.apply(&mut self.state);
 
         if !transaction.changes().is_empty() {
-            // TODO: self.version += 1;?
+            self.version += 1;
 
             // update tree-sitter syntax tree
             if let Some(syntax) = &mut self.syntax {
@@ -193,7 +194,11 @@ impl Document {
                     .unwrap();
             }
 
-            // TODO: map state.diagnostics over changes::map_pos too
+            // if let Some(diagnostics) = &mut self.diagnostics {
+            //     for diagnostic in diagnostics {
+            //         // TODO: map state.diagnostics over changes::map_pos too
+            //     }
+            // }
 
             // emit lsp notification
             if let Some(language_server) = &self.language_server {
@@ -230,7 +235,6 @@ impl Document {
 
     pub fn undo(&mut self) -> bool {
         if let Some(transaction) = self.history.undo() {
-            self.version += 1;
             let success = self._apply(&transaction);
 
             // reset changeset to fix len
@@ -243,8 +247,6 @@ impl Document {
 
     pub fn redo(&mut self) -> bool {
         if let Some(transaction) = self.history.redo() {
-            self.version += 1;
-
             let success = self._apply(&transaction);
 
             // reset changeset to fix len
@@ -266,9 +268,6 @@ impl Document {
         // annotations either add a new layer or compose into the previous one.
         let transaction = Transaction::from(changes).with_selection(self.selection().clone());
 
-        // increment document version
-        self.version += 1;
-
         // HAXX: we need to reconstruct the state as it was before the changes..
         let old_state = self.old_state.take().expect("no old_state available");
 
diff --git a/helix-view/src/editor.rs b/helix-view/src/editor.rs
index 374eddfd..f062b55d 100644
--- a/helix-view/src/editor.rs
+++ b/helix-view/src/editor.rs
@@ -174,6 +174,11 @@ impl Editor {
         self.documents.iter().map(|(_id, doc)| doc)
     }
 
+    // pub fn current_document(&self) -> Document {
+    //     let id = self.view().doc;
+    //     let doc = &mut editor.documents[id];
+    // }
+
     pub fn cursor_position(&self) -> Option<helix_core::Position> {
         const OFFSET: u16 = 7; // 1 diagnostic + 5 linenr + 1 gutter
         let view = self.view();