From 0b1ed8656db35397122c1c2779e31bf86e38c430 Mon Sep 17 00:00:00 2001
From: Kirawi <67773714+kirawi@users.noreply.github.com>
Date: Wed, 14 Jul 2021 22:22:34 -0400
Subject: [PATCH] Fix #442 (#446)

* fix #442

fix #442

fmt

* create Rope from default line ending

* Fix use of encoding in Document::open()
---
 helix-view/src/document.rs | 14 ++++++++------
 1 file changed, 8 insertions(+), 6 deletions(-)

diff --git a/helix-view/src/document.rs b/helix-view/src/document.rs
index a2bd1c41..8fdf7d98 100644
--- a/helix-view/src/document.rs
+++ b/helix-view/src/document.rs
@@ -456,14 +456,16 @@ impl Document {
         theme: Option<&Theme>,
         config_loader: Option<&syntax::Loader>,
     ) -> Result<Self, Error> {
-        if !path.exists() {
-            return Ok(Self::default());
-        }
+        let (mut rope, encoding) = if path.exists() {
+            let mut file =
+                std::fs::File::open(&path).context(format!("unable to open {:?}", path))?;
+            from_reader(&mut file, encoding)?
+        } else {
+            let encoding = encoding.unwrap_or(encoding_rs::UTF_8);
+            (Rope::from(DEFAULT_LINE_ENDING.as_str()), encoding)
+        };
 
-        let mut file = std::fs::File::open(&path).context(format!("unable to open {:?}", path))?;
-        let (mut rope, encoding) = from_reader(&mut file, encoding)?;
         let line_ending = with_line_ending(&mut rope);
-
         let mut doc = Self::from(rope, Some(encoding));
 
         // set the path and try detecting the language