Skip to content

Commit

Permalink
fix: entire file folding because of root node
Browse files Browse the repository at this point in the history
  • Loading branch information
sloorush committed Sep 21, 2022
1 parent 57cb482 commit a32924c
Show file tree
Hide file tree
Showing 3 changed files with 35 additions and 4 deletions.
9 changes: 7 additions & 2 deletions plugins/hls-code-range-plugin/src/Ide/Plugin/CodeRange.hs
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,8 @@ getFoldingRanges :: NormalizedFilePath -> ExceptT String IdeAction [FoldingRange
getFoldingRanges file = do
(codeRange, _) <- maybeToExceptT "fail to get code range" $ useE GetCodeRange file

pure $ findFoldingRanges codeRange
-- removing first node because it folds the entire file
pure $ removeFirstNode $ findFoldingRanges codeRange

selectionRangeHandler :: IdeState -> PluginId -> SelectionRangeParams -> LspM c (Either ResponseError (List SelectionRange))
selectionRangeHandler ide _ SelectionRangeParams{..} = do
Expand Down Expand Up @@ -179,9 +180,13 @@ createFoldingRange :: CodeRange -> Maybe FoldingRange
createFoldingRange (CodeRange (Range (Position lineStart charStart) (Position lineEnd charEnd)) _ ck) = do
-- Type conversion of codeRangeKind to FoldingRangeKind
let frk = crkToFrk ck

Just (FoldingRange lineStart (Just charStart) lineEnd (Just charEnd) (Just frk))

-- | Removes first node from folding ranges
removeFirstNode :: [FoldingRange] -> [FoldingRange]
removeFirstNode [] = []
removeFirstNode (_:xs) = xs

-- | Likes 'toCurrentPosition', but works on 'SelectionRange'
toCurrentSelectionRange :: PositionMapping -> SelectionRange -> Maybe SelectionRange
toCurrentSelectionRange positionMapping SelectionRange{..} = do
Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
((2, 16) : (2, 22)) : FoldingRangeRegion
((4, 0) : (7, 21)) : FoldingRangeRegion
((4, 0) : (4, 25)) : FoldingRangeRegion
((4, 0) : (4, 6)) : FoldingRangeRegion
Expand All @@ -17,4 +18,24 @@
((5, 24) : (5, 26)) : FoldingRangeRegion
((5, 27) : (5, 28)) : FoldingRangeRegion
((6, 16) : (6, 20)) : FoldingRangeRegion
((7, 16) : (7, 21)) : FoldingRangeRegion
((7, 16) : (7, 21)) : FoldingRangeRegion
((9, 0) : (12, 20)) : FoldingRangeRegion
((9, 0) : (9, 24)) : FoldingRangeRegion
((9, 0) : (9, 5)) : FoldingRangeRegion
((9, 9) : (9, 24)) : FoldingRangeRegion
((9, 9) : (9, 16)) : FoldingRangeRegion
((9, 20) : (9, 24)) : FoldingRangeRegion
((10, 0) : (12, 20)) : FoldingRangeRegion
((10, 0) : (10, 5)) : FoldingRangeRegion
((10, 6) : (10, 7)) : FoldingRangeRegion
((10, 8) : (12, 20)) : FoldingRangeRegion
((10, 10) : (12, 20)) : FoldingRangeRegion
((10, 13) : (10, 27)) : FoldingRangeRegion
((10, 13) : (10, 22)) : FoldingRangeRegion
((10, 13) : (10, 14)) : FoldingRangeRegion
((10, 15) : (10, 20)) : FoldingRangeRegion
((10, 21) : (10, 22)) : FoldingRangeRegion
((10, 23) : (10, 25)) : FoldingRangeRegion
((10, 26) : (10, 27)) : FoldingRangeRegion
((11, 16) : (11, 21)) : FoldingRangeRegion
((12, 16) : (12, 20)) : FoldingRangeRegion
Original file line number Diff line number Diff line change
@@ -1,8 +1,13 @@
{-# OPTIONS_GHC -Wno-unrecognised-pragmas #-}
{-# HLINT ignore "Use module export list" #-}
module FuncMultiMatch where
module Function(isEven) where

isEven :: Integer -> Bool
isEven n = if n `mod` 2 == 0
then True
else False

isOdd :: Integer -> Bool
isOdd n = if n `mod` 2 == 0
then False
else True

0 comments on commit a32924c

Please sign in to comment.