[LIGO-40] Implement LSP range cconversion function
Problem: We need to be able to convert squirrel ranges to lsp specific ones. Solution: Add `toLSPRange` function.
This commit is contained in:
parent
283f41738d
commit
0b1590e324
@ -7,13 +7,16 @@
|
|||||||
module Range
|
module Range
|
||||||
( Range(..)
|
( Range(..)
|
||||||
, HasRange(..)
|
, HasRange(..)
|
||||||
|
, toLSPRange
|
||||||
, cutOut
|
, cutOut
|
||||||
, point
|
, point
|
||||||
)
|
)
|
||||||
where
|
where
|
||||||
|
|
||||||
import qualified Data.ByteString as BS
|
import qualified Language.Haskell.LSP.Types as LSP (Position (..), Range (..))
|
||||||
|
|
||||||
import Data.ByteString (ByteString)
|
import Data.ByteString (ByteString)
|
||||||
|
import qualified Data.ByteString as BS
|
||||||
import Data.Text (Text)
|
import Data.Text (Text)
|
||||||
import Data.Text.Encoding
|
import Data.Text.Encoding
|
||||||
|
|
||||||
@ -54,6 +57,16 @@ instance HasRange Range where
|
|||||||
instance Contains Range xs => HasRange (Product xs) where
|
instance Contains Range xs => HasRange (Product xs) where
|
||||||
getRange = getElem
|
getRange = getElem
|
||||||
|
|
||||||
|
-- | Convert `squirrel` range to `haskell-lsp` range.
|
||||||
|
toLSPRange :: Range -> LSP.Range
|
||||||
|
toLSPRange Range
|
||||||
|
{ rStart = (rsl, rsc, _)
|
||||||
|
, rFinish = (rfl, rfc, _)
|
||||||
|
} = LSP.Range
|
||||||
|
{ LSP._start = LSP.Position { LSP._line = rsl, LSP._character = rsc }
|
||||||
|
, LSP._end = LSP.Position { LSP._line = rfl, LSP._character = rfc }
|
||||||
|
}
|
||||||
|
|
||||||
-- | Extract textual representation of given range.
|
-- | Extract textual representation of given range.
|
||||||
cutOut :: Range -> ByteString -> Text
|
cutOut :: Range -> ByteString -> Text
|
||||||
cutOut (Range (_, _, s) (_, _, f) _) bs =
|
cutOut (Range (_, _, s) (_, _, f) _) bs =
|
||||||
@ -73,4 +86,4 @@ instance Eq Range where
|
|||||||
(l, c, r, d, f) == (l1, c1, r1, d1, f1)
|
(l, c, r, d, f) == (l1, c1, r1, d1, f1)
|
||||||
|
|
||||||
instance (Contains Range xs, Eq (Product xs)) => Lattice (Product xs) where
|
instance (Contains Range xs, Eq (Product xs)) => Lattice (Product xs) where
|
||||||
a `leq` b = getElem @Range a `leq` getElem @Range b
|
a `leq` b = getElem @Range a `leq` getElem @Range b
|
||||||
|
Loading…
Reference in New Issue
Block a user