@@ -445,17 +445,18 @@ main = do
445445 Just cols -> read cols
446446 Nothing -> stateColumns defaultParserState
447447
448− let tabsToSpacesInLine _ [] = ""
449− tabsToSpacesInLine _ ('\r':[]) = "" -- remove DOS line-endings
450− tabsToSpacesInLine spsToNextStop (x:xs) =
451− if x == '\t'
452− then if preserveTabs
453− then x:(tabsToSpacesInLine tabStop xs)
454− else replicate spsToNextStop ' ' ++
455− tabsToSpacesInLine tabStop xs
456− else x:(tabsToSpacesInLine (spsToNextStop - 1) xs)
457−
458− let tabFilter = unlines . map (tabsToSpacesInLine tabStop) . lines
448+ let tabFilter _ [] = ""
449+ tabFilter _ ('\n':xs) = '\n':(tabFilter tabStop xs)
450+ tabFilter _ ('\r':'\n':xs) = '\n':(tabFilter tabStop xs)
451+ -- remove DOS line endings
452+ tabFilter spsToNextStop ('\t':xs) =
453+ if preserveTabs
454+ then '\t':(tabFilter tabStop xs)
455+ else replicate spsToNextStop ' ' ++ tabFilter tabStop xs
456+ tabFilter 1 (x:xs) =
457+ x:(tabFilter tabStop xs)
458+ tabFilter spsToNextStop (x:xs) =
459+ x:(tabFilter (spsToNextStop - 1) xs)
459460
460461 let startParserState =
461462 defaultParserState { stateParseRaw = parseRaw,
@@ -493,7 +494,7 @@ main = do
493494
494495 (readSources sources) >>= (hPutStrLn output . toUTF8 .
495496 (writer writerOptions) .
496− (reader startParserState) . tabFilter .
497+ (reader startParserState) . tabFilter tabStop .
497498 fromUTF8 . (joinWithSep "\n")) >>
498499 hClose output
499500