11{-# LANGUAGE OverloadedStrings #-}
22
33module FoldingRange (
4- outlineTests ,
4+ foldingRangeTests ,
55) where
66
7- import Language.LSP.Protocol.Types (DocumentSymbol (.. ),
8- Position (.. ), Range (.. ))
9- import qualified Test.Hls as T
7+ import Language.LSP.Protocol.Message (Method (Method_TextDocumentFoldingRange , Method_TextDocumentSelectionRange ),
8+ SMethod (SMethod_TextDocumentFoldingRange , SMethod_TextDocumentSelectionRange ))
9+ import qualified Language.LSP.Protocol.Types as LSP
10+ import qualified Test.Hls as T
1011import Utils
1112
1213testFoldingRanges :: (T. HasCallStack )
@@ -15,9 +16,9 @@ testFoldingRanges :: (T.HasCallStack)
1516 -> [LSP. FoldingRange ]
1617 -> T. TestTree
1718testFoldingRanges testName path expectedRanges =
18- runCabalTestCaseSession testName " outline -cabal" $ do
19+ runCabalTestCaseSession testName " folding-range -cabal" $ do
1920 docId <- T. openDoc path " cabal"
20- ranges <- T. getFoldingRanges docId
21+ ranges <- getFoldingRanges docId
2122 T. liftIO $ ranges T. @?= Right expectedRanges
2223
2324foldingRangeTests :: T. TestTree
@@ -45,39 +46,50 @@ foldingRangeTests =
4546fieldFoldingRange :: LSP. FoldingRange
4647fieldFoldingRange =
4748 (defFoldingRange (LSP. Position 0 0 ))
48- { _endLine = 0
49- , _endCharacter = Just 8
50- , _collapsedText = Just " homepage"
49+ { LSP. _endLine = 0
50+ , LSP. _endCharacter = Just 8
51+ , LSP. _collapsedText = Just " homepage"
5152 }
5253
5354-- Expected folding range for fieldline.cabal
5455fieldLineFoldingRange :: LSP. FoldingRange
5556fieldLineFoldingRange =
5657 (defFoldingRange (LSP. Position 0 0 ))
57- { _endLine = 0
58- , _endCharacter = Just 13
59- , _collapsedText = Just " cabal-version"
58+ { LSP. _endLine = 0
59+ , LSP. _endCharacter = Just 13
60+ , LSP. _collapsedText = Just " cabal-version"
6061 }
6162
6263-- Expected folding range for section.cabal
6364sectionFoldingRange :: LSP. FoldingRange
6465sectionFoldingRange =
6566 (defFoldingRange (LSP. Position 0 2 ))
66- { _endLine = 0
67- , _endCharacter = Just 15
68- , _collapsedText = Just " build-depends"
67+ { LSP. _endLine = 0
68+ , LSP. _endCharacter = Just 15
69+ , LSP. _collapsedText = Just " build-depends"
6970 }
7071
7172-- Expected folding range for sectionarg.cabal
7273sectionArgFoldingRange :: LSP. FoldingRange
7374sectionArgFoldingRange =
7475 (defFoldingRange (LSP. Position 0 2 ))
75- { _endLine = 1
76- , _endCharacter = Just 17
77- , _collapsedText = Just " if os ( windows )"
76+ { LSP. _endLine = 1
77+ , LSP. _endCharacter = Just 17
78+ , LSP. _collapsedText = Just " if os( windows)"
7879 }
7980
80- getFoldingRanges :: LSP. TextDocumentIdentifier -> Session (Either ResponseError [FoldingRange ])
81+ getFoldingRanges :: LSP. TextDocumentIdentifier -> Session (Either ResponseError [LSP. FoldingRange ])
8182getFoldingRanges docId = do
8283 let params = LSP. FoldingRangeParams docId Nothing
8384 request SMethod_TextDocumentFoldingRange params
85+
86+ defFoldingRange :: LSP. Position -> LSP. FoldingRange
87+ defFoldingRange startPos =
88+ LSP. FoldingRange
89+ { LSP. _startLine = LSP. _line startPos
90+ , LSP. _startCharacter = Just (LSP. _character startPos)
91+ , LSP. _endLine = LSP. _line startPos
92+ , LSP. _endCharacter = Just (LSP. _character startPos)
93+ , LSP. _kind = Nothing
94+ , LSP. _collapsedText = Nothing
95+ }
0 commit comments