@@ -42,8 +42,6 @@ import qualified Data.Aeson as J
4242import Data.Default
4343import Data.Functor.Product
4444import Data.IxMap
45- import qualified Data.Dependent.Map as DMap
46- import Data.Dependent.Map (DMap )
4745import qualified Data.HashMap.Strict as HM
4846import Data.Kind
4947import qualified Data.List as L
@@ -56,6 +54,8 @@ import Data.Text ( Text )
5654import qualified Data.UUID as UUID
5755import qualified Language.LSP.Types.Capabilities as J
5856import Language.LSP.Types as J
57+ import Language.LSP.Types.SMethodMap (SMethodMap )
58+ import qualified Language.LSP.Types.SMethodMap as SMethodMap
5959import qualified Language.LSP.Types.Lens as J
6060import Language.LSP.VFS
6161import Language.LSP.Diagnostics
@@ -131,19 +131,19 @@ data LanguageContextEnv config =
131131-- @
132132data Handlers m
133133 = 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 ))
136136 }
137137instance Semigroup (Handlers config ) where
138138 Handlers r1 n1 <> Handlers r2 n2 = Handlers (r1 <> r2) (n1 <> n2)
139139instance Monoid (Handlers config ) where
140140 mempty = Handlers mempty mempty
141141
142142notificationHandler :: 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))
144144
145145requestHandler :: 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
147147
148148-- | Wrapper to restrict 'Handler's to 'FromClient' 'Method's
149149newtype ClientMessageHandler f (t :: MethodType ) (m :: Method FromClient t ) = ClientMessageHandler (Handler f m )
@@ -170,8 +170,8 @@ mapHandlers
170170 -> Handlers m -> Handlers n
171171mapHandlers mapReq mapNot (Handlers reqs nots) = Handlers reqs' nots'
172172 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
175175
176176-- | state used by the LSP dispatcher to manage the message loop
177177data LanguageContextState config =
@@ -189,7 +189,7 @@ data LanguageContextState config =
189189
190190type ResponseMap = IxMap LspId (Product SMethod ServerResponseCallback )
191191
192- type RegistrationMap (t :: MethodType ) = DMap SMethod (Product RegistrationId (ClientMessageHandler IO t ))
192+ type RegistrationMap (t :: MethodType ) = SMethodMap (Product RegistrationId (ClientMessageHandler IO t ))
193193
194194data RegistrationToken (m :: Method FromClient t ) = RegistrationToken (SMethod m ) (RegistrationId m )
195195newtype RegistrationId (m :: Method FromClient t ) = RegistrationId Text
@@ -496,8 +496,8 @@ registerCapability method regOpts f = do
496496 clientCaps <- resClientCapabilities <$> getLspEnv
497497 handlers <- resHandlers <$> getLspEnv
498498 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
501501 IsClientEither -> error " Cannot register capability for custom methods"
502502 go clientCaps alreadyStaticallyRegistered
503503 where
@@ -515,10 +515,10 @@ registerCapability method regOpts f = do
515515 ~ () <- case splitClientMethod method of
516516 IsClientNot -> modifyState resRegistrationsNot $ \ oldRegs ->
517517 let pair = Pair regId (ClientMessageHandler (unliftIO rio . f))
518- in DMap . insert method pair oldRegs
518+ in SMethodMap . insert method pair oldRegs
519519 IsClientReq -> modifyState resRegistrationsReq $ \ oldRegs ->
520520 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
522522 IsClientEither -> error " Cannot register capability for custom methods"
523523
524524 -- TODO: handle the scenario where this returns an error
@@ -572,8 +572,8 @@ registerCapability method regOpts f = do
572572unregisterCapability :: MonadLsp config f => RegistrationToken m -> f ()
573573unregisterCapability (RegistrationToken m (RegistrationId uuid)) = do
574574 ~ () <- 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
577577 IsClientEither -> error " Cannot unregister capability for custom methods"
578578
579579 let unregistration = J. Unregistration uuid (J. SomeClientMethod m)
0 commit comments