@@ -42,8 +42,6 @@ import qualified Data.Aeson as J
42
42
import Data.Default
43
43
import Data.Functor.Product
44
44
import Data.IxMap
45
- import qualified Data.Dependent.Map as DMap
46
- import Data.Dependent.Map (DMap )
47
45
import qualified Data.HashMap.Strict as HM
48
46
import Data.Kind
49
47
import qualified Data.List as L
@@ -56,6 +54,8 @@ import Data.Text ( Text )
56
54
import qualified Data.UUID as UUID
57
55
import qualified Language.LSP.Types.Capabilities as J
58
56
import Language.LSP.Types as J
57
+ import Language.LSP.Types.SMethodMap (SMethodMap )
58
+ import qualified Language.LSP.Types.SMethodMap as SMethodMap
59
59
import qualified Language.LSP.Types.Lens as J
60
60
import Language.LSP.VFS
61
61
import Language.LSP.Diagnostics
@@ -131,19 +131,19 @@ data LanguageContextEnv config =
131
131
-- @
132
132
data Handlers m
133
133
= Handlers
134
- { reqHandlers :: ! (DMap SMethod (ClientMessageHandler m Request ))
135
- , notHandlers :: ! (DMap SMethod (ClientMessageHandler m Notification ))
134
+ { reqHandlers :: ! (SMethodMap (ClientMessageHandler m Request ))
135
+ , notHandlers :: ! (SMethodMap (ClientMessageHandler m Notification ))
136
136
}
137
137
instance Semigroup (Handlers config ) where
138
138
Handlers r1 n1 <> Handlers r2 n2 = Handlers (r1 <> r2) (n1 <> n2)
139
139
instance Monoid (Handlers config ) where
140
140
mempty = Handlers mempty mempty
141
141
142
142
notificationHandler :: forall (m :: Method FromClient Notification ) f . SMethod m -> Handler f m -> Handlers f
143
- notificationHandler m h = Handlers mempty (DMap . singleton m (ClientMessageHandler h))
143
+ notificationHandler m h = Handlers mempty (SMethodMap . singleton m (ClientMessageHandler h))
144
144
145
145
requestHandler :: forall (m :: Method FromClient Request ) f . SMethod m -> Handler f m -> Handlers f
146
- requestHandler m h = Handlers (DMap . singleton m (ClientMessageHandler h)) mempty
146
+ requestHandler m h = Handlers (SMethodMap . singleton m (ClientMessageHandler h)) mempty
147
147
148
148
-- | Wrapper to restrict 'Handler's to 'FromClient' 'Method's
149
149
newtype ClientMessageHandler f (t :: MethodType ) (m :: Method FromClient t ) = ClientMessageHandler (Handler f m )
@@ -170,8 +170,8 @@ mapHandlers
170
170
-> Handlers m -> Handlers n
171
171
mapHandlers mapReq mapNot (Handlers reqs nots) = Handlers reqs' nots'
172
172
where
173
- reqs' = DMap .map (\ (ClientMessageHandler i) -> ClientMessageHandler $ mapReq i) reqs
174
- nots' = DMap .map (\ (ClientMessageHandler i) -> ClientMessageHandler $ mapNot i) nots
173
+ reqs' = SMethodMap .map (\ (ClientMessageHandler i) -> ClientMessageHandler $ mapReq i) reqs
174
+ nots' = SMethodMap .map (\ (ClientMessageHandler i) -> ClientMessageHandler $ mapNot i) nots
175
175
176
176
-- | state used by the LSP dispatcher to manage the message loop
177
177
data LanguageContextState config =
@@ -189,7 +189,7 @@ data LanguageContextState config =
189
189
190
190
type ResponseMap = IxMap LspId (Product SMethod ServerResponseCallback )
191
191
192
- type RegistrationMap (t :: MethodType ) = DMap SMethod (Product RegistrationId (ClientMessageHandler IO t ))
192
+ type RegistrationMap (t :: MethodType ) = SMethodMap (Product RegistrationId (ClientMessageHandler IO t ))
193
193
194
194
data RegistrationToken (m :: Method FromClient t ) = RegistrationToken (SMethod m ) (RegistrationId m )
195
195
newtype RegistrationId (m :: Method FromClient t ) = RegistrationId Text
@@ -496,8 +496,8 @@ registerCapability method regOpts f = do
496
496
clientCaps <- resClientCapabilities <$> getLspEnv
497
497
handlers <- resHandlers <$> getLspEnv
498
498
let alreadyStaticallyRegistered = case splitClientMethod method of
499
- IsClientNot -> DMap . member method $ notHandlers handlers
500
- IsClientReq -> DMap . member method $ reqHandlers handlers
499
+ IsClientNot -> SMethodMap . member method $ notHandlers handlers
500
+ IsClientReq -> SMethodMap . member method $ reqHandlers handlers
501
501
IsClientEither -> error " Cannot register capability for custom methods"
502
502
go clientCaps alreadyStaticallyRegistered
503
503
where
@@ -515,10 +515,10 @@ registerCapability method regOpts f = do
515
515
~ () <- case splitClientMethod method of
516
516
IsClientNot -> modifyState resRegistrationsNot $ \ oldRegs ->
517
517
let pair = Pair regId (ClientMessageHandler (unliftIO rio . f))
518
- in DMap . insert method pair oldRegs
518
+ in SMethodMap . insert method pair oldRegs
519
519
IsClientReq -> modifyState resRegistrationsReq $ \ oldRegs ->
520
520
let pair = Pair regId (ClientMessageHandler (\ msg k -> unliftIO rio $ f msg (liftIO . k)))
521
- in DMap . insert method pair oldRegs
521
+ in SMethodMap . insert method pair oldRegs
522
522
IsClientEither -> error " Cannot register capability for custom methods"
523
523
524
524
-- TODO: handle the scenario where this returns an error
@@ -572,8 +572,8 @@ registerCapability method regOpts f = do
572
572
unregisterCapability :: MonadLsp config f => RegistrationToken m -> f ()
573
573
unregisterCapability (RegistrationToken m (RegistrationId uuid)) = do
574
574
~ () <- case splitClientMethod m of
575
- IsClientReq -> modifyState resRegistrationsReq $ DMap . delete m
576
- IsClientNot -> modifyState resRegistrationsNot $ DMap . delete m
575
+ IsClientReq -> modifyState resRegistrationsReq $ SMethodMap . delete m
576
+ IsClientNot -> modifyState resRegistrationsNot $ SMethodMap . delete m
577
577
IsClientEither -> error " Cannot unregister capability for custom methods"
578
578
579
579
let unregistration = J. Unregistration uuid (J. SomeClientMethod m)
0 commit comments