Skip to content

Commit 0dd9ef3

Browse files
committed
add flipped filterByRange
1 parent 7f8ee62 commit 0dd9ef3

File tree

1 file changed

+9
-0
lines changed

1 file changed

+9
-0
lines changed

hls-plugin-api/src/Ide/Plugin/RangeMap.hs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ module Ide.Plugin.RangeMap
1313
fromList,
1414
fromList',
1515
filterByRange,
16+
flippedFilterByRange,
1617
) where
1718

1819
import Development.IDE.Graph.Classes (NFData)
@@ -67,6 +68,14 @@ filterByRange range = map snd . IM.dominators (rangeToInterval range) . unRangeM
6768
filterByRange range = map snd . filter (isSubrangeOf range . fst) . unRangeMap
6869
#endif
6970

71+
-- | Flipped filter a 'RangeMap' by a given 'Range'.
72+
flippedFilterByRange :: Range -> RangeMap a -> [a]
73+
#ifdef USE_FINGERTREE
74+
flippedFilterByRange range = map snd . IM.intersections (rangeToInterval range) . unRangeMap
75+
#else
76+
flippedFilterByRange range = map snd . filter (flip isSubrangeOf range . fst) . unRangeMap
77+
#endif
78+
7079
#ifdef USE_FINGERTREE
7180
-- NOTE(ozkutuk): In itself, this conversion is wrong. As Michael put it:
7281
-- "LSP Ranges have exclusive upper bounds, whereas the intervals here are

0 commit comments

Comments
 (0)