From b24379d1043b223f201600f7f0aa0f51b38d11c3 Mon Sep 17 00:00:00 2001
From: Lennart Spitzner <hexagoxel@hexagoxel.de>
Date: Tue, 18 Apr 2023 19:42:24 +0000
Subject: [PATCH] Fix restore-position after block comment

---
 .../Haskell/Brittany/Internal/S4_WriteBriDoc.hs        | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

diff --git a/source/library/Language/Haskell/Brittany/Internal/S4_WriteBriDoc.hs b/source/library/Language/Haskell/Brittany/Internal/S4_WriteBriDoc.hs
index 281e35d..ff1cfe1 100644
--- a/source/library/Language/Haskell/Brittany/Internal/S4_WriteBriDoc.hs
+++ b/source/library/Language/Haskell/Brittany/Internal/S4_WriteBriDoc.hs
@@ -289,7 +289,7 @@ layoutBriDocM = \case
                 PlannedSameline{} -> False
                 PlannedNewline{}  -> True
                 PlannedDelta{}    -> True
-          -- traceShow (ExactPrint.pos2delta p1 p2) $ pure ()
+          -- traceShow (m, ExactPrint.pos2delta p1 p2) $ pure ()
           case ExactPrint.pos2delta p1 p2 of
             SameLine{} -> pure ()
             DifferentLine n _ | newlinePlanned -> layoutWriteNewlines n
@@ -326,10 +326,14 @@ printComments comms = do
           Anchor span UnchangedAnchor -> do
             let dp = ExactPrint.ss2deltaEnd prior span
             layoutWriteComment True isBlock dp 1 (Text.pack s)
-            layoutUpdateMarker $ realSrcSpanEnd span
+            if isBlock
+              then layoutSetMarker $ Just $ realSrcSpanEnd span
+              else layoutUpdateMarker $ realSrcSpanEnd span
           Anchor span (MovedAnchor dp) -> do
             layoutWriteComment False isBlock dp 1 (Text.pack s)
-            layoutUpdateMarker $ realSrcSpanEnd span
+            if isBlock
+              then layoutSetMarker $ Just $ realSrcSpanEnd span
+              else layoutUpdateMarker $ realSrcSpanEnd span
   comms `forM_` \(L anch (EpaComment tok prior)) -> case tok of
     EpaDocCommentNext  s -> addComment False s anch prior
     EpaDocCommentPrev  s -> addComment False s anch prior