{-# LANGUAGE GeneralizedNewtypeDeriving #-}
{-# LANGUAGE TypeFamilyDependencies #-}
{-# LANGUAGE UndecidableInstances #-}
{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE GADTs #-}
{-# LANGUAGE MultiWayIf #-}
{-# LANGUAGE BinaryLiterals #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RankNTypes #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE ViewPatterns #-}
{-# LANGUAGE TypeInType #-}
{-# LANGUAGE TypeApplications #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE FunctionalDependencies #-}
{-# LANGUAGE TypeOperators #-}
{-# LANGUAGE RecursiveDo #-}
{-# OPTIONS_GHC -Wno-unticked-promoted-constructors #-}
{-# OPTIONS_GHC -fprint-explicit-kinds #-}
module Language.LSP.Server.Core where
import Control.Concurrent.Async
import Control.Concurrent.STM
import qualified Control.Exception as E
import Control.Monad
import Control.Monad.Fix
import Control.Monad.IO.Class
import Control.Monad.Trans.Reader
import Control.Monad.Trans.Class
import Control.Monad.IO.Unlift
import Control.Lens ( (^.), (^?), _Just )
import qualified Data.Aeson as J
import Data.Default
import Data.Functor.Product
import Data.IxMap
import qualified Data.Dependent.Map as DMap
import Data.Dependent.Map (DMap)
import qualified Data.HashMap.Strict as HM
import Data.Kind
import qualified Data.List as L
import Data.List.NonEmpty (NonEmpty(..))
import qualified Data.Map as Map
import Data.Maybe
import qualified Data.Text as T
import Data.Text ( Text )
import qualified Data.UUID as UUID
import qualified Language.LSP.Types.Capabilities as J
import Language.LSP.Types as J
import qualified Language.LSP.Types.Lens as J
import Language.LSP.VFS
import Language.LSP.Diagnostics
import System.IO
import qualified System.Log.Formatter as L
import qualified System.Log.Handler as LH
import qualified System.Log.Handler.Simple as LHS
import System.Log.Logger
import qualified System.Log.Logger as L
import System.Random
import Control.Monad.Trans.Identity
{-# ANN module ("HLint: ignore Eta reduce" :: String) #-}
{-# ANN module ("HLint: ignore Redundant do" :: String) #-}
{-# ANN module ("HLint: ignore Reduce duplication" :: String) #-}
newtype LspT config m a = LspT { LspT config m a -> ReaderT (LanguageContextEnv config) m a
unLspT :: ReaderT (LanguageContextEnv config) m a }
deriving (a -> LspT config m b -> LspT config m a
(a -> b) -> LspT config m a -> LspT config m b
(forall a b. (a -> b) -> LspT config m a -> LspT config m b)
-> (forall a b. a -> LspT config m b -> LspT config m a)
-> Functor (LspT config m)
forall a b. a -> LspT config m b -> LspT config m a
forall a b. (a -> b) -> LspT config m a -> LspT config m b
forall config (m :: * -> *) a b.
Functor m =>
a -> LspT config m b -> LspT config m a
forall config (m :: * -> *) a b.
Functor m =>
(a -> b) -> LspT config m a -> LspT config m b
forall (f :: * -> *).
(forall a b. (a -> b) -> f a -> f b)
-> (forall a b. a -> f b -> f a) -> Functor f
<$ :: a -> LspT config m b -> LspT config m a
$c<$ :: forall config (m :: * -> *) a b.
Functor m =>
a -> LspT config m b -> LspT config m a
fmap :: (a -> b) -> LspT config m a -> LspT config m b
$cfmap :: forall config (m :: * -> *) a b.
Functor m =>
(a -> b) -> LspT config m a -> LspT config m b
Functor, Functor (LspT config m)
a -> LspT config m a
Functor (LspT config m)
-> (forall a. a -> LspT config m a)
-> (forall a b.
LspT config m (a -> b) -> LspT config m a -> LspT config m b)
-> (forall a b c.
(a -> b -> c)
-> LspT config m a -> LspT config m b -> LspT config m c)
-> (forall a b.
LspT config m a -> LspT config m b -> LspT config m b)
-> (forall a b.
LspT config m a -> LspT config m b -> LspT config m a)
-> Applicative (LspT config m)
LspT config m a -> LspT config m b -> LspT config m b
LspT config m a -> LspT config m b -> LspT config m a
LspT config m (a -> b) -> LspT config m a -> LspT config m b
(a -> b -> c)
-> LspT config m a -> LspT config m b -> LspT config m c
forall a. a -> LspT config m a
forall a b. LspT config m a -> LspT config m b -> LspT config m a
forall a b. LspT config m a -> LspT config m b -> LspT config m b
forall a b.
LspT config m (a -> b) -> LspT config m a -> LspT config m b
forall a b c.
(a -> b -> c)
-> LspT config m a -> LspT config m b -> LspT config m c
forall config (m :: * -> *).
Applicative m =>
Functor (LspT config m)
forall config (m :: * -> *) a.
Applicative m =>
a -> LspT config m a
forall config (m :: * -> *) a b.
Applicative m =>
LspT config m a -> LspT config m b -> LspT config m a
forall config (m :: * -> *) a b.
Applicative m =>
LspT config m a -> LspT config m b -> LspT config m b
forall config (m :: * -> *) a b.
Applicative m =>
LspT config m (a -> b) -> LspT config m a -> LspT config m b
forall config (m :: * -> *) a b c.
Applicative m =>
(a -> b -> c)
-> LspT config m a -> LspT config m b -> LspT config m c
forall (f :: * -> *).
Functor f
-> (forall a. a -> f a)
-> (forall a b. f (a -> b) -> f a -> f b)
-> (forall a b c. (a -> b -> c) -> f a -> f b -> f c)
-> (forall a b. f a -> f b -> f b)
-> (forall a b. f a -> f b -> f a)
-> Applicative f
<* :: LspT config m a -> LspT config m b -> LspT config m a
$c<* :: forall config (m :: * -> *) a b.
Applicative m =>
LspT config m a -> LspT config m b -> LspT config m a
*> :: LspT config m a -> LspT config m b -> LspT config m b
$c*> :: forall config (m :: * -> *) a b.
Applicative m =>
LspT config m a -> LspT config m b -> LspT config m b
liftA2 :: (a -> b -> c)
-> LspT config m a -> LspT config m b -> LspT config m c
$cliftA2 :: forall config (m :: * -> *) a b c.
Applicative m =>
(a -> b -> c)
-> LspT config m a -> LspT config m b -> LspT config m c
<*> :: LspT config m (a -> b) -> LspT config m a -> LspT config m b
$c<*> :: forall config (m :: * -> *) a b.
Applicative m =>
LspT config m (a -> b) -> LspT config m a -> LspT config m b
pure :: a -> LspT config m a
$cpure :: forall config (m :: * -> *) a.
Applicative m =>
a -> LspT config m a
$cp1Applicative :: forall config (m :: * -> *).
Applicative m =>
Functor (LspT config m)
Applicative, Applicative (LspT config m)
a -> LspT config m a
Applicative (LspT config m)
-> (forall a b.
LspT config m a -> (a -> LspT config m b) -> LspT config m b)
-> (forall a b.
LspT config m a -> LspT config m b -> LspT config m b)
-> (forall a. a -> LspT config m a)
-> Monad (LspT config m)
LspT config m a -> (a -> LspT config m b) -> LspT config m b
LspT config m a -> LspT config m b -> LspT config m b
forall a. a -> LspT config m a
forall a b. LspT config m a -> LspT config m b -> LspT config m b
forall a b.
LspT config m a -> (a -> LspT config m b) -> LspT config m b
forall config (m :: * -> *). Monad m => Applicative (LspT config m)
forall config (m :: * -> *) a. Monad m => a -> LspT config m a
forall config (m :: * -> *) a b.
Monad m =>
LspT config m a -> LspT config m b -> LspT config m b
forall config (m :: * -> *) a b.
Monad m =>
LspT config m a -> (a -> LspT config m b) -> LspT config m b
forall (m :: * -> *).
Applicative m
-> (forall a b. m a -> (a -> m b) -> m b)
-> (forall a b. m a -> m b -> m b)
-> (forall a. a -> m a)
-> Monad m
return :: a -> LspT config m a
$creturn :: forall config (m :: * -> *) a. Monad m => a -> LspT config m a
>> :: LspT config m a -> LspT config m b -> LspT config m b
$c>> :: forall config (m :: * -> *) a b.
Monad m =>
LspT config m a -> LspT config m b -> LspT config m b
>>= :: LspT config m a -> (a -> LspT config m b) -> LspT config m b
$c>>= :: forall config (m :: * -> *) a b.
Monad m =>
LspT config m a -> (a -> LspT config m b) -> LspT config m b
$cp1Monad :: forall config (m :: * -> *). Monad m => Applicative (LspT config m)
Monad, Monad (LspT config m)
Monad (LspT config m)
-> (forall a. IO a -> LspT config m a) -> MonadIO (LspT config m)
IO a -> LspT config m a
forall a. IO a -> LspT config m a
forall config (m :: * -> *). MonadIO m => Monad (LspT config m)
forall config (m :: * -> *) a. MonadIO m => IO a -> LspT config m a
forall (m :: * -> *).
Monad m -> (forall a. IO a -> m a) -> MonadIO m
liftIO :: IO a -> LspT config m a
$cliftIO :: forall config (m :: * -> *) a. MonadIO m => IO a -> LspT config m a
$cp1MonadIO :: forall config (m :: * -> *). MonadIO m => Monad (LspT config m)
MonadIO, m a -> LspT config m a
(forall (m :: * -> *) a. Monad m => m a -> LspT config m a)
-> MonadTrans (LspT config)
forall config (m :: * -> *) a. Monad m => m a -> LspT config m a
forall (m :: * -> *) a. Monad m => m a -> LspT config m a
forall (t :: (* -> *) -> * -> *).
(forall (m :: * -> *) a. Monad m => m a -> t m a) -> MonadTrans t
lift :: m a -> LspT config m a
$clift :: forall config (m :: * -> *) a. Monad m => m a -> LspT config m a
MonadTrans, MonadIO (LspT config m)
MonadIO (LspT config m)
-> (forall b.
((forall a. LspT config m a -> IO a) -> IO b) -> LspT config m b)
-> MonadUnliftIO (LspT config m)
((forall a. LspT config m a -> IO a) -> IO b) -> LspT config m b
forall b.
((forall a. LspT config m a -> IO a) -> IO b) -> LspT config m b
forall config (m :: * -> *).
MonadUnliftIO m =>
MonadIO (LspT config m)
forall config (m :: * -> *) b.
MonadUnliftIO m =>
((forall a. LspT config m a -> IO a) -> IO b) -> LspT config m b
forall (m :: * -> *).
MonadIO m
-> (forall b. ((forall a. m a -> IO a) -> IO b) -> m b)
-> MonadUnliftIO m
withRunInIO :: ((forall a. LspT config m a -> IO a) -> IO b) -> LspT config m b
$cwithRunInIO :: forall config (m :: * -> *) b.
MonadUnliftIO m =>
((forall a. LspT config m a -> IO a) -> IO b) -> LspT config m b
$cp1MonadUnliftIO :: forall config (m :: * -> *).
MonadUnliftIO m =>
MonadIO (LspT config m)
MonadUnliftIO, Monad (LspT config m)
Monad (LspT config m)
-> (forall a. (a -> LspT config m a) -> LspT config m a)
-> MonadFix (LspT config m)
(a -> LspT config m a) -> LspT config m a
forall a. (a -> LspT config m a) -> LspT config m a
forall config (m :: * -> *). MonadFix m => Monad (LspT config m)
forall config (m :: * -> *) a.
MonadFix m =>
(a -> LspT config m a) -> LspT config m a
forall (m :: * -> *).
Monad m -> (forall a. (a -> m a) -> m a) -> MonadFix m
mfix :: (a -> LspT config m a) -> LspT config m a
$cmfix :: forall config (m :: * -> *) a.
MonadFix m =>
(a -> LspT config m a) -> LspT config m a
$cp1MonadFix :: forall config (m :: * -> *). MonadFix m => Monad (LspT config m)
MonadFix)
runLspT :: LanguageContextEnv config -> LspT config m a -> m a
runLspT :: LanguageContextEnv config -> LspT config m a -> m a
runLspT LanguageContextEnv config
env = (ReaderT (LanguageContextEnv config) m a
-> LanguageContextEnv config -> m a)
-> LanguageContextEnv config
-> ReaderT (LanguageContextEnv config) m a
-> m a
forall a b c. (a -> b -> c) -> b -> a -> c
flip ReaderT (LanguageContextEnv config) m a
-> LanguageContextEnv config -> m a
forall r (m :: * -> *) a. ReaderT r m a -> r -> m a
runReaderT LanguageContextEnv config
env (ReaderT (LanguageContextEnv config) m a -> m a)
-> (LspT config m a -> ReaderT (LanguageContextEnv config) m a)
-> LspT config m a
-> m a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. LspT config m a -> ReaderT (LanguageContextEnv config) m a
forall config (m :: * -> *) a.
LspT config m a -> ReaderT (LanguageContextEnv config) m a
unLspT
type LspM config = LspT config IO
class MonadUnliftIO m => MonadLsp config m | m -> config where
getLspEnv :: m (LanguageContextEnv config)
instance MonadUnliftIO m => MonadLsp config (LspT config m) where
getLspEnv :: LspT config m (LanguageContextEnv config)
getLspEnv = ReaderT (LanguageContextEnv config) m (LanguageContextEnv config)
-> LspT config m (LanguageContextEnv config)
forall config (m :: * -> *) a.
ReaderT (LanguageContextEnv config) m a -> LspT config m a
LspT ReaderT (LanguageContextEnv config) m (LanguageContextEnv config)
forall (m :: * -> *) r. Monad m => ReaderT r m r
ask
instance MonadLsp c m => MonadLsp c (ReaderT r m) where
getLspEnv :: ReaderT r m (LanguageContextEnv c)
getLspEnv = m (LanguageContextEnv c) -> ReaderT r m (LanguageContextEnv c)
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift m (LanguageContextEnv c)
forall config (m :: * -> *).
MonadLsp config m =>
m (LanguageContextEnv config)
getLspEnv
instance MonadLsp c m => MonadLsp c (IdentityT m) where
getLspEnv :: IdentityT @* m (LanguageContextEnv c)
getLspEnv = m (LanguageContextEnv c) -> IdentityT @* m (LanguageContextEnv c)
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift m (LanguageContextEnv c)
forall config (m :: * -> *).
MonadLsp config m =>
m (LanguageContextEnv config)
getLspEnv
data LanguageContextEnv config =
LanguageContextEnv
{ LanguageContextEnv config -> Handlers IO
resHandlers :: !(Handlers IO)
, LanguageContextEnv config -> Value -> IO (Either Text config)
resParseConfig :: !(J.Value -> IO (Either T.Text config))
, LanguageContextEnv config -> FromServerMessage -> IO ()
resSendMessage :: !(FromServerMessage -> IO ())
, LanguageContextEnv config -> TVar (LanguageContextState config)
resState :: !(TVar (LanguageContextState config))
, LanguageContextEnv config -> ClientCapabilities
resClientCapabilities :: !J.ClientCapabilities
, LanguageContextEnv config -> Maybe FilePath
resRootPath :: !(Maybe FilePath)
}
data Handlers m
= Handlers
{ Handlers m
-> DMap
@(Method 'FromClient 'Request)
(SMethod @'FromClient @'Request)
(ClientMessageHandler m 'Request)
reqHandlers :: DMap SMethod (ClientMessageHandler m Request)
, Handlers m
-> DMap
@(Method 'FromClient 'Notification)
(SMethod @'FromClient @'Notification)
(ClientMessageHandler m 'Notification)
notHandlers :: DMap SMethod (ClientMessageHandler m Notification)
}
instance Semigroup (Handlers config) where
Handlers DMap
@(Method 'FromClient 'Request)
(SMethod @'FromClient @'Request)
(ClientMessageHandler config 'Request)
r1 DMap
@(Method 'FromClient 'Notification)
(SMethod @'FromClient @'Notification)
(ClientMessageHandler config 'Notification)
n1 <> :: Handlers config -> Handlers config -> Handlers config
<> Handlers DMap
@(Method 'FromClient 'Request)
(SMethod @'FromClient @'Request)
(ClientMessageHandler config 'Request)
r2 DMap
@(Method 'FromClient 'Notification)
(SMethod @'FromClient @'Notification)
(ClientMessageHandler config 'Notification)
n2 = DMap
@(Method 'FromClient 'Request)
(SMethod @'FromClient @'Request)
(ClientMessageHandler config 'Request)
-> DMap
@(Method 'FromClient 'Notification)
(SMethod @'FromClient @'Notification)
(ClientMessageHandler config 'Notification)
-> Handlers config
forall (m :: * -> *).
DMap
@(Method 'FromClient 'Request)
(SMethod @'FromClient @'Request)
(ClientMessageHandler m 'Request)
-> DMap
@(Method 'FromClient 'Notification)
(SMethod @'FromClient @'Notification)
(ClientMessageHandler m 'Notification)
-> Handlers m
Handlers (DMap
@(Method 'FromClient 'Request)
(SMethod @'FromClient @'Request)
(ClientMessageHandler config 'Request)
r1 DMap
@(Method 'FromClient 'Request)
(SMethod @'FromClient @'Request)
(ClientMessageHandler config 'Request)
-> DMap
@(Method 'FromClient 'Request)
(SMethod @'FromClient @'Request)
(ClientMessageHandler config 'Request)
-> DMap
@(Method 'FromClient 'Request)
(SMethod @'FromClient @'Request)
(ClientMessageHandler config 'Request)
forall a. Semigroup a => a -> a -> a
<> DMap
@(Method 'FromClient 'Request)
(SMethod @'FromClient @'Request)
(ClientMessageHandler config 'Request)
r2) (DMap
@(Method 'FromClient 'Notification)
(SMethod @'FromClient @'Notification)
(ClientMessageHandler config 'Notification)
n1 DMap
@(Method 'FromClient 'Notification)
(SMethod @'FromClient @'Notification)
(ClientMessageHandler config 'Notification)
-> DMap
@(Method 'FromClient 'Notification)
(SMethod @'FromClient @'Notification)
(ClientMessageHandler config 'Notification)
-> DMap
@(Method 'FromClient 'Notification)
(SMethod @'FromClient @'Notification)
(ClientMessageHandler config 'Notification)
forall a. Semigroup a => a -> a -> a
<> DMap
@(Method 'FromClient 'Notification)
(SMethod @'FromClient @'Notification)
(ClientMessageHandler config 'Notification)
n2)
instance Monoid (Handlers config) where
mempty :: Handlers config
mempty = DMap
@(Method 'FromClient 'Request)
(SMethod @'FromClient @'Request)
(ClientMessageHandler config 'Request)
-> DMap
@(Method 'FromClient 'Notification)
(SMethod @'FromClient @'Notification)
(ClientMessageHandler config 'Notification)
-> Handlers config
forall (m :: * -> *).
DMap
@(Method 'FromClient 'Request)
(SMethod @'FromClient @'Request)
(ClientMessageHandler m 'Request)
-> DMap
@(Method 'FromClient 'Notification)
(SMethod @'FromClient @'Notification)
(ClientMessageHandler m 'Notification)
-> Handlers m
Handlers DMap
@(Method 'FromClient 'Request)
(SMethod @'FromClient @'Request)
(ClientMessageHandler config 'Request)
forall a. Monoid a => a
mempty DMap
@(Method 'FromClient 'Notification)
(SMethod @'FromClient @'Notification)
(ClientMessageHandler config 'Notification)
forall a. Monoid a => a
mempty
notificationHandler :: forall (m :: Method FromClient Notification) f. SMethod m -> Handler f m -> Handlers f
notificationHandler :: SMethod @'FromClient @'Notification m
-> Handler @'FromClient @'Notification f m -> Handlers f
notificationHandler SMethod @'FromClient @'Notification m
m Handler @'FromClient @'Notification f m
h = DMap
@(Method 'FromClient 'Request)
(SMethod @'FromClient @'Request)
(ClientMessageHandler f 'Request)
-> DMap
@(Method 'FromClient 'Notification)
(SMethod @'FromClient @'Notification)
(ClientMessageHandler f 'Notification)
-> Handlers f
forall (m :: * -> *).
DMap
@(Method 'FromClient 'Request)
(SMethod @'FromClient @'Request)
(ClientMessageHandler m 'Request)
-> DMap
@(Method 'FromClient 'Notification)
(SMethod @'FromClient @'Notification)
(ClientMessageHandler m 'Notification)
-> Handlers m
Handlers DMap
@(Method 'FromClient 'Request)
(SMethod @'FromClient @'Request)
(ClientMessageHandler f 'Request)
forall a. Monoid a => a
mempty (SMethod @'FromClient @'Notification m
-> ClientMessageHandler f 'Notification m
-> DMap
@(Method 'FromClient 'Notification)
(SMethod @'FromClient @'Notification)
(ClientMessageHandler f 'Notification)
forall k1 (k2 :: k1 -> *) (v :: k1) (f :: k1 -> *).
k2 v -> f v -> DMap @k1 k2 f
DMap.singleton SMethod @'FromClient @'Notification m
m (Handler @'FromClient @'Notification f m
-> ClientMessageHandler f 'Notification m
forall (f :: * -> *) (t :: MethodType) (m :: Method 'FromClient t).
Handler @'FromClient @t f m -> ClientMessageHandler f t m
ClientMessageHandler Handler @'FromClient @'Notification f m
h))
requestHandler :: forall (m :: Method FromClient Request) f. SMethod m -> Handler f m -> Handlers f
requestHandler :: SMethod @'FromClient @'Request m
-> Handler @'FromClient @'Request f m -> Handlers f
requestHandler SMethod @'FromClient @'Request m
m Handler @'FromClient @'Request f m
h = DMap
@(Method 'FromClient 'Request)
(SMethod @'FromClient @'Request)
(ClientMessageHandler f 'Request)
-> DMap
@(Method 'FromClient 'Notification)
(SMethod @'FromClient @'Notification)
(ClientMessageHandler f 'Notification)
-> Handlers f
forall (m :: * -> *).
DMap
@(Method 'FromClient 'Request)
(SMethod @'FromClient @'Request)
(ClientMessageHandler m 'Request)
-> DMap
@(Method 'FromClient 'Notification)
(SMethod @'FromClient @'Notification)
(ClientMessageHandler m 'Notification)
-> Handlers m
Handlers (SMethod @'FromClient @'Request m
-> ClientMessageHandler f 'Request m
-> DMap
@(Method 'FromClient 'Request)
(SMethod @'FromClient @'Request)
(ClientMessageHandler f 'Request)
forall k1 (k2 :: k1 -> *) (v :: k1) (f :: k1 -> *).
k2 v -> f v -> DMap @k1 k2 f
DMap.singleton SMethod @'FromClient @'Request m
m (Handler @'FromClient @'Request f m
-> ClientMessageHandler f 'Request m
forall (f :: * -> *) (t :: MethodType) (m :: Method 'FromClient t).
Handler @'FromClient @t f m -> ClientMessageHandler f t m
ClientMessageHandler Handler @'FromClient @'Request f m
h)) DMap
@(Method 'FromClient 'Notification)
(SMethod @'FromClient @'Notification)
(ClientMessageHandler f 'Notification)
forall a. Monoid a => a
mempty
newtype ClientMessageHandler f (t :: MethodType) (m :: Method FromClient t) = ClientMessageHandler (Handler f m)
type family Handler (f :: Type -> Type) (m :: Method from t) = (result :: Type) | result -> f t m where
Handler f (m :: Method _from Request) = RequestMessage m -> (Either ResponseError (ResponseResult m) -> f ()) -> f ()
Handler f (m :: Method _from Notification) = NotificationMessage m -> f ()
data m <~> n
= Iso
{ (<~>) @k m n -> forall (a :: k). m a -> n a
forward :: forall a. m a -> n a
, (<~>) @k m n -> forall (a :: k). n a -> m a
backward :: forall a. n a -> m a
}
transmuteHandlers :: (m <~> n) -> Handlers m -> Handlers n
transmuteHandlers :: (<~>) @* m n -> Handlers m -> Handlers n
transmuteHandlers (<~>) @* m n
nat = (forall (a :: Method 'FromClient 'Request).
Handler @'FromClient @'Request m a
-> Handler @'FromClient @'Request n a)
-> (forall (a :: Method 'FromClient 'Notification).
Handler @'FromClient @'Notification m a
-> Handler @'FromClient @'Notification n a)
-> Handlers m
-> Handlers n
forall (m :: * -> *) (n :: * -> *).
(forall (a :: Method 'FromClient 'Request).
Handler @'FromClient @'Request m a
-> Handler @'FromClient @'Request n a)
-> (forall (a :: Method 'FromClient 'Notification).
Handler @'FromClient @'Notification m a
-> Handler @'FromClient @'Notification n a)
-> Handlers m
-> Handlers n
mapHandlers (\Handler @'FromClient @'Request m a
i RequestMessage @'FromClient a
m Either ResponseError (ResponseResult @'FromClient a) -> n ()
k -> (<~>) @* m n -> m () -> n ()
forall k (m :: k -> *) (n :: k -> *).
(<~>) @k m n -> forall (a :: k). m a -> n a
forward (<~>) @* m n
nat (Handler @'FromClient @'Request m a
RequestMessage @'FromClient a
-> (Either ResponseError (ResponseResult @'FromClient a) -> m ())
-> m ()
i RequestMessage @'FromClient a
m ((<~>) @* m n -> forall a. n a -> m a
forall k (m :: k -> *) (n :: k -> *).
(<~>) @k m n -> forall (a :: k). n a -> m a
backward (<~>) @* m n
nat (n () -> m ())
-> (Either ResponseError (ResponseResult @'FromClient a) -> n ())
-> Either ResponseError (ResponseResult @'FromClient a)
-> m ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Either ResponseError (ResponseResult @'FromClient a) -> n ()
k))) (\Handler @'FromClient @'Notification m a
i NotificationMessage @'FromClient a
m -> (<~>) @* m n -> m () -> n ()
forall k (m :: k -> *) (n :: k -> *).
(<~>) @k m n -> forall (a :: k). m a -> n a
forward (<~>) @* m n
nat (Handler @'FromClient @'Notification m a
NotificationMessage @'FromClient a -> m ()
i NotificationMessage @'FromClient a
m))
mapHandlers
:: (forall (a :: Method FromClient Request). Handler m a -> Handler n a)
-> (forall (a :: Method FromClient Notification). Handler m a -> Handler n a)
-> Handlers m -> Handlers n
mapHandlers :: (forall (a :: Method 'FromClient 'Request).
Handler @'FromClient @'Request m a
-> Handler @'FromClient @'Request n a)
-> (forall (a :: Method 'FromClient 'Notification).
Handler @'FromClient @'Notification m a
-> Handler @'FromClient @'Notification n a)
-> Handlers m
-> Handlers n
mapHandlers forall (a :: Method 'FromClient 'Request).
Handler @'FromClient @'Request m a
-> Handler @'FromClient @'Request n a
mapReq forall (a :: Method 'FromClient 'Notification).
Handler @'FromClient @'Notification m a
-> Handler @'FromClient @'Notification n a
mapNot (Handlers DMap
@(Method 'FromClient 'Request)
(SMethod @'FromClient @'Request)
(ClientMessageHandler m 'Request)
reqs DMap
@(Method 'FromClient 'Notification)
(SMethod @'FromClient @'Notification)
(ClientMessageHandler m 'Notification)
nots) = DMap
@(Method 'FromClient 'Request)
(SMethod @'FromClient @'Request)
(ClientMessageHandler n 'Request)
-> DMap
@(Method 'FromClient 'Notification)
(SMethod @'FromClient @'Notification)
(ClientMessageHandler n 'Notification)
-> Handlers n
forall (m :: * -> *).
DMap
@(Method 'FromClient 'Request)
(SMethod @'FromClient @'Request)
(ClientMessageHandler m 'Request)
-> DMap
@(Method 'FromClient 'Notification)
(SMethod @'FromClient @'Notification)
(ClientMessageHandler m 'Notification)
-> Handlers m
Handlers DMap
@(Method 'FromClient 'Request)
(SMethod @'FromClient @'Request)
(ClientMessageHandler n 'Request)
reqs' DMap
@(Method 'FromClient 'Notification)
(SMethod @'FromClient @'Notification)
(ClientMessageHandler n 'Notification)
nots'
where
reqs' :: DMap
@(Method 'FromClient 'Request)
(SMethod @'FromClient @'Request)
(ClientMessageHandler n 'Request)
reqs' = (forall (v :: Method 'FromClient 'Request).
ClientMessageHandler m 'Request v
-> ClientMessageHandler n 'Request v)
-> DMap
@(Method 'FromClient 'Request)
(SMethod @'FromClient @'Request)
(ClientMessageHandler m 'Request)
-> DMap
@(Method 'FromClient 'Request)
(SMethod @'FromClient @'Request)
(ClientMessageHandler n 'Request)
forall k1 (f :: k1 -> *) (g :: k1 -> *) (k2 :: k1 -> *).
(forall (v :: k1). f v -> g v) -> DMap @k1 k2 f -> DMap @k1 k2 g
DMap.map (\(ClientMessageHandler i) -> Handler @'FromClient @'Request n v
-> ClientMessageHandler n 'Request v
forall (f :: * -> *) (t :: MethodType) (m :: Method 'FromClient t).
Handler @'FromClient @t f m -> ClientMessageHandler f t m
ClientMessageHandler (Handler @'FromClient @'Request n v
-> ClientMessageHandler n 'Request v)
-> Handler @'FromClient @'Request n v
-> ClientMessageHandler n 'Request v
forall a b. (a -> b) -> a -> b
$ Handler @'FromClient @'Request m v
-> Handler @'FromClient @'Request n v
forall (a :: Method 'FromClient 'Request).
Handler @'FromClient @'Request m a
-> Handler @'FromClient @'Request n a
mapReq Handler @'FromClient @'Request m v
i) DMap
@(Method 'FromClient 'Request)
(SMethod @'FromClient @'Request)
(ClientMessageHandler m 'Request)
reqs
nots' :: DMap
@(Method 'FromClient 'Notification)
(SMethod @'FromClient @'Notification)
(ClientMessageHandler n 'Notification)
nots' = (forall (v :: Method 'FromClient 'Notification).
ClientMessageHandler m 'Notification v
-> ClientMessageHandler n 'Notification v)
-> DMap
@(Method 'FromClient 'Notification)
(SMethod @'FromClient @'Notification)
(ClientMessageHandler m 'Notification)
-> DMap
@(Method 'FromClient 'Notification)
(SMethod @'FromClient @'Notification)
(ClientMessageHandler n 'Notification)
forall k1 (f :: k1 -> *) (g :: k1 -> *) (k2 :: k1 -> *).
(forall (v :: k1). f v -> g v) -> DMap @k1 k2 f -> DMap @k1 k2 g
DMap.map (\(ClientMessageHandler i) -> Handler @'FromClient @'Notification n v
-> ClientMessageHandler n 'Notification v
forall (f :: * -> *) (t :: MethodType) (m :: Method 'FromClient t).
Handler @'FromClient @t f m -> ClientMessageHandler f t m
ClientMessageHandler (Handler @'FromClient @'Notification n v
-> ClientMessageHandler n 'Notification v)
-> Handler @'FromClient @'Notification n v
-> ClientMessageHandler n 'Notification v
forall a b. (a -> b) -> a -> b
$ Handler @'FromClient @'Notification m v
-> Handler @'FromClient @'Notification n v
forall (a :: Method 'FromClient 'Notification).
Handler @'FromClient @'Notification m a
-> Handler @'FromClient @'Notification n a
mapNot Handler @'FromClient @'Notification m v
i) DMap
@(Method 'FromClient 'Notification)
(SMethod @'FromClient @'Notification)
(ClientMessageHandler m 'Notification)
nots
data LanguageContextState config =
LanguageContextState
{ LanguageContextState config -> VFSData
resVFS :: !VFSData
, LanguageContextState config -> DiagnosticStore
resDiagnostics :: !DiagnosticStore
, LanguageContextState config -> Maybe config
resConfig :: !(Maybe config)
, LanguageContextState config -> [WorkspaceFolder]
resWorkspaceFolders :: ![WorkspaceFolder]
, LanguageContextState config -> ProgressData
resProgressData :: !ProgressData
, LanguageContextState config -> ResponseMap
resPendingResponses :: !ResponseMap
, LanguageContextState config -> RegistrationMap 'Notification
resRegistrationsNot :: !(RegistrationMap Notification)
, LanguageContextState config -> RegistrationMap 'Request
resRegistrationsReq :: !(RegistrationMap Request)
, LanguageContextState config -> Int
resLspId :: !Int
}
type ResponseMap = IxMap LspId (Product SMethod ServerResponseCallback)
type RegistrationMap (t :: MethodType) = DMap SMethod (Product RegistrationId (ClientMessageHandler IO t))
data RegistrationToken (m :: Method FromClient t) = RegistrationToken (SMethod m) (RegistrationId m)
newtype RegistrationId (m :: Method FromClient t) = RegistrationId Text
deriving RegistrationId @t m -> RegistrationId @t m -> Bool
(RegistrationId @t m -> RegistrationId @t m -> Bool)
-> (RegistrationId @t m -> RegistrationId @t m -> Bool)
-> Eq (RegistrationId @t m)
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
forall (t :: MethodType) (m :: Method 'FromClient t).
RegistrationId @t m -> RegistrationId @t m -> Bool
/= :: RegistrationId @t m -> RegistrationId @t m -> Bool
$c/= :: forall (t :: MethodType) (m :: Method 'FromClient t).
RegistrationId @t m -> RegistrationId @t m -> Bool
== :: RegistrationId @t m -> RegistrationId @t m -> Bool
$c== :: forall (t :: MethodType) (m :: Method 'FromClient t).
RegistrationId @t m -> RegistrationId @t m -> Bool
Eq
data ProgressData = ProgressData { ProgressData -> Int
progressNextId :: !Int
, ProgressData -> Map ProgressToken (IO ())
progressCancel :: !(Map.Map ProgressToken (IO ())) }
data VFSData =
VFSData
{ VFSData -> VFS
vfsData :: !VFS
, VFSData -> Map FilePath FilePath
reverseMap :: !(Map.Map FilePath FilePath)
}
modifyState :: MonadLsp config m => (LanguageContextState config -> LanguageContextState config) -> m ()
modifyState :: (LanguageContextState config -> LanguageContextState config)
-> m ()
modifyState LanguageContextState config -> LanguageContextState config
f = do
TVar (LanguageContextState config)
tvarDat <- LanguageContextEnv config -> TVar (LanguageContextState config)
forall config.
LanguageContextEnv config -> TVar (LanguageContextState config)
resState (LanguageContextEnv config -> TVar (LanguageContextState config))
-> m (LanguageContextEnv config)
-> m (TVar (LanguageContextState config))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> m (LanguageContextEnv config)
forall config (m :: * -> *).
MonadLsp config m =>
m (LanguageContextEnv config)
getLspEnv
IO () -> m ()
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ STM () -> IO ()
forall a. STM a -> IO a
atomically (STM () -> IO ()) -> STM () -> IO ()
forall a b. (a -> b) -> a -> b
$ TVar (LanguageContextState config)
-> (LanguageContextState config -> LanguageContextState config)
-> STM ()
forall a. TVar a -> (a -> a) -> STM ()
modifyTVar' TVar (LanguageContextState config)
tvarDat LanguageContextState config -> LanguageContextState config
f
stateState :: MonadLsp config m => (LanguageContextState config -> (a,LanguageContextState config)) -> m a
stateState :: (LanguageContextState config -> (a, LanguageContextState config))
-> m a
stateState LanguageContextState config -> (a, LanguageContextState config)
f = do
TVar (LanguageContextState config)
tvarDat <- LanguageContextEnv config -> TVar (LanguageContextState config)
forall config.
LanguageContextEnv config -> TVar (LanguageContextState config)
resState (LanguageContextEnv config -> TVar (LanguageContextState config))
-> m (LanguageContextEnv config)
-> m (TVar (LanguageContextState config))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> m (LanguageContextEnv config)
forall config (m :: * -> *).
MonadLsp config m =>
m (LanguageContextEnv config)
getLspEnv
IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO a -> m a) -> IO a -> m a
forall a b. (a -> b) -> a -> b
$ STM a -> IO a
forall a. STM a -> IO a
atomically (STM a -> IO a) -> STM a -> IO a
forall a b. (a -> b) -> a -> b
$ TVar (LanguageContextState config)
-> (LanguageContextState config
-> (a, LanguageContextState config))
-> STM a
forall s a. TVar s -> (s -> (a, s)) -> STM a
stateTVar TVar (LanguageContextState config)
tvarDat LanguageContextState config -> (a, LanguageContextState config)
f
getsState :: MonadLsp config m => (LanguageContextState config -> a) -> m a
getsState :: (LanguageContextState config -> a) -> m a
getsState LanguageContextState config -> a
f = do
TVar (LanguageContextState config)
tvarDat <- LanguageContextEnv config -> TVar (LanguageContextState config)
forall config.
LanguageContextEnv config -> TVar (LanguageContextState config)
resState (LanguageContextEnv config -> TVar (LanguageContextState config))
-> m (LanguageContextEnv config)
-> m (TVar (LanguageContextState config))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> m (LanguageContextEnv config)
forall config (m :: * -> *).
MonadLsp config m =>
m (LanguageContextEnv config)
getLspEnv
IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO a -> m a) -> IO a -> m a
forall a b. (a -> b) -> a -> b
$ LanguageContextState config -> a
f (LanguageContextState config -> a)
-> IO (LanguageContextState config) -> IO a
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> TVar (LanguageContextState config)
-> IO (LanguageContextState config)
forall a. TVar a -> IO a
readTVarIO TVar (LanguageContextState config)
tvarDat
data Options =
Options
{ Options -> Maybe TextDocumentSyncOptions
textDocumentSync :: Maybe J.TextDocumentSyncOptions
, Options -> Maybe FilePath
completionTriggerCharacters :: Maybe [Char]
, Options -> Maybe FilePath
completionAllCommitCharacters :: Maybe [Char]
, Options -> Maybe FilePath
signatureHelpTriggerCharacters :: Maybe [Char]
, Options -> Maybe FilePath
signatureHelpRetriggerCharacters :: Maybe [Char]
, Options -> Maybe [CodeActionKind]
codeActionKinds :: Maybe [CodeActionKind]
, Options -> Maybe (NonEmpty Char)
documentOnTypeFormattingTriggerCharacters :: Maybe (NonEmpty Char)
, Options -> Maybe [Text]
executeCommandCommands :: Maybe [Text]
, Options -> Maybe ServerInfo
serverInfo :: Maybe J.ServerInfo
}
instance Default Options where
def :: Options
def = Maybe TextDocumentSyncOptions
-> Maybe FilePath
-> Maybe FilePath
-> Maybe FilePath
-> Maybe FilePath
-> Maybe [CodeActionKind]
-> Maybe (NonEmpty Char)
-> Maybe [Text]
-> Maybe ServerInfo
-> Options
Options Maybe TextDocumentSyncOptions
forall a. Maybe a
Nothing Maybe FilePath
forall a. Maybe a
Nothing Maybe FilePath
forall a. Maybe a
Nothing Maybe FilePath
forall a. Maybe a
Nothing Maybe FilePath
forall a. Maybe a
Nothing
Maybe [CodeActionKind]
forall a. Maybe a
Nothing Maybe (NonEmpty Char)
forall a. Maybe a
Nothing Maybe [Text]
forall a. Maybe a
Nothing Maybe ServerInfo
forall a. Maybe a
Nothing
defaultOptions :: Options
defaultOptions :: Options
defaultOptions = Options
forall a. Default a => a
def
data ProgressAmount = ProgressAmount (Maybe Double) (Maybe Text)
data ProgressCancelledException = ProgressCancelledException
deriving Int -> ProgressCancelledException -> ShowS
[ProgressCancelledException] -> ShowS
ProgressCancelledException -> FilePath
(Int -> ProgressCancelledException -> ShowS)
-> (ProgressCancelledException -> FilePath)
-> ([ProgressCancelledException] -> ShowS)
-> Show ProgressCancelledException
forall a.
(Int -> a -> ShowS) -> (a -> FilePath) -> ([a] -> ShowS) -> Show a
showList :: [ProgressCancelledException] -> ShowS
$cshowList :: [ProgressCancelledException] -> ShowS
show :: ProgressCancelledException -> FilePath
$cshow :: ProgressCancelledException -> FilePath
showsPrec :: Int -> ProgressCancelledException -> ShowS
$cshowsPrec :: Int -> ProgressCancelledException -> ShowS
Show
instance E.Exception ProgressCancelledException
data ProgressCancellable = Cancellable | NotCancellable
data ServerDefinition config = forall m a.
ServerDefinition
{ ()
onConfigurationChange :: J.Value -> m (Either T.Text config)
, ()
doInitialize :: LanguageContextEnv config -> Message Initialize -> IO (Either ResponseError a)
, ()
staticHandlers :: Handlers m
, ()
interpretHandler :: a -> (m <~> IO)
, ServerDefinition config -> Options
options :: Options
}
newtype ServerResponseCallback (m :: Method FromServer Request)
= ServerResponseCallback (Either ResponseError (ResponseResult m) -> IO ())
addResponseHandler :: MonadLsp config f => LspId m -> (Product SMethod ServerResponseCallback) m -> f Bool
addResponseHandler :: LspId @'FromServer m
-> Product
@(Method 'FromServer 'Request)
(SMethod @'FromServer @'Request)
ServerResponseCallback
m
-> f Bool
addResponseHandler LspId @'FromServer m
lid Product
@(Method 'FromServer 'Request)
(SMethod @'FromServer @'Request)
ServerResponseCallback
m
h = do
(LanguageContextState config
-> (Bool, LanguageContextState config))
-> f Bool
forall config (m :: * -> *) a.
MonadLsp config m =>
(LanguageContextState config -> (a, LanguageContextState config))
-> m a
stateState ((LanguageContextState config
-> (Bool, LanguageContextState config))
-> f Bool)
-> (LanguageContextState config
-> (Bool, LanguageContextState config))
-> f Bool
forall a b. (a -> b) -> a -> b
$ \ctx :: LanguageContextState config
ctx@LanguageContextState{ResponseMap
resPendingResponses :: ResponseMap
resPendingResponses :: forall config. LanguageContextState config -> ResponseMap
resPendingResponses} ->
case LspId @'FromServer m
-> Product
@(Method 'FromServer 'Request)
(SMethod @'FromServer @'Request)
ServerResponseCallback
m
-> ResponseMap
-> Maybe ResponseMap
forall a (k :: a -> *) (m :: a) (f :: a -> *).
IxOrd @a k =>
k m -> f m -> IxMap @a k f -> Maybe (IxMap @a k f)
insertIxMap LspId @'FromServer m
lid Product
@(Method 'FromServer 'Request)
(SMethod @'FromServer @'Request)
ServerResponseCallback
m
h ResponseMap
resPendingResponses of
Just ResponseMap
m -> (Bool
True, LanguageContextState config
ctx { resPendingResponses :: ResponseMap
resPendingResponses = ResponseMap
m})
Maybe ResponseMap
Nothing -> (Bool
False, LanguageContextState config
ctx)
sendNotification
:: forall (m :: Method FromServer Notification) f config. MonadLsp config f
=> SServerMethod m
-> MessageParams m
-> f ()
sendNotification :: SServerMethod @'Notification m
-> MessageParams @'FromServer @'Notification m -> f ()
sendNotification SServerMethod @'Notification m
m MessageParams @'FromServer @'Notification m
params =
let msg :: NotificationMessage @'FromServer m
msg = Text
-> SServerMethod @'Notification m
-> MessageParams @'FromServer @'Notification m
-> NotificationMessage @'FromServer m
forall (f :: From) (m :: Method f 'Notification).
Text
-> SMethod @f @'Notification m
-> MessageParams @f @'Notification m
-> NotificationMessage @f m
NotificationMessage Text
"2.0" SServerMethod @'Notification m
m MessageParams @'FromServer @'Notification m
params
in case SServerMethod @'Notification m -> ServerNotOrReq @'Notification m
forall (t :: MethodType) (m :: Method 'FromServer t).
SServerMethod @t m -> ServerNotOrReq @t m
splitServerMethod SServerMethod @'Notification m
m of
ServerNotOrReq @'Notification m
IsServerNot -> FromServerMessage -> f ()
forall config (m :: * -> *).
MonadLsp config m =>
FromServerMessage -> m ()
sendToClient (FromServerMessage -> f ()) -> FromServerMessage -> f ()
forall a b. (a -> b) -> a -> b
$ NotificationMessage @'FromServer m -> FromServerMessage
forall (m :: Method 'FromServer 'Notification).
((Message @'FromServer @'Notification m :: *)
~ (NotificationMessage @'FromServer m :: *)) =>
NotificationMessage @'FromServer m -> FromServerMessage
fromServerNot NotificationMessage @'FromServer m
msg
ServerNotOrReq @'Notification m
IsServerEither -> FromServerMessage -> f ()
forall config (m :: * -> *).
MonadLsp config m =>
FromServerMessage -> m ()
sendToClient (FromServerMessage -> f ()) -> FromServerMessage -> f ()
forall a b. (a -> b) -> a -> b
$ SServerMethod @'Notification m
-> Message @'FromServer @'Notification m -> FromServerMessage
forall (t :: MethodType) (m :: Method 'FromServer t)
(a :: Method 'FromClient 'Request -> *).
SMethod @'FromServer @t m
-> Message @'FromServer @t m -> FromServerMessage' a
FromServerMess SServerMethod @'Notification m
m (Message @'FromServer @'Notification m -> FromServerMessage)
-> Message @'FromServer @'Notification m -> FromServerMessage
forall a b. (a -> b) -> a -> b
$ NotificationMessage
@'FromServer ('CustomMethod @'FromServer @'Notification)
-> CustomMessage 'FromServer 'Notification
forall (f :: From).
NotificationMessage @f ('CustomMethod @f @'Notification)
-> CustomMessage f 'Notification
NotMess NotificationMessage @'FromServer m
NotificationMessage
@'FromServer ('CustomMethod @'FromServer @'Notification)
msg
sendRequest :: forall (m :: Method FromServer Request) f config. MonadLsp config f
=> SServerMethod m
-> MessageParams m
-> (Either ResponseError (ResponseResult m) -> f ())
-> f (LspId m)
sendRequest :: SServerMethod @'Request m
-> MessageParams @'FromServer @'Request m
-> (Either ResponseError (ResponseResult @'FromServer m) -> f ())
-> f (LspId @'FromServer m)
sendRequest SServerMethod @'Request m
m MessageParams @'FromServer @'Request m
params Either ResponseError (ResponseResult @'FromServer m) -> f ()
resHandler = do
LspId @'FromServer m
reqId <- Int -> LspId @'FromServer m
forall (f :: From) (m :: Method f 'Request). Int -> LspId @f m
IdInt (Int -> LspId @'FromServer m) -> f Int -> f (LspId @'FromServer m)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> f Int
forall config (m :: * -> *). MonadLsp config m => m Int
freshLspId
f () -> IO ()
rio <- f (f () -> IO ())
forall (m :: * -> *) a. MonadUnliftIO m => m (m a -> IO a)
askRunInIO
Bool
success <- LspId @'FromServer m
-> Product
@(Method 'FromServer 'Request)
(SMethod @'FromServer @'Request)
ServerResponseCallback
m
-> f Bool
forall config (f :: * -> *) (m :: Method 'FromServer 'Request).
MonadLsp config f =>
LspId @'FromServer m
-> Product
@(Method 'FromServer 'Request)
(SMethod @'FromServer @'Request)
ServerResponseCallback
m
-> f Bool
addResponseHandler LspId @'FromServer m
reqId (SServerMethod @'Request m
-> ServerResponseCallback m
-> Product
@(Method 'FromServer 'Request)
(SMethod @'FromServer @'Request)
ServerResponseCallback
m
forall k (f :: k -> *) (g :: k -> *) (a :: k).
f a -> g a -> Product @k f g a
Pair SServerMethod @'Request m
m ((Either ResponseError (ResponseResult @'FromServer m) -> IO ())
-> ServerResponseCallback m
forall (m :: Method 'FromServer 'Request).
(Either ResponseError (ResponseResult @'FromServer m) -> IO ())
-> ServerResponseCallback m
ServerResponseCallback (f () -> IO ()
rio (f () -> IO ())
-> (Either ResponseError (ResponseResult @'FromServer m) -> f ())
-> Either ResponseError (ResponseResult @'FromServer m)
-> IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Either ResponseError (ResponseResult @'FromServer m) -> f ()
resHandler)))
Bool -> f () -> f ()
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
unless Bool
success (f () -> f ()) -> f () -> f ()
forall a b. (a -> b) -> a -> b
$ FilePath -> f ()
forall a. HasCallStack => FilePath -> a
error FilePath
"haskell-lsp: could not send FromServer request as id is reused"
let msg :: RequestMessage @'FromServer m
msg = Text
-> LspId @'FromServer m
-> SServerMethod @'Request m
-> MessageParams @'FromServer @'Request m
-> RequestMessage @'FromServer m
forall (f :: From) (m :: Method f 'Request).
Text
-> LspId @f m
-> SMethod @f @'Request m
-> MessageParams @f @'Request m
-> RequestMessage @f m
RequestMessage Text
"2.0" LspId @'FromServer m
reqId SServerMethod @'Request m
m MessageParams @'FromServer @'Request m
params
~() <- case SServerMethod @'Request m -> ServerNotOrReq @'Request m
forall (t :: MethodType) (m :: Method 'FromServer t).
SServerMethod @t m -> ServerNotOrReq @t m
splitServerMethod SServerMethod @'Request m
m of
ServerNotOrReq @'Request m
IsServerReq -> FromServerMessage -> f ()
forall config (m :: * -> *).
MonadLsp config m =>
FromServerMessage -> m ()
sendToClient (FromServerMessage -> f ()) -> FromServerMessage -> f ()
forall a b. (a -> b) -> a -> b
$ RequestMessage @'FromServer m -> FromServerMessage
forall (m :: Method 'FromServer 'Request).
((Message @'FromServer @'Request m :: *)
~ (RequestMessage @'FromServer m :: *)) =>
RequestMessage @'FromServer m -> FromServerMessage
fromServerReq RequestMessage @'FromServer m
msg
ServerNotOrReq @'Request m
IsServerEither -> FromServerMessage -> f ()
forall config (m :: * -> *).
MonadLsp config m =>
FromServerMessage -> m ()
sendToClient (FromServerMessage -> f ()) -> FromServerMessage -> f ()
forall a b. (a -> b) -> a -> b
$ SServerMethod @'Request m
-> Message @'FromServer @'Request m -> FromServerMessage
forall (t :: MethodType) (m :: Method 'FromServer t)
(a :: Method 'FromClient 'Request -> *).
SMethod @'FromServer @t m
-> Message @'FromServer @t m -> FromServerMessage' a
FromServerMess SServerMethod @'Request m
m (Message @'FromServer @'Request m -> FromServerMessage)
-> Message @'FromServer @'Request m -> FromServerMessage
forall a b. (a -> b) -> a -> b
$ RequestMessage @'FromServer ('CustomMethod @'FromServer @'Request)
-> CustomMessage 'FromServer 'Request
forall (f :: From).
RequestMessage @f ('CustomMethod @f @'Request)
-> CustomMessage f 'Request
ReqMess RequestMessage @'FromServer m
RequestMessage @'FromServer ('CustomMethod @'FromServer @'Request)
msg
LspId @'FromServer m -> f (LspId @'FromServer m)
forall (m :: * -> *) a. Monad m => a -> m a
return LspId @'FromServer m
reqId
getVirtualFile :: MonadLsp config m => NormalizedUri -> m (Maybe VirtualFile)
getVirtualFile :: NormalizedUri -> m (Maybe VirtualFile)
getVirtualFile NormalizedUri
uri = (LanguageContextState config -> Maybe VirtualFile)
-> m (Maybe VirtualFile)
forall config (m :: * -> *) a.
MonadLsp config m =>
(LanguageContextState config -> a) -> m a
getsState ((LanguageContextState config -> Maybe VirtualFile)
-> m (Maybe VirtualFile))
-> (LanguageContextState config -> Maybe VirtualFile)
-> m (Maybe VirtualFile)
forall a b. (a -> b) -> a -> b
$ NormalizedUri -> Map NormalizedUri VirtualFile -> Maybe VirtualFile
forall k a. Ord k => k -> Map k a -> Maybe a
Map.lookup NormalizedUri
uri (Map NormalizedUri VirtualFile -> Maybe VirtualFile)
-> (LanguageContextState config -> Map NormalizedUri VirtualFile)
-> LanguageContextState config
-> Maybe VirtualFile
forall b c a. (b -> c) -> (a -> b) -> a -> c
. VFS -> Map NormalizedUri VirtualFile
vfsMap (VFS -> Map NormalizedUri VirtualFile)
-> (LanguageContextState config -> VFS)
-> LanguageContextState config
-> Map NormalizedUri VirtualFile
forall b c a. (b -> c) -> (a -> b) -> a -> c
. VFSData -> VFS
vfsData (VFSData -> VFS)
-> (LanguageContextState config -> VFSData)
-> LanguageContextState config
-> VFS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. LanguageContextState config -> VFSData
forall config. LanguageContextState config -> VFSData
resVFS
getVirtualFiles :: MonadLsp config m => m VFS
getVirtualFiles :: m VFS
getVirtualFiles = (LanguageContextState config -> VFS) -> m VFS
forall config (m :: * -> *) a.
MonadLsp config m =>
(LanguageContextState config -> a) -> m a
getsState ((LanguageContextState config -> VFS) -> m VFS)
-> (LanguageContextState config -> VFS) -> m VFS
forall a b. (a -> b) -> a -> b
$ VFSData -> VFS
vfsData (VFSData -> VFS)
-> (LanguageContextState config -> VFSData)
-> LanguageContextState config
-> VFS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. LanguageContextState config -> VFSData
forall config. LanguageContextState config -> VFSData
resVFS
persistVirtualFile :: MonadLsp config m => NormalizedUri -> m (Maybe FilePath)
persistVirtualFile :: NormalizedUri -> m (Maybe FilePath)
persistVirtualFile NormalizedUri
uri = do
m (m (Maybe FilePath)) -> m (Maybe FilePath)
forall (m :: * -> *) a. Monad m => m (m a) -> m a
join (m (m (Maybe FilePath)) -> m (Maybe FilePath))
-> m (m (Maybe FilePath)) -> m (Maybe FilePath)
forall a b. (a -> b) -> a -> b
$ (LanguageContextState config
-> (m (Maybe FilePath), LanguageContextState config))
-> m (m (Maybe FilePath))
forall config (m :: * -> *) a.
MonadLsp config m =>
(LanguageContextState config -> (a, LanguageContextState config))
-> m a
stateState ((LanguageContextState config
-> (m (Maybe FilePath), LanguageContextState config))
-> m (m (Maybe FilePath)))
-> (LanguageContextState config
-> (m (Maybe FilePath), LanguageContextState config))
-> m (m (Maybe FilePath))
forall a b. (a -> b) -> a -> b
$ \ctx :: LanguageContextState config
ctx@LanguageContextState{resVFS :: forall config. LanguageContextState config -> VFSData
resVFS = VFSData
vfs} ->
case VFS -> NormalizedUri -> Maybe (FilePath, IO ())
persistFileVFS (VFSData -> VFS
vfsData VFSData
vfs) NormalizedUri
uri of
Maybe (FilePath, IO ())
Nothing -> (Maybe FilePath -> m (Maybe FilePath)
forall (m :: * -> *) a. Monad m => a -> m a
return Maybe FilePath
forall a. Maybe a
Nothing, LanguageContextState config
ctx)
Just (FilePath
fn, IO ()
write) ->
let revMap :: Map FilePath FilePath
revMap = case Uri -> Maybe FilePath
uriToFilePath (NormalizedUri -> Uri
fromNormalizedUri NormalizedUri
uri) of
Just FilePath
uri_fp -> FilePath
-> FilePath -> Map FilePath FilePath -> Map FilePath FilePath
forall k a. Ord k => k -> a -> Map k a -> Map k a
Map.insert FilePath
fn FilePath
uri_fp (Map FilePath FilePath -> Map FilePath FilePath)
-> Map FilePath FilePath -> Map FilePath FilePath
forall a b. (a -> b) -> a -> b
$ VFSData -> Map FilePath FilePath
reverseMap VFSData
vfs
Maybe FilePath
Nothing -> VFSData -> Map FilePath FilePath
reverseMap VFSData
vfs
act :: m (Maybe FilePath)
act = do
IO () -> m ()
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO IO ()
write
Maybe FilePath -> m (Maybe FilePath)
forall (f :: * -> *) a. Applicative f => a -> f a
pure (FilePath -> Maybe FilePath
forall a. a -> Maybe a
Just FilePath
fn)
in (m (Maybe FilePath)
act, LanguageContextState config
ctx{resVFS :: VFSData
resVFS = VFSData
vfs {reverseMap :: Map FilePath FilePath
reverseMap = Map FilePath FilePath
revMap} })
getVersionedTextDoc :: MonadLsp config m => TextDocumentIdentifier -> m VersionedTextDocumentIdentifier
getVersionedTextDoc :: TextDocumentIdentifier -> m VersionedTextDocumentIdentifier
getVersionedTextDoc TextDocumentIdentifier
doc = do
let uri :: Uri
uri = TextDocumentIdentifier
doc TextDocumentIdentifier
-> Getting Uri TextDocumentIdentifier Uri -> Uri
forall s a. s -> Getting a s a -> a
^. Getting Uri TextDocumentIdentifier Uri
forall s a. HasUri s a => Lens' s a
J.uri
Maybe VirtualFile
mvf <- NormalizedUri -> m (Maybe VirtualFile)
forall config (m :: * -> *).
MonadLsp config m =>
NormalizedUri -> m (Maybe VirtualFile)
getVirtualFile (Uri -> NormalizedUri
toNormalizedUri Uri
uri)
let ver :: Maybe Int
ver = case Maybe VirtualFile
mvf of
Just (VirtualFile Int
lspver Int
_ Rope
_) -> Int -> Maybe Int
forall a. a -> Maybe a
Just Int
lspver
Maybe VirtualFile
Nothing -> Maybe Int
forall a. Maybe a
Nothing
VersionedTextDocumentIdentifier
-> m VersionedTextDocumentIdentifier
forall (m :: * -> *) a. Monad m => a -> m a
return (Uri -> Maybe Int -> VersionedTextDocumentIdentifier
VersionedTextDocumentIdentifier Uri
uri Maybe Int
ver)
reverseFileMap :: MonadLsp config m => m (FilePath -> FilePath)
reverseFileMap :: m ShowS
reverseFileMap = do
VFSData
vfs <- (LanguageContextState config -> VFSData) -> m VFSData
forall config (m :: * -> *) a.
MonadLsp config m =>
(LanguageContextState config -> a) -> m a
getsState LanguageContextState config -> VFSData
forall config. LanguageContextState config -> VFSData
resVFS
let f :: ShowS
f FilePath
fp = FilePath -> Maybe FilePath -> FilePath
forall a. a -> Maybe a -> a
fromMaybe FilePath
fp (Maybe FilePath -> FilePath)
-> (VFSData -> Maybe FilePath) -> VFSData -> FilePath
forall b c a. (b -> c) -> (a -> b) -> a -> c
. FilePath -> Map FilePath FilePath -> Maybe FilePath
forall k a. Ord k => k -> Map k a -> Maybe a
Map.lookup FilePath
fp (Map FilePath FilePath -> Maybe FilePath)
-> (VFSData -> Map FilePath FilePath) -> VFSData -> Maybe FilePath
forall b c a. (b -> c) -> (a -> b) -> a -> c
. VFSData -> Map FilePath FilePath
reverseMap (VFSData -> FilePath) -> VFSData -> FilePath
forall a b. (a -> b) -> a -> b
$ VFSData
vfs
ShowS -> m ShowS
forall (m :: * -> *) a. Monad m => a -> m a
return ShowS
f
defaultProgressData :: ProgressData
defaultProgressData :: ProgressData
defaultProgressData = Int -> Map ProgressToken (IO ()) -> ProgressData
ProgressData Int
0 Map ProgressToken (IO ())
forall k a. Map k a
Map.empty
sendToClient :: MonadLsp config m => FromServerMessage -> m ()
sendToClient :: FromServerMessage -> m ()
sendToClient FromServerMessage
msg = do
FromServerMessage -> IO ()
f <- LanguageContextEnv config -> FromServerMessage -> IO ()
forall config.
LanguageContextEnv config -> FromServerMessage -> IO ()
resSendMessage (LanguageContextEnv config -> FromServerMessage -> IO ())
-> m (LanguageContextEnv config) -> m (FromServerMessage -> IO ())
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> m (LanguageContextEnv config)
forall config (m :: * -> *).
MonadLsp config m =>
m (LanguageContextEnv config)
getLspEnv
IO () -> m ()
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ FromServerMessage -> IO ()
f FromServerMessage
msg
sendErrorLog :: MonadLsp config m => Text -> m ()
sendErrorLog :: Text -> m ()
sendErrorLog Text
msg =
FromServerMessage -> m ()
forall config (m :: * -> *).
MonadLsp config m =>
FromServerMessage -> m ()
sendToClient (FromServerMessage -> m ()) -> FromServerMessage -> m ()
forall a b. (a -> b) -> a -> b
$ NotificationMessage @'FromServer 'WindowLogMessage
-> FromServerMessage
forall (m :: Method 'FromServer 'Notification).
((Message @'FromServer @'Notification m :: *)
~ (NotificationMessage @'FromServer m :: *)) =>
NotificationMessage @'FromServer m -> FromServerMessage
fromServerNot (NotificationMessage @'FromServer 'WindowLogMessage
-> FromServerMessage)
-> NotificationMessage @'FromServer 'WindowLogMessage
-> FromServerMessage
forall a b. (a -> b) -> a -> b
$
Text
-> SMethod @'FromServer @'Notification 'WindowLogMessage
-> MessageParams @'FromServer @'Notification 'WindowLogMessage
-> NotificationMessage @'FromServer 'WindowLogMessage
forall (f :: From) (m :: Method f 'Notification).
Text
-> SMethod @f @'Notification m
-> MessageParams @f @'Notification m
-> NotificationMessage @f m
NotificationMessage Text
"2.0" SMethod @'FromServer @'Notification 'WindowLogMessage
SWindowLogMessage (MessageType -> Text -> LogMessageParams
LogMessageParams MessageType
MtError Text
msg)
freshLspId :: MonadLsp config m => m Int
freshLspId :: m Int
freshLspId = do
(LanguageContextState config -> (Int, LanguageContextState config))
-> m Int
forall config (m :: * -> *) a.
MonadLsp config m =>
(LanguageContextState config -> (a, LanguageContextState config))
-> m a
stateState ((LanguageContextState config
-> (Int, LanguageContextState config))
-> m Int)
-> (LanguageContextState config
-> (Int, LanguageContextState config))
-> m Int
forall a b. (a -> b) -> a -> b
$ \LanguageContextState config
c ->
(LanguageContextState config -> Int
forall config. LanguageContextState config -> Int
resLspId LanguageContextState config
c, LanguageContextState config
c{resLspId :: Int
resLspId = LanguageContextState config -> Int
forall config. LanguageContextState config -> Int
resLspId LanguageContextState config
cInt -> Int -> Int
forall a. Num a => a -> a -> a
+Int
1})
getConfig :: MonadLsp config m => m (Maybe config)
getConfig :: m (Maybe config)
getConfig = (LanguageContextState config -> Maybe config) -> m (Maybe config)
forall config (m :: * -> *) a.
MonadLsp config m =>
(LanguageContextState config -> a) -> m a
getsState LanguageContextState config -> Maybe config
forall config. LanguageContextState config -> Maybe config
resConfig
getClientCapabilities :: MonadLsp config m => m J.ClientCapabilities
getClientCapabilities :: m ClientCapabilities
getClientCapabilities = LanguageContextEnv config -> ClientCapabilities
forall config. LanguageContextEnv config -> ClientCapabilities
resClientCapabilities (LanguageContextEnv config -> ClientCapabilities)
-> m (LanguageContextEnv config) -> m ClientCapabilities
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> m (LanguageContextEnv config)
forall config (m :: * -> *).
MonadLsp config m =>
m (LanguageContextEnv config)
getLspEnv
getRootPath :: MonadLsp config m => m (Maybe FilePath)
getRootPath :: m (Maybe FilePath)
getRootPath = LanguageContextEnv config -> Maybe FilePath
forall config. LanguageContextEnv config -> Maybe FilePath
resRootPath (LanguageContextEnv config -> Maybe FilePath)
-> m (LanguageContextEnv config) -> m (Maybe FilePath)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> m (LanguageContextEnv config)
forall config (m :: * -> *).
MonadLsp config m =>
m (LanguageContextEnv config)
getLspEnv
getWorkspaceFolders :: MonadLsp config m => m (Maybe [WorkspaceFolder])
getWorkspaceFolders :: m (Maybe [WorkspaceFolder])
getWorkspaceFolders = do
ClientCapabilities
clientCaps <- m ClientCapabilities
forall config (m :: * -> *).
MonadLsp config m =>
m ClientCapabilities
getClientCapabilities
let clientSupportsWfs :: Bool
clientSupportsWfs = Bool -> Maybe Bool -> Bool
forall a. a -> Maybe a -> a
fromMaybe Bool
False (Maybe Bool -> Bool) -> Maybe Bool -> Bool
forall a b. (a -> b) -> a -> b
$ do
let (J.ClientCapabilities Maybe WorkspaceClientCapabilities
mw Maybe TextDocumentClientCapabilities
_ Maybe WindowClientCapabilities
_ Maybe Object
_) = ClientCapabilities
clientCaps
(J.WorkspaceClientCapabilities Maybe Bool
_ Maybe WorkspaceEditClientCapabilities
_ Maybe DidChangeConfigurationClientCapabilities
_ Maybe DidChangeWatchedFilesClientCapabilities
_ Maybe WorkspaceSymbolClientCapabilities
_ Maybe ExecuteCommandClientCapabilities
_ Maybe Bool
mwf Maybe Bool
_) <- Maybe WorkspaceClientCapabilities
mw
Maybe Bool
mwf
if Bool
clientSupportsWfs
then [WorkspaceFolder] -> Maybe [WorkspaceFolder]
forall a. a -> Maybe a
Just ([WorkspaceFolder] -> Maybe [WorkspaceFolder])
-> m [WorkspaceFolder] -> m (Maybe [WorkspaceFolder])
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (LanguageContextState config -> [WorkspaceFolder])
-> m [WorkspaceFolder]
forall config (m :: * -> *) a.
MonadLsp config m =>
(LanguageContextState config -> a) -> m a
getsState LanguageContextState config -> [WorkspaceFolder]
forall config. LanguageContextState config -> [WorkspaceFolder]
resWorkspaceFolders
else Maybe [WorkspaceFolder] -> m (Maybe [WorkspaceFolder])
forall (f :: * -> *) a. Applicative f => a -> f a
pure Maybe [WorkspaceFolder]
forall a. Maybe a
Nothing
registerCapability :: forall f t (m :: Method FromClient t) config.
MonadLsp config f
=> SClientMethod m
-> RegistrationOptions m
-> Handler f m
-> f (Maybe (RegistrationToken m))
registerCapability :: SClientMethod @t m
-> RegistrationOptions @t m
-> Handler @'FromClient @t f m
-> f (Maybe (RegistrationToken @t m))
registerCapability SClientMethod @t m
method RegistrationOptions @t m
regOpts Handler @'FromClient @t f m
f = do
ClientCapabilities
clientCaps <- LanguageContextEnv config -> ClientCapabilities
forall config. LanguageContextEnv config -> ClientCapabilities
resClientCapabilities (LanguageContextEnv config -> ClientCapabilities)
-> f (LanguageContextEnv config) -> f ClientCapabilities
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> f (LanguageContextEnv config)
forall config (m :: * -> *).
MonadLsp config m =>
m (LanguageContextEnv config)
getLspEnv
Handlers IO
handlers <- LanguageContextEnv config -> Handlers IO
forall config. LanguageContextEnv config -> Handlers IO
resHandlers (LanguageContextEnv config -> Handlers IO)
-> f (LanguageContextEnv config) -> f (Handlers IO)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> f (LanguageContextEnv config)
forall config (m :: * -> *).
MonadLsp config m =>
m (LanguageContextEnv config)
getLspEnv
let alreadyStaticallyRegistered :: Bool
alreadyStaticallyRegistered = case SClientMethod @t m -> ClientNotOrReq @t m
forall (t :: MethodType) (m :: Method 'FromClient t).
SClientMethod @t m -> ClientNotOrReq @t m
splitClientMethod SClientMethod @t m
method of
ClientNotOrReq @t m
IsClientNot -> SClientMethod @t m
-> DMap
@(Method 'FromClient t)
(SMethod @'FromClient @t)
(ClientMessageHandler IO 'Notification)
-> Bool
forall k1 (k2 :: k1 -> *) (a :: k1) (f :: k1 -> *).
GCompare @k1 k2 =>
k2 a -> DMap @k1 k2 f -> Bool
DMap.member SClientMethod @t m
method (DMap
@(Method 'FromClient t)
(SMethod @'FromClient @t)
(ClientMessageHandler IO 'Notification)
-> Bool)
-> DMap
@(Method 'FromClient t)
(SMethod @'FromClient @t)
(ClientMessageHandler IO 'Notification)
-> Bool
forall a b. (a -> b) -> a -> b
$ Handlers IO
-> DMap
@(Method 'FromClient 'Notification)
(SMethod @'FromClient @'Notification)
(ClientMessageHandler IO 'Notification)
forall (m :: * -> *).
Handlers m
-> DMap
@(Method 'FromClient 'Notification)
(SMethod @'FromClient @'Notification)
(ClientMessageHandler m 'Notification)
notHandlers Handlers IO
handlers
ClientNotOrReq @t m
IsClientReq -> SClientMethod @t m
-> DMap
@(Method 'FromClient t)
(SMethod @'FromClient @t)
(ClientMessageHandler IO 'Request)
-> Bool
forall k1 (k2 :: k1 -> *) (a :: k1) (f :: k1 -> *).
GCompare @k1 k2 =>
k2 a -> DMap @k1 k2 f -> Bool
DMap.member SClientMethod @t m
method (DMap
@(Method 'FromClient t)
(SMethod @'FromClient @t)
(ClientMessageHandler IO 'Request)
-> Bool)
-> DMap
@(Method 'FromClient t)
(SMethod @'FromClient @t)
(ClientMessageHandler IO 'Request)
-> Bool
forall a b. (a -> b) -> a -> b
$ Handlers IO
-> DMap
@(Method 'FromClient 'Request)
(SMethod @'FromClient @'Request)
(ClientMessageHandler IO 'Request)
forall (m :: * -> *).
Handlers m
-> DMap
@(Method 'FromClient 'Request)
(SMethod @'FromClient @'Request)
(ClientMessageHandler m 'Request)
reqHandlers Handlers IO
handlers
ClientNotOrReq @t m
IsClientEither -> FilePath -> Bool
forall a. HasCallStack => FilePath -> a
error FilePath
"Cannot register capability for custom methods"
ClientCapabilities -> Bool -> f (Maybe (RegistrationToken @t m))
go ClientCapabilities
clientCaps Bool
alreadyStaticallyRegistered
where
go :: ClientCapabilities -> Bool -> f (Maybe (RegistrationToken @t m))
go ClientCapabilities
_clientCaps Bool
True = Maybe (RegistrationToken @t m)
-> f (Maybe (RegistrationToken @t m))
forall (f :: * -> *) a. Applicative f => a -> f a
pure Maybe (RegistrationToken @t m)
forall a. Maybe a
Nothing
go ClientCapabilities
clientCaps Bool
False
| ClientCapabilities -> Bool
dynamicSupported ClientCapabilities
clientCaps = do
Text
uuid <- IO Text -> f Text
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO Text -> f Text) -> IO Text -> f Text
forall a b. (a -> b) -> a -> b
$ UUID -> Text
UUID.toText (UUID -> Text) -> IO UUID -> IO Text
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (StdGen -> (UUID, StdGen)) -> IO UUID
forall a. (StdGen -> (a, StdGen)) -> IO a
getStdRandom StdGen -> (UUID, StdGen)
forall a g. (Random a, RandomGen g) => g -> (a, g)
random
let registration :: Registration @t m
registration = Text
-> SClientMethod @t m
-> RegistrationOptions @t m
-> Registration @t m
forall (t :: MethodType) (m :: Method 'FromClient t).
Text
-> SClientMethod @t m
-> RegistrationOptions @t m
-> Registration @t m
J.Registration Text
uuid SClientMethod @t m
method RegistrationOptions @t m
regOpts
params :: RegistrationParams
params = List SomeRegistration -> RegistrationParams
J.RegistrationParams ([SomeRegistration] -> List SomeRegistration
forall a. [a] -> List a
J.List [Registration @t m -> SomeRegistration
forall (t :: MethodType) (m :: Method 'FromClient t).
Registration @t m -> SomeRegistration
J.SomeRegistration Registration @t m
registration])
regId :: RegistrationId @t m
regId = Text -> RegistrationId @t m
forall (t :: MethodType) (m :: Method 'FromClient t).
Text -> RegistrationId @t m
RegistrationId Text
uuid
UnliftIO f
rio <- f (UnliftIO f)
forall (m :: * -> *). MonadUnliftIO m => m (UnliftIO m)
askUnliftIO
~() <- case SClientMethod @t m -> ClientNotOrReq @t m
forall (t :: MethodType) (m :: Method 'FromClient t).
SClientMethod @t m -> ClientNotOrReq @t m
splitClientMethod SClientMethod @t m
method of
ClientNotOrReq @t m
IsClientNot -> (LanguageContextState config -> LanguageContextState config)
-> f ()
forall config (m :: * -> *).
MonadLsp config m =>
(LanguageContextState config -> LanguageContextState config)
-> m ()
modifyState ((LanguageContextState config -> LanguageContextState config)
-> f ())
-> (LanguageContextState config -> LanguageContextState config)
-> f ()
forall a b. (a -> b) -> a -> b
$ \LanguageContextState config
ctx ->
let newRegs :: DMap
@(Method 'FromClient t)
(SMethod @'FromClient @t)
(Product
@(Method 'FromClient 'Notification)
(RegistrationId @'Notification)
(ClientMessageHandler IO 'Notification))
newRegs = SClientMethod @t m
-> Product
@(Method 'FromClient 'Notification)
(RegistrationId @'Notification)
(ClientMessageHandler IO 'Notification)
m
-> DMap
@(Method 'FromClient t)
(SMethod @'FromClient @t)
(Product
@(Method 'FromClient 'Notification)
(RegistrationId @'Notification)
(ClientMessageHandler IO 'Notification))
-> DMap
@(Method 'FromClient t)
(SMethod @'FromClient @t)
(Product
@(Method 'FromClient 'Notification)
(RegistrationId @'Notification)
(ClientMessageHandler IO 'Notification))
forall k1 (k2 :: k1 -> *) (f :: k1 -> *) (v :: k1).
GCompare @k1 k2 =>
k2 v -> f v -> DMap @k1 k2 f -> DMap @k1 k2 f
DMap.insert SClientMethod @t m
method Product
@(Method 'FromClient t)
(RegistrationId @t)
(ClientMessageHandler IO t)
m
Product
@(Method 'FromClient 'Notification)
(RegistrationId @'Notification)
(ClientMessageHandler IO 'Notification)
m
pair (LanguageContextState config -> RegistrationMap 'Notification
forall config.
LanguageContextState config -> RegistrationMap 'Notification
resRegistrationsNot LanguageContextState config
ctx)
pair :: Product
@(Method 'FromClient t)
(RegistrationId @t)
(ClientMessageHandler IO t)
m
pair = RegistrationId @t m
-> ClientMessageHandler IO t m
-> Product
@(Method 'FromClient t)
(RegistrationId @t)
(ClientMessageHandler IO t)
m
forall k (f :: k -> *) (g :: k -> *) (a :: k).
f a -> g a -> Product @k f g a
Pair RegistrationId @t m
regId (Handler @'FromClient @t IO m -> ClientMessageHandler IO t m
forall (f :: * -> *) (t :: MethodType) (m :: Method 'FromClient t).
Handler @'FromClient @t f m -> ClientMessageHandler f t m
ClientMessageHandler (UnliftIO f -> forall a. f a -> IO a
forall (m :: * -> *). UnliftIO m -> forall a. m a -> IO a
unliftIO UnliftIO f
rio (f () -> IO ())
-> (NotificationMessage @'FromClient m -> f ())
-> NotificationMessage @'FromClient m
-> IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Handler @'FromClient @t f m
NotificationMessage @'FromClient m -> f ()
f))
in LanguageContextState config
ctx { resRegistrationsNot :: RegistrationMap 'Notification
resRegistrationsNot = DMap
@(Method 'FromClient t)
(SMethod @'FromClient @t)
(Product
@(Method 'FromClient 'Notification)
(RegistrationId @'Notification)
(ClientMessageHandler IO 'Notification))
RegistrationMap 'Notification
newRegs }
ClientNotOrReq @t m
IsClientReq -> (LanguageContextState config -> LanguageContextState config)
-> f ()
forall config (m :: * -> *).
MonadLsp config m =>
(LanguageContextState config -> LanguageContextState config)
-> m ()
modifyState ((LanguageContextState config -> LanguageContextState config)
-> f ())
-> (LanguageContextState config -> LanguageContextState config)
-> f ()
forall a b. (a -> b) -> a -> b
$ \LanguageContextState config
ctx ->
let newRegs :: DMap
@(Method 'FromClient t)
(SMethod @'FromClient @t)
(Product
@(Method 'FromClient 'Request)
(RegistrationId @'Request)
(ClientMessageHandler IO 'Request))
newRegs = SClientMethod @t m
-> Product
@(Method 'FromClient 'Request)
(RegistrationId @'Request)
(ClientMessageHandler IO 'Request)
m
-> DMap
@(Method 'FromClient t)
(SMethod @'FromClient @t)
(Product
@(Method 'FromClient 'Request)
(RegistrationId @'Request)
(ClientMessageHandler IO 'Request))
-> DMap
@(Method 'FromClient t)
(SMethod @'FromClient @t)
(Product
@(Method 'FromClient 'Request)
(RegistrationId @'Request)
(ClientMessageHandler IO 'Request))
forall k1 (k2 :: k1 -> *) (f :: k1 -> *) (v :: k1).
GCompare @k1 k2 =>
k2 v -> f v -> DMap @k1 k2 f -> DMap @k1 k2 f
DMap.insert SClientMethod @t m
method Product
@(Method 'FromClient t)
(RegistrationId @t)
(ClientMessageHandler IO t)
m
Product
@(Method 'FromClient 'Request)
(RegistrationId @'Request)
(ClientMessageHandler IO 'Request)
m
pair (LanguageContextState config -> RegistrationMap 'Request
forall config.
LanguageContextState config -> RegistrationMap 'Request
resRegistrationsReq LanguageContextState config
ctx)
pair :: Product
@(Method 'FromClient t)
(RegistrationId @t)
(ClientMessageHandler IO t)
m
pair = RegistrationId @t m
-> ClientMessageHandler IO t m
-> Product
@(Method 'FromClient t)
(RegistrationId @t)
(ClientMessageHandler IO t)
m
forall k (f :: k -> *) (g :: k -> *) (a :: k).
f a -> g a -> Product @k f g a
Pair RegistrationId @t m
regId (Handler @'FromClient @t IO m -> ClientMessageHandler IO t m
forall (f :: * -> *) (t :: MethodType) (m :: Method 'FromClient t).
Handler @'FromClient @t f m -> ClientMessageHandler f t m
ClientMessageHandler (\RequestMessage @'FromClient m
msg Either ResponseError (ResponseResult @'FromClient m) -> IO ()
k -> UnliftIO f -> forall a. f a -> IO a
forall (m :: * -> *). UnliftIO m -> forall a. m a -> IO a
unliftIO UnliftIO f
rio (f () -> IO ()) -> f () -> IO ()
forall a b. (a -> b) -> a -> b
$ Handler @'FromClient @t f m
RequestMessage @'FromClient m
-> (Either ResponseError (ResponseResult @'FromClient m) -> f ())
-> f ()
f RequestMessage @'FromClient m
msg (IO () -> f ()
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> f ())
-> (Either ResponseError (ResponseResult @'FromClient m) -> IO ())
-> Either ResponseError (ResponseResult @'FromClient m)
-> f ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Either ResponseError (ResponseResult @'FromClient m) -> IO ()
k)))
in LanguageContextState config
ctx { resRegistrationsReq :: RegistrationMap 'Request
resRegistrationsReq = DMap
@(Method 'FromClient t)
(SMethod @'FromClient @t)
(Product
@(Method 'FromClient 'Request)
(RegistrationId @'Request)
(ClientMessageHandler IO 'Request))
RegistrationMap 'Request
newRegs }
ClientNotOrReq @t m
IsClientEither -> FilePath -> f ()
forall a. HasCallStack => FilePath -> a
error FilePath
"Cannot register capability for custom methods"
LspId @'FromServer 'ClientRegisterCapability
_ <- SServerMethod @'Request 'ClientRegisterCapability
-> MessageParams @'FromServer @'Request 'ClientRegisterCapability
-> (Either
ResponseError
(ResponseResult @'FromServer 'ClientRegisterCapability)
-> f ())
-> f (LspId @'FromServer 'ClientRegisterCapability)
forall (m :: Method 'FromServer 'Request) (f :: * -> *) config.
MonadLsp config f =>
SServerMethod @'Request m
-> MessageParams @'FromServer @'Request m
-> (Either ResponseError (ResponseResult @'FromServer m) -> f ())
-> f (LspId @'FromServer m)
sendRequest SServerMethod @'Request 'ClientRegisterCapability
SClientRegisterCapability MessageParams @'FromServer @'Request 'ClientRegisterCapability
RegistrationParams
params ((Either
ResponseError
(ResponseResult @'FromServer 'ClientRegisterCapability)
-> f ())
-> f (LspId @'FromServer 'ClientRegisterCapability))
-> (Either
ResponseError
(ResponseResult @'FromServer 'ClientRegisterCapability)
-> f ())
-> f (LspId @'FromServer 'ClientRegisterCapability)
forall a b. (a -> b) -> a -> b
$ \Either
ResponseError
(ResponseResult @'FromServer 'ClientRegisterCapability)
_res -> () -> f ()
forall (f :: * -> *) a. Applicative f => a -> f a
pure ()
Maybe (RegistrationToken @t m)
-> f (Maybe (RegistrationToken @t m))
forall (f :: * -> *) a. Applicative f => a -> f a
pure (RegistrationToken @t m -> Maybe (RegistrationToken @t m)
forall a. a -> Maybe a
Just (SClientMethod @t m -> RegistrationId @t m -> RegistrationToken @t m
forall (t :: MethodType) (m :: Method 'FromClient t).
SMethod @'FromClient @t m
-> RegistrationId @t m -> RegistrationToken @t m
RegistrationToken SClientMethod @t m
method RegistrationId @t m
regId))
| Bool
otherwise = Maybe (RegistrationToken @t m)
-> f (Maybe (RegistrationToken @t m))
forall (f :: * -> *) a. Applicative f => a -> f a
pure Maybe (RegistrationToken @t m)
forall a. Maybe a
Nothing
capDyn :: J.HasDynamicRegistration a (Maybe Bool) => Maybe a -> Bool
capDyn :: Maybe a -> Bool
capDyn (Just a
x) = Bool -> Maybe Bool -> Bool
forall a. a -> Maybe a -> a
fromMaybe Bool
False (Maybe Bool -> Bool) -> Maybe Bool -> Bool
forall a b. (a -> b) -> a -> b
$ a
x a -> Getting (Maybe Bool) a (Maybe Bool) -> Maybe Bool
forall s a. s -> Getting a s a -> a
^. Getting (Maybe Bool) a (Maybe Bool)
forall s a. HasDynamicRegistration s a => Lens' s a
J.dynamicRegistration
capDyn Maybe a
Nothing = Bool
False
dynamicSupported :: ClientCapabilities -> Bool
dynamicSupported ClientCapabilities
clientCaps = case SClientMethod @t m
method of
SClientMethod @t m
SWorkspaceDidChangeConfiguration -> Maybe DidChangeConfigurationClientCapabilities -> Bool
forall a. HasDynamicRegistration a (Maybe Bool) => Maybe a -> Bool
capDyn (Maybe DidChangeConfigurationClientCapabilities -> Bool)
-> Maybe DidChangeConfigurationClientCapabilities -> Bool
forall a b. (a -> b) -> a -> b
$ ClientCapabilities
clientCaps ClientCapabilities
-> Getting
(First DidChangeConfigurationClientCapabilities)
ClientCapabilities
DidChangeConfigurationClientCapabilities
-> Maybe DidChangeConfigurationClientCapabilities
forall s a. s -> Getting (First a) s a -> Maybe a
^? (Maybe WorkspaceClientCapabilities
-> Const
@*
(First DidChangeConfigurationClientCapabilities)
(Maybe WorkspaceClientCapabilities))
-> ClientCapabilities
-> Const
@*
(First DidChangeConfigurationClientCapabilities)
ClientCapabilities
forall s a. HasWorkspace s a => Lens' s a
J.workspace ((Maybe WorkspaceClientCapabilities
-> Const
@*
(First DidChangeConfigurationClientCapabilities)
(Maybe WorkspaceClientCapabilities))
-> ClientCapabilities
-> Const
@*
(First DidChangeConfigurationClientCapabilities)
ClientCapabilities)
-> ((DidChangeConfigurationClientCapabilities
-> Const
@*
(First DidChangeConfigurationClientCapabilities)
DidChangeConfigurationClientCapabilities)
-> Maybe WorkspaceClientCapabilities
-> Const
@*
(First DidChangeConfigurationClientCapabilities)
(Maybe WorkspaceClientCapabilities))
-> Getting
(First DidChangeConfigurationClientCapabilities)
ClientCapabilities
DidChangeConfigurationClientCapabilities
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (WorkspaceClientCapabilities
-> Const
@*
(First DidChangeConfigurationClientCapabilities)
WorkspaceClientCapabilities)
-> Maybe WorkspaceClientCapabilities
-> Const
@*
(First DidChangeConfigurationClientCapabilities)
(Maybe WorkspaceClientCapabilities)
forall a b. Prism (Maybe a) (Maybe b) a b
_Just ((WorkspaceClientCapabilities
-> Const
@*
(First DidChangeConfigurationClientCapabilities)
WorkspaceClientCapabilities)
-> Maybe WorkspaceClientCapabilities
-> Const
@*
(First DidChangeConfigurationClientCapabilities)
(Maybe WorkspaceClientCapabilities))
-> ((DidChangeConfigurationClientCapabilities
-> Const
@*
(First DidChangeConfigurationClientCapabilities)
DidChangeConfigurationClientCapabilities)
-> WorkspaceClientCapabilities
-> Const
@*
(First DidChangeConfigurationClientCapabilities)
WorkspaceClientCapabilities)
-> (DidChangeConfigurationClientCapabilities
-> Const
@*
(First DidChangeConfigurationClientCapabilities)
DidChangeConfigurationClientCapabilities)
-> Maybe WorkspaceClientCapabilities
-> Const
@*
(First DidChangeConfigurationClientCapabilities)
(Maybe WorkspaceClientCapabilities)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Maybe DidChangeConfigurationClientCapabilities
-> Const
@*
(First DidChangeConfigurationClientCapabilities)
(Maybe DidChangeConfigurationClientCapabilities))
-> WorkspaceClientCapabilities
-> Const
@*
(First DidChangeConfigurationClientCapabilities)
WorkspaceClientCapabilities
forall s a. HasDidChangeConfiguration s a => Lens' s a
J.didChangeConfiguration ((Maybe DidChangeConfigurationClientCapabilities
-> Const
@*
(First DidChangeConfigurationClientCapabilities)
(Maybe DidChangeConfigurationClientCapabilities))
-> WorkspaceClientCapabilities
-> Const
@*
(First DidChangeConfigurationClientCapabilities)
WorkspaceClientCapabilities)
-> ((DidChangeConfigurationClientCapabilities
-> Const
@*
(First DidChangeConfigurationClientCapabilities)
DidChangeConfigurationClientCapabilities)
-> Maybe DidChangeConfigurationClientCapabilities
-> Const
@*
(First DidChangeConfigurationClientCapabilities)
(Maybe DidChangeConfigurationClientCapabilities))
-> (DidChangeConfigurationClientCapabilities
-> Const
@*
(First DidChangeConfigurationClientCapabilities)
DidChangeConfigurationClientCapabilities)
-> WorkspaceClientCapabilities
-> Const
@*
(First DidChangeConfigurationClientCapabilities)
WorkspaceClientCapabilities
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (DidChangeConfigurationClientCapabilities
-> Const
@*
(First DidChangeConfigurationClientCapabilities)
DidChangeConfigurationClientCapabilities)
-> Maybe DidChangeConfigurationClientCapabilities
-> Const
@*
(First DidChangeConfigurationClientCapabilities)
(Maybe DidChangeConfigurationClientCapabilities)
forall a b. Prism (Maybe a) (Maybe b) a b
_Just
SClientMethod @t m
SWorkspaceDidChangeWatchedFiles -> Maybe DidChangeWatchedFilesClientCapabilities -> Bool
forall a. HasDynamicRegistration a (Maybe Bool) => Maybe a -> Bool
capDyn (Maybe DidChangeWatchedFilesClientCapabilities -> Bool)
-> Maybe DidChangeWatchedFilesClientCapabilities -> Bool
forall a b. (a -> b) -> a -> b
$ ClientCapabilities
clientCaps ClientCapabilities
-> Getting
(First DidChangeWatchedFilesClientCapabilities)
ClientCapabilities
DidChangeWatchedFilesClientCapabilities
-> Maybe DidChangeWatchedFilesClientCapabilities
forall s a. s -> Getting (First a) s a -> Maybe a
^? (Maybe WorkspaceClientCapabilities
-> Const
@*
(First DidChangeWatchedFilesClientCapabilities)
(Maybe WorkspaceClientCapabilities))
-> ClientCapabilities
-> Const
@*
(First DidChangeWatchedFilesClientCapabilities)
ClientCapabilities
forall s a. HasWorkspace s a => Lens' s a
J.workspace ((Maybe WorkspaceClientCapabilities
-> Const
@*
(First DidChangeWatchedFilesClientCapabilities)
(Maybe WorkspaceClientCapabilities))
-> ClientCapabilities
-> Const
@*
(First DidChangeWatchedFilesClientCapabilities)
ClientCapabilities)
-> ((DidChangeWatchedFilesClientCapabilities
-> Const
@*
(First DidChangeWatchedFilesClientCapabilities)
DidChangeWatchedFilesClientCapabilities)
-> Maybe WorkspaceClientCapabilities
-> Const
@*
(First DidChangeWatchedFilesClientCapabilities)
(Maybe WorkspaceClientCapabilities))
-> Getting
(First DidChangeWatchedFilesClientCapabilities)
ClientCapabilities
DidChangeWatchedFilesClientCapabilities
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (WorkspaceClientCapabilities
-> Const
@*
(First DidChangeWatchedFilesClientCapabilities)
WorkspaceClientCapabilities)
-> Maybe WorkspaceClientCapabilities
-> Const
@*
(First DidChangeWatchedFilesClientCapabilities)
(Maybe WorkspaceClientCapabilities)
forall a b. Prism (Maybe a) (Maybe b) a b
_Just ((WorkspaceClientCapabilities
-> Const
@*
(First DidChangeWatchedFilesClientCapabilities)
WorkspaceClientCapabilities)
-> Maybe WorkspaceClientCapabilities
-> Const
@*
(First DidChangeWatchedFilesClientCapabilities)
(Maybe WorkspaceClientCapabilities))
-> ((DidChangeWatchedFilesClientCapabilities
-> Const
@*
(First DidChangeWatchedFilesClientCapabilities)
DidChangeWatchedFilesClientCapabilities)
-> WorkspaceClientCapabilities
-> Const
@*
(First DidChangeWatchedFilesClientCapabilities)
WorkspaceClientCapabilities)
-> (DidChangeWatchedFilesClientCapabilities
-> Const
@*
(First DidChangeWatchedFilesClientCapabilities)
DidChangeWatchedFilesClientCapabilities)
-> Maybe WorkspaceClientCapabilities
-> Const
@*
(First DidChangeWatchedFilesClientCapabilities)
(Maybe WorkspaceClientCapabilities)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Maybe DidChangeWatchedFilesClientCapabilities
-> Const
@*
(First DidChangeWatchedFilesClientCapabilities)
(Maybe DidChangeWatchedFilesClientCapabilities))
-> WorkspaceClientCapabilities
-> Const
@*
(First DidChangeWatchedFilesClientCapabilities)
WorkspaceClientCapabilities
forall s a. HasDidChangeWatchedFiles s a => Lens' s a
J.didChangeWatchedFiles ((Maybe DidChangeWatchedFilesClientCapabilities
-> Const
@*
(First DidChangeWatchedFilesClientCapabilities)
(Maybe DidChangeWatchedFilesClientCapabilities))
-> WorkspaceClientCapabilities
-> Const
@*
(First DidChangeWatchedFilesClientCapabilities)
WorkspaceClientCapabilities)
-> ((DidChangeWatchedFilesClientCapabilities
-> Const
@*
(First DidChangeWatchedFilesClientCapabilities)
DidChangeWatchedFilesClientCapabilities)
-> Maybe DidChangeWatchedFilesClientCapabilities
-> Const
@*
(First DidChangeWatchedFilesClientCapabilities)
(Maybe DidChangeWatchedFilesClientCapabilities))
-> (DidChangeWatchedFilesClientCapabilities
-> Const
@*
(First DidChangeWatchedFilesClientCapabilities)
DidChangeWatchedFilesClientCapabilities)
-> WorkspaceClientCapabilities
-> Const
@*
(First DidChangeWatchedFilesClientCapabilities)
WorkspaceClientCapabilities
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (DidChangeWatchedFilesClientCapabilities
-> Const
@*
(First DidChangeWatchedFilesClientCapabilities)
DidChangeWatchedFilesClientCapabilities)
-> Maybe DidChangeWatchedFilesClientCapabilities
-> Const
@*
(First DidChangeWatchedFilesClientCapabilities)
(Maybe DidChangeWatchedFilesClientCapabilities)
forall a b. Prism (Maybe a) (Maybe b) a b
_Just
SClientMethod @t m
SWorkspaceSymbol -> Maybe WorkspaceSymbolClientCapabilities -> Bool
forall a. HasDynamicRegistration a (Maybe Bool) => Maybe a -> Bool
capDyn (Maybe WorkspaceSymbolClientCapabilities -> Bool)
-> Maybe WorkspaceSymbolClientCapabilities -> Bool
forall a b. (a -> b) -> a -> b
$ ClientCapabilities
clientCaps ClientCapabilities
-> Getting
(First WorkspaceSymbolClientCapabilities)
ClientCapabilities
WorkspaceSymbolClientCapabilities
-> Maybe WorkspaceSymbolClientCapabilities
forall s a. s -> Getting (First a) s a -> Maybe a
^? (Maybe WorkspaceClientCapabilities
-> Const
@*
(First WorkspaceSymbolClientCapabilities)
(Maybe WorkspaceClientCapabilities))
-> ClientCapabilities
-> Const
@* (First WorkspaceSymbolClientCapabilities) ClientCapabilities
forall s a. HasWorkspace s a => Lens' s a
J.workspace ((Maybe WorkspaceClientCapabilities
-> Const
@*
(First WorkspaceSymbolClientCapabilities)
(Maybe WorkspaceClientCapabilities))
-> ClientCapabilities
-> Const
@* (First WorkspaceSymbolClientCapabilities) ClientCapabilities)
-> ((WorkspaceSymbolClientCapabilities
-> Const
@*
(First WorkspaceSymbolClientCapabilities)
WorkspaceSymbolClientCapabilities)
-> Maybe WorkspaceClientCapabilities
-> Const
@*
(First WorkspaceSymbolClientCapabilities)
(Maybe WorkspaceClientCapabilities))
-> Getting
(First WorkspaceSymbolClientCapabilities)
ClientCapabilities
WorkspaceSymbolClientCapabilities
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (WorkspaceClientCapabilities
-> Const
@*
(First WorkspaceSymbolClientCapabilities)
WorkspaceClientCapabilities)
-> Maybe WorkspaceClientCapabilities
-> Const
@*
(First WorkspaceSymbolClientCapabilities)
(Maybe WorkspaceClientCapabilities)
forall a b. Prism (Maybe a) (Maybe b) a b
_Just ((WorkspaceClientCapabilities
-> Const
@*
(First WorkspaceSymbolClientCapabilities)
WorkspaceClientCapabilities)
-> Maybe WorkspaceClientCapabilities
-> Const
@*
(First WorkspaceSymbolClientCapabilities)
(Maybe WorkspaceClientCapabilities))
-> ((WorkspaceSymbolClientCapabilities
-> Const
@*
(First WorkspaceSymbolClientCapabilities)
WorkspaceSymbolClientCapabilities)
-> WorkspaceClientCapabilities
-> Const
@*
(First WorkspaceSymbolClientCapabilities)
WorkspaceClientCapabilities)
-> (WorkspaceSymbolClientCapabilities
-> Const
@*
(First WorkspaceSymbolClientCapabilities)
WorkspaceSymbolClientCapabilities)
-> Maybe WorkspaceClientCapabilities
-> Const
@*
(First WorkspaceSymbolClientCapabilities)
(Maybe WorkspaceClientCapabilities)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Maybe WorkspaceSymbolClientCapabilities
-> Const
@*
(First WorkspaceSymbolClientCapabilities)
(Maybe WorkspaceSymbolClientCapabilities))
-> WorkspaceClientCapabilities
-> Const
@*
(First WorkspaceSymbolClientCapabilities)
WorkspaceClientCapabilities
forall s a. HasSymbol s a => Lens' s a
J.symbol ((Maybe WorkspaceSymbolClientCapabilities
-> Const
@*
(First WorkspaceSymbolClientCapabilities)
(Maybe WorkspaceSymbolClientCapabilities))
-> WorkspaceClientCapabilities
-> Const
@*
(First WorkspaceSymbolClientCapabilities)
WorkspaceClientCapabilities)
-> ((WorkspaceSymbolClientCapabilities
-> Const
@*
(First WorkspaceSymbolClientCapabilities)
WorkspaceSymbolClientCapabilities)
-> Maybe WorkspaceSymbolClientCapabilities
-> Const
@*
(First WorkspaceSymbolClientCapabilities)
(Maybe WorkspaceSymbolClientCapabilities))
-> (WorkspaceSymbolClientCapabilities
-> Const
@*
(First WorkspaceSymbolClientCapabilities)
WorkspaceSymbolClientCapabilities)
-> WorkspaceClientCapabilities
-> Const
@*
(First WorkspaceSymbolClientCapabilities)
WorkspaceClientCapabilities
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (WorkspaceSymbolClientCapabilities
-> Const
@*
(First WorkspaceSymbolClientCapabilities)
WorkspaceSymbolClientCapabilities)
-> Maybe WorkspaceSymbolClientCapabilities
-> Const
@*
(First WorkspaceSymbolClientCapabilities)
(Maybe WorkspaceSymbolClientCapabilities)
forall a b. Prism (Maybe a) (Maybe b) a b
_Just
SClientMethod @t m
SWorkspaceExecuteCommand -> Maybe ExecuteCommandClientCapabilities -> Bool
forall a. HasDynamicRegistration a (Maybe Bool) => Maybe a -> Bool
capDyn (Maybe ExecuteCommandClientCapabilities -> Bool)
-> Maybe ExecuteCommandClientCapabilities -> Bool
forall a b. (a -> b) -> a -> b
$ ClientCapabilities
clientCaps ClientCapabilities
-> Getting
(First ExecuteCommandClientCapabilities)
ClientCapabilities
ExecuteCommandClientCapabilities
-> Maybe ExecuteCommandClientCapabilities
forall s a. s -> Getting (First a) s a -> Maybe a
^? (Maybe WorkspaceClientCapabilities
-> Const
@*
(First ExecuteCommandClientCapabilities)
(Maybe WorkspaceClientCapabilities))
-> ClientCapabilities
-> Const
@* (First ExecuteCommandClientCapabilities) ClientCapabilities
forall s a. HasWorkspace s a => Lens' s a
J.workspace ((Maybe WorkspaceClientCapabilities
-> Const
@*
(First ExecuteCommandClientCapabilities)
(Maybe WorkspaceClientCapabilities))
-> ClientCapabilities
-> Const
@* (First ExecuteCommandClientCapabilities) ClientCapabilities)
-> ((ExecuteCommandClientCapabilities
-> Const
@*
(First ExecuteCommandClientCapabilities)
ExecuteCommandClientCapabilities)
-> Maybe WorkspaceClientCapabilities
-> Const
@*
(First ExecuteCommandClientCapabilities)
(Maybe WorkspaceClientCapabilities))
-> Getting
(First ExecuteCommandClientCapabilities)
ClientCapabilities
ExecuteCommandClientCapabilities
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (WorkspaceClientCapabilities
-> Const
@*
(First ExecuteCommandClientCapabilities)
WorkspaceClientCapabilities)
-> Maybe WorkspaceClientCapabilities
-> Const
@*
(First ExecuteCommandClientCapabilities)
(Maybe WorkspaceClientCapabilities)
forall a b. Prism (Maybe a) (Maybe b) a b
_Just ((WorkspaceClientCapabilities
-> Const
@*
(First ExecuteCommandClientCapabilities)
WorkspaceClientCapabilities)
-> Maybe WorkspaceClientCapabilities
-> Const
@*
(First ExecuteCommandClientCapabilities)
(Maybe WorkspaceClientCapabilities))
-> ((ExecuteCommandClientCapabilities
-> Const
@*
(First ExecuteCommandClientCapabilities)
ExecuteCommandClientCapabilities)
-> WorkspaceClientCapabilities
-> Const
@*
(First ExecuteCommandClientCapabilities)
WorkspaceClientCapabilities)
-> (ExecuteCommandClientCapabilities
-> Const
@*
(First ExecuteCommandClientCapabilities)
ExecuteCommandClientCapabilities)
-> Maybe WorkspaceClientCapabilities
-> Const
@*
(First ExecuteCommandClientCapabilities)
(Maybe WorkspaceClientCapabilities)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Maybe ExecuteCommandClientCapabilities
-> Const
@*
(First ExecuteCommandClientCapabilities)
(Maybe ExecuteCommandClientCapabilities))
-> WorkspaceClientCapabilities
-> Const
@*
(First ExecuteCommandClientCapabilities)
WorkspaceClientCapabilities
forall s a. HasExecuteCommand s a => Lens' s a
J.executeCommand ((Maybe ExecuteCommandClientCapabilities
-> Const
@*
(First ExecuteCommandClientCapabilities)
(Maybe ExecuteCommandClientCapabilities))
-> WorkspaceClientCapabilities
-> Const
@*
(First ExecuteCommandClientCapabilities)
WorkspaceClientCapabilities)
-> ((ExecuteCommandClientCapabilities
-> Const
@*
(First ExecuteCommandClientCapabilities)
ExecuteCommandClientCapabilities)
-> Maybe ExecuteCommandClientCapabilities
-> Const
@*
(First ExecuteCommandClientCapabilities)
(Maybe ExecuteCommandClientCapabilities))
-> (ExecuteCommandClientCapabilities
-> Const
@*
(First ExecuteCommandClientCapabilities)
ExecuteCommandClientCapabilities)
-> WorkspaceClientCapabilities
-> Const
@*
(First ExecuteCommandClientCapabilities)
WorkspaceClientCapabilities
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (ExecuteCommandClientCapabilities
-> Const
@*
(First ExecuteCommandClientCapabilities)
ExecuteCommandClientCapabilities)
-> Maybe ExecuteCommandClientCapabilities
-> Const
@*
(First ExecuteCommandClientCapabilities)
(Maybe ExecuteCommandClientCapabilities)
forall a b. Prism (Maybe a) (Maybe b) a b
_Just
SClientMethod @t m
STextDocumentDidOpen -> Maybe TextDocumentSyncClientCapabilities -> Bool
forall a. HasDynamicRegistration a (Maybe Bool) => Maybe a -> Bool
capDyn (Maybe TextDocumentSyncClientCapabilities -> Bool)
-> Maybe TextDocumentSyncClientCapabilities -> Bool
forall a b. (a -> b) -> a -> b
$ ClientCapabilities
clientCaps ClientCapabilities
-> Getting
(First TextDocumentSyncClientCapabilities)
ClientCapabilities
TextDocumentSyncClientCapabilities
-> Maybe TextDocumentSyncClientCapabilities
forall s a. s -> Getting (First a) s a -> Maybe a
^? (Maybe TextDocumentClientCapabilities
-> Const
@*
(First TextDocumentSyncClientCapabilities)
(Maybe TextDocumentClientCapabilities))
-> ClientCapabilities
-> Const
@* (First TextDocumentSyncClientCapabilities) ClientCapabilities
forall s a. HasTextDocument s a => Lens' s a
J.textDocument ((Maybe TextDocumentClientCapabilities
-> Const
@*
(First TextDocumentSyncClientCapabilities)
(Maybe TextDocumentClientCapabilities))
-> ClientCapabilities
-> Const
@* (First TextDocumentSyncClientCapabilities) ClientCapabilities)
-> ((TextDocumentSyncClientCapabilities
-> Const
@*
(First TextDocumentSyncClientCapabilities)
TextDocumentSyncClientCapabilities)
-> Maybe TextDocumentClientCapabilities
-> Const
@*
(First TextDocumentSyncClientCapabilities)
(Maybe TextDocumentClientCapabilities))
-> Getting
(First TextDocumentSyncClientCapabilities)
ClientCapabilities
TextDocumentSyncClientCapabilities
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (TextDocumentClientCapabilities
-> Const
@*
(First TextDocumentSyncClientCapabilities)
TextDocumentClientCapabilities)
-> Maybe TextDocumentClientCapabilities
-> Const
@*
(First TextDocumentSyncClientCapabilities)
(Maybe TextDocumentClientCapabilities)
forall a b. Prism (Maybe a) (Maybe b) a b
_Just ((TextDocumentClientCapabilities
-> Const
@*
(First TextDocumentSyncClientCapabilities)
TextDocumentClientCapabilities)
-> Maybe TextDocumentClientCapabilities
-> Const
@*
(First TextDocumentSyncClientCapabilities)
(Maybe TextDocumentClientCapabilities))
-> ((TextDocumentSyncClientCapabilities
-> Const
@*
(First TextDocumentSyncClientCapabilities)
TextDocumentSyncClientCapabilities)
-> TextDocumentClientCapabilities
-> Const
@*
(First TextDocumentSyncClientCapabilities)
TextDocumentClientCapabilities)
-> (TextDocumentSyncClientCapabilities
-> Const
@*
(First TextDocumentSyncClientCapabilities)
TextDocumentSyncClientCapabilities)
-> Maybe TextDocumentClientCapabilities
-> Const
@*
(First TextDocumentSyncClientCapabilities)
(Maybe TextDocumentClientCapabilities)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Maybe TextDocumentSyncClientCapabilities
-> Const
@*
(First TextDocumentSyncClientCapabilities)
(Maybe TextDocumentSyncClientCapabilities))
-> TextDocumentClientCapabilities
-> Const
@*
(First TextDocumentSyncClientCapabilities)
TextDocumentClientCapabilities
forall s a. HasSynchronization s a => Lens' s a
J.synchronization ((Maybe TextDocumentSyncClientCapabilities
-> Const
@*
(First TextDocumentSyncClientCapabilities)
(Maybe TextDocumentSyncClientCapabilities))
-> TextDocumentClientCapabilities
-> Const
@*
(First TextDocumentSyncClientCapabilities)
TextDocumentClientCapabilities)
-> ((TextDocumentSyncClientCapabilities
-> Const
@*
(First TextDocumentSyncClientCapabilities)
TextDocumentSyncClientCapabilities)
-> Maybe TextDocumentSyncClientCapabilities
-> Const
@*
(First TextDocumentSyncClientCapabilities)
(Maybe TextDocumentSyncClientCapabilities))
-> (TextDocumentSyncClientCapabilities
-> Const
@*
(First TextDocumentSyncClientCapabilities)
TextDocumentSyncClientCapabilities)
-> TextDocumentClientCapabilities
-> Const
@*
(First TextDocumentSyncClientCapabilities)
TextDocumentClientCapabilities
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (TextDocumentSyncClientCapabilities
-> Const
@*
(First TextDocumentSyncClientCapabilities)
TextDocumentSyncClientCapabilities)
-> Maybe TextDocumentSyncClientCapabilities
-> Const
@*
(First TextDocumentSyncClientCapabilities)
(Maybe TextDocumentSyncClientCapabilities)
forall a b. Prism (Maybe a) (Maybe b) a b
_Just
SClientMethod @t m
STextDocumentDidChange -> Maybe TextDocumentSyncClientCapabilities -> Bool
forall a. HasDynamicRegistration a (Maybe Bool) => Maybe a -> Bool
capDyn (Maybe TextDocumentSyncClientCapabilities -> Bool)
-> Maybe TextDocumentSyncClientCapabilities -> Bool
forall a b. (a -> b) -> a -> b
$ ClientCapabilities
clientCaps ClientCapabilities
-> Getting
(First TextDocumentSyncClientCapabilities)
ClientCapabilities
TextDocumentSyncClientCapabilities
-> Maybe TextDocumentSyncClientCapabilities
forall s a. s -> Getting (First a) s a -> Maybe a
^? (Maybe TextDocumentClientCapabilities
-> Const
@*
(First TextDocumentSyncClientCapabilities)
(Maybe TextDocumentClientCapabilities))
-> ClientCapabilities
-> Const
@* (First TextDocumentSyncClientCapabilities) ClientCapabilities
forall s a. HasTextDocument s a => Lens' s a
J.textDocument ((Maybe TextDocumentClientCapabilities
-> Const
@*
(First TextDocumentSyncClientCapabilities)
(Maybe TextDocumentClientCapabilities))
-> ClientCapabilities
-> Const
@* (First TextDocumentSyncClientCapabilities) ClientCapabilities)
-> ((TextDocumentSyncClientCapabilities
-> Const
@*
(First TextDocumentSyncClientCapabilities)
TextDocumentSyncClientCapabilities)
-> Maybe TextDocumentClientCapabilities
-> Const
@*
(First TextDocumentSyncClientCapabilities)
(Maybe TextDocumentClientCapabilities))
-> Getting
(First TextDocumentSyncClientCapabilities)
ClientCapabilities
TextDocumentSyncClientCapabilities
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (TextDocumentClientCapabilities
-> Const
@*
(First TextDocumentSyncClientCapabilities)
TextDocumentClientCapabilities)
-> Maybe TextDocumentClientCapabilities
-> Const
@*
(First TextDocumentSyncClientCapabilities)
(Maybe TextDocumentClientCapabilities)
forall a b. Prism (Maybe a) (Maybe b) a b
_Just ((TextDocumentClientCapabilities
-> Const
@*
(First TextDocumentSyncClientCapabilities)
TextDocumentClientCapabilities)
-> Maybe TextDocumentClientCapabilities
-> Const
@*
(First TextDocumentSyncClientCapabilities)
(Maybe TextDocumentClientCapabilities))
-> ((TextDocumentSyncClientCapabilities
-> Const
@*
(First TextDocumentSyncClientCapabilities)
TextDocumentSyncClientCapabilities)
-> TextDocumentClientCapabilities
-> Const
@*
(First TextDocumentSyncClientCapabilities)
TextDocumentClientCapabilities)
-> (TextDocumentSyncClientCapabilities
-> Const
@*
(First TextDocumentSyncClientCapabilities)
TextDocumentSyncClientCapabilities)
-> Maybe TextDocumentClientCapabilities
-> Const
@*
(First TextDocumentSyncClientCapabilities)
(Maybe TextDocumentClientCapabilities)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Maybe TextDocumentSyncClientCapabilities
-> Const
@*
(First TextDocumentSyncClientCapabilities)
(Maybe TextDocumentSyncClientCapabilities))
-> TextDocumentClientCapabilities
-> Const
@*
(First TextDocumentSyncClientCapabilities)
TextDocumentClientCapabilities
forall s a. HasSynchronization s a => Lens' s a
J.synchronization ((Maybe TextDocumentSyncClientCapabilities
-> Const
@*
(First TextDocumentSyncClientCapabilities)
(Maybe TextDocumentSyncClientCapabilities))
-> TextDocumentClientCapabilities
-> Const
@*
(First TextDocumentSyncClientCapabilities)
TextDocumentClientCapabilities)
-> ((TextDocumentSyncClientCapabilities
-> Const
@*
(First TextDocumentSyncClientCapabilities)
TextDocumentSyncClientCapabilities)
-> Maybe TextDocumentSyncClientCapabilities
-> Const
@*
(First TextDocumentSyncClientCapabilities)
(Maybe TextDocumentSyncClientCapabilities))
-> (TextDocumentSyncClientCapabilities
-> Const
@*
(First TextDocumentSyncClientCapabilities)
TextDocumentSyncClientCapabilities)
-> TextDocumentClientCapabilities
-> Const
@*
(First TextDocumentSyncClientCapabilities)
TextDocumentClientCapabilities
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (TextDocumentSyncClientCapabilities
-> Const
@*
(First TextDocumentSyncClientCapabilities)
TextDocumentSyncClientCapabilities)
-> Maybe TextDocumentSyncClientCapabilities
-> Const
@*
(First TextDocumentSyncClientCapabilities)
(Maybe TextDocumentSyncClientCapabilities)
forall a b. Prism (Maybe a) (Maybe b) a b
_Just
SClientMethod @t m
STextDocumentDidClose -> Maybe TextDocumentSyncClientCapabilities -> Bool
forall a. HasDynamicRegistration a (Maybe Bool) => Maybe a -> Bool
capDyn (Maybe TextDocumentSyncClientCapabilities -> Bool)
-> Maybe TextDocumentSyncClientCapabilities -> Bool
forall a b. (a -> b) -> a -> b
$ ClientCapabilities
clientCaps ClientCapabilities
-> Getting
(First TextDocumentSyncClientCapabilities)
ClientCapabilities
TextDocumentSyncClientCapabilities
-> Maybe TextDocumentSyncClientCapabilities
forall s a. s -> Getting (First a) s a -> Maybe a
^? (Maybe TextDocumentClientCapabilities
-> Const
@*
(First TextDocumentSyncClientCapabilities)
(Maybe TextDocumentClientCapabilities))
-> ClientCapabilities
-> Const
@* (First TextDocumentSyncClientCapabilities) ClientCapabilities
forall s a. HasTextDocument s a => Lens' s a
J.textDocument ((Maybe TextDocumentClientCapabilities
-> Const
@*
(First TextDocumentSyncClientCapabilities)
(Maybe TextDocumentClientCapabilities))
-> ClientCapabilities
-> Const
@* (First TextDocumentSyncClientCapabilities) ClientCapabilities)
-> ((TextDocumentSyncClientCapabilities
-> Const
@*
(First TextDocumentSyncClientCapabilities)
TextDocumentSyncClientCapabilities)
-> Maybe TextDocumentClientCapabilities
-> Const
@*
(First TextDocumentSyncClientCapabilities)
(Maybe TextDocumentClientCapabilities))
-> Getting
(First TextDocumentSyncClientCapabilities)
ClientCapabilities
TextDocumentSyncClientCapabilities
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (TextDocumentClientCapabilities
-> Const
@*
(First TextDocumentSyncClientCapabilities)
TextDocumentClientCapabilities)
-> Maybe TextDocumentClientCapabilities
-> Const
@*
(First TextDocumentSyncClientCapabilities)
(Maybe TextDocumentClientCapabilities)
forall a b. Prism (Maybe a) (Maybe b) a b
_Just ((TextDocumentClientCapabilities
-> Const
@*
(First TextDocumentSyncClientCapabilities)
TextDocumentClientCapabilities)
-> Maybe TextDocumentClientCapabilities
-> Const
@*
(First TextDocumentSyncClientCapabilities)
(Maybe TextDocumentClientCapabilities))
-> ((TextDocumentSyncClientCapabilities
-> Const
@*
(First TextDocumentSyncClientCapabilities)
TextDocumentSyncClientCapabilities)
-> TextDocumentClientCapabilities
-> Const
@*
(First TextDocumentSyncClientCapabilities)
TextDocumentClientCapabilities)
-> (TextDocumentSyncClientCapabilities
-> Const
@*
(First TextDocumentSyncClientCapabilities)
TextDocumentSyncClientCapabilities)
-> Maybe TextDocumentClientCapabilities
-> Const
@*
(First TextDocumentSyncClientCapabilities)
(Maybe TextDocumentClientCapabilities)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Maybe TextDocumentSyncClientCapabilities
-> Const
@*
(First TextDocumentSyncClientCapabilities)
(Maybe TextDocumentSyncClientCapabilities))
-> TextDocumentClientCapabilities
-> Const
@*
(First TextDocumentSyncClientCapabilities)
TextDocumentClientCapabilities
forall s a. HasSynchronization s a => Lens' s a
J.synchronization ((Maybe TextDocumentSyncClientCapabilities
-> Const
@*
(First TextDocumentSyncClientCapabilities)
(Maybe TextDocumentSyncClientCapabilities))
-> TextDocumentClientCapabilities
-> Const
@*
(First TextDocumentSyncClientCapabilities)
TextDocumentClientCapabilities)
-> ((TextDocumentSyncClientCapabilities
-> Const
@*
(First TextDocumentSyncClientCapabilities)
TextDocumentSyncClientCapabilities)
-> Maybe TextDocumentSyncClientCapabilities
-> Const
@*
(First TextDocumentSyncClientCapabilities)
(Maybe TextDocumentSyncClientCapabilities))
-> (TextDocumentSyncClientCapabilities
-> Const
@*
(First TextDocumentSyncClientCapabilities)
TextDocumentSyncClientCapabilities)
-> TextDocumentClientCapabilities
-> Const
@*
(First TextDocumentSyncClientCapabilities)
TextDocumentClientCapabilities
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (TextDocumentSyncClientCapabilities
-> Const
@*
(First TextDocumentSyncClientCapabilities)
TextDocumentSyncClientCapabilities)
-> Maybe TextDocumentSyncClientCapabilities
-> Const
@*
(First TextDocumentSyncClientCapabilities)
(Maybe TextDocumentSyncClientCapabilities)
forall a b. Prism (Maybe a) (Maybe b) a b
_Just
SClientMethod @t m
STextDocumentCompletion -> Maybe CompletionClientCapabilities -> Bool
forall a. HasDynamicRegistration a (Maybe Bool) => Maybe a -> Bool
capDyn (Maybe CompletionClientCapabilities -> Bool)
-> Maybe CompletionClientCapabilities -> Bool
forall a b. (a -> b) -> a -> b
$ ClientCapabilities
clientCaps ClientCapabilities
-> Getting
(First CompletionClientCapabilities)
ClientCapabilities
CompletionClientCapabilities
-> Maybe CompletionClientCapabilities
forall s a. s -> Getting (First a) s a -> Maybe a
^? (Maybe TextDocumentClientCapabilities
-> Const
@*
(First CompletionClientCapabilities)
(Maybe TextDocumentClientCapabilities))
-> ClientCapabilities
-> Const @* (First CompletionClientCapabilities) ClientCapabilities
forall s a. HasTextDocument s a => Lens' s a
J.textDocument ((Maybe TextDocumentClientCapabilities
-> Const
@*
(First CompletionClientCapabilities)
(Maybe TextDocumentClientCapabilities))
-> ClientCapabilities
-> Const
@* (First CompletionClientCapabilities) ClientCapabilities)
-> ((CompletionClientCapabilities
-> Const
@*
(First CompletionClientCapabilities)
CompletionClientCapabilities)
-> Maybe TextDocumentClientCapabilities
-> Const
@*
(First CompletionClientCapabilities)
(Maybe TextDocumentClientCapabilities))
-> Getting
(First CompletionClientCapabilities)
ClientCapabilities
CompletionClientCapabilities
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (TextDocumentClientCapabilities
-> Const
@*
(First CompletionClientCapabilities)
TextDocumentClientCapabilities)
-> Maybe TextDocumentClientCapabilities
-> Const
@*
(First CompletionClientCapabilities)
(Maybe TextDocumentClientCapabilities)
forall a b. Prism (Maybe a) (Maybe b) a b
_Just ((TextDocumentClientCapabilities
-> Const
@*
(First CompletionClientCapabilities)
TextDocumentClientCapabilities)
-> Maybe TextDocumentClientCapabilities
-> Const
@*
(First CompletionClientCapabilities)
(Maybe TextDocumentClientCapabilities))
-> ((CompletionClientCapabilities
-> Const
@*
(First CompletionClientCapabilities)
CompletionClientCapabilities)
-> TextDocumentClientCapabilities
-> Const
@*
(First CompletionClientCapabilities)
TextDocumentClientCapabilities)
-> (CompletionClientCapabilities
-> Const
@*
(First CompletionClientCapabilities)
CompletionClientCapabilities)
-> Maybe TextDocumentClientCapabilities
-> Const
@*
(First CompletionClientCapabilities)
(Maybe TextDocumentClientCapabilities)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Maybe CompletionClientCapabilities
-> Const
@*
(First CompletionClientCapabilities)
(Maybe CompletionClientCapabilities))
-> TextDocumentClientCapabilities
-> Const
@*
(First CompletionClientCapabilities)
TextDocumentClientCapabilities
forall s a. HasCompletion s a => Lens' s a
J.completion ((Maybe CompletionClientCapabilities
-> Const
@*
(First CompletionClientCapabilities)
(Maybe CompletionClientCapabilities))
-> TextDocumentClientCapabilities
-> Const
@*
(First CompletionClientCapabilities)
TextDocumentClientCapabilities)
-> ((CompletionClientCapabilities
-> Const
@*
(First CompletionClientCapabilities)
CompletionClientCapabilities)
-> Maybe CompletionClientCapabilities
-> Const
@*
(First CompletionClientCapabilities)
(Maybe CompletionClientCapabilities))
-> (CompletionClientCapabilities
-> Const
@*
(First CompletionClientCapabilities)
CompletionClientCapabilities)
-> TextDocumentClientCapabilities
-> Const
@*
(First CompletionClientCapabilities)
TextDocumentClientCapabilities
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (CompletionClientCapabilities
-> Const
@*
(First CompletionClientCapabilities)
CompletionClientCapabilities)
-> Maybe CompletionClientCapabilities
-> Const
@*
(First CompletionClientCapabilities)
(Maybe CompletionClientCapabilities)
forall a b. Prism (Maybe a) (Maybe b) a b
_Just
SClientMethod @t m
STextDocumentHover -> Maybe HoverClientCapabilities -> Bool
forall a. HasDynamicRegistration a (Maybe Bool) => Maybe a -> Bool
capDyn (Maybe HoverClientCapabilities -> Bool)
-> Maybe HoverClientCapabilities -> Bool
forall a b. (a -> b) -> a -> b
$ ClientCapabilities
clientCaps ClientCapabilities
-> Getting
(First HoverClientCapabilities)
ClientCapabilities
HoverClientCapabilities
-> Maybe HoverClientCapabilities
forall s a. s -> Getting (First a) s a -> Maybe a
^? (Maybe TextDocumentClientCapabilities
-> Const
@*
(First HoverClientCapabilities)
(Maybe TextDocumentClientCapabilities))
-> ClientCapabilities
-> Const @* (First HoverClientCapabilities) ClientCapabilities
forall s a. HasTextDocument s a => Lens' s a
J.textDocument ((Maybe TextDocumentClientCapabilities
-> Const
@*
(First HoverClientCapabilities)
(Maybe TextDocumentClientCapabilities))
-> ClientCapabilities
-> Const @* (First HoverClientCapabilities) ClientCapabilities)
-> ((HoverClientCapabilities
-> Const
@* (First HoverClientCapabilities) HoverClientCapabilities)
-> Maybe TextDocumentClientCapabilities
-> Const
@*
(First HoverClientCapabilities)
(Maybe TextDocumentClientCapabilities))
-> Getting
(First HoverClientCapabilities)
ClientCapabilities
HoverClientCapabilities
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (TextDocumentClientCapabilities
-> Const
@* (First HoverClientCapabilities) TextDocumentClientCapabilities)
-> Maybe TextDocumentClientCapabilities
-> Const
@*
(First HoverClientCapabilities)
(Maybe TextDocumentClientCapabilities)
forall a b. Prism (Maybe a) (Maybe b) a b
_Just ((TextDocumentClientCapabilities
-> Const
@* (First HoverClientCapabilities) TextDocumentClientCapabilities)
-> Maybe TextDocumentClientCapabilities
-> Const
@*
(First HoverClientCapabilities)
(Maybe TextDocumentClientCapabilities))
-> ((HoverClientCapabilities
-> Const
@* (First HoverClientCapabilities) HoverClientCapabilities)
-> TextDocumentClientCapabilities
-> Const
@* (First HoverClientCapabilities) TextDocumentClientCapabilities)
-> (HoverClientCapabilities
-> Const
@* (First HoverClientCapabilities) HoverClientCapabilities)
-> Maybe TextDocumentClientCapabilities
-> Const
@*
(First HoverClientCapabilities)
(Maybe TextDocumentClientCapabilities)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Maybe HoverClientCapabilities
-> Const
@* (First HoverClientCapabilities) (Maybe HoverClientCapabilities))
-> TextDocumentClientCapabilities
-> Const
@* (First HoverClientCapabilities) TextDocumentClientCapabilities
forall s a. HasHover s a => Lens' s a
J.hover ((Maybe HoverClientCapabilities
-> Const
@* (First HoverClientCapabilities) (Maybe HoverClientCapabilities))
-> TextDocumentClientCapabilities
-> Const
@* (First HoverClientCapabilities) TextDocumentClientCapabilities)
-> ((HoverClientCapabilities
-> Const
@* (First HoverClientCapabilities) HoverClientCapabilities)
-> Maybe HoverClientCapabilities
-> Const
@* (First HoverClientCapabilities) (Maybe HoverClientCapabilities))
-> (HoverClientCapabilities
-> Const
@* (First HoverClientCapabilities) HoverClientCapabilities)
-> TextDocumentClientCapabilities
-> Const
@* (First HoverClientCapabilities) TextDocumentClientCapabilities
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (HoverClientCapabilities
-> Const
@* (First HoverClientCapabilities) HoverClientCapabilities)
-> Maybe HoverClientCapabilities
-> Const
@* (First HoverClientCapabilities) (Maybe HoverClientCapabilities)
forall a b. Prism (Maybe a) (Maybe b) a b
_Just
SClientMethod @t m
STextDocumentSignatureHelp -> Maybe SignatureHelpClientCapabilities -> Bool
forall a. HasDynamicRegistration a (Maybe Bool) => Maybe a -> Bool
capDyn (Maybe SignatureHelpClientCapabilities -> Bool)
-> Maybe SignatureHelpClientCapabilities -> Bool
forall a b. (a -> b) -> a -> b
$ ClientCapabilities
clientCaps ClientCapabilities
-> Getting
(First SignatureHelpClientCapabilities)
ClientCapabilities
SignatureHelpClientCapabilities
-> Maybe SignatureHelpClientCapabilities
forall s a. s -> Getting (First a) s a -> Maybe a
^? (Maybe TextDocumentClientCapabilities
-> Const
@*
(First SignatureHelpClientCapabilities)
(Maybe TextDocumentClientCapabilities))
-> ClientCapabilities
-> Const
@* (First SignatureHelpClientCapabilities) ClientCapabilities
forall s a. HasTextDocument s a => Lens' s a
J.textDocument ((Maybe TextDocumentClientCapabilities
-> Const
@*
(First SignatureHelpClientCapabilities)
(Maybe TextDocumentClientCapabilities))
-> ClientCapabilities
-> Const
@* (First SignatureHelpClientCapabilities) ClientCapabilities)
-> ((SignatureHelpClientCapabilities
-> Const
@*
(First SignatureHelpClientCapabilities)
SignatureHelpClientCapabilities)
-> Maybe TextDocumentClientCapabilities
-> Const
@*
(First SignatureHelpClientCapabilities)
(Maybe TextDocumentClientCapabilities))
-> Getting
(First SignatureHelpClientCapabilities)
ClientCapabilities
SignatureHelpClientCapabilities
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (TextDocumentClientCapabilities
-> Const
@*
(First SignatureHelpClientCapabilities)
TextDocumentClientCapabilities)
-> Maybe TextDocumentClientCapabilities
-> Const
@*
(First SignatureHelpClientCapabilities)
(Maybe TextDocumentClientCapabilities)
forall a b. Prism (Maybe a) (Maybe b) a b
_Just ((TextDocumentClientCapabilities
-> Const
@*
(First SignatureHelpClientCapabilities)
TextDocumentClientCapabilities)
-> Maybe TextDocumentClientCapabilities
-> Const
@*
(First SignatureHelpClientCapabilities)
(Maybe TextDocumentClientCapabilities))
-> ((SignatureHelpClientCapabilities
-> Const
@*
(First SignatureHelpClientCapabilities)
SignatureHelpClientCapabilities)
-> TextDocumentClientCapabilities
-> Const
@*
(First SignatureHelpClientCapabilities)
TextDocumentClientCapabilities)
-> (SignatureHelpClientCapabilities
-> Const
@*
(First SignatureHelpClientCapabilities)
SignatureHelpClientCapabilities)
-> Maybe TextDocumentClientCapabilities
-> Const
@*
(First SignatureHelpClientCapabilities)
(Maybe TextDocumentClientCapabilities)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Maybe SignatureHelpClientCapabilities
-> Const
@*
(First SignatureHelpClientCapabilities)
(Maybe SignatureHelpClientCapabilities))
-> TextDocumentClientCapabilities
-> Const
@*
(First SignatureHelpClientCapabilities)
TextDocumentClientCapabilities
forall s a. HasSignatureHelp s a => Lens' s a
J.signatureHelp ((Maybe SignatureHelpClientCapabilities
-> Const
@*
(First SignatureHelpClientCapabilities)
(Maybe SignatureHelpClientCapabilities))
-> TextDocumentClientCapabilities
-> Const
@*
(First SignatureHelpClientCapabilities)
TextDocumentClientCapabilities)
-> ((SignatureHelpClientCapabilities
-> Const
@*
(First SignatureHelpClientCapabilities)
SignatureHelpClientCapabilities)
-> Maybe SignatureHelpClientCapabilities
-> Const
@*
(First SignatureHelpClientCapabilities)
(Maybe SignatureHelpClientCapabilities))
-> (SignatureHelpClientCapabilities
-> Const
@*
(First SignatureHelpClientCapabilities)
SignatureHelpClientCapabilities)
-> TextDocumentClientCapabilities
-> Const
@*
(First SignatureHelpClientCapabilities)
TextDocumentClientCapabilities
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (SignatureHelpClientCapabilities
-> Const
@*
(First SignatureHelpClientCapabilities)
SignatureHelpClientCapabilities)
-> Maybe SignatureHelpClientCapabilities
-> Const
@*
(First SignatureHelpClientCapabilities)
(Maybe SignatureHelpClientCapabilities)
forall a b. Prism (Maybe a) (Maybe b) a b
_Just
SClientMethod @t m
STextDocumentDeclaration -> Maybe DeclarationClientCapabilities -> Bool
forall a. HasDynamicRegistration a (Maybe Bool) => Maybe a -> Bool
capDyn (Maybe DeclarationClientCapabilities -> Bool)
-> Maybe DeclarationClientCapabilities -> Bool
forall a b. (a -> b) -> a -> b
$ ClientCapabilities
clientCaps ClientCapabilities
-> Getting
(First DeclarationClientCapabilities)
ClientCapabilities
DeclarationClientCapabilities
-> Maybe DeclarationClientCapabilities
forall s a. s -> Getting (First a) s a -> Maybe a
^? (Maybe TextDocumentClientCapabilities
-> Const
@*
(First DeclarationClientCapabilities)
(Maybe TextDocumentClientCapabilities))
-> ClientCapabilities
-> Const
@* (First DeclarationClientCapabilities) ClientCapabilities
forall s a. HasTextDocument s a => Lens' s a
J.textDocument ((Maybe TextDocumentClientCapabilities
-> Const
@*
(First DeclarationClientCapabilities)
(Maybe TextDocumentClientCapabilities))
-> ClientCapabilities
-> Const
@* (First DeclarationClientCapabilities) ClientCapabilities)
-> ((DeclarationClientCapabilities
-> Const
@*
(First DeclarationClientCapabilities)
DeclarationClientCapabilities)
-> Maybe TextDocumentClientCapabilities
-> Const
@*
(First DeclarationClientCapabilities)
(Maybe TextDocumentClientCapabilities))
-> Getting
(First DeclarationClientCapabilities)
ClientCapabilities
DeclarationClientCapabilities
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (TextDocumentClientCapabilities
-> Const
@*
(First DeclarationClientCapabilities)
TextDocumentClientCapabilities)
-> Maybe TextDocumentClientCapabilities
-> Const
@*
(First DeclarationClientCapabilities)
(Maybe TextDocumentClientCapabilities)
forall a b. Prism (Maybe a) (Maybe b) a b
_Just ((TextDocumentClientCapabilities
-> Const
@*
(First DeclarationClientCapabilities)
TextDocumentClientCapabilities)
-> Maybe TextDocumentClientCapabilities
-> Const
@*
(First DeclarationClientCapabilities)
(Maybe TextDocumentClientCapabilities))
-> ((DeclarationClientCapabilities
-> Const
@*
(First DeclarationClientCapabilities)
DeclarationClientCapabilities)
-> TextDocumentClientCapabilities
-> Const
@*
(First DeclarationClientCapabilities)
TextDocumentClientCapabilities)
-> (DeclarationClientCapabilities
-> Const
@*
(First DeclarationClientCapabilities)
DeclarationClientCapabilities)
-> Maybe TextDocumentClientCapabilities
-> Const
@*
(First DeclarationClientCapabilities)
(Maybe TextDocumentClientCapabilities)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Maybe DeclarationClientCapabilities
-> Const
@*
(First DeclarationClientCapabilities)
(Maybe DeclarationClientCapabilities))
-> TextDocumentClientCapabilities
-> Const
@*
(First DeclarationClientCapabilities)
TextDocumentClientCapabilities
forall s a. HasDeclaration s a => Lens' s a
J.declaration ((Maybe DeclarationClientCapabilities
-> Const
@*
(First DeclarationClientCapabilities)
(Maybe DeclarationClientCapabilities))
-> TextDocumentClientCapabilities
-> Const
@*
(First DeclarationClientCapabilities)
TextDocumentClientCapabilities)
-> ((DeclarationClientCapabilities
-> Const
@*
(First DeclarationClientCapabilities)
DeclarationClientCapabilities)
-> Maybe DeclarationClientCapabilities
-> Const
@*
(First DeclarationClientCapabilities)
(Maybe DeclarationClientCapabilities))
-> (DeclarationClientCapabilities
-> Const
@*
(First DeclarationClientCapabilities)
DeclarationClientCapabilities)
-> TextDocumentClientCapabilities
-> Const
@*
(First DeclarationClientCapabilities)
TextDocumentClientCapabilities
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (DeclarationClientCapabilities
-> Const
@*
(First DeclarationClientCapabilities)
DeclarationClientCapabilities)
-> Maybe DeclarationClientCapabilities
-> Const
@*
(First DeclarationClientCapabilities)
(Maybe DeclarationClientCapabilities)
forall a b. Prism (Maybe a) (Maybe b) a b
_Just
SClientMethod @t m
STextDocumentDefinition -> Maybe DefinitionClientCapabilities -> Bool
forall a. HasDynamicRegistration a (Maybe Bool) => Maybe a -> Bool
capDyn (Maybe DefinitionClientCapabilities -> Bool)
-> Maybe DefinitionClientCapabilities -> Bool
forall a b. (a -> b) -> a -> b
$ ClientCapabilities
clientCaps ClientCapabilities
-> Getting
(First DefinitionClientCapabilities)
ClientCapabilities
DefinitionClientCapabilities
-> Maybe DefinitionClientCapabilities
forall s a. s -> Getting (First a) s a -> Maybe a
^? (Maybe TextDocumentClientCapabilities
-> Const
@*
(First DefinitionClientCapabilities)
(Maybe TextDocumentClientCapabilities))
-> ClientCapabilities
-> Const @* (First DefinitionClientCapabilities) ClientCapabilities
forall s a. HasTextDocument s a => Lens' s a
J.textDocument ((Maybe TextDocumentClientCapabilities
-> Const
@*
(First DefinitionClientCapabilities)
(Maybe TextDocumentClientCapabilities))
-> ClientCapabilities
-> Const
@* (First DefinitionClientCapabilities) ClientCapabilities)
-> ((DefinitionClientCapabilities
-> Const
@*
(First DefinitionClientCapabilities)
DefinitionClientCapabilities)
-> Maybe TextDocumentClientCapabilities
-> Const
@*
(First DefinitionClientCapabilities)
(Maybe TextDocumentClientCapabilities))
-> Getting
(First DefinitionClientCapabilities)
ClientCapabilities
DefinitionClientCapabilities
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (TextDocumentClientCapabilities
-> Const
@*
(First DefinitionClientCapabilities)
TextDocumentClientCapabilities)
-> Maybe TextDocumentClientCapabilities
-> Const
@*
(First DefinitionClientCapabilities)
(Maybe TextDocumentClientCapabilities)
forall a b. Prism (Maybe a) (Maybe b) a b
_Just ((TextDocumentClientCapabilities
-> Const
@*
(First DefinitionClientCapabilities)
TextDocumentClientCapabilities)
-> Maybe TextDocumentClientCapabilities
-> Const
@*
(First DefinitionClientCapabilities)
(Maybe TextDocumentClientCapabilities))
-> ((DefinitionClientCapabilities
-> Const
@*
(First DefinitionClientCapabilities)
DefinitionClientCapabilities)
-> TextDocumentClientCapabilities
-> Const
@*
(First DefinitionClientCapabilities)
TextDocumentClientCapabilities)
-> (DefinitionClientCapabilities
-> Const
@*
(First DefinitionClientCapabilities)
DefinitionClientCapabilities)
-> Maybe TextDocumentClientCapabilities
-> Const
@*
(First DefinitionClientCapabilities)
(Maybe TextDocumentClientCapabilities)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Maybe DefinitionClientCapabilities
-> Const
@*
(First DefinitionClientCapabilities)
(Maybe DefinitionClientCapabilities))
-> TextDocumentClientCapabilities
-> Const
@*
(First DefinitionClientCapabilities)
TextDocumentClientCapabilities
forall s a. HasDefinition s a => Lens' s a
J.definition ((Maybe DefinitionClientCapabilities
-> Const
@*
(First DefinitionClientCapabilities)
(Maybe DefinitionClientCapabilities))
-> TextDocumentClientCapabilities
-> Const
@*
(First DefinitionClientCapabilities)
TextDocumentClientCapabilities)
-> ((DefinitionClientCapabilities
-> Const
@*
(First DefinitionClientCapabilities)
DefinitionClientCapabilities)
-> Maybe DefinitionClientCapabilities
-> Const
@*
(First DefinitionClientCapabilities)
(Maybe DefinitionClientCapabilities))
-> (DefinitionClientCapabilities
-> Const
@*
(First DefinitionClientCapabilities)
DefinitionClientCapabilities)
-> TextDocumentClientCapabilities
-> Const
@*
(First DefinitionClientCapabilities)
TextDocumentClientCapabilities
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (DefinitionClientCapabilities
-> Const
@*
(First DefinitionClientCapabilities)
DefinitionClientCapabilities)
-> Maybe DefinitionClientCapabilities
-> Const
@*
(First DefinitionClientCapabilities)
(Maybe DefinitionClientCapabilities)
forall a b. Prism (Maybe a) (Maybe b) a b
_Just
SClientMethod @t m
STextDocumentTypeDefinition -> Maybe TypeDefinitionClientCapabilities -> Bool
forall a. HasDynamicRegistration a (Maybe Bool) => Maybe a -> Bool
capDyn (Maybe TypeDefinitionClientCapabilities -> Bool)
-> Maybe TypeDefinitionClientCapabilities -> Bool
forall a b. (a -> b) -> a -> b
$ ClientCapabilities
clientCaps ClientCapabilities
-> Getting
(First TypeDefinitionClientCapabilities)
ClientCapabilities
TypeDefinitionClientCapabilities
-> Maybe TypeDefinitionClientCapabilities
forall s a. s -> Getting (First a) s a -> Maybe a
^? (Maybe TextDocumentClientCapabilities
-> Const
@*
(First TypeDefinitionClientCapabilities)
(Maybe TextDocumentClientCapabilities))
-> ClientCapabilities
-> Const
@* (First TypeDefinitionClientCapabilities) ClientCapabilities
forall s a. HasTextDocument s a => Lens' s a
J.textDocument ((Maybe TextDocumentClientCapabilities
-> Const
@*
(First TypeDefinitionClientCapabilities)
(Maybe TextDocumentClientCapabilities))
-> ClientCapabilities
-> Const
@* (First TypeDefinitionClientCapabilities) ClientCapabilities)
-> ((TypeDefinitionClientCapabilities
-> Const
@*
(First TypeDefinitionClientCapabilities)
TypeDefinitionClientCapabilities)
-> Maybe TextDocumentClientCapabilities
-> Const
@*
(First TypeDefinitionClientCapabilities)
(Maybe TextDocumentClientCapabilities))
-> Getting
(First TypeDefinitionClientCapabilities)
ClientCapabilities
TypeDefinitionClientCapabilities
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (TextDocumentClientCapabilities
-> Const
@*
(First TypeDefinitionClientCapabilities)
TextDocumentClientCapabilities)
-> Maybe TextDocumentClientCapabilities
-> Const
@*
(First TypeDefinitionClientCapabilities)
(Maybe TextDocumentClientCapabilities)
forall a b. Prism (Maybe a) (Maybe b) a b
_Just ((TextDocumentClientCapabilities
-> Const
@*
(First TypeDefinitionClientCapabilities)
TextDocumentClientCapabilities)
-> Maybe TextDocumentClientCapabilities
-> Const
@*
(First TypeDefinitionClientCapabilities)
(Maybe TextDocumentClientCapabilities))
-> ((TypeDefinitionClientCapabilities
-> Const
@*
(First TypeDefinitionClientCapabilities)
TypeDefinitionClientCapabilities)
-> TextDocumentClientCapabilities
-> Const
@*
(First TypeDefinitionClientCapabilities)
TextDocumentClientCapabilities)
-> (TypeDefinitionClientCapabilities
-> Const
@*
(First TypeDefinitionClientCapabilities)
TypeDefinitionClientCapabilities)
-> Maybe TextDocumentClientCapabilities
-> Const
@*
(First TypeDefinitionClientCapabilities)
(Maybe TextDocumentClientCapabilities)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Maybe TypeDefinitionClientCapabilities
-> Const
@*
(First TypeDefinitionClientCapabilities)
(Maybe TypeDefinitionClientCapabilities))
-> TextDocumentClientCapabilities
-> Const
@*
(First TypeDefinitionClientCapabilities)
TextDocumentClientCapabilities
forall s a. HasTypeDefinition s a => Lens' s a
J.typeDefinition ((Maybe TypeDefinitionClientCapabilities
-> Const
@*
(First TypeDefinitionClientCapabilities)
(Maybe TypeDefinitionClientCapabilities))
-> TextDocumentClientCapabilities
-> Const
@*
(First TypeDefinitionClientCapabilities)
TextDocumentClientCapabilities)
-> ((TypeDefinitionClientCapabilities
-> Const
@*
(First TypeDefinitionClientCapabilities)
TypeDefinitionClientCapabilities)
-> Maybe TypeDefinitionClientCapabilities
-> Const
@*
(First TypeDefinitionClientCapabilities)
(Maybe TypeDefinitionClientCapabilities))
-> (TypeDefinitionClientCapabilities
-> Const
@*
(First TypeDefinitionClientCapabilities)
TypeDefinitionClientCapabilities)
-> TextDocumentClientCapabilities
-> Const
@*
(First TypeDefinitionClientCapabilities)
TextDocumentClientCapabilities
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (TypeDefinitionClientCapabilities
-> Const
@*
(First TypeDefinitionClientCapabilities)
TypeDefinitionClientCapabilities)
-> Maybe TypeDefinitionClientCapabilities
-> Const
@*
(First TypeDefinitionClientCapabilities)
(Maybe TypeDefinitionClientCapabilities)
forall a b. Prism (Maybe a) (Maybe b) a b
_Just
SClientMethod @t m
STextDocumentImplementation -> Maybe ImplementationClientCapabilities -> Bool
forall a. HasDynamicRegistration a (Maybe Bool) => Maybe a -> Bool
capDyn (Maybe ImplementationClientCapabilities -> Bool)
-> Maybe ImplementationClientCapabilities -> Bool
forall a b. (a -> b) -> a -> b
$ ClientCapabilities
clientCaps ClientCapabilities
-> Getting
(First ImplementationClientCapabilities)
ClientCapabilities
ImplementationClientCapabilities
-> Maybe ImplementationClientCapabilities
forall s a. s -> Getting (First a) s a -> Maybe a
^? (Maybe TextDocumentClientCapabilities
-> Const
@*
(First ImplementationClientCapabilities)
(Maybe TextDocumentClientCapabilities))
-> ClientCapabilities
-> Const
@* (First ImplementationClientCapabilities) ClientCapabilities
forall s a. HasTextDocument s a => Lens' s a
J.textDocument ((Maybe TextDocumentClientCapabilities
-> Const
@*
(First ImplementationClientCapabilities)
(Maybe TextDocumentClientCapabilities))
-> ClientCapabilities
-> Const
@* (First ImplementationClientCapabilities) ClientCapabilities)
-> ((ImplementationClientCapabilities
-> Const
@*
(First ImplementationClientCapabilities)
ImplementationClientCapabilities)
-> Maybe TextDocumentClientCapabilities
-> Const
@*
(First ImplementationClientCapabilities)
(Maybe TextDocumentClientCapabilities))
-> Getting
(First ImplementationClientCapabilities)
ClientCapabilities
ImplementationClientCapabilities
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (TextDocumentClientCapabilities
-> Const
@*
(First ImplementationClientCapabilities)
TextDocumentClientCapabilities)
-> Maybe TextDocumentClientCapabilities
-> Const
@*
(First ImplementationClientCapabilities)
(Maybe TextDocumentClientCapabilities)
forall a b. Prism (Maybe a) (Maybe b) a b
_Just ((TextDocumentClientCapabilities
-> Const
@*
(First ImplementationClientCapabilities)
TextDocumentClientCapabilities)
-> Maybe TextDocumentClientCapabilities
-> Const
@*
(First ImplementationClientCapabilities)
(Maybe TextDocumentClientCapabilities))
-> ((ImplementationClientCapabilities
-> Const
@*
(First ImplementationClientCapabilities)
ImplementationClientCapabilities)
-> TextDocumentClientCapabilities
-> Const
@*
(First ImplementationClientCapabilities)
TextDocumentClientCapabilities)
-> (ImplementationClientCapabilities
-> Const
@*
(First ImplementationClientCapabilities)
ImplementationClientCapabilities)
-> Maybe TextDocumentClientCapabilities
-> Const
@*
(First ImplementationClientCapabilities)
(Maybe TextDocumentClientCapabilities)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Maybe ImplementationClientCapabilities
-> Const
@*
(First ImplementationClientCapabilities)
(Maybe ImplementationClientCapabilities))
-> TextDocumentClientCapabilities
-> Const
@*
(First ImplementationClientCapabilities)
TextDocumentClientCapabilities
forall s a. HasImplementation s a => Lens' s a
J.implementation ((Maybe ImplementationClientCapabilities
-> Const
@*
(First ImplementationClientCapabilities)
(Maybe ImplementationClientCapabilities))
-> TextDocumentClientCapabilities
-> Const
@*
(First ImplementationClientCapabilities)
TextDocumentClientCapabilities)
-> ((ImplementationClientCapabilities
-> Const
@*
(First ImplementationClientCapabilities)
ImplementationClientCapabilities)
-> Maybe ImplementationClientCapabilities
-> Const
@*
(First ImplementationClientCapabilities)
(Maybe ImplementationClientCapabilities))
-> (ImplementationClientCapabilities
-> Const
@*
(First ImplementationClientCapabilities)
ImplementationClientCapabilities)
-> TextDocumentClientCapabilities
-> Const
@*
(First ImplementationClientCapabilities)
TextDocumentClientCapabilities
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (ImplementationClientCapabilities
-> Const
@*
(First ImplementationClientCapabilities)
ImplementationClientCapabilities)
-> Maybe ImplementationClientCapabilities
-> Const
@*
(First ImplementationClientCapabilities)
(Maybe ImplementationClientCapabilities)
forall a b. Prism (Maybe a) (Maybe b) a b
_Just
SClientMethod @t m
STextDocumentReferences -> Maybe ReferencesClientCapabilities -> Bool
forall a. HasDynamicRegistration a (Maybe Bool) => Maybe a -> Bool
capDyn (Maybe ReferencesClientCapabilities -> Bool)
-> Maybe ReferencesClientCapabilities -> Bool
forall a b. (a -> b) -> a -> b
$ ClientCapabilities
clientCaps ClientCapabilities
-> Getting
(First ReferencesClientCapabilities)
ClientCapabilities
ReferencesClientCapabilities
-> Maybe ReferencesClientCapabilities
forall s a. s -> Getting (First a) s a -> Maybe a
^? (Maybe TextDocumentClientCapabilities
-> Const
@*
(First ReferencesClientCapabilities)
(Maybe TextDocumentClientCapabilities))
-> ClientCapabilities
-> Const @* (First ReferencesClientCapabilities) ClientCapabilities
forall s a. HasTextDocument s a => Lens' s a
J.textDocument ((Maybe TextDocumentClientCapabilities
-> Const
@*
(First ReferencesClientCapabilities)
(Maybe TextDocumentClientCapabilities))
-> ClientCapabilities
-> Const
@* (First ReferencesClientCapabilities) ClientCapabilities)
-> ((ReferencesClientCapabilities
-> Const
@*
(First ReferencesClientCapabilities)
ReferencesClientCapabilities)
-> Maybe TextDocumentClientCapabilities
-> Const
@*
(First ReferencesClientCapabilities)
(Maybe TextDocumentClientCapabilities))
-> Getting
(First ReferencesClientCapabilities)
ClientCapabilities
ReferencesClientCapabilities
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (TextDocumentClientCapabilities
-> Const
@*
(First ReferencesClientCapabilities)
TextDocumentClientCapabilities)
-> Maybe TextDocumentClientCapabilities
-> Const
@*
(First ReferencesClientCapabilities)
(Maybe TextDocumentClientCapabilities)
forall a b. Prism (Maybe a) (Maybe b) a b
_Just ((TextDocumentClientCapabilities
-> Const
@*
(First ReferencesClientCapabilities)
TextDocumentClientCapabilities)
-> Maybe TextDocumentClientCapabilities
-> Const
@*
(First ReferencesClientCapabilities)
(Maybe TextDocumentClientCapabilities))
-> ((ReferencesClientCapabilities
-> Const
@*
(First ReferencesClientCapabilities)
ReferencesClientCapabilities)
-> TextDocumentClientCapabilities
-> Const
@*
(First ReferencesClientCapabilities)
TextDocumentClientCapabilities)
-> (ReferencesClientCapabilities
-> Const
@*
(First ReferencesClientCapabilities)
ReferencesClientCapabilities)
-> Maybe TextDocumentClientCapabilities
-> Const
@*
(First ReferencesClientCapabilities)
(Maybe TextDocumentClientCapabilities)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Maybe ReferencesClientCapabilities
-> Const
@*
(First ReferencesClientCapabilities)
(Maybe ReferencesClientCapabilities))
-> TextDocumentClientCapabilities
-> Const
@*
(First ReferencesClientCapabilities)
TextDocumentClientCapabilities
forall s a. HasReferences s a => Lens' s a
J.references ((Maybe ReferencesClientCapabilities
-> Const
@*
(First ReferencesClientCapabilities)
(Maybe ReferencesClientCapabilities))
-> TextDocumentClientCapabilities
-> Const
@*
(First ReferencesClientCapabilities)
TextDocumentClientCapabilities)
-> ((ReferencesClientCapabilities
-> Const
@*
(First ReferencesClientCapabilities)
ReferencesClientCapabilities)
-> Maybe ReferencesClientCapabilities
-> Const
@*
(First ReferencesClientCapabilities)
(Maybe ReferencesClientCapabilities))
-> (ReferencesClientCapabilities
-> Const
@*
(First ReferencesClientCapabilities)
ReferencesClientCapabilities)
-> TextDocumentClientCapabilities
-> Const
@*
(First ReferencesClientCapabilities)
TextDocumentClientCapabilities
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (ReferencesClientCapabilities
-> Const
@*
(First ReferencesClientCapabilities)
ReferencesClientCapabilities)
-> Maybe ReferencesClientCapabilities
-> Const
@*
(First ReferencesClientCapabilities)
(Maybe ReferencesClientCapabilities)
forall a b. Prism (Maybe a) (Maybe b) a b
_Just
SClientMethod @t m
STextDocumentDocumentHighlight -> Maybe DocumentHighlightClientCapabilities -> Bool
forall a. HasDynamicRegistration a (Maybe Bool) => Maybe a -> Bool
capDyn (Maybe DocumentHighlightClientCapabilities -> Bool)
-> Maybe DocumentHighlightClientCapabilities -> Bool
forall a b. (a -> b) -> a -> b
$ ClientCapabilities
clientCaps ClientCapabilities
-> Getting
(First DocumentHighlightClientCapabilities)
ClientCapabilities
DocumentHighlightClientCapabilities
-> Maybe DocumentHighlightClientCapabilities
forall s a. s -> Getting (First a) s a -> Maybe a
^? (Maybe TextDocumentClientCapabilities
-> Const
@*
(First DocumentHighlightClientCapabilities)
(Maybe TextDocumentClientCapabilities))
-> ClientCapabilities
-> Const
@* (First DocumentHighlightClientCapabilities) ClientCapabilities
forall s a. HasTextDocument s a => Lens' s a
J.textDocument ((Maybe TextDocumentClientCapabilities
-> Const
@*
(First DocumentHighlightClientCapabilities)
(Maybe TextDocumentClientCapabilities))
-> ClientCapabilities
-> Const
@* (First DocumentHighlightClientCapabilities) ClientCapabilities)
-> ((DocumentHighlightClientCapabilities
-> Const
@*
(First DocumentHighlightClientCapabilities)
DocumentHighlightClientCapabilities)
-> Maybe TextDocumentClientCapabilities
-> Const
@*
(First DocumentHighlightClientCapabilities)
(Maybe TextDocumentClientCapabilities))
-> Getting
(First DocumentHighlightClientCapabilities)
ClientCapabilities
DocumentHighlightClientCapabilities
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (TextDocumentClientCapabilities
-> Const
@*
(First DocumentHighlightClientCapabilities)
TextDocumentClientCapabilities)
-> Maybe TextDocumentClientCapabilities
-> Const
@*
(First DocumentHighlightClientCapabilities)
(Maybe TextDocumentClientCapabilities)
forall a b. Prism (Maybe a) (Maybe b) a b
_Just ((TextDocumentClientCapabilities
-> Const
@*
(First DocumentHighlightClientCapabilities)
TextDocumentClientCapabilities)
-> Maybe TextDocumentClientCapabilities
-> Const
@*
(First DocumentHighlightClientCapabilities)
(Maybe TextDocumentClientCapabilities))
-> ((DocumentHighlightClientCapabilities
-> Const
@*
(First DocumentHighlightClientCapabilities)
DocumentHighlightClientCapabilities)
-> TextDocumentClientCapabilities
-> Const
@*
(First DocumentHighlightClientCapabilities)
TextDocumentClientCapabilities)
-> (DocumentHighlightClientCapabilities
-> Const
@*
(First DocumentHighlightClientCapabilities)
DocumentHighlightClientCapabilities)
-> Maybe TextDocumentClientCapabilities
-> Const
@*
(First DocumentHighlightClientCapabilities)
(Maybe TextDocumentClientCapabilities)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Maybe DocumentHighlightClientCapabilities
-> Const
@*
(First DocumentHighlightClientCapabilities)
(Maybe DocumentHighlightClientCapabilities))
-> TextDocumentClientCapabilities
-> Const
@*
(First DocumentHighlightClientCapabilities)
TextDocumentClientCapabilities
forall s a. HasDocumentHighlight s a => Lens' s a
J.documentHighlight ((Maybe DocumentHighlightClientCapabilities
-> Const
@*
(First DocumentHighlightClientCapabilities)
(Maybe DocumentHighlightClientCapabilities))
-> TextDocumentClientCapabilities
-> Const
@*
(First DocumentHighlightClientCapabilities)
TextDocumentClientCapabilities)
-> ((DocumentHighlightClientCapabilities
-> Const
@*
(First DocumentHighlightClientCapabilities)
DocumentHighlightClientCapabilities)
-> Maybe DocumentHighlightClientCapabilities
-> Const
@*
(First DocumentHighlightClientCapabilities)
(Maybe DocumentHighlightClientCapabilities))
-> (DocumentHighlightClientCapabilities
-> Const
@*
(First DocumentHighlightClientCapabilities)
DocumentHighlightClientCapabilities)
-> TextDocumentClientCapabilities
-> Const
@*
(First DocumentHighlightClientCapabilities)
TextDocumentClientCapabilities
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (DocumentHighlightClientCapabilities
-> Const
@*
(First DocumentHighlightClientCapabilities)
DocumentHighlightClientCapabilities)
-> Maybe DocumentHighlightClientCapabilities
-> Const
@*
(First DocumentHighlightClientCapabilities)
(Maybe DocumentHighlightClientCapabilities)
forall a b. Prism (Maybe a) (Maybe b) a b
_Just
SClientMethod @t m
STextDocumentDocumentSymbol -> Maybe DocumentSymbolClientCapabilities -> Bool
forall a. HasDynamicRegistration a (Maybe Bool) => Maybe a -> Bool
capDyn (Maybe DocumentSymbolClientCapabilities -> Bool)
-> Maybe DocumentSymbolClientCapabilities -> Bool
forall a b. (a -> b) -> a -> b
$ ClientCapabilities
clientCaps ClientCapabilities
-> Getting
(First DocumentSymbolClientCapabilities)
ClientCapabilities
DocumentSymbolClientCapabilities
-> Maybe DocumentSymbolClientCapabilities
forall s a. s -> Getting (First a) s a -> Maybe a
^? (Maybe TextDocumentClientCapabilities
-> Const
@*
(First DocumentSymbolClientCapabilities)
(Maybe TextDocumentClientCapabilities))
-> ClientCapabilities
-> Const
@* (First DocumentSymbolClientCapabilities) ClientCapabilities
forall s a. HasTextDocument s a => Lens' s a
J.textDocument ((Maybe TextDocumentClientCapabilities
-> Const
@*
(First DocumentSymbolClientCapabilities)
(Maybe TextDocumentClientCapabilities))
-> ClientCapabilities
-> Const
@* (First DocumentSymbolClientCapabilities) ClientCapabilities)
-> ((DocumentSymbolClientCapabilities
-> Const
@*
(First DocumentSymbolClientCapabilities)
DocumentSymbolClientCapabilities)
-> Maybe TextDocumentClientCapabilities
-> Const
@*
(First DocumentSymbolClientCapabilities)
(Maybe TextDocumentClientCapabilities))
-> Getting
(First DocumentSymbolClientCapabilities)
ClientCapabilities
DocumentSymbolClientCapabilities
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (TextDocumentClientCapabilities
-> Const
@*
(First DocumentSymbolClientCapabilities)
TextDocumentClientCapabilities)
-> Maybe TextDocumentClientCapabilities
-> Const
@*
(First DocumentSymbolClientCapabilities)
(Maybe TextDocumentClientCapabilities)
forall a b. Prism (Maybe a) (Maybe b) a b
_Just ((TextDocumentClientCapabilities
-> Const
@*
(First DocumentSymbolClientCapabilities)
TextDocumentClientCapabilities)
-> Maybe TextDocumentClientCapabilities
-> Const
@*
(First DocumentSymbolClientCapabilities)
(Maybe TextDocumentClientCapabilities))
-> ((DocumentSymbolClientCapabilities
-> Const
@*
(First DocumentSymbolClientCapabilities)
DocumentSymbolClientCapabilities)
-> TextDocumentClientCapabilities
-> Const
@*
(First DocumentSymbolClientCapabilities)
TextDocumentClientCapabilities)
-> (DocumentSymbolClientCapabilities
-> Const
@*
(First DocumentSymbolClientCapabilities)
DocumentSymbolClientCapabilities)
-> Maybe TextDocumentClientCapabilities
-> Const
@*
(First DocumentSymbolClientCapabilities)
(Maybe TextDocumentClientCapabilities)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Maybe DocumentSymbolClientCapabilities
-> Const
@*
(First DocumentSymbolClientCapabilities)
(Maybe DocumentSymbolClientCapabilities))
-> TextDocumentClientCapabilities
-> Const
@*
(First DocumentSymbolClientCapabilities)
TextDocumentClientCapabilities
forall s a. HasDocumentSymbol s a => Lens' s a
J.documentSymbol ((Maybe DocumentSymbolClientCapabilities
-> Const
@*
(First DocumentSymbolClientCapabilities)
(Maybe DocumentSymbolClientCapabilities))
-> TextDocumentClientCapabilities
-> Const
@*
(First DocumentSymbolClientCapabilities)
TextDocumentClientCapabilities)
-> ((DocumentSymbolClientCapabilities
-> Const
@*
(First DocumentSymbolClientCapabilities)
DocumentSymbolClientCapabilities)
-> Maybe DocumentSymbolClientCapabilities
-> Const
@*
(First DocumentSymbolClientCapabilities)
(Maybe DocumentSymbolClientCapabilities))
-> (DocumentSymbolClientCapabilities
-> Const
@*
(First DocumentSymbolClientCapabilities)
DocumentSymbolClientCapabilities)
-> TextDocumentClientCapabilities
-> Const
@*
(First DocumentSymbolClientCapabilities)
TextDocumentClientCapabilities
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (DocumentSymbolClientCapabilities
-> Const
@*
(First DocumentSymbolClientCapabilities)
DocumentSymbolClientCapabilities)
-> Maybe DocumentSymbolClientCapabilities
-> Const
@*
(First DocumentSymbolClientCapabilities)
(Maybe DocumentSymbolClientCapabilities)
forall a b. Prism (Maybe a) (Maybe b) a b
_Just
SClientMethod @t m
STextDocumentCodeAction -> Maybe CodeActionClientCapabilities -> Bool
forall a. HasDynamicRegistration a (Maybe Bool) => Maybe a -> Bool
capDyn (Maybe CodeActionClientCapabilities -> Bool)
-> Maybe CodeActionClientCapabilities -> Bool
forall a b. (a -> b) -> a -> b
$ ClientCapabilities
clientCaps ClientCapabilities
-> Getting
(First CodeActionClientCapabilities)
ClientCapabilities
CodeActionClientCapabilities
-> Maybe CodeActionClientCapabilities
forall s a. s -> Getting (First a) s a -> Maybe a
^? (Maybe TextDocumentClientCapabilities
-> Const
@*
(First CodeActionClientCapabilities)
(Maybe TextDocumentClientCapabilities))
-> ClientCapabilities
-> Const @* (First CodeActionClientCapabilities) ClientCapabilities
forall s a. HasTextDocument s a => Lens' s a
J.textDocument ((Maybe TextDocumentClientCapabilities
-> Const
@*
(First CodeActionClientCapabilities)
(Maybe TextDocumentClientCapabilities))
-> ClientCapabilities
-> Const
@* (First CodeActionClientCapabilities) ClientCapabilities)
-> ((CodeActionClientCapabilities
-> Const
@*
(First CodeActionClientCapabilities)
CodeActionClientCapabilities)
-> Maybe TextDocumentClientCapabilities
-> Const
@*
(First CodeActionClientCapabilities)
(Maybe TextDocumentClientCapabilities))
-> Getting
(First CodeActionClientCapabilities)
ClientCapabilities
CodeActionClientCapabilities
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (TextDocumentClientCapabilities
-> Const
@*
(First CodeActionClientCapabilities)
TextDocumentClientCapabilities)
-> Maybe TextDocumentClientCapabilities
-> Const
@*
(First CodeActionClientCapabilities)
(Maybe TextDocumentClientCapabilities)
forall a b. Prism (Maybe a) (Maybe b) a b
_Just ((TextDocumentClientCapabilities
-> Const
@*
(First CodeActionClientCapabilities)
TextDocumentClientCapabilities)
-> Maybe TextDocumentClientCapabilities
-> Const
@*
(First CodeActionClientCapabilities)
(Maybe TextDocumentClientCapabilities))
-> ((CodeActionClientCapabilities
-> Const
@*
(First CodeActionClientCapabilities)
CodeActionClientCapabilities)
-> TextDocumentClientCapabilities
-> Const
@*
(First CodeActionClientCapabilities)
TextDocumentClientCapabilities)
-> (CodeActionClientCapabilities
-> Const
@*
(First CodeActionClientCapabilities)
CodeActionClientCapabilities)
-> Maybe TextDocumentClientCapabilities
-> Const
@*
(First CodeActionClientCapabilities)
(Maybe TextDocumentClientCapabilities)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Maybe CodeActionClientCapabilities
-> Const
@*
(First CodeActionClientCapabilities)
(Maybe CodeActionClientCapabilities))
-> TextDocumentClientCapabilities
-> Const
@*
(First CodeActionClientCapabilities)
TextDocumentClientCapabilities
forall s a. HasCodeAction s a => Lens' s a
J.codeAction ((Maybe CodeActionClientCapabilities
-> Const
@*
(First CodeActionClientCapabilities)
(Maybe CodeActionClientCapabilities))
-> TextDocumentClientCapabilities
-> Const
@*
(First CodeActionClientCapabilities)
TextDocumentClientCapabilities)
-> ((CodeActionClientCapabilities
-> Const
@*
(First CodeActionClientCapabilities)
CodeActionClientCapabilities)
-> Maybe CodeActionClientCapabilities
-> Const
@*
(First CodeActionClientCapabilities)
(Maybe CodeActionClientCapabilities))
-> (CodeActionClientCapabilities
-> Const
@*
(First CodeActionClientCapabilities)
CodeActionClientCapabilities)
-> TextDocumentClientCapabilities
-> Const
@*
(First CodeActionClientCapabilities)
TextDocumentClientCapabilities
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (CodeActionClientCapabilities
-> Const
@*
(First CodeActionClientCapabilities)
CodeActionClientCapabilities)
-> Maybe CodeActionClientCapabilities
-> Const
@*
(First CodeActionClientCapabilities)
(Maybe CodeActionClientCapabilities)
forall a b. Prism (Maybe a) (Maybe b) a b
_Just
SClientMethod @t m
STextDocumentCodeLens -> Maybe CodeLensClientCapabilities -> Bool
forall a. HasDynamicRegistration a (Maybe Bool) => Maybe a -> Bool
capDyn (Maybe CodeLensClientCapabilities -> Bool)
-> Maybe CodeLensClientCapabilities -> Bool
forall a b. (a -> b) -> a -> b
$ ClientCapabilities
clientCaps ClientCapabilities
-> Getting
(First CodeLensClientCapabilities)
ClientCapabilities
CodeLensClientCapabilities
-> Maybe CodeLensClientCapabilities
forall s a. s -> Getting (First a) s a -> Maybe a
^? (Maybe TextDocumentClientCapabilities
-> Const
@*
(First CodeLensClientCapabilities)
(Maybe TextDocumentClientCapabilities))
-> ClientCapabilities
-> Const @* (First CodeLensClientCapabilities) ClientCapabilities
forall s a. HasTextDocument s a => Lens' s a
J.textDocument ((Maybe TextDocumentClientCapabilities
-> Const
@*
(First CodeLensClientCapabilities)
(Maybe TextDocumentClientCapabilities))
-> ClientCapabilities
-> Const @* (First CodeLensClientCapabilities) ClientCapabilities)
-> ((CodeLensClientCapabilities
-> Const
@* (First CodeLensClientCapabilities) CodeLensClientCapabilities)
-> Maybe TextDocumentClientCapabilities
-> Const
@*
(First CodeLensClientCapabilities)
(Maybe TextDocumentClientCapabilities))
-> Getting
(First CodeLensClientCapabilities)
ClientCapabilities
CodeLensClientCapabilities
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (TextDocumentClientCapabilities
-> Const
@*
(First CodeLensClientCapabilities)
TextDocumentClientCapabilities)
-> Maybe TextDocumentClientCapabilities
-> Const
@*
(First CodeLensClientCapabilities)
(Maybe TextDocumentClientCapabilities)
forall a b. Prism (Maybe a) (Maybe b) a b
_Just ((TextDocumentClientCapabilities
-> Const
@*
(First CodeLensClientCapabilities)
TextDocumentClientCapabilities)
-> Maybe TextDocumentClientCapabilities
-> Const
@*
(First CodeLensClientCapabilities)
(Maybe TextDocumentClientCapabilities))
-> ((CodeLensClientCapabilities
-> Const
@* (First CodeLensClientCapabilities) CodeLensClientCapabilities)
-> TextDocumentClientCapabilities
-> Const
@*
(First CodeLensClientCapabilities)
TextDocumentClientCapabilities)
-> (CodeLensClientCapabilities
-> Const
@* (First CodeLensClientCapabilities) CodeLensClientCapabilities)
-> Maybe TextDocumentClientCapabilities
-> Const
@*
(First CodeLensClientCapabilities)
(Maybe TextDocumentClientCapabilities)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Maybe CodeLensClientCapabilities
-> Const
@*
(First CodeLensClientCapabilities)
(Maybe CodeLensClientCapabilities))
-> TextDocumentClientCapabilities
-> Const
@*
(First CodeLensClientCapabilities)
TextDocumentClientCapabilities
forall s a. HasCodeLens s a => Lens' s a
J.codeLens ((Maybe CodeLensClientCapabilities
-> Const
@*
(First CodeLensClientCapabilities)
(Maybe CodeLensClientCapabilities))
-> TextDocumentClientCapabilities
-> Const
@*
(First CodeLensClientCapabilities)
TextDocumentClientCapabilities)
-> ((CodeLensClientCapabilities
-> Const
@* (First CodeLensClientCapabilities) CodeLensClientCapabilities)
-> Maybe CodeLensClientCapabilities
-> Const
@*
(First CodeLensClientCapabilities)
(Maybe CodeLensClientCapabilities))
-> (CodeLensClientCapabilities
-> Const
@* (First CodeLensClientCapabilities) CodeLensClientCapabilities)
-> TextDocumentClientCapabilities
-> Const
@*
(First CodeLensClientCapabilities)
TextDocumentClientCapabilities
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (CodeLensClientCapabilities
-> Const
@* (First CodeLensClientCapabilities) CodeLensClientCapabilities)
-> Maybe CodeLensClientCapabilities
-> Const
@*
(First CodeLensClientCapabilities)
(Maybe CodeLensClientCapabilities)
forall a b. Prism (Maybe a) (Maybe b) a b
_Just
SClientMethod @t m
STextDocumentDocumentLink -> Maybe DocumentLinkClientCapabilities -> Bool
forall a. HasDynamicRegistration a (Maybe Bool) => Maybe a -> Bool
capDyn (Maybe DocumentLinkClientCapabilities -> Bool)
-> Maybe DocumentLinkClientCapabilities -> Bool
forall a b. (a -> b) -> a -> b
$ ClientCapabilities
clientCaps ClientCapabilities
-> Getting
(First DocumentLinkClientCapabilities)
ClientCapabilities
DocumentLinkClientCapabilities
-> Maybe DocumentLinkClientCapabilities
forall s a. s -> Getting (First a) s a -> Maybe a
^? (Maybe TextDocumentClientCapabilities
-> Const
@*
(First DocumentLinkClientCapabilities)
(Maybe TextDocumentClientCapabilities))
-> ClientCapabilities
-> Const
@* (First DocumentLinkClientCapabilities) ClientCapabilities
forall s a. HasTextDocument s a => Lens' s a
J.textDocument ((Maybe TextDocumentClientCapabilities
-> Const
@*
(First DocumentLinkClientCapabilities)
(Maybe TextDocumentClientCapabilities))
-> ClientCapabilities
-> Const
@* (First DocumentLinkClientCapabilities) ClientCapabilities)
-> ((DocumentLinkClientCapabilities
-> Const
@*
(First DocumentLinkClientCapabilities)
DocumentLinkClientCapabilities)
-> Maybe TextDocumentClientCapabilities
-> Const
@*
(First DocumentLinkClientCapabilities)
(Maybe TextDocumentClientCapabilities))
-> Getting
(First DocumentLinkClientCapabilities)
ClientCapabilities
DocumentLinkClientCapabilities
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (TextDocumentClientCapabilities
-> Const
@*
(First DocumentLinkClientCapabilities)
TextDocumentClientCapabilities)
-> Maybe TextDocumentClientCapabilities
-> Const
@*
(First DocumentLinkClientCapabilities)
(Maybe TextDocumentClientCapabilities)
forall a b. Prism (Maybe a) (Maybe b) a b
_Just ((TextDocumentClientCapabilities
-> Const
@*
(First DocumentLinkClientCapabilities)
TextDocumentClientCapabilities)
-> Maybe TextDocumentClientCapabilities
-> Const
@*
(First DocumentLinkClientCapabilities)
(Maybe TextDocumentClientCapabilities))
-> ((DocumentLinkClientCapabilities
-> Const
@*
(First DocumentLinkClientCapabilities)
DocumentLinkClientCapabilities)
-> TextDocumentClientCapabilities
-> Const
@*
(First DocumentLinkClientCapabilities)
TextDocumentClientCapabilities)
-> (DocumentLinkClientCapabilities
-> Const
@*
(First DocumentLinkClientCapabilities)
DocumentLinkClientCapabilities)
-> Maybe TextDocumentClientCapabilities
-> Const
@*
(First DocumentLinkClientCapabilities)
(Maybe TextDocumentClientCapabilities)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Maybe DocumentLinkClientCapabilities
-> Const
@*
(First DocumentLinkClientCapabilities)
(Maybe DocumentLinkClientCapabilities))
-> TextDocumentClientCapabilities
-> Const
@*
(First DocumentLinkClientCapabilities)
TextDocumentClientCapabilities
forall s a. HasDocumentLink s a => Lens' s a
J.documentLink ((Maybe DocumentLinkClientCapabilities
-> Const
@*
(First DocumentLinkClientCapabilities)
(Maybe DocumentLinkClientCapabilities))
-> TextDocumentClientCapabilities
-> Const
@*
(First DocumentLinkClientCapabilities)
TextDocumentClientCapabilities)
-> ((DocumentLinkClientCapabilities
-> Const
@*
(First DocumentLinkClientCapabilities)
DocumentLinkClientCapabilities)
-> Maybe DocumentLinkClientCapabilities
-> Const
@*
(First DocumentLinkClientCapabilities)
(Maybe DocumentLinkClientCapabilities))
-> (DocumentLinkClientCapabilities
-> Const
@*
(First DocumentLinkClientCapabilities)
DocumentLinkClientCapabilities)
-> TextDocumentClientCapabilities
-> Const
@*
(First DocumentLinkClientCapabilities)
TextDocumentClientCapabilities
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (DocumentLinkClientCapabilities
-> Const
@*
(First DocumentLinkClientCapabilities)
DocumentLinkClientCapabilities)
-> Maybe DocumentLinkClientCapabilities
-> Const
@*
(First DocumentLinkClientCapabilities)
(Maybe DocumentLinkClientCapabilities)
forall a b. Prism (Maybe a) (Maybe b) a b
_Just
SClientMethod @t m
STextDocumentDocumentColor -> Maybe DocumentColorClientCapabilities -> Bool
forall a. HasDynamicRegistration a (Maybe Bool) => Maybe a -> Bool
capDyn (Maybe DocumentColorClientCapabilities -> Bool)
-> Maybe DocumentColorClientCapabilities -> Bool
forall a b. (a -> b) -> a -> b
$ ClientCapabilities
clientCaps ClientCapabilities
-> Getting
(First DocumentColorClientCapabilities)
ClientCapabilities
DocumentColorClientCapabilities
-> Maybe DocumentColorClientCapabilities
forall s a. s -> Getting (First a) s a -> Maybe a
^? (Maybe TextDocumentClientCapabilities
-> Const
@*
(First DocumentColorClientCapabilities)
(Maybe TextDocumentClientCapabilities))
-> ClientCapabilities
-> Const
@* (First DocumentColorClientCapabilities) ClientCapabilities
forall s a. HasTextDocument s a => Lens' s a
J.textDocument ((Maybe TextDocumentClientCapabilities
-> Const
@*
(First DocumentColorClientCapabilities)
(Maybe TextDocumentClientCapabilities))
-> ClientCapabilities
-> Const
@* (First DocumentColorClientCapabilities) ClientCapabilities)
-> ((DocumentColorClientCapabilities
-> Const
@*
(First DocumentColorClientCapabilities)
DocumentColorClientCapabilities)
-> Maybe TextDocumentClientCapabilities
-> Const
@*
(First DocumentColorClientCapabilities)
(Maybe TextDocumentClientCapabilities))
-> Getting
(First DocumentColorClientCapabilities)
ClientCapabilities
DocumentColorClientCapabilities
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (TextDocumentClientCapabilities
-> Const
@*
(First DocumentColorClientCapabilities)
TextDocumentClientCapabilities)
-> Maybe TextDocumentClientCapabilities
-> Const
@*
(First DocumentColorClientCapabilities)
(Maybe TextDocumentClientCapabilities)
forall a b. Prism (Maybe a) (Maybe b) a b
_Just ((TextDocumentClientCapabilities
-> Const
@*
(First DocumentColorClientCapabilities)
TextDocumentClientCapabilities)
-> Maybe TextDocumentClientCapabilities
-> Const
@*
(First DocumentColorClientCapabilities)
(Maybe TextDocumentClientCapabilities))
-> ((DocumentColorClientCapabilities
-> Const
@*
(First DocumentColorClientCapabilities)
DocumentColorClientCapabilities)
-> TextDocumentClientCapabilities
-> Const
@*
(First DocumentColorClientCapabilities)
TextDocumentClientCapabilities)
-> (DocumentColorClientCapabilities
-> Const
@*
(First DocumentColorClientCapabilities)
DocumentColorClientCapabilities)
-> Maybe TextDocumentClientCapabilities
-> Const
@*
(First DocumentColorClientCapabilities)
(Maybe TextDocumentClientCapabilities)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Maybe DocumentColorClientCapabilities
-> Const
@*
(First DocumentColorClientCapabilities)
(Maybe DocumentColorClientCapabilities))
-> TextDocumentClientCapabilities
-> Const
@*
(First DocumentColorClientCapabilities)
TextDocumentClientCapabilities
forall s a. HasColorProvider s a => Lens' s a
J.colorProvider ((Maybe DocumentColorClientCapabilities
-> Const
@*
(First DocumentColorClientCapabilities)
(Maybe DocumentColorClientCapabilities))
-> TextDocumentClientCapabilities
-> Const
@*
(First DocumentColorClientCapabilities)
TextDocumentClientCapabilities)
-> ((DocumentColorClientCapabilities
-> Const
@*
(First DocumentColorClientCapabilities)
DocumentColorClientCapabilities)
-> Maybe DocumentColorClientCapabilities
-> Const
@*
(First DocumentColorClientCapabilities)
(Maybe DocumentColorClientCapabilities))
-> (DocumentColorClientCapabilities
-> Const
@*
(First DocumentColorClientCapabilities)
DocumentColorClientCapabilities)
-> TextDocumentClientCapabilities
-> Const
@*
(First DocumentColorClientCapabilities)
TextDocumentClientCapabilities
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (DocumentColorClientCapabilities
-> Const
@*
(First DocumentColorClientCapabilities)
DocumentColorClientCapabilities)
-> Maybe DocumentColorClientCapabilities
-> Const
@*
(First DocumentColorClientCapabilities)
(Maybe DocumentColorClientCapabilities)
forall a b. Prism (Maybe a) (Maybe b) a b
_Just
SClientMethod @t m
STextDocumentColorPresentation -> Maybe DocumentColorClientCapabilities -> Bool
forall a. HasDynamicRegistration a (Maybe Bool) => Maybe a -> Bool
capDyn (Maybe DocumentColorClientCapabilities -> Bool)
-> Maybe DocumentColorClientCapabilities -> Bool
forall a b. (a -> b) -> a -> b
$ ClientCapabilities
clientCaps ClientCapabilities
-> Getting
(First DocumentColorClientCapabilities)
ClientCapabilities
DocumentColorClientCapabilities
-> Maybe DocumentColorClientCapabilities
forall s a. s -> Getting (First a) s a -> Maybe a
^? (Maybe TextDocumentClientCapabilities
-> Const
@*
(First DocumentColorClientCapabilities)
(Maybe TextDocumentClientCapabilities))
-> ClientCapabilities
-> Const
@* (First DocumentColorClientCapabilities) ClientCapabilities
forall s a. HasTextDocument s a => Lens' s a
J.textDocument ((Maybe TextDocumentClientCapabilities
-> Const
@*
(First DocumentColorClientCapabilities)
(Maybe TextDocumentClientCapabilities))
-> ClientCapabilities
-> Const
@* (First DocumentColorClientCapabilities) ClientCapabilities)
-> ((DocumentColorClientCapabilities
-> Const
@*
(First DocumentColorClientCapabilities)
DocumentColorClientCapabilities)
-> Maybe TextDocumentClientCapabilities
-> Const
@*
(First DocumentColorClientCapabilities)
(Maybe TextDocumentClientCapabilities))
-> Getting
(First DocumentColorClientCapabilities)
ClientCapabilities
DocumentColorClientCapabilities
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (TextDocumentClientCapabilities
-> Const
@*
(First DocumentColorClientCapabilities)
TextDocumentClientCapabilities)
-> Maybe TextDocumentClientCapabilities
-> Const
@*
(First DocumentColorClientCapabilities)
(Maybe TextDocumentClientCapabilities)
forall a b. Prism (Maybe a) (Maybe b) a b
_Just ((TextDocumentClientCapabilities
-> Const
@*
(First DocumentColorClientCapabilities)
TextDocumentClientCapabilities)
-> Maybe TextDocumentClientCapabilities
-> Const
@*
(First DocumentColorClientCapabilities)
(Maybe TextDocumentClientCapabilities))
-> ((DocumentColorClientCapabilities
-> Const
@*
(First DocumentColorClientCapabilities)
DocumentColorClientCapabilities)
-> TextDocumentClientCapabilities
-> Const
@*
(First DocumentColorClientCapabilities)
TextDocumentClientCapabilities)
-> (DocumentColorClientCapabilities
-> Const
@*
(First DocumentColorClientCapabilities)
DocumentColorClientCapabilities)
-> Maybe TextDocumentClientCapabilities
-> Const
@*
(First DocumentColorClientCapabilities)
(Maybe TextDocumentClientCapabilities)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Maybe DocumentColorClientCapabilities
-> Const
@*
(First DocumentColorClientCapabilities)
(Maybe DocumentColorClientCapabilities))
-> TextDocumentClientCapabilities
-> Const
@*
(First DocumentColorClientCapabilities)
TextDocumentClientCapabilities
forall s a. HasColorProvider s a => Lens' s a
J.colorProvider ((Maybe DocumentColorClientCapabilities
-> Const
@*
(First DocumentColorClientCapabilities)
(Maybe DocumentColorClientCapabilities))
-> TextDocumentClientCapabilities
-> Const
@*
(First DocumentColorClientCapabilities)
TextDocumentClientCapabilities)
-> ((DocumentColorClientCapabilities
-> Const
@*
(First DocumentColorClientCapabilities)
DocumentColorClientCapabilities)
-> Maybe DocumentColorClientCapabilities
-> Const
@*
(First DocumentColorClientCapabilities)
(Maybe DocumentColorClientCapabilities))
-> (DocumentColorClientCapabilities
-> Const
@*
(First DocumentColorClientCapabilities)
DocumentColorClientCapabilities)
-> TextDocumentClientCapabilities
-> Const
@*
(First DocumentColorClientCapabilities)
TextDocumentClientCapabilities
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (DocumentColorClientCapabilities
-> Const
@*
(First DocumentColorClientCapabilities)
DocumentColorClientCapabilities)
-> Maybe DocumentColorClientCapabilities
-> Const
@*
(First DocumentColorClientCapabilities)
(Maybe DocumentColorClientCapabilities)
forall a b. Prism (Maybe a) (Maybe b) a b
_Just
SClientMethod @t m
STextDocumentFormatting -> Maybe DocumentFormattingClientCapabilities -> Bool
forall a. HasDynamicRegistration a (Maybe Bool) => Maybe a -> Bool
capDyn (Maybe DocumentFormattingClientCapabilities -> Bool)
-> Maybe DocumentFormattingClientCapabilities -> Bool
forall a b. (a -> b) -> a -> b
$ ClientCapabilities
clientCaps ClientCapabilities
-> Getting
(First DocumentFormattingClientCapabilities)
ClientCapabilities
DocumentFormattingClientCapabilities
-> Maybe DocumentFormattingClientCapabilities
forall s a. s -> Getting (First a) s a -> Maybe a
^? (Maybe TextDocumentClientCapabilities
-> Const
@*
(First DocumentFormattingClientCapabilities)
(Maybe TextDocumentClientCapabilities))
-> ClientCapabilities
-> Const
@* (First DocumentFormattingClientCapabilities) ClientCapabilities
forall s a. HasTextDocument s a => Lens' s a
J.textDocument ((Maybe TextDocumentClientCapabilities
-> Const
@*
(First DocumentFormattingClientCapabilities)
(Maybe TextDocumentClientCapabilities))
-> ClientCapabilities
-> Const
@* (First DocumentFormattingClientCapabilities) ClientCapabilities)
-> ((DocumentFormattingClientCapabilities
-> Const
@*
(First DocumentFormattingClientCapabilities)
DocumentFormattingClientCapabilities)
-> Maybe TextDocumentClientCapabilities
-> Const
@*
(First DocumentFormattingClientCapabilities)
(Maybe TextDocumentClientCapabilities))
-> Getting
(First DocumentFormattingClientCapabilities)
ClientCapabilities
DocumentFormattingClientCapabilities
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (TextDocumentClientCapabilities
-> Const
@*
(First DocumentFormattingClientCapabilities)
TextDocumentClientCapabilities)
-> Maybe TextDocumentClientCapabilities
-> Const
@*
(First DocumentFormattingClientCapabilities)
(Maybe TextDocumentClientCapabilities)
forall a b. Prism (Maybe a) (Maybe b) a b
_Just ((TextDocumentClientCapabilities
-> Const
@*
(First DocumentFormattingClientCapabilities)
TextDocumentClientCapabilities)
-> Maybe TextDocumentClientCapabilities
-> Const
@*
(First DocumentFormattingClientCapabilities)
(Maybe TextDocumentClientCapabilities))
-> ((DocumentFormattingClientCapabilities
-> Const
@*
(First DocumentFormattingClientCapabilities)
DocumentFormattingClientCapabilities)
-> TextDocumentClientCapabilities
-> Const
@*
(First DocumentFormattingClientCapabilities)
TextDocumentClientCapabilities)
-> (DocumentFormattingClientCapabilities
-> Const
@*
(First DocumentFormattingClientCapabilities)
DocumentFormattingClientCapabilities)
-> Maybe TextDocumentClientCapabilities
-> Const
@*
(First DocumentFormattingClientCapabilities)
(Maybe TextDocumentClientCapabilities)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Maybe DocumentFormattingClientCapabilities
-> Const
@*
(First DocumentFormattingClientCapabilities)
(Maybe DocumentFormattingClientCapabilities))
-> TextDocumentClientCapabilities
-> Const
@*
(First DocumentFormattingClientCapabilities)
TextDocumentClientCapabilities
forall s a. HasFormatting s a => Lens' s a
J.formatting ((Maybe DocumentFormattingClientCapabilities
-> Const
@*
(First DocumentFormattingClientCapabilities)
(Maybe DocumentFormattingClientCapabilities))
-> TextDocumentClientCapabilities
-> Const
@*
(First DocumentFormattingClientCapabilities)
TextDocumentClientCapabilities)
-> ((DocumentFormattingClientCapabilities
-> Const
@*
(First DocumentFormattingClientCapabilities)
DocumentFormattingClientCapabilities)
-> Maybe DocumentFormattingClientCapabilities
-> Const
@*
(First DocumentFormattingClientCapabilities)
(Maybe DocumentFormattingClientCapabilities))
-> (DocumentFormattingClientCapabilities
-> Const
@*
(First DocumentFormattingClientCapabilities)
DocumentFormattingClientCapabilities)
-> TextDocumentClientCapabilities
-> Const
@*
(First DocumentFormattingClientCapabilities)
TextDocumentClientCapabilities
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (DocumentFormattingClientCapabilities
-> Const
@*
(First DocumentFormattingClientCapabilities)
DocumentFormattingClientCapabilities)
-> Maybe DocumentFormattingClientCapabilities
-> Const
@*
(First DocumentFormattingClientCapabilities)
(Maybe DocumentFormattingClientCapabilities)
forall a b. Prism (Maybe a) (Maybe b) a b
_Just
SClientMethod @t m
STextDocumentRangeFormatting -> Maybe DocumentRangeFormattingClientCapabilities -> Bool
forall a. HasDynamicRegistration a (Maybe Bool) => Maybe a -> Bool
capDyn (Maybe DocumentRangeFormattingClientCapabilities -> Bool)
-> Maybe DocumentRangeFormattingClientCapabilities -> Bool
forall a b. (a -> b) -> a -> b
$ ClientCapabilities
clientCaps ClientCapabilities
-> Getting
(First DocumentRangeFormattingClientCapabilities)
ClientCapabilities
DocumentRangeFormattingClientCapabilities
-> Maybe DocumentRangeFormattingClientCapabilities
forall s a. s -> Getting (First a) s a -> Maybe a
^? (Maybe TextDocumentClientCapabilities
-> Const
@*
(First DocumentRangeFormattingClientCapabilities)
(Maybe TextDocumentClientCapabilities))
-> ClientCapabilities
-> Const
@*
(First DocumentRangeFormattingClientCapabilities)
ClientCapabilities
forall s a. HasTextDocument s a => Lens' s a
J.textDocument ((Maybe TextDocumentClientCapabilities
-> Const
@*
(First DocumentRangeFormattingClientCapabilities)
(Maybe TextDocumentClientCapabilities))
-> ClientCapabilities
-> Const
@*
(First DocumentRangeFormattingClientCapabilities)
ClientCapabilities)
-> ((DocumentRangeFormattingClientCapabilities
-> Const
@*
(First DocumentRangeFormattingClientCapabilities)
DocumentRangeFormattingClientCapabilities)
-> Maybe TextDocumentClientCapabilities
-> Const
@*
(First DocumentRangeFormattingClientCapabilities)
(Maybe TextDocumentClientCapabilities))
-> Getting
(First DocumentRangeFormattingClientCapabilities)
ClientCapabilities
DocumentRangeFormattingClientCapabilities
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (TextDocumentClientCapabilities
-> Const
@*
(First DocumentRangeFormattingClientCapabilities)
TextDocumentClientCapabilities)
-> Maybe TextDocumentClientCapabilities
-> Const
@*
(First DocumentRangeFormattingClientCapabilities)
(Maybe TextDocumentClientCapabilities)
forall a b. Prism (Maybe a) (Maybe b) a b
_Just ((TextDocumentClientCapabilities
-> Const
@*
(First DocumentRangeFormattingClientCapabilities)
TextDocumentClientCapabilities)
-> Maybe TextDocumentClientCapabilities
-> Const
@*
(First DocumentRangeFormattingClientCapabilities)
(Maybe TextDocumentClientCapabilities))
-> ((DocumentRangeFormattingClientCapabilities
-> Const
@*
(First DocumentRangeFormattingClientCapabilities)
DocumentRangeFormattingClientCapabilities)
-> TextDocumentClientCapabilities
-> Const
@*
(First DocumentRangeFormattingClientCapabilities)
TextDocumentClientCapabilities)
-> (DocumentRangeFormattingClientCapabilities
-> Const
@*
(First DocumentRangeFormattingClientCapabilities)
DocumentRangeFormattingClientCapabilities)
-> Maybe TextDocumentClientCapabilities
-> Const
@*
(First DocumentRangeFormattingClientCapabilities)
(Maybe TextDocumentClientCapabilities)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Maybe DocumentRangeFormattingClientCapabilities
-> Const
@*
(First DocumentRangeFormattingClientCapabilities)
(Maybe DocumentRangeFormattingClientCapabilities))
-> TextDocumentClientCapabilities
-> Const
@*
(First DocumentRangeFormattingClientCapabilities)
TextDocumentClientCapabilities
forall s a. HasRangeFormatting s a => Lens' s a
J.rangeFormatting ((Maybe DocumentRangeFormattingClientCapabilities
-> Const
@*
(First DocumentRangeFormattingClientCapabilities)
(Maybe DocumentRangeFormattingClientCapabilities))
-> TextDocumentClientCapabilities
-> Const
@*
(First DocumentRangeFormattingClientCapabilities)
TextDocumentClientCapabilities)
-> ((DocumentRangeFormattingClientCapabilities
-> Const
@*
(First DocumentRangeFormattingClientCapabilities)
DocumentRangeFormattingClientCapabilities)
-> Maybe DocumentRangeFormattingClientCapabilities
-> Const
@*
(First DocumentRangeFormattingClientCapabilities)
(Maybe DocumentRangeFormattingClientCapabilities))
-> (DocumentRangeFormattingClientCapabilities
-> Const
@*
(First DocumentRangeFormattingClientCapabilities)
DocumentRangeFormattingClientCapabilities)
-> TextDocumentClientCapabilities
-> Const
@*
(First DocumentRangeFormattingClientCapabilities)
TextDocumentClientCapabilities
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (DocumentRangeFormattingClientCapabilities
-> Const
@*
(First DocumentRangeFormattingClientCapabilities)
DocumentRangeFormattingClientCapabilities)
-> Maybe DocumentRangeFormattingClientCapabilities
-> Const
@*
(First DocumentRangeFormattingClientCapabilities)
(Maybe DocumentRangeFormattingClientCapabilities)
forall a b. Prism (Maybe a) (Maybe b) a b
_Just
SClientMethod @t m
STextDocumentOnTypeFormatting -> Maybe DocumentOnTypeFormattingClientCapabilities -> Bool
forall a. HasDynamicRegistration a (Maybe Bool) => Maybe a -> Bool
capDyn (Maybe DocumentOnTypeFormattingClientCapabilities -> Bool)
-> Maybe DocumentOnTypeFormattingClientCapabilities -> Bool
forall a b. (a -> b) -> a -> b
$ ClientCapabilities
clientCaps ClientCapabilities
-> Getting
(First DocumentOnTypeFormattingClientCapabilities)
ClientCapabilities
DocumentOnTypeFormattingClientCapabilities
-> Maybe DocumentOnTypeFormattingClientCapabilities
forall s a. s -> Getting (First a) s a -> Maybe a
^? (Maybe TextDocumentClientCapabilities
-> Const
@*
(First DocumentOnTypeFormattingClientCapabilities)
(Maybe TextDocumentClientCapabilities))
-> ClientCapabilities
-> Const
@*
(First DocumentOnTypeFormattingClientCapabilities)
ClientCapabilities
forall s a. HasTextDocument s a => Lens' s a
J.textDocument ((Maybe TextDocumentClientCapabilities
-> Const
@*
(First DocumentOnTypeFormattingClientCapabilities)
(Maybe TextDocumentClientCapabilities))
-> ClientCapabilities
-> Const
@*
(First DocumentOnTypeFormattingClientCapabilities)
ClientCapabilities)
-> ((DocumentOnTypeFormattingClientCapabilities
-> Const
@*
(First DocumentOnTypeFormattingClientCapabilities)
DocumentOnTypeFormattingClientCapabilities)
-> Maybe TextDocumentClientCapabilities
-> Const
@*
(First DocumentOnTypeFormattingClientCapabilities)
(Maybe TextDocumentClientCapabilities))
-> Getting
(First DocumentOnTypeFormattingClientCapabilities)
ClientCapabilities
DocumentOnTypeFormattingClientCapabilities
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (TextDocumentClientCapabilities
-> Const
@*
(First DocumentOnTypeFormattingClientCapabilities)
TextDocumentClientCapabilities)
-> Maybe TextDocumentClientCapabilities
-> Const
@*
(First DocumentOnTypeFormattingClientCapabilities)
(Maybe TextDocumentClientCapabilities)
forall a b. Prism (Maybe a) (Maybe b) a b
_Just ((TextDocumentClientCapabilities
-> Const
@*
(First DocumentOnTypeFormattingClientCapabilities)
TextDocumentClientCapabilities)
-> Maybe TextDocumentClientCapabilities
-> Const
@*
(First DocumentOnTypeFormattingClientCapabilities)
(Maybe TextDocumentClientCapabilities))
-> ((DocumentOnTypeFormattingClientCapabilities
-> Const
@*
(First DocumentOnTypeFormattingClientCapabilities)
DocumentOnTypeFormattingClientCapabilities)
-> TextDocumentClientCapabilities
-> Const
@*
(First DocumentOnTypeFormattingClientCapabilities)
TextDocumentClientCapabilities)
-> (DocumentOnTypeFormattingClientCapabilities
-> Const
@*
(First DocumentOnTypeFormattingClientCapabilities)
DocumentOnTypeFormattingClientCapabilities)
-> Maybe TextDocumentClientCapabilities
-> Const
@*
(First DocumentOnTypeFormattingClientCapabilities)
(Maybe TextDocumentClientCapabilities)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Maybe DocumentOnTypeFormattingClientCapabilities
-> Const
@*
(First DocumentOnTypeFormattingClientCapabilities)
(Maybe DocumentOnTypeFormattingClientCapabilities))
-> TextDocumentClientCapabilities
-> Const
@*
(First DocumentOnTypeFormattingClientCapabilities)
TextDocumentClientCapabilities
forall s a. HasOnTypeFormatting s a => Lens' s a
J.onTypeFormatting ((Maybe DocumentOnTypeFormattingClientCapabilities
-> Const
@*
(First DocumentOnTypeFormattingClientCapabilities)
(Maybe DocumentOnTypeFormattingClientCapabilities))
-> TextDocumentClientCapabilities
-> Const
@*
(First DocumentOnTypeFormattingClientCapabilities)
TextDocumentClientCapabilities)
-> ((DocumentOnTypeFormattingClientCapabilities
-> Const
@*
(First DocumentOnTypeFormattingClientCapabilities)
DocumentOnTypeFormattingClientCapabilities)
-> Maybe DocumentOnTypeFormattingClientCapabilities
-> Const
@*
(First DocumentOnTypeFormattingClientCapabilities)
(Maybe DocumentOnTypeFormattingClientCapabilities))
-> (DocumentOnTypeFormattingClientCapabilities
-> Const
@*
(First DocumentOnTypeFormattingClientCapabilities)
DocumentOnTypeFormattingClientCapabilities)
-> TextDocumentClientCapabilities
-> Const
@*
(First DocumentOnTypeFormattingClientCapabilities)
TextDocumentClientCapabilities
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (DocumentOnTypeFormattingClientCapabilities
-> Const
@*
(First DocumentOnTypeFormattingClientCapabilities)
DocumentOnTypeFormattingClientCapabilities)
-> Maybe DocumentOnTypeFormattingClientCapabilities
-> Const
@*
(First DocumentOnTypeFormattingClientCapabilities)
(Maybe DocumentOnTypeFormattingClientCapabilities)
forall a b. Prism (Maybe a) (Maybe b) a b
_Just
SClientMethod @t m
STextDocumentRename -> Maybe RenameClientCapabilities -> Bool
forall a. HasDynamicRegistration a (Maybe Bool) => Maybe a -> Bool
capDyn (Maybe RenameClientCapabilities -> Bool)
-> Maybe RenameClientCapabilities -> Bool
forall a b. (a -> b) -> a -> b
$ ClientCapabilities
clientCaps ClientCapabilities
-> Getting
(First RenameClientCapabilities)
ClientCapabilities
RenameClientCapabilities
-> Maybe RenameClientCapabilities
forall s a. s -> Getting (First a) s a -> Maybe a
^? (Maybe TextDocumentClientCapabilities
-> Const
@*
(First RenameClientCapabilities)
(Maybe TextDocumentClientCapabilities))
-> ClientCapabilities
-> Const @* (First RenameClientCapabilities) ClientCapabilities
forall s a. HasTextDocument s a => Lens' s a
J.textDocument ((Maybe TextDocumentClientCapabilities
-> Const
@*
(First RenameClientCapabilities)
(Maybe TextDocumentClientCapabilities))
-> ClientCapabilities
-> Const @* (First RenameClientCapabilities) ClientCapabilities)
-> ((RenameClientCapabilities
-> Const
@* (First RenameClientCapabilities) RenameClientCapabilities)
-> Maybe TextDocumentClientCapabilities
-> Const
@*
(First RenameClientCapabilities)
(Maybe TextDocumentClientCapabilities))
-> Getting
(First RenameClientCapabilities)
ClientCapabilities
RenameClientCapabilities
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (TextDocumentClientCapabilities
-> Const
@* (First RenameClientCapabilities) TextDocumentClientCapabilities)
-> Maybe TextDocumentClientCapabilities
-> Const
@*
(First RenameClientCapabilities)
(Maybe TextDocumentClientCapabilities)
forall a b. Prism (Maybe a) (Maybe b) a b
_Just ((TextDocumentClientCapabilities
-> Const
@* (First RenameClientCapabilities) TextDocumentClientCapabilities)
-> Maybe TextDocumentClientCapabilities
-> Const
@*
(First RenameClientCapabilities)
(Maybe TextDocumentClientCapabilities))
-> ((RenameClientCapabilities
-> Const
@* (First RenameClientCapabilities) RenameClientCapabilities)
-> TextDocumentClientCapabilities
-> Const
@* (First RenameClientCapabilities) TextDocumentClientCapabilities)
-> (RenameClientCapabilities
-> Const
@* (First RenameClientCapabilities) RenameClientCapabilities)
-> Maybe TextDocumentClientCapabilities
-> Const
@*
(First RenameClientCapabilities)
(Maybe TextDocumentClientCapabilities)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Maybe RenameClientCapabilities
-> Const
@*
(First RenameClientCapabilities)
(Maybe RenameClientCapabilities))
-> TextDocumentClientCapabilities
-> Const
@* (First RenameClientCapabilities) TextDocumentClientCapabilities
forall s a. HasRename s a => Lens' s a
J.rename ((Maybe RenameClientCapabilities
-> Const
@*
(First RenameClientCapabilities)
(Maybe RenameClientCapabilities))
-> TextDocumentClientCapabilities
-> Const
@* (First RenameClientCapabilities) TextDocumentClientCapabilities)
-> ((RenameClientCapabilities
-> Const
@* (First RenameClientCapabilities) RenameClientCapabilities)
-> Maybe RenameClientCapabilities
-> Const
@*
(First RenameClientCapabilities)
(Maybe RenameClientCapabilities))
-> (RenameClientCapabilities
-> Const
@* (First RenameClientCapabilities) RenameClientCapabilities)
-> TextDocumentClientCapabilities
-> Const
@* (First RenameClientCapabilities) TextDocumentClientCapabilities
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (RenameClientCapabilities
-> Const
@* (First RenameClientCapabilities) RenameClientCapabilities)
-> Maybe RenameClientCapabilities
-> Const
@*
(First RenameClientCapabilities)
(Maybe RenameClientCapabilities)
forall a b. Prism (Maybe a) (Maybe b) a b
_Just
SClientMethod @t m
STextDocumentFoldingRange -> Maybe FoldingRangeClientCapabilities -> Bool
forall a. HasDynamicRegistration a (Maybe Bool) => Maybe a -> Bool
capDyn (Maybe FoldingRangeClientCapabilities -> Bool)
-> Maybe FoldingRangeClientCapabilities -> Bool
forall a b. (a -> b) -> a -> b
$ ClientCapabilities
clientCaps ClientCapabilities
-> Getting
(First FoldingRangeClientCapabilities)
ClientCapabilities
FoldingRangeClientCapabilities
-> Maybe FoldingRangeClientCapabilities
forall s a. s -> Getting (First a) s a -> Maybe a
^? (Maybe TextDocumentClientCapabilities
-> Const
@*
(First FoldingRangeClientCapabilities)
(Maybe TextDocumentClientCapabilities))
-> ClientCapabilities
-> Const
@* (First FoldingRangeClientCapabilities) ClientCapabilities
forall s a. HasTextDocument s a => Lens' s a
J.textDocument ((Maybe TextDocumentClientCapabilities
-> Const
@*
(First FoldingRangeClientCapabilities)
(Maybe TextDocumentClientCapabilities))
-> ClientCapabilities
-> Const
@* (First FoldingRangeClientCapabilities) ClientCapabilities)
-> ((FoldingRangeClientCapabilities
-> Const
@*
(First FoldingRangeClientCapabilities)
FoldingRangeClientCapabilities)
-> Maybe TextDocumentClientCapabilities
-> Const
@*
(First FoldingRangeClientCapabilities)
(Maybe TextDocumentClientCapabilities))
-> Getting
(First FoldingRangeClientCapabilities)
ClientCapabilities
FoldingRangeClientCapabilities
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (TextDocumentClientCapabilities
-> Const
@*
(First FoldingRangeClientCapabilities)
TextDocumentClientCapabilities)
-> Maybe TextDocumentClientCapabilities
-> Const
@*
(First FoldingRangeClientCapabilities)
(Maybe TextDocumentClientCapabilities)
forall a b. Prism (Maybe a) (Maybe b) a b
_Just ((TextDocumentClientCapabilities
-> Const
@*
(First FoldingRangeClientCapabilities)
TextDocumentClientCapabilities)
-> Maybe TextDocumentClientCapabilities
-> Const
@*
(First FoldingRangeClientCapabilities)
(Maybe TextDocumentClientCapabilities))
-> ((FoldingRangeClientCapabilities
-> Const
@*
(First FoldingRangeClientCapabilities)
FoldingRangeClientCapabilities)
-> TextDocumentClientCapabilities
-> Const
@*
(First FoldingRangeClientCapabilities)
TextDocumentClientCapabilities)
-> (FoldingRangeClientCapabilities
-> Const
@*
(First FoldingRangeClientCapabilities)
FoldingRangeClientCapabilities)
-> Maybe TextDocumentClientCapabilities
-> Const
@*
(First FoldingRangeClientCapabilities)
(Maybe TextDocumentClientCapabilities)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Maybe FoldingRangeClientCapabilities
-> Const
@*
(First FoldingRangeClientCapabilities)
(Maybe FoldingRangeClientCapabilities))
-> TextDocumentClientCapabilities
-> Const
@*
(First FoldingRangeClientCapabilities)
TextDocumentClientCapabilities
forall s a. HasFoldingRange s a => Lens' s a
J.foldingRange ((Maybe FoldingRangeClientCapabilities
-> Const
@*
(First FoldingRangeClientCapabilities)
(Maybe FoldingRangeClientCapabilities))
-> TextDocumentClientCapabilities
-> Const
@*
(First FoldingRangeClientCapabilities)
TextDocumentClientCapabilities)
-> ((FoldingRangeClientCapabilities
-> Const
@*
(First FoldingRangeClientCapabilities)
FoldingRangeClientCapabilities)
-> Maybe FoldingRangeClientCapabilities
-> Const
@*
(First FoldingRangeClientCapabilities)
(Maybe FoldingRangeClientCapabilities))
-> (FoldingRangeClientCapabilities
-> Const
@*
(First FoldingRangeClientCapabilities)
FoldingRangeClientCapabilities)
-> TextDocumentClientCapabilities
-> Const
@*
(First FoldingRangeClientCapabilities)
TextDocumentClientCapabilities
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (FoldingRangeClientCapabilities
-> Const
@*
(First FoldingRangeClientCapabilities)
FoldingRangeClientCapabilities)
-> Maybe FoldingRangeClientCapabilities
-> Const
@*
(First FoldingRangeClientCapabilities)
(Maybe FoldingRangeClientCapabilities)
forall a b. Prism (Maybe a) (Maybe b) a b
_Just
SClientMethod @t m
STextDocumentSelectionRange -> Maybe SelectionRangeClientCapabilities -> Bool
forall a. HasDynamicRegistration a (Maybe Bool) => Maybe a -> Bool
capDyn (Maybe SelectionRangeClientCapabilities -> Bool)
-> Maybe SelectionRangeClientCapabilities -> Bool
forall a b. (a -> b) -> a -> b
$ ClientCapabilities
clientCaps ClientCapabilities
-> Getting
(First SelectionRangeClientCapabilities)
ClientCapabilities
SelectionRangeClientCapabilities
-> Maybe SelectionRangeClientCapabilities
forall s a. s -> Getting (First a) s a -> Maybe a
^? (Maybe TextDocumentClientCapabilities
-> Const
@*
(First SelectionRangeClientCapabilities)
(Maybe TextDocumentClientCapabilities))
-> ClientCapabilities
-> Const
@* (First SelectionRangeClientCapabilities) ClientCapabilities
forall s a. HasTextDocument s a => Lens' s a
J.textDocument ((Maybe TextDocumentClientCapabilities
-> Const
@*
(First SelectionRangeClientCapabilities)
(Maybe TextDocumentClientCapabilities))
-> ClientCapabilities
-> Const
@* (First SelectionRangeClientCapabilities) ClientCapabilities)
-> ((SelectionRangeClientCapabilities
-> Const
@*
(First SelectionRangeClientCapabilities)
SelectionRangeClientCapabilities)
-> Maybe TextDocumentClientCapabilities
-> Const
@*
(First SelectionRangeClientCapabilities)
(Maybe TextDocumentClientCapabilities))
-> Getting
(First SelectionRangeClientCapabilities)
ClientCapabilities
SelectionRangeClientCapabilities
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (TextDocumentClientCapabilities
-> Const
@*
(First SelectionRangeClientCapabilities)
TextDocumentClientCapabilities)
-> Maybe TextDocumentClientCapabilities
-> Const
@*
(First SelectionRangeClientCapabilities)
(Maybe TextDocumentClientCapabilities)
forall a b. Prism (Maybe a) (Maybe b) a b
_Just ((TextDocumentClientCapabilities
-> Const
@*
(First SelectionRangeClientCapabilities)
TextDocumentClientCapabilities)
-> Maybe TextDocumentClientCapabilities
-> Const
@*
(First SelectionRangeClientCapabilities)
(Maybe TextDocumentClientCapabilities))
-> ((SelectionRangeClientCapabilities
-> Const
@*
(First SelectionRangeClientCapabilities)
SelectionRangeClientCapabilities)
-> TextDocumentClientCapabilities
-> Const
@*
(First SelectionRangeClientCapabilities)
TextDocumentClientCapabilities)
-> (SelectionRangeClientCapabilities
-> Const
@*
(First SelectionRangeClientCapabilities)
SelectionRangeClientCapabilities)
-> Maybe TextDocumentClientCapabilities
-> Const
@*
(First SelectionRangeClientCapabilities)
(Maybe TextDocumentClientCapabilities)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Maybe SelectionRangeClientCapabilities
-> Const
@*
(First SelectionRangeClientCapabilities)
(Maybe SelectionRangeClientCapabilities))
-> TextDocumentClientCapabilities
-> Const
@*
(First SelectionRangeClientCapabilities)
TextDocumentClientCapabilities
forall s a. HasSelectionRange s a => Lens' s a
J.selectionRange ((Maybe SelectionRangeClientCapabilities
-> Const
@*
(First SelectionRangeClientCapabilities)
(Maybe SelectionRangeClientCapabilities))
-> TextDocumentClientCapabilities
-> Const
@*
(First SelectionRangeClientCapabilities)
TextDocumentClientCapabilities)
-> ((SelectionRangeClientCapabilities
-> Const
@*
(First SelectionRangeClientCapabilities)
SelectionRangeClientCapabilities)
-> Maybe SelectionRangeClientCapabilities
-> Const
@*
(First SelectionRangeClientCapabilities)
(Maybe SelectionRangeClientCapabilities))
-> (SelectionRangeClientCapabilities
-> Const
@*
(First SelectionRangeClientCapabilities)
SelectionRangeClientCapabilities)
-> TextDocumentClientCapabilities
-> Const
@*
(First SelectionRangeClientCapabilities)
TextDocumentClientCapabilities
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (SelectionRangeClientCapabilities
-> Const
@*
(First SelectionRangeClientCapabilities)
SelectionRangeClientCapabilities)
-> Maybe SelectionRangeClientCapabilities
-> Const
@*
(First SelectionRangeClientCapabilities)
(Maybe SelectionRangeClientCapabilities)
forall a b. Prism (Maybe a) (Maybe b) a b
_Just
SClientMethod @t m
_ -> Bool
False
unregisterCapability :: MonadLsp config f => RegistrationToken m -> f ()
unregisterCapability :: RegistrationToken @t m -> f ()
unregisterCapability (RegistrationToken SMethod @'FromClient @t m
m (RegistrationId Text
uuid)) = do
~() <- case SMethod @'FromClient @t m -> ClientNotOrReq @t m
forall (t :: MethodType) (m :: Method 'FromClient t).
SClientMethod @t m -> ClientNotOrReq @t m
splitClientMethod SMethod @'FromClient @t m
m of
ClientNotOrReq @t m
IsClientReq -> do
RegistrationMap 'Request
reqRegs <- (LanguageContextState config -> RegistrationMap 'Request)
-> f (RegistrationMap 'Request)
forall config (m :: * -> *) a.
MonadLsp config m =>
(LanguageContextState config -> a) -> m a
getsState LanguageContextState config -> RegistrationMap 'Request
forall config.
LanguageContextState config -> RegistrationMap 'Request
resRegistrationsReq
let newMap :: DMap
@(Method 'FromClient t)
(SMethod @'FromClient @t)
(Product
@(Method 'FromClient 'Request)
(RegistrationId @'Request)
(ClientMessageHandler IO 'Request))
newMap = SMethod @'FromClient @t m
-> DMap
@(Method 'FromClient t)
(SMethod @'FromClient @t)
(Product
@(Method 'FromClient 'Request)
(RegistrationId @'Request)
(ClientMessageHandler IO 'Request))
-> DMap
@(Method 'FromClient t)
(SMethod @'FromClient @t)
(Product
@(Method 'FromClient 'Request)
(RegistrationId @'Request)
(ClientMessageHandler IO 'Request))
forall k1 (k2 :: k1 -> *) (f :: k1 -> *) (v :: k1).
GCompare @k1 k2 =>
k2 v -> DMap @k1 k2 f -> DMap @k1 k2 f
DMap.delete SMethod @'FromClient @t m
m DMap
@(Method 'FromClient t)
(SMethod @'FromClient @t)
(Product
@(Method 'FromClient 'Request)
(RegistrationId @'Request)
(ClientMessageHandler IO 'Request))
RegistrationMap 'Request
reqRegs
(LanguageContextState config -> LanguageContextState config)
-> f ()
forall config (m :: * -> *).
MonadLsp config m =>
(LanguageContextState config -> LanguageContextState config)
-> m ()
modifyState (\LanguageContextState config
ctx -> LanguageContextState config
ctx { resRegistrationsReq :: RegistrationMap 'Request
resRegistrationsReq = DMap
@(Method 'FromClient t)
(SMethod @'FromClient @t)
(Product
@(Method 'FromClient 'Request)
(RegistrationId @'Request)
(ClientMessageHandler IO 'Request))
RegistrationMap 'Request
newMap })
ClientNotOrReq @t m
IsClientNot -> do
RegistrationMap 'Notification
notRegs <- (LanguageContextState config -> RegistrationMap 'Notification)
-> f (RegistrationMap 'Notification)
forall config (m :: * -> *) a.
MonadLsp config m =>
(LanguageContextState config -> a) -> m a
getsState LanguageContextState config -> RegistrationMap 'Notification
forall config.
LanguageContextState config -> RegistrationMap 'Notification
resRegistrationsNot
let newMap :: DMap
@(Method 'FromClient t)
(SMethod @'FromClient @t)
(Product
@(Method 'FromClient 'Notification)
(RegistrationId @'Notification)
(ClientMessageHandler IO 'Notification))
newMap = SMethod @'FromClient @t m
-> DMap
@(Method 'FromClient t)
(SMethod @'FromClient @t)
(Product
@(Method 'FromClient 'Notification)
(RegistrationId @'Notification)
(ClientMessageHandler IO 'Notification))
-> DMap
@(Method 'FromClient t)
(SMethod @'FromClient @t)
(Product
@(Method 'FromClient 'Notification)
(RegistrationId @'Notification)
(ClientMessageHandler IO 'Notification))
forall k1 (k2 :: k1 -> *) (f :: k1 -> *) (v :: k1).
GCompare @k1 k2 =>
k2 v -> DMap @k1 k2 f -> DMap @k1 k2 f
DMap.delete SMethod @'FromClient @t m
m DMap
@(Method 'FromClient t)
(SMethod @'FromClient @t)
(Product
@(Method 'FromClient 'Notification)
(RegistrationId @'Notification)
(ClientMessageHandler IO 'Notification))
RegistrationMap 'Notification
notRegs
(LanguageContextState config -> LanguageContextState config)
-> f ()
forall config (m :: * -> *).
MonadLsp config m =>
(LanguageContextState config -> LanguageContextState config)
-> m ()
modifyState (\LanguageContextState config
ctx -> LanguageContextState config
ctx { resRegistrationsNot :: RegistrationMap 'Notification
resRegistrationsNot = DMap
@(Method 'FromClient t)
(SMethod @'FromClient @t)
(Product
@(Method 'FromClient 'Notification)
(RegistrationId @'Notification)
(ClientMessageHandler IO 'Notification))
RegistrationMap 'Notification
newMap })
ClientNotOrReq @t m
IsClientEither -> FilePath -> f ()
forall a. HasCallStack => FilePath -> a
error FilePath
"Cannot unregister capability for custom methods"
let unregistration :: Unregistration
unregistration = Text -> SomeClientMethod -> Unregistration
J.Unregistration Text
uuid (SMethod @'FromClient @t m -> SomeClientMethod
forall (t :: MethodType) (m :: Method 'FromClient t).
SMethod @'FromClient @t m -> SomeClientMethod
J.SomeClientMethod SMethod @'FromClient @t m
m)
params :: UnregistrationParams
params = List Unregistration -> UnregistrationParams
J.UnregistrationParams ([Unregistration] -> List Unregistration
forall a. [a] -> List a
J.List [Unregistration
unregistration])
f (LspId @'FromServer 'ClientUnregisterCapability) -> f ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void (f (LspId @'FromServer 'ClientUnregisterCapability) -> f ())
-> f (LspId @'FromServer 'ClientUnregisterCapability) -> f ()
forall a b. (a -> b) -> a -> b
$ SServerMethod @'Request 'ClientUnregisterCapability
-> MessageParams @'FromServer @'Request 'ClientUnregisterCapability
-> (Either
ResponseError
(ResponseResult @'FromServer 'ClientUnregisterCapability)
-> f ())
-> f (LspId @'FromServer 'ClientUnregisterCapability)
forall (m :: Method 'FromServer 'Request) (f :: * -> *) config.
MonadLsp config f =>
SServerMethod @'Request m
-> MessageParams @'FromServer @'Request m
-> (Either ResponseError (ResponseResult @'FromServer m) -> f ())
-> f (LspId @'FromServer m)
sendRequest SServerMethod @'Request 'ClientUnregisterCapability
SClientUnregisterCapability MessageParams @'FromServer @'Request 'ClientUnregisterCapability
UnregistrationParams
params ((Either
ResponseError
(ResponseResult @'FromServer 'ClientUnregisterCapability)
-> f ())
-> f (LspId @'FromServer 'ClientUnregisterCapability))
-> (Either
ResponseError
(ResponseResult @'FromServer 'ClientUnregisterCapability)
-> f ())
-> f (LspId @'FromServer 'ClientUnregisterCapability)
forall a b. (a -> b) -> a -> b
$ \Either
ResponseError
(ResponseResult @'FromServer 'ClientUnregisterCapability)
_res -> () -> f ()
forall (f :: * -> *) a. Applicative f => a -> f a
pure ()
storeProgress :: MonadLsp config m => ProgressToken -> Async a -> m ()
storeProgress :: ProgressToken -> Async a -> m ()
storeProgress ProgressToken
n Async a
a = do
let f :: ProgressData -> Map ProgressToken (IO ())
f = ProgressToken
-> IO () -> Map ProgressToken (IO ()) -> Map ProgressToken (IO ())
forall k a. Ord k => k -> a -> Map k a -> Map k a
Map.insert ProgressToken
n (Async a -> ProgressCancelledException -> IO ()
forall e a. Exception e => Async a -> e -> IO ()
cancelWith Async a
a ProgressCancelledException
ProgressCancelledException) (Map ProgressToken (IO ()) -> Map ProgressToken (IO ()))
-> (ProgressData -> Map ProgressToken (IO ()))
-> ProgressData
-> Map ProgressToken (IO ())
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ProgressData -> Map ProgressToken (IO ())
progressCancel
(LanguageContextState config -> LanguageContextState config)
-> m ()
forall config (m :: * -> *).
MonadLsp config m =>
(LanguageContextState config -> LanguageContextState config)
-> m ()
modifyState ((LanguageContextState config -> LanguageContextState config)
-> m ())
-> (LanguageContextState config -> LanguageContextState config)
-> m ()
forall a b. (a -> b) -> a -> b
$ \LanguageContextState config
ctx -> LanguageContextState config
ctx { resProgressData :: ProgressData
resProgressData = (LanguageContextState config -> ProgressData
forall config. LanguageContextState config -> ProgressData
resProgressData LanguageContextState config
ctx) { progressCancel :: Map ProgressToken (IO ())
progressCancel = ProgressData -> Map ProgressToken (IO ())
f (LanguageContextState config -> ProgressData
forall config. LanguageContextState config -> ProgressData
resProgressData LanguageContextState config
ctx)}}
deleteProgress :: MonadLsp config m => ProgressToken -> m ()
deleteProgress :: ProgressToken -> m ()
deleteProgress ProgressToken
n = do
let f :: ProgressData -> Map ProgressToken (IO ())
f = ProgressToken
-> Map ProgressToken (IO ()) -> Map ProgressToken (IO ())
forall k a. Ord k => k -> Map k a -> Map k a
Map.delete ProgressToken
n (Map ProgressToken (IO ()) -> Map ProgressToken (IO ()))
-> (ProgressData -> Map ProgressToken (IO ()))
-> ProgressData
-> Map ProgressToken (IO ())
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ProgressData -> Map ProgressToken (IO ())
progressCancel
(LanguageContextState config -> LanguageContextState config)
-> m ()
forall config (m :: * -> *).
MonadLsp config m =>
(LanguageContextState config -> LanguageContextState config)
-> m ()
modifyState ((LanguageContextState config -> LanguageContextState config)
-> m ())
-> (LanguageContextState config -> LanguageContextState config)
-> m ()
forall a b. (a -> b) -> a -> b
$ \LanguageContextState config
ctx -> LanguageContextState config
ctx { resProgressData :: ProgressData
resProgressData = (LanguageContextState config -> ProgressData
forall config. LanguageContextState config -> ProgressData
resProgressData LanguageContextState config
ctx) { progressCancel :: Map ProgressToken (IO ())
progressCancel = ProgressData -> Map ProgressToken (IO ())
f (LanguageContextState config -> ProgressData
forall config. LanguageContextState config -> ProgressData
resProgressData LanguageContextState config
ctx)}}
getNewProgressId :: MonadLsp config m => m ProgressToken
getNewProgressId :: m ProgressToken
getNewProgressId = do
(LanguageContextState config
-> (ProgressToken, LanguageContextState config))
-> m ProgressToken
forall config (m :: * -> *) a.
MonadLsp config m =>
(LanguageContextState config -> (a, LanguageContextState config))
-> m a
stateState ((LanguageContextState config
-> (ProgressToken, LanguageContextState config))
-> m ProgressToken)
-> (LanguageContextState config
-> (ProgressToken, LanguageContextState config))
-> m ProgressToken
forall a b. (a -> b) -> a -> b
$ \ctx :: LanguageContextState config
ctx@LanguageContextState{ProgressData
resProgressData :: ProgressData
resProgressData :: forall config. LanguageContextState config -> ProgressData
resProgressData} ->
let x :: Int
x = ProgressData -> Int
progressNextId ProgressData
resProgressData
ctx' :: LanguageContextState config
ctx' = LanguageContextState config
ctx { resProgressData :: ProgressData
resProgressData = ProgressData
resProgressData { progressNextId :: Int
progressNextId = Int
x Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
1 }}
in (Int -> ProgressToken
ProgressNumericToken Int
x, LanguageContextState config
ctx')
withProgressBase :: MonadLsp c m => Bool -> Text -> ProgressCancellable -> ((ProgressAmount -> m ()) -> m a) -> m a
withProgressBase :: Bool
-> Text
-> ProgressCancellable
-> ((ProgressAmount -> m ()) -> m a)
-> m a
withProgressBase Bool
indefinite Text
title ProgressCancellable
cancellable (ProgressAmount -> m ()) -> m a
f = do
ProgressToken
progId <- m ProgressToken
forall config (m :: * -> *). MonadLsp config m => m ProgressToken
getNewProgressId
let initialPercentage :: Maybe Double
initialPercentage
| Bool
indefinite = Maybe Double
forall a. Maybe a
Nothing
| Bool
otherwise = Double -> Maybe Double
forall a. a -> Maybe a
Just Double
0
cancellable' :: Bool
cancellable' = case ProgressCancellable
cancellable of
ProgressCancellable
Cancellable -> Bool
True
ProgressCancellable
NotCancellable -> Bool
False
LspId @'FromServer 'WindowWorkDoneProgressCreate
_ <- SServerMethod @'Request 'WindowWorkDoneProgressCreate
-> MessageParams
@'FromServer @'Request 'WindowWorkDoneProgressCreate
-> (Either
ResponseError
(ResponseResult @'FromServer 'WindowWorkDoneProgressCreate)
-> m ())
-> m (LspId @'FromServer 'WindowWorkDoneProgressCreate)
forall (m :: Method 'FromServer 'Request) (f :: * -> *) config.
MonadLsp config f =>
SServerMethod @'Request m
-> MessageParams @'FromServer @'Request m
-> (Either ResponseError (ResponseResult @'FromServer m) -> f ())
-> f (LspId @'FromServer m)
sendRequest SServerMethod @'Request 'WindowWorkDoneProgressCreate
SWindowWorkDoneProgressCreate
(ProgressToken -> WorkDoneProgressCreateParams
WorkDoneProgressCreateParams ProgressToken
progId) ((Either
ResponseError
(ResponseResult @'FromServer 'WindowWorkDoneProgressCreate)
-> m ())
-> m (LspId @'FromServer 'WindowWorkDoneProgressCreate))
-> (Either
ResponseError
(ResponseResult @'FromServer 'WindowWorkDoneProgressCreate)
-> m ())
-> m (LspId @'FromServer 'WindowWorkDoneProgressCreate)
forall a b. (a -> b) -> a -> b
$ \Either
ResponseError
(ResponseResult @'FromServer 'WindowWorkDoneProgressCreate)
res -> do
case Either
ResponseError
(ResponseResult @'FromServer 'WindowWorkDoneProgressCreate)
res of
Left ResponseError
_err -> () -> m ()
forall (f :: * -> *) a. Applicative f => a -> f a
pure ()
Right () -> () -> m ()
forall (f :: * -> *) a. Applicative f => a -> f a
pure ()
SServerMethod @'Notification 'Progress
-> MessageParams @'FromServer @'Notification 'Progress -> m ()
forall (m :: Method 'FromServer 'Notification) (f :: * -> *)
config.
MonadLsp config f =>
SServerMethod @'Notification m
-> MessageParams @'FromServer @'Notification m -> f ()
sendNotification SServerMethod @'Notification 'Progress
SProgress (MessageParams @'FromServer @'Notification 'Progress -> m ())
-> MessageParams @'FromServer @'Notification 'Progress -> m ()
forall a b. (a -> b) -> a -> b
$
(WorkDoneProgressBeginParams -> SomeProgressParams)
-> ProgressParams WorkDoneProgressBeginParams
-> ProgressParams SomeProgressParams
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap WorkDoneProgressBeginParams -> SomeProgressParams
Begin (ProgressParams WorkDoneProgressBeginParams
-> ProgressParams SomeProgressParams)
-> ProgressParams WorkDoneProgressBeginParams
-> ProgressParams SomeProgressParams
forall a b. (a -> b) -> a -> b
$ ProgressToken
-> WorkDoneProgressBeginParams
-> ProgressParams WorkDoneProgressBeginParams
forall t. ProgressToken -> t -> ProgressParams t
ProgressParams ProgressToken
progId (WorkDoneProgressBeginParams
-> ProgressParams WorkDoneProgressBeginParams)
-> WorkDoneProgressBeginParams
-> ProgressParams WorkDoneProgressBeginParams
forall a b. (a -> b) -> a -> b
$
Text
-> Maybe Bool
-> Maybe Text
-> Maybe Double
-> WorkDoneProgressBeginParams
WorkDoneProgressBeginParams Text
title (Bool -> Maybe Bool
forall a. a -> Maybe a
Just Bool
cancellable') Maybe Text
forall a. Maybe a
Nothing Maybe Double
initialPercentage
a
res <- ((forall a. m a -> IO a) -> IO a) -> m a
forall (m :: * -> *) b.
MonadUnliftIO m =>
((forall a. m a -> IO a) -> IO b) -> m b
withRunInIO (((forall a. m a -> IO a) -> IO a) -> m a)
-> ((forall a. m a -> IO a) -> IO a) -> m a
forall a b. (a -> b) -> a -> b
$ \forall a. m a -> IO a
runInBase ->
IO () -> IO () -> IO a -> IO a
forall a b c. IO a -> IO b -> IO c -> IO c
E.bracket_
(m () -> IO ()
forall a. m a -> IO a
runInBase (m () -> IO ()) -> m () -> IO ()
forall a b. (a -> b) -> a -> b
$ SServerMethod @'Notification 'Progress
-> MessageParams @'FromServer @'Notification 'Progress -> m ()
forall (m :: Method 'FromServer 'Notification) (f :: * -> *)
config.
MonadLsp config f =>
SServerMethod @'Notification m
-> MessageParams @'FromServer @'Notification m -> f ()
sendNotification SServerMethod @'Notification 'Progress
SProgress (MessageParams @'FromServer @'Notification 'Progress -> m ())
-> MessageParams @'FromServer @'Notification 'Progress -> m ()
forall a b. (a -> b) -> a -> b
$
(WorkDoneProgressBeginParams -> SomeProgressParams)
-> ProgressParams WorkDoneProgressBeginParams
-> ProgressParams SomeProgressParams
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap WorkDoneProgressBeginParams -> SomeProgressParams
Begin (ProgressParams WorkDoneProgressBeginParams
-> ProgressParams SomeProgressParams)
-> ProgressParams WorkDoneProgressBeginParams
-> ProgressParams SomeProgressParams
forall a b. (a -> b) -> a -> b
$ ProgressToken
-> WorkDoneProgressBeginParams
-> ProgressParams WorkDoneProgressBeginParams
forall t. ProgressToken -> t -> ProgressParams t
ProgressParams ProgressToken
progId (WorkDoneProgressBeginParams
-> ProgressParams WorkDoneProgressBeginParams)
-> WorkDoneProgressBeginParams
-> ProgressParams WorkDoneProgressBeginParams
forall a b. (a -> b) -> a -> b
$
Text
-> Maybe Bool
-> Maybe Text
-> Maybe Double
-> WorkDoneProgressBeginParams
WorkDoneProgressBeginParams Text
title (Bool -> Maybe Bool
forall a. a -> Maybe a
Just Bool
cancellable') Maybe Text
forall a. Maybe a
Nothing Maybe Double
initialPercentage)
(m () -> IO ()
forall a. m a -> IO a
runInBase (m () -> IO ()) -> m () -> IO ()
forall a b. (a -> b) -> a -> b
$ SServerMethod @'Notification 'Progress
-> MessageParams @'FromServer @'Notification 'Progress -> m ()
forall (m :: Method 'FromServer 'Notification) (f :: * -> *)
config.
MonadLsp config f =>
SServerMethod @'Notification m
-> MessageParams @'FromServer @'Notification m -> f ()
sendNotification SServerMethod @'Notification 'Progress
SProgress (MessageParams @'FromServer @'Notification 'Progress -> m ())
-> MessageParams @'FromServer @'Notification 'Progress -> m ()
forall a b. (a -> b) -> a -> b
$
WorkDoneProgressEndParams -> SomeProgressParams
End (WorkDoneProgressEndParams -> SomeProgressParams)
-> ProgressParams WorkDoneProgressEndParams
-> ProgressParams SomeProgressParams
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> ProgressToken
-> WorkDoneProgressEndParams
-> ProgressParams WorkDoneProgressEndParams
forall t. ProgressToken -> t -> ProgressParams t
ProgressParams ProgressToken
progId (Maybe Text -> WorkDoneProgressEndParams
WorkDoneProgressEndParams Maybe Text
forall a. Maybe a
Nothing)) (IO a -> IO a) -> IO a -> IO a
forall a b. (a -> b) -> a -> b
$ do
Async a
aid <- IO a -> IO (Async a)
forall a. IO a -> IO (Async a)
async (IO a -> IO (Async a)) -> IO a -> IO (Async a)
forall a b. (a -> b) -> a -> b
$ m a -> IO a
forall a. m a -> IO a
runInBase (m a -> IO a) -> m a -> IO a
forall a b. (a -> b) -> a -> b
$ (ProgressAmount -> m ()) -> m a
f (ProgressToken -> ProgressAmount -> m ()
forall (m :: * -> *) config.
MonadLsp config m =>
ProgressToken -> ProgressAmount -> m ()
updater ProgressToken
progId)
m () -> IO ()
forall a. m a -> IO a
runInBase (m () -> IO ()) -> m () -> IO ()
forall a b. (a -> b) -> a -> b
$ ProgressToken -> Async a -> m ()
forall config (m :: * -> *) a.
MonadLsp config m =>
ProgressToken -> Async a -> m ()
storeProgress ProgressToken
progId Async a
aid
Async a -> IO a
forall a. Async a -> IO a
wait Async a
aid
ProgressToken -> m ()
forall config (m :: * -> *).
MonadLsp config m =>
ProgressToken -> m ()
deleteProgress ProgressToken
progId
a -> m a
forall (m :: * -> *) a. Monad m => a -> m a
return a
res
where updater :: ProgressToken -> ProgressAmount -> m ()
updater ProgressToken
progId (ProgressAmount Maybe Double
percentage Maybe Text
msg) = do
IO () -> m ()
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ FilePath -> IO ()
putStrLn FilePath
"asdf"
SServerMethod @'Notification 'Progress
-> MessageParams @'FromServer @'Notification 'Progress -> m ()
forall (m :: Method 'FromServer 'Notification) (f :: * -> *)
config.
MonadLsp config f =>
SServerMethod @'Notification m
-> MessageParams @'FromServer @'Notification m -> f ()
sendNotification SServerMethod @'Notification 'Progress
SProgress (MessageParams @'FromServer @'Notification 'Progress -> m ())
-> MessageParams @'FromServer @'Notification 'Progress -> m ()
forall a b. (a -> b) -> a -> b
$ (WorkDoneProgressReportParams -> SomeProgressParams)
-> ProgressParams WorkDoneProgressReportParams
-> ProgressParams SomeProgressParams
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap WorkDoneProgressReportParams -> SomeProgressParams
Report (ProgressParams WorkDoneProgressReportParams
-> ProgressParams SomeProgressParams)
-> ProgressParams WorkDoneProgressReportParams
-> ProgressParams SomeProgressParams
forall a b. (a -> b) -> a -> b
$ ProgressToken
-> WorkDoneProgressReportParams
-> ProgressParams WorkDoneProgressReportParams
forall t. ProgressToken -> t -> ProgressParams t
ProgressParams ProgressToken
progId (WorkDoneProgressReportParams
-> ProgressParams WorkDoneProgressReportParams)
-> WorkDoneProgressReportParams
-> ProgressParams WorkDoneProgressReportParams
forall a b. (a -> b) -> a -> b
$
Maybe Bool
-> Maybe Text -> Maybe Double -> WorkDoneProgressReportParams
WorkDoneProgressReportParams Maybe Bool
forall a. Maybe a
Nothing Maybe Text
msg Maybe Double
percentage
clientSupportsProgress :: J.ClientCapabilities -> Bool
clientSupportsProgress :: ClientCapabilities -> Bool
clientSupportsProgress (J.ClientCapabilities Maybe WorkspaceClientCapabilities
_ Maybe TextDocumentClientCapabilities
_ Maybe WindowClientCapabilities
wc Maybe Object
_) = Bool -> Maybe Bool -> Bool
forall a. a -> Maybe a -> a
fromMaybe Bool
False (Maybe Bool -> Bool) -> Maybe Bool -> Bool
forall a b. (a -> b) -> a -> b
$ do
(J.WindowClientCapabilities Maybe Bool
mProgress) <- Maybe WindowClientCapabilities
wc
Maybe Bool
mProgress
withProgress :: MonadLsp c m => Text -> ProgressCancellable -> ((ProgressAmount -> m ()) -> m a) -> m a
withProgress :: Text
-> ProgressCancellable -> ((ProgressAmount -> m ()) -> m a) -> m a
withProgress Text
title ProgressCancellable
cancellable (ProgressAmount -> m ()) -> m a
f = do
ClientCapabilities
clientCaps <- m ClientCapabilities
forall config (m :: * -> *).
MonadLsp config m =>
m ClientCapabilities
getClientCapabilities
if ClientCapabilities -> Bool
clientSupportsProgress ClientCapabilities
clientCaps
then Bool
-> Text
-> ProgressCancellable
-> ((ProgressAmount -> m ()) -> m a)
-> m a
forall c (m :: * -> *) a.
MonadLsp c m =>
Bool
-> Text
-> ProgressCancellable
-> ((ProgressAmount -> m ()) -> m a)
-> m a
withProgressBase Bool
False Text
title ProgressCancellable
cancellable (ProgressAmount -> m ()) -> m a
f
else (ProgressAmount -> m ()) -> m a
f (m () -> ProgressAmount -> m ()
forall a b. a -> b -> a
const (m () -> ProgressAmount -> m ()) -> m () -> ProgressAmount -> m ()
forall a b. (a -> b) -> a -> b
$ () -> m ()
forall (m :: * -> *) a. Monad m => a -> m a
return ())
withIndefiniteProgress :: MonadLsp c m => Text -> ProgressCancellable -> m a -> m a
withIndefiniteProgress :: Text -> ProgressCancellable -> m a -> m a
withIndefiniteProgress Text
title ProgressCancellable
cancellable m a
f = do
ClientCapabilities
clientCaps <- m ClientCapabilities
forall config (m :: * -> *).
MonadLsp config m =>
m ClientCapabilities
getClientCapabilities
if ClientCapabilities -> Bool
clientSupportsProgress ClientCapabilities
clientCaps
then Bool
-> Text
-> ProgressCancellable
-> ((ProgressAmount -> m ()) -> m a)
-> m a
forall c (m :: * -> *) a.
MonadLsp c m =>
Bool
-> Text
-> ProgressCancellable
-> ((ProgressAmount -> m ()) -> m a)
-> m a
withProgressBase Bool
True Text
title ProgressCancellable
cancellable (m a -> (ProgressAmount -> m ()) -> m a
forall a b. a -> b -> a
const m a
f)
else m a
f
publishDiagnostics :: MonadLsp config m => Int -> NormalizedUri -> TextDocumentVersion -> DiagnosticsBySource -> m ()
publishDiagnostics :: Int -> NormalizedUri -> Maybe Int -> DiagnosticsBySource -> m ()
publishDiagnostics Int
maxDiagnosticCount NormalizedUri
uri Maybe Int
version DiagnosticsBySource
diags = m (m ()) -> m ()
forall (m :: * -> *) a. Monad m => m (m a) -> m a
join (m (m ()) -> m ()) -> m (m ()) -> m ()
forall a b. (a -> b) -> a -> b
$ (LanguageContextState config
-> (m (), LanguageContextState config))
-> m (m ())
forall config (m :: * -> *) a.
MonadLsp config m =>
(LanguageContextState config -> (a, LanguageContextState config))
-> m a
stateState ((LanguageContextState config
-> (m (), LanguageContextState config))
-> m (m ()))
-> (LanguageContextState config
-> (m (), LanguageContextState config))
-> m (m ())
forall a b. (a -> b) -> a -> b
$ \LanguageContextState config
ctx ->
let ds :: DiagnosticStore
ds = DiagnosticStore
-> NormalizedUri
-> Maybe Int
-> DiagnosticsBySource
-> DiagnosticStore
updateDiagnostics (LanguageContextState config -> DiagnosticStore
forall config. LanguageContextState config -> DiagnosticStore
resDiagnostics LanguageContextState config
ctx) NormalizedUri
uri Maybe Int
version DiagnosticsBySource
diags
ctx' :: LanguageContextState config
ctx' = LanguageContextState config
ctx{resDiagnostics :: DiagnosticStore
resDiagnostics = DiagnosticStore
ds}
mdp :: Maybe PublishDiagnosticsParams
mdp = Int
-> DiagnosticStore
-> NormalizedUri
-> Maybe PublishDiagnosticsParams
getDiagnosticParamsFor Int
maxDiagnosticCount DiagnosticStore
ds NormalizedUri
uri
act :: m ()
act = case Maybe PublishDiagnosticsParams
mdp of
Maybe PublishDiagnosticsParams
Nothing -> () -> m ()
forall (m :: * -> *) a. Monad m => a -> m a
return ()
Just PublishDiagnosticsParams
params ->
FromServerMessage -> m ()
forall config (m :: * -> *).
MonadLsp config m =>
FromServerMessage -> m ()
sendToClient (FromServerMessage -> m ()) -> FromServerMessage -> m ()
forall a b. (a -> b) -> a -> b
$ NotificationMessage @'FromServer 'TextDocumentPublishDiagnostics
-> FromServerMessage
forall (m :: Method 'FromServer 'Notification).
((Message @'FromServer @'Notification m :: *)
~ (NotificationMessage @'FromServer m :: *)) =>
NotificationMessage @'FromServer m -> FromServerMessage
J.fromServerNot (NotificationMessage @'FromServer 'TextDocumentPublishDiagnostics
-> FromServerMessage)
-> NotificationMessage @'FromServer 'TextDocumentPublishDiagnostics
-> FromServerMessage
forall a b. (a -> b) -> a -> b
$ Text
-> SMethod
@'FromServer @'Notification 'TextDocumentPublishDiagnostics
-> MessageParams
@'FromServer @'Notification 'TextDocumentPublishDiagnostics
-> NotificationMessage @'FromServer 'TextDocumentPublishDiagnostics
forall (f :: From) (m :: Method f 'Notification).
Text
-> SMethod @f @'Notification m
-> MessageParams @f @'Notification m
-> NotificationMessage @f m
J.NotificationMessage Text
"2.0" SMethod @'FromServer @'Notification 'TextDocumentPublishDiagnostics
J.STextDocumentPublishDiagnostics MessageParams
@'FromServer @'Notification 'TextDocumentPublishDiagnostics
PublishDiagnosticsParams
params
in (m ()
act,LanguageContextState config
ctx')
flushDiagnosticsBySource :: MonadLsp config m => Int
-> Maybe DiagnosticSource -> m ()
flushDiagnosticsBySource :: Int -> Maybe Text -> m ()
flushDiagnosticsBySource Int
maxDiagnosticCount Maybe Text
msource = m (m ()) -> m ()
forall (m :: * -> *) a. Monad m => m (m a) -> m a
join (m (m ()) -> m ()) -> m (m ()) -> m ()
forall a b. (a -> b) -> a -> b
$ (LanguageContextState config
-> (m (), LanguageContextState config))
-> m (m ())
forall config (m :: * -> *) a.
MonadLsp config m =>
(LanguageContextState config -> (a, LanguageContextState config))
-> m a
stateState ((LanguageContextState config
-> (m (), LanguageContextState config))
-> m (m ()))
-> (LanguageContextState config
-> (m (), LanguageContextState config))
-> m (m ())
forall a b. (a -> b) -> a -> b
$ \LanguageContextState config
ctx ->
let ds :: DiagnosticStore
ds = DiagnosticStore -> Maybe Text -> DiagnosticStore
flushBySource (LanguageContextState config -> DiagnosticStore
forall config. LanguageContextState config -> DiagnosticStore
resDiagnostics LanguageContextState config
ctx) Maybe Text
msource
ctx' :: LanguageContextState config
ctx' = LanguageContextState config
ctx {resDiagnostics :: DiagnosticStore
resDiagnostics = DiagnosticStore
ds}
act :: m ()
act = [NormalizedUri] -> (NormalizedUri -> m ()) -> m ()
forall (t :: * -> *) (m :: * -> *) a b.
(Foldable t, Monad m) =>
t a -> (a -> m b) -> m ()
forM_ (DiagnosticStore -> [NormalizedUri]
forall k v. HashMap k v -> [k]
HM.keys DiagnosticStore
ds) ((NormalizedUri -> m ()) -> m ())
-> (NormalizedUri -> m ()) -> m ()
forall a b. (a -> b) -> a -> b
$ \NormalizedUri
uri -> do
let mdp :: Maybe PublishDiagnosticsParams
mdp = Int
-> DiagnosticStore
-> NormalizedUri
-> Maybe PublishDiagnosticsParams
getDiagnosticParamsFor Int
maxDiagnosticCount DiagnosticStore
ds NormalizedUri
uri
case Maybe PublishDiagnosticsParams
mdp of
Maybe PublishDiagnosticsParams
Nothing -> () -> m ()
forall (m :: * -> *) a. Monad m => a -> m a
return ()
Just PublishDiagnosticsParams
params -> do
FromServerMessage -> m ()
forall config (m :: * -> *).
MonadLsp config m =>
FromServerMessage -> m ()
sendToClient (FromServerMessage -> m ()) -> FromServerMessage -> m ()
forall a b. (a -> b) -> a -> b
$ NotificationMessage @'FromServer 'TextDocumentPublishDiagnostics
-> FromServerMessage
forall (m :: Method 'FromServer 'Notification).
((Message @'FromServer @'Notification m :: *)
~ (NotificationMessage @'FromServer m :: *)) =>
NotificationMessage @'FromServer m -> FromServerMessage
J.fromServerNot (NotificationMessage @'FromServer 'TextDocumentPublishDiagnostics
-> FromServerMessage)
-> NotificationMessage @'FromServer 'TextDocumentPublishDiagnostics
-> FromServerMessage
forall a b. (a -> b) -> a -> b
$ Text
-> SMethod
@'FromServer @'Notification 'TextDocumentPublishDiagnostics
-> MessageParams
@'FromServer @'Notification 'TextDocumentPublishDiagnostics
-> NotificationMessage @'FromServer 'TextDocumentPublishDiagnostics
forall (f :: From) (m :: Method f 'Notification).
Text
-> SMethod @f @'Notification m
-> MessageParams @f @'Notification m
-> NotificationMessage @f m
J.NotificationMessage Text
"2.0" SMethod @'FromServer @'Notification 'TextDocumentPublishDiagnostics
J.STextDocumentPublishDiagnostics MessageParams
@'FromServer @'Notification 'TextDocumentPublishDiagnostics
PublishDiagnosticsParams
params
in (m ()
act,LanguageContextState config
ctx')
setupLogger :: Maybe FilePath -> [String] -> Priority -> IO ()
setupLogger :: Maybe FilePath -> [FilePath] -> Priority -> IO ()
setupLogger Maybe FilePath
mLogFile [FilePath]
extraLogNames Priority
level = do
Handle
logStream <- case Maybe FilePath
mLogFile of
Just FilePath
logFile -> FilePath -> IOMode -> IO Handle
openFile FilePath
logFile IOMode
AppendMode IO Handle -> (IOException -> IO Handle) -> IO Handle
forall e a. Exception e => IO a -> (e -> IO a) -> IO a
`E.catch` FilePath -> IOException -> IO Handle
handleIOException FilePath
logFile
Maybe FilePath
Nothing -> Handle -> IO Handle
forall (m :: * -> *) a. Monad m => a -> m a
return Handle
stderr
Handle -> TextEncoding -> IO ()
hSetEncoding Handle
logStream TextEncoding
utf8
GenericHandler Handle
logH <- Handle -> Priority -> IO (GenericHandler Handle)
LHS.streamHandler Handle
logStream Priority
level
let logHandle :: GenericHandler Handle
logHandle = GenericHandler Handle
logH {closeFunc :: Handle -> IO ()
LHS.closeFunc = Handle -> IO ()
hClose}
logFormatter :: LogFormatter (GenericHandler Handle)
logFormatter = FilePath -> FilePath -> LogFormatter (GenericHandler Handle)
forall a. FilePath -> FilePath -> LogFormatter a
L.tfLogFormatter FilePath
logDateFormat FilePath
logFormat
logHandler :: GenericHandler Handle
logHandler = GenericHandler Handle
-> LogFormatter (GenericHandler Handle) -> GenericHandler Handle
forall a. LogHandler a => a -> LogFormatter a -> a
LH.setFormatter GenericHandler Handle
logHandle LogFormatter (GenericHandler Handle)
logFormatter
FilePath -> (Logger -> Logger) -> IO ()
L.updateGlobalLogger FilePath
L.rootLoggerName ((Logger -> Logger) -> IO ()) -> (Logger -> Logger) -> IO ()
forall a b. (a -> b) -> a -> b
$ [GenericHandler Handle] -> Logger -> Logger
forall a. LogHandler a => [a] -> Logger -> Logger
L.setHandlers ([] :: [LHS.GenericHandler Handle])
FilePath -> (Logger -> Logger) -> IO ()
L.updateGlobalLogger FilePath
"haskell-lsp" ((Logger -> Logger) -> IO ()) -> (Logger -> Logger) -> IO ()
forall a b. (a -> b) -> a -> b
$ [GenericHandler Handle] -> Logger -> Logger
forall a. LogHandler a => [a] -> Logger -> Logger
L.setHandlers [GenericHandler Handle
logHandler]
FilePath -> (Logger -> Logger) -> IO ()
L.updateGlobalLogger FilePath
"haskell-lsp" ((Logger -> Logger) -> IO ()) -> (Logger -> Logger) -> IO ()
forall a b. (a -> b) -> a -> b
$ Priority -> Logger -> Logger
L.setLevel Priority
level
[FilePath] -> (FilePath -> IO ()) -> IO ()
forall (t :: * -> *) (m :: * -> *) a b.
(Foldable t, Monad m) =>
t a -> (a -> m b) -> m ()
forM_ [FilePath]
extraLogNames ((FilePath -> IO ()) -> IO ()) -> (FilePath -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \FilePath
logName -> do
FilePath -> (Logger -> Logger) -> IO ()
L.updateGlobalLogger FilePath
logName ((Logger -> Logger) -> IO ()) -> (Logger -> Logger) -> IO ()
forall a b. (a -> b) -> a -> b
$ [GenericHandler Handle] -> Logger -> Logger
forall a. LogHandler a => [a] -> Logger -> Logger
L.setHandlers [GenericHandler Handle
logHandler]
FilePath -> (Logger -> Logger) -> IO ()
L.updateGlobalLogger FilePath
logName ((Logger -> Logger) -> IO ()) -> (Logger -> Logger) -> IO ()
forall a b. (a -> b) -> a -> b
$ Priority -> Logger -> Logger
L.setLevel Priority
level
where
logFormat :: FilePath
logFormat = FilePath
"$time [$tid] $prio $loggername:\t$msg"
logDateFormat :: FilePath
logDateFormat = FilePath
"%Y-%m-%d %H:%M:%S%Q"
handleIOException :: FilePath -> E.IOException -> IO Handle
handleIOException :: FilePath -> IOException -> IO Handle
handleIOException FilePath
logFile IOException
_ = do
Handle -> FilePath -> IO ()
hPutStr Handle
stderr (FilePath -> IO ()) -> FilePath -> IO ()
forall a b. (a -> b) -> a -> b
$ FilePath
"Couldn't open log file " FilePath -> ShowS
forall a. [a] -> [a] -> [a]
++ FilePath
logFile FilePath -> ShowS
forall a. [a] -> [a] -> [a]
++ FilePath
"; falling back to stderr logging"
Handle -> IO Handle
forall (m :: * -> *) a. Monad m => a -> m a
return Handle
stderr
reverseSortEdit :: J.WorkspaceEdit -> J.WorkspaceEdit
reverseSortEdit :: WorkspaceEdit -> WorkspaceEdit
reverseSortEdit (J.WorkspaceEdit Maybe WorkspaceEditMap
cs Maybe (List TextDocumentEdit)
dcs) = Maybe WorkspaceEditMap
-> Maybe (List TextDocumentEdit) -> WorkspaceEdit
J.WorkspaceEdit Maybe WorkspaceEditMap
cs' Maybe (List TextDocumentEdit)
dcs'
where
cs' :: Maybe J.WorkspaceEditMap
cs' :: Maybe WorkspaceEditMap
cs' = ((WorkspaceEditMap -> WorkspaceEditMap)
-> Maybe WorkspaceEditMap -> Maybe WorkspaceEditMap
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap ((WorkspaceEditMap -> WorkspaceEditMap)
-> Maybe WorkspaceEditMap -> Maybe WorkspaceEditMap)
-> ((List TextEdit -> List TextEdit)
-> WorkspaceEditMap -> WorkspaceEditMap)
-> (List TextEdit -> List TextEdit)
-> Maybe WorkspaceEditMap
-> Maybe WorkspaceEditMap
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (List TextEdit -> List TextEdit)
-> WorkspaceEditMap -> WorkspaceEditMap
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap ) List TextEdit -> List TextEdit
sortTextEdits Maybe WorkspaceEditMap
cs
dcs' :: Maybe (J.List J.TextDocumentEdit)
dcs' :: Maybe (List TextDocumentEdit)
dcs' = ((List TextDocumentEdit -> List TextDocumentEdit)
-> Maybe (List TextDocumentEdit) -> Maybe (List TextDocumentEdit)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap ((List TextDocumentEdit -> List TextDocumentEdit)
-> Maybe (List TextDocumentEdit) -> Maybe (List TextDocumentEdit))
-> ((TextDocumentEdit -> TextDocumentEdit)
-> List TextDocumentEdit -> List TextDocumentEdit)
-> (TextDocumentEdit -> TextDocumentEdit)
-> Maybe (List TextDocumentEdit)
-> Maybe (List TextDocumentEdit)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (TextDocumentEdit -> TextDocumentEdit)
-> List TextDocumentEdit -> List TextDocumentEdit
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap ) TextDocumentEdit -> TextDocumentEdit
sortTextDocumentEdits Maybe (List TextDocumentEdit)
dcs
sortTextEdits :: J.List J.TextEdit -> J.List J.TextEdit
sortTextEdits :: List TextEdit -> List TextEdit
sortTextEdits (J.List [TextEdit]
edits) = [TextEdit] -> List TextEdit
forall a. [a] -> List a
J.List ((TextEdit -> TextEdit -> Ordering) -> [TextEdit] -> [TextEdit]
forall a. (a -> a -> Ordering) -> [a] -> [a]
L.sortBy TextEdit -> TextEdit -> Ordering
down [TextEdit]
edits)
sortTextDocumentEdits :: J.TextDocumentEdit -> J.TextDocumentEdit
sortTextDocumentEdits :: TextDocumentEdit -> TextDocumentEdit
sortTextDocumentEdits (J.TextDocumentEdit VersionedTextDocumentIdentifier
td (J.List [TextEdit]
edits)) = VersionedTextDocumentIdentifier
-> List TextEdit -> TextDocumentEdit
J.TextDocumentEdit VersionedTextDocumentIdentifier
td ([TextEdit] -> List TextEdit
forall a. [a] -> List a
J.List [TextEdit]
edits')
where
edits' :: [TextEdit]
edits' = (TextEdit -> TextEdit -> Ordering) -> [TextEdit] -> [TextEdit]
forall a. (a -> a -> Ordering) -> [a] -> [a]
L.sortBy TextEdit -> TextEdit -> Ordering
down [TextEdit]
edits
down :: TextEdit -> TextEdit -> Ordering
down (J.TextEdit Range
r1 Text
_) (J.TextEdit Range
r2 Text
_) = Range
r2 Range -> Range -> Ordering
forall a. Ord a => a -> a -> Ordering
`compare` Range
r1