summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorChris Perivolaropoulos <c.perivol@ed.ac.uk>2019-06-12 13:31:20 +0300
committerJasper Van der Jeugt <m@jaspervdj.be>2019-06-12 12:31:20 +0200
commitf1fe0d010144483315b3b37cb1eece93ecf3a6e5 (patch)
tree70481f697ebd49ebe85848bee66e1c5bf0899cdb
parent660b0c894461a780c7bda8f2231a5101f5f6f164 (diff)
downloadstylish-haskell-f1fe0d010144483315b3b37cb1eece93ecf3a6e5.tar.gz
Respect page breaks alone in a line
Page breaks are an old but effective way of bookmarking a file. They usually are single character lines. Stylish removes them as whitespace characters, and they are from the compiler's point of view but not from an editor's perspective.
-rw-r--r--lib/Language/Haskell/Stylish/Step/TrailingWhitespace.hs7
-rw-r--r--tests/Language/Haskell/Stylish/Step/TrailingWhitespace/Tests.hs6
2 files changed, 11 insertions, 2 deletions
diff --git a/lib/Language/Haskell/Stylish/Step/TrailingWhitespace.hs b/lib/Language/Haskell/Stylish/Step/TrailingWhitespace.hs
index dbc594c..e41bace 100644
--- a/lib/Language/Haskell/Stylish/Step/TrailingWhitespace.hs
+++ b/lib/Language/Haskell/Stylish/Step/TrailingWhitespace.hs
@@ -19,4 +19,9 @@ dropTrailingWhitespace = reverse . dropWhile isSpace . reverse
--------------------------------------------------------------------------------
step :: Step
-step = makeStep "TrailingWhitespace" $ \ls _ -> map dropTrailingWhitespace ls
+step = makeStep "TrailingWhitespace" $ \ls _ -> map dropTrailingWhitespace' ls
+ where
+ dropTrailingWhitespace' l = case l of
+ -- Preserve page breaks
+ "\12" -> l
+ _ -> dropTrailingWhitespace l
diff --git a/tests/Language/Haskell/Stylish/Step/TrailingWhitespace/Tests.hs b/tests/Language/Haskell/Stylish/Step/TrailingWhitespace/Tests.hs
index 1394edb..0593c0a 100644
--- a/tests/Language/Haskell/Stylish/Step/TrailingWhitespace/Tests.hs
+++ b/tests/Language/Haskell/Stylish/Step/TrailingWhitespace/Tests.hs
@@ -28,12 +28,16 @@ case01 = expected @=? testStep step input
where
input = unlines
[ "module Main where"
- , " "
+ , " \t"
, "data Foo = Bar | Qux\t "
+ , "\12" -- page break
+ , " \12" -- malformed page break
]
expected = unlines
[ "module Main where"
, ""
, "data Foo = Bar | Qux"
+ , "\12" -- page break
+ , ""
]