+
+-- Keep track of dynamic capability registration
+updateState (ReqRegisterCapability req) = do
+ let List newRegs = (\r -> (r ^. LSP.id, r)) <$> req ^. params . registrations
+ modify $ \s ->
+ s { curDynCaps = Map.union (Map.fromList newRegs) (curDynCaps s) }
+
+updateState (ReqUnregisterCapability req) = do
+ let List unRegs = (^. LSP.id) <$> req ^. params . unregistrations
+ modify $ \s ->
+ let newCurDynCaps = foldr' Map.delete (curDynCaps s) unRegs
+ in s { curDynCaps = newCurDynCaps }
+