From 58e457a4e1037caf43c17dea93c5321c1ae74103 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Bla=C5=BE=20Hrastnik?= <blaz@mxxn.io>
Date: Sat, 8 Apr 2023 21:50:43 +0900
Subject: [PATCH] Revert "Fix #6605: Remove soft-wrap.enable option wrapping.
 (#6656)"

This caused a bug that would ignore the global config.

This reverts commit af88a3c15cc4ddbb1e2f2ea6492868ffb8aba40b.
---
 helix-core/src/syntax.rs   | 4 +++-
 helix-view/src/document.rs | 5 +++--
 2 files changed, 6 insertions(+), 3 deletions(-)

diff --git a/helix-core/src/syntax.rs b/helix-core/src/syntax.rs
index 0e6696db..c34ea81a 100644
--- a/helix-core/src/syntax.rs
+++ b/helix-core/src/syntax.rs
@@ -555,7 +555,9 @@ impl LanguageConfiguration {
 #[serde(default, rename_all = "kebab-case", deny_unknown_fields)]
 pub struct SoftWrap {
     /// Soft wrap lines that exceed viewport width. Default to off
-    pub enable: bool,
+    // NOTE: Option on purpose because the struct is shared between language config and global config.
+    // By default the option is None so that the language config falls back to the global config unless explicitly set.
+    pub enable: Option<bool>,
     /// Maximum space left free at the end of the line.
     /// This space is used to wrap text at word boundaries. If that is not possible within this limit
     /// the word is simply split at the end of the line.
diff --git a/helix-view/src/document.rs b/helix-view/src/document.rs
index 65a5a6e2..eca60026 100644
--- a/helix-view/src/document.rs
+++ b/helix-view/src/document.rs
@@ -1444,8 +1444,9 @@ impl Document {
             .as_ref()
             .and_then(|config| config.soft_wrap.as_ref());
         let enable_soft_wrap = language_soft_wrap
-            .map(|soft_wrap| soft_wrap.enable)
-            .unwrap_or_else(|| editor_soft_wrap.enable);
+            .and_then(|soft_wrap| soft_wrap.enable)
+            .or(editor_soft_wrap.enable)
+            .unwrap_or(false);
         let max_wrap = language_soft_wrap
             .and_then(|soft_wrap| soft_wrap.max_wrap)
             .or(config.soft_wrap.max_wrap)