{-# LANGUAGE DataKinds #-}
{-# LANGUAGE GADTs #-}
{-# LANGUAGE OverloadedStrings #-}
module Language.LSP.Test.Files (
swapFiles,
rootDir,
)
where
import Control.Lens
import Data.Map.Strict qualified as M
import Data.Maybe
import Data.Text qualified as T
import Data.Time.Clock
import Language.LSP.Protocol.Lens qualified as L
import Language.LSP.Protocol.Message
import Language.LSP.Protocol.Types
import System.Directory
import System.FilePath
data Event
= ClientEv UTCTime FromClientMessage
| ServerEv UTCTime FromServerMessage
swapFiles :: FilePath -> [Event] -> IO [Event]
swapFiles :: FilePath -> [Event] -> IO [Event]
swapFiles FilePath
relCurBaseDir [Event]
msgs = do
let capturedBaseDir :: FilePath
capturedBaseDir = [Event] -> FilePath
rootDir [Event]
msgs
FilePath
curBaseDir <- (FilePath -> FilePath -> FilePath
</> FilePath
relCurBaseDir) (FilePath -> FilePath) -> IO FilePath -> IO FilePath
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> IO FilePath
getCurrentDirectory
let transform :: Uri -> Uri
transform Uri
uri =
let fp :: FilePath
fp = FilePath -> Maybe FilePath -> FilePath
forall a. a -> Maybe a -> a
fromMaybe (FilePath -> FilePath
forall a. HasCallStack => FilePath -> a
error FilePath
"Couldn't transform uri") (Uri -> Maybe FilePath
uriToFilePath Uri
uri)
newFp :: FilePath
newFp = FilePath
curBaseDir FilePath -> FilePath -> FilePath
</> FilePath -> FilePath -> FilePath
makeRelative FilePath
capturedBaseDir FilePath
fp
in FilePath -> Uri
filePathToUri FilePath
newFp
newMsgs :: [Event]
newMsgs = (Event -> Event) -> [Event] -> [Event]
forall a b. (a -> b) -> [a] -> [b]
map ((Uri -> Uri) -> Event -> Event
mapUris Uri -> Uri
transform) [Event]
msgs
[Event] -> IO [Event]
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return [Event]
newMsgs
rootDir :: [Event] -> FilePath
rootDir :: [Event] -> FilePath
rootDir (ClientEv UTCTime
_ (FromClientMess SMethod m
SMethod_Initialize TMessage m
req) : [Event]
_) =
FilePath -> Maybe FilePath -> FilePath
forall a. a -> Maybe a -> a
fromMaybe (FilePath -> FilePath
forall a. HasCallStack => FilePath -> a
error FilePath
"Couldn't find root dir") (Maybe FilePath -> FilePath) -> Maybe FilePath -> FilePath
forall a b. (a -> b) -> a -> b
$ do
Uri
rootUri <- case TMessage m
TRequestMessage 'Method_Initialize
req TRequestMessage 'Method_Initialize
-> Getting
(Uri |? Null) (TRequestMessage 'Method_Initialize) (Uri |? Null)
-> Uri |? Null
forall s a. s -> Getting a s a -> a
^. (InitializeParams -> Const (Uri |? Null) InitializeParams)
-> TRequestMessage 'Method_Initialize
-> Const (Uri |? Null) (TRequestMessage 'Method_Initialize)
forall s a. HasParams s a => Lens' s a
Lens' (TRequestMessage 'Method_Initialize) InitializeParams
L.params ((InitializeParams -> Const (Uri |? Null) InitializeParams)
-> TRequestMessage 'Method_Initialize
-> Const (Uri |? Null) (TRequestMessage 'Method_Initialize))
-> (((Uri |? Null) -> Const (Uri |? Null) (Uri |? Null))
-> InitializeParams -> Const (Uri |? Null) InitializeParams)
-> Getting
(Uri |? Null) (TRequestMessage 'Method_Initialize) (Uri |? Null)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ((Uri |? Null) -> Const (Uri |? Null) (Uri |? Null))
-> InitializeParams -> Const (Uri |? Null) InitializeParams
forall s a. HasRootUri s a => Lens' s a
Lens' InitializeParams (Uri |? Null)
L.rootUri of
InL Uri
r -> Uri -> Maybe Uri
forall a. a -> Maybe a
Just Uri
r
InR Null
_ -> FilePath -> Maybe Uri
forall a. HasCallStack => FilePath -> a
error FilePath
"Couldn't find root dir"
Uri -> Maybe FilePath
uriToFilePath Uri
rootUri
rootDir [Event]
_ = FilePath -> FilePath
forall a. HasCallStack => FilePath -> a
error FilePath
"Couldn't find initialize request in session"
mapUris :: (Uri -> Uri) -> Event -> Event
mapUris :: (Uri -> Uri) -> Event -> Event
mapUris Uri -> Uri
f Event
event =
case Event
event of
ClientEv UTCTime
t FromClientMessage' SMethod
msg -> UTCTime -> FromClientMessage' SMethod -> Event
ClientEv UTCTime
t (FromClientMessage' SMethod -> FromClientMessage' SMethod
forall {a :: Method 'ServerToClient 'Request -> *}.
FromClientMessage' a -> FromClientMessage' a
fromClientMsg FromClientMessage' SMethod
msg)
ServerEv UTCTime
t FromServerMessage
msg -> UTCTime -> FromServerMessage -> Event
ServerEv UTCTime
t (FromServerMessage -> FromServerMessage
fromServerMsg FromServerMessage
msg)
where
fromClientMsg :: FromClientMessage' a -> FromClientMessage' a
fromClientMsg (FromClientMess m :: SMethod m
m@SMethod m
SMethod_Initialize TMessage m
r) = SMethod m -> TMessage m -> FromClientMessage' a
forall (t :: MessageKind) (m :: Method 'ClientToServer t)
(a :: Method 'ServerToClient 'Request -> *).
SMethod m -> TMessage m -> FromClientMessage' a
FromClientMess SMethod m
m (TMessage m -> FromClientMessage' a)
-> TMessage m -> FromClientMessage' a
forall a b. (a -> b) -> a -> b
$ (InitializeParams -> Identity InitializeParams)
-> TMessage m -> Identity (TMessage m)
(InitializeParams -> Identity InitializeParams)
-> TRequestMessage 'Method_Initialize
-> Identity (TRequestMessage 'Method_Initialize)
forall s a. HasParams s a => Lens' s a
Lens' (TRequestMessage 'Method_Initialize) InitializeParams
L.params ((InitializeParams -> Identity InitializeParams)
-> TMessage m -> Identity (TMessage m))
-> InitializeParams -> TMessage m -> TMessage m
forall s t a b. ASetter s t a b -> b -> s -> t
.~ InitializeParams -> InitializeParams
transformInit (TMessage m
TRequestMessage 'Method_Initialize
r TRequestMessage 'Method_Initialize
-> Getting
InitializeParams
(TRequestMessage 'Method_Initialize)
InitializeParams
-> InitializeParams
forall s a. s -> Getting a s a -> a
^. Getting
InitializeParams
(TRequestMessage 'Method_Initialize)
InitializeParams
forall s a. HasParams s a => Lens' s a
Lens' (TRequestMessage 'Method_Initialize) InitializeParams
L.params) (TMessage m -> TMessage m) -> TMessage m -> TMessage m
forall a b. (a -> b) -> a -> b
$ TMessage m
r
fromClientMsg (FromClientMess m :: SMethod m
m@SMethod m
SMethod_TextDocumentDidOpen TMessage m
n) = SMethod m -> TMessage m -> FromClientMessage' a
forall (t :: MessageKind) (m :: Method 'ClientToServer t)
(a :: Method 'ServerToClient 'Request -> *).
SMethod m -> TMessage m -> FromClientMessage' a
FromClientMess SMethod m
m (TMessage m -> FromClientMessage' a)
-> TMessage m -> FromClientMessage' a
forall a b. (a -> b) -> a -> b
$ Lens'
(TNotificationMessage 'Method_TextDocumentDidOpen) TextDocumentItem
-> TNotificationMessage 'Method_TextDocumentDidOpen
-> TNotificationMessage 'Method_TextDocumentDidOpen
forall b a. HasUri b Uri => Lens' a b -> a -> a
swapUri ((DidOpenTextDocumentParams -> f DidOpenTextDocumentParams)
-> TNotificationMessage 'Method_TextDocumentDidOpen
-> f (TNotificationMessage 'Method_TextDocumentDidOpen)
forall s a. HasParams s a => Lens' s a
Lens'
(TNotificationMessage 'Method_TextDocumentDidOpen)
DidOpenTextDocumentParams
L.params ((DidOpenTextDocumentParams -> f DidOpenTextDocumentParams)
-> TNotificationMessage 'Method_TextDocumentDidOpen
-> f (TNotificationMessage 'Method_TextDocumentDidOpen))
-> ((TextDocumentItem -> f TextDocumentItem)
-> DidOpenTextDocumentParams -> f DidOpenTextDocumentParams)
-> (TextDocumentItem -> f TextDocumentItem)
-> TNotificationMessage 'Method_TextDocumentDidOpen
-> f (TNotificationMessage 'Method_TextDocumentDidOpen)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (TextDocumentItem -> f TextDocumentItem)
-> DidOpenTextDocumentParams -> f DidOpenTextDocumentParams
forall s a. HasTextDocument s a => Lens' s a
Lens' DidOpenTextDocumentParams TextDocumentItem
L.textDocument) TMessage m
TNotificationMessage 'Method_TextDocumentDidOpen
n
fromClientMsg (FromClientMess m :: SMethod m
m@SMethod m
SMethod_TextDocumentDidChange TMessage m
n) = SMethod m -> TMessage m -> FromClientMessage' a
forall (t :: MessageKind) (m :: Method 'ClientToServer t)
(a :: Method 'ServerToClient 'Request -> *).
SMethod m -> TMessage m -> FromClientMessage' a
FromClientMess SMethod m
m (TMessage m -> FromClientMessage' a)
-> TMessage m -> FromClientMessage' a
forall a b. (a -> b) -> a -> b
$ Lens'
(TNotificationMessage 'Method_TextDocumentDidChange)
VersionedTextDocumentIdentifier
-> TNotificationMessage 'Method_TextDocumentDidChange
-> TNotificationMessage 'Method_TextDocumentDidChange
forall b a. HasUri b Uri => Lens' a b -> a -> a
swapUri ((DidChangeTextDocumentParams -> f DidChangeTextDocumentParams)
-> TNotificationMessage 'Method_TextDocumentDidChange
-> f (TNotificationMessage 'Method_TextDocumentDidChange)
forall s a. HasParams s a => Lens' s a
Lens'
(TNotificationMessage 'Method_TextDocumentDidChange)
DidChangeTextDocumentParams
L.params ((DidChangeTextDocumentParams -> f DidChangeTextDocumentParams)
-> TNotificationMessage 'Method_TextDocumentDidChange
-> f (TNotificationMessage 'Method_TextDocumentDidChange))
-> ((VersionedTextDocumentIdentifier
-> f VersionedTextDocumentIdentifier)
-> DidChangeTextDocumentParams -> f DidChangeTextDocumentParams)
-> (VersionedTextDocumentIdentifier
-> f VersionedTextDocumentIdentifier)
-> TNotificationMessage 'Method_TextDocumentDidChange
-> f (TNotificationMessage 'Method_TextDocumentDidChange)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (VersionedTextDocumentIdentifier
-> f VersionedTextDocumentIdentifier)
-> DidChangeTextDocumentParams -> f DidChangeTextDocumentParams
forall s a. HasTextDocument s a => Lens' s a
Lens' DidChangeTextDocumentParams VersionedTextDocumentIdentifier
L.textDocument) TMessage m
TNotificationMessage 'Method_TextDocumentDidChange
n
fromClientMsg (FromClientMess m :: SMethod m
m@SMethod m
SMethod_TextDocumentWillSave TMessage m
n) = SMethod m -> TMessage m -> FromClientMessage' a
forall (t :: MessageKind) (m :: Method 'ClientToServer t)
(a :: Method 'ServerToClient 'Request -> *).
SMethod m -> TMessage m -> FromClientMessage' a
FromClientMess SMethod m
m (TMessage m -> FromClientMessage' a)
-> TMessage m -> FromClientMessage' a
forall a b. (a -> b) -> a -> b
$ Lens'
(TNotificationMessage 'Method_TextDocumentWillSave)
TextDocumentIdentifier
-> TNotificationMessage 'Method_TextDocumentWillSave
-> TNotificationMessage 'Method_TextDocumentWillSave
forall b a. HasUri b Uri => Lens' a b -> a -> a
swapUri ((WillSaveTextDocumentParams -> f WillSaveTextDocumentParams)
-> TNotificationMessage 'Method_TextDocumentWillSave
-> f (TNotificationMessage 'Method_TextDocumentWillSave)
forall s a. HasParams s a => Lens' s a
Lens'
(TNotificationMessage 'Method_TextDocumentWillSave)
WillSaveTextDocumentParams
L.params ((WillSaveTextDocumentParams -> f WillSaveTextDocumentParams)
-> TNotificationMessage 'Method_TextDocumentWillSave
-> f (TNotificationMessage 'Method_TextDocumentWillSave))
-> ((TextDocumentIdentifier -> f TextDocumentIdentifier)
-> WillSaveTextDocumentParams -> f WillSaveTextDocumentParams)
-> (TextDocumentIdentifier -> f TextDocumentIdentifier)
-> TNotificationMessage 'Method_TextDocumentWillSave
-> f (TNotificationMessage 'Method_TextDocumentWillSave)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (TextDocumentIdentifier -> f TextDocumentIdentifier)
-> WillSaveTextDocumentParams -> f WillSaveTextDocumentParams
forall s a. HasTextDocument s a => Lens' s a
Lens' WillSaveTextDocumentParams TextDocumentIdentifier
L.textDocument) TMessage m
TNotificationMessage 'Method_TextDocumentWillSave
n
fromClientMsg (FromClientMess m :: SMethod m
m@SMethod m
SMethod_TextDocumentDidSave TMessage m
n) = SMethod m -> TMessage m -> FromClientMessage' a
forall (t :: MessageKind) (m :: Method 'ClientToServer t)
(a :: Method 'ServerToClient 'Request -> *).
SMethod m -> TMessage m -> FromClientMessage' a
FromClientMess SMethod m
m (TMessage m -> FromClientMessage' a)
-> TMessage m -> FromClientMessage' a
forall a b. (a -> b) -> a -> b
$ Lens'
(TNotificationMessage 'Method_TextDocumentDidSave)
TextDocumentIdentifier
-> TNotificationMessage 'Method_TextDocumentDidSave
-> TNotificationMessage 'Method_TextDocumentDidSave
forall b a. HasUri b Uri => Lens' a b -> a -> a
swapUri ((DidSaveTextDocumentParams -> f DidSaveTextDocumentParams)
-> TNotificationMessage 'Method_TextDocumentDidSave
-> f (TNotificationMessage 'Method_TextDocumentDidSave)
forall s a. HasParams s a => Lens' s a
Lens'
(TNotificationMessage 'Method_TextDocumentDidSave)
DidSaveTextDocumentParams
L.params ((DidSaveTextDocumentParams -> f DidSaveTextDocumentParams)
-> TNotificationMessage 'Method_TextDocumentDidSave
-> f (TNotificationMessage 'Method_TextDocumentDidSave))
-> ((TextDocumentIdentifier -> f TextDocumentIdentifier)
-> DidSaveTextDocumentParams -> f DidSaveTextDocumentParams)
-> (TextDocumentIdentifier -> f TextDocumentIdentifier)
-> TNotificationMessage 'Method_TextDocumentDidSave
-> f (TNotificationMessage 'Method_TextDocumentDidSave)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (TextDocumentIdentifier -> f TextDocumentIdentifier)
-> DidSaveTextDocumentParams -> f DidSaveTextDocumentParams
forall s a. HasTextDocument s a => Lens' s a
Lens' DidSaveTextDocumentParams TextDocumentIdentifier
L.textDocument) TMessage m
TNotificationMessage 'Method_TextDocumentDidSave
n
fromClientMsg (FromClientMess m :: SMethod m
m@SMethod m
SMethod_TextDocumentDidClose TMessage m
n) = SMethod m -> TMessage m -> FromClientMessage' a
forall (t :: MessageKind) (m :: Method 'ClientToServer t)
(a :: Method 'ServerToClient 'Request -> *).
SMethod m -> TMessage m -> FromClientMessage' a
FromClientMess SMethod m
m (TMessage m -> FromClientMessage' a)
-> TMessage m -> FromClientMessage' a
forall a b. (a -> b) -> a -> b
$ Lens'
(TNotificationMessage 'Method_TextDocumentDidClose)
TextDocumentIdentifier
-> TNotificationMessage 'Method_TextDocumentDidClose
-> TNotificationMessage 'Method_TextDocumentDidClose
forall b a. HasUri b Uri => Lens' a b -> a -> a
swapUri ((DidCloseTextDocumentParams -> f DidCloseTextDocumentParams)
-> TNotificationMessage 'Method_TextDocumentDidClose
-> f (TNotificationMessage 'Method_TextDocumentDidClose)
forall s a. HasParams s a => Lens' s a
Lens'
(TNotificationMessage 'Method_TextDocumentDidClose)
DidCloseTextDocumentParams
L.params ((DidCloseTextDocumentParams -> f DidCloseTextDocumentParams)
-> TNotificationMessage 'Method_TextDocumentDidClose
-> f (TNotificationMessage 'Method_TextDocumentDidClose))
-> ((TextDocumentIdentifier -> f TextDocumentIdentifier)
-> DidCloseTextDocumentParams -> f DidCloseTextDocumentParams)
-> (TextDocumentIdentifier -> f TextDocumentIdentifier)
-> TNotificationMessage 'Method_TextDocumentDidClose
-> f (TNotificationMessage 'Method_TextDocumentDidClose)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (TextDocumentIdentifier -> f TextDocumentIdentifier)
-> DidCloseTextDocumentParams -> f DidCloseTextDocumentParams
forall s a. HasTextDocument s a => Lens' s a
Lens' DidCloseTextDocumentParams TextDocumentIdentifier
L.textDocument) TMessage m
TNotificationMessage 'Method_TextDocumentDidClose
n
fromClientMsg (FromClientMess m :: SMethod m
m@SMethod m
SMethod_TextDocumentDocumentSymbol TMessage m
n) = SMethod m -> TMessage m -> FromClientMessage' a
forall (t :: MessageKind) (m :: Method 'ClientToServer t)
(a :: Method 'ServerToClient 'Request -> *).
SMethod m -> TMessage m -> FromClientMessage' a
FromClientMess SMethod m
m (TMessage m -> FromClientMessage' a)
-> TMessage m -> FromClientMessage' a
forall a b. (a -> b) -> a -> b
$ Lens'
(TRequestMessage 'Method_TextDocumentDocumentSymbol)
TextDocumentIdentifier
-> TRequestMessage 'Method_TextDocumentDocumentSymbol
-> TRequestMessage 'Method_TextDocumentDocumentSymbol
forall b a. HasUri b Uri => Lens' a b -> a -> a
swapUri ((DocumentSymbolParams -> f DocumentSymbolParams)
-> TRequestMessage 'Method_TextDocumentDocumentSymbol
-> f (TRequestMessage 'Method_TextDocumentDocumentSymbol)
forall s a. HasParams s a => Lens' s a
Lens'
(TRequestMessage 'Method_TextDocumentDocumentSymbol)
DocumentSymbolParams
L.params ((DocumentSymbolParams -> f DocumentSymbolParams)
-> TRequestMessage 'Method_TextDocumentDocumentSymbol
-> f (TRequestMessage 'Method_TextDocumentDocumentSymbol))
-> ((TextDocumentIdentifier -> f TextDocumentIdentifier)
-> DocumentSymbolParams -> f DocumentSymbolParams)
-> (TextDocumentIdentifier -> f TextDocumentIdentifier)
-> TRequestMessage 'Method_TextDocumentDocumentSymbol
-> f (TRequestMessage 'Method_TextDocumentDocumentSymbol)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (TextDocumentIdentifier -> f TextDocumentIdentifier)
-> DocumentSymbolParams -> f DocumentSymbolParams
forall s a. HasTextDocument s a => Lens' s a
Lens' DocumentSymbolParams TextDocumentIdentifier
L.textDocument) TMessage m
TRequestMessage 'Method_TextDocumentDocumentSymbol
n
fromClientMsg (FromClientMess m :: SMethod m
m@SMethod m
SMethod_TextDocumentRename TMessage m
n) = SMethod m -> TMessage m -> FromClientMessage' a
forall (t :: MessageKind) (m :: Method 'ClientToServer t)
(a :: Method 'ServerToClient 'Request -> *).
SMethod m -> TMessage m -> FromClientMessage' a
FromClientMess SMethod m
m (TMessage m -> FromClientMessage' a)
-> TMessage m -> FromClientMessage' a
forall a b. (a -> b) -> a -> b
$ Lens'
(TRequestMessage 'Method_TextDocumentRename) TextDocumentIdentifier
-> TRequestMessage 'Method_TextDocumentRename
-> TRequestMessage 'Method_TextDocumentRename
forall b a. HasUri b Uri => Lens' a b -> a -> a
swapUri ((RenameParams -> f RenameParams)
-> TRequestMessage 'Method_TextDocumentRename
-> f (TRequestMessage 'Method_TextDocumentRename)
forall s a. HasParams s a => Lens' s a
Lens' (TRequestMessage 'Method_TextDocumentRename) RenameParams
L.params ((RenameParams -> f RenameParams)
-> TRequestMessage 'Method_TextDocumentRename
-> f (TRequestMessage 'Method_TextDocumentRename))
-> ((TextDocumentIdentifier -> f TextDocumentIdentifier)
-> RenameParams -> f RenameParams)
-> (TextDocumentIdentifier -> f TextDocumentIdentifier)
-> TRequestMessage 'Method_TextDocumentRename
-> f (TRequestMessage 'Method_TextDocumentRename)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (TextDocumentIdentifier -> f TextDocumentIdentifier)
-> RenameParams -> f RenameParams
forall s a. HasTextDocument s a => Lens' s a
Lens' RenameParams TextDocumentIdentifier
L.textDocument) TMessage m
TRequestMessage 'Method_TextDocumentRename
n
fromClientMsg FromClientMessage' a
x = FromClientMessage' a
x
fromServerMsg :: FromServerMessage -> FromServerMessage
fromServerMsg :: FromServerMessage -> FromServerMessage
fromServerMsg (FromServerMess m :: SMethod m
m@SMethod m
SMethod_WorkspaceApplyEdit TMessage m
r) = SMethod m -> TMessage m -> FromServerMessage
forall (t :: MessageKind) (m :: Method 'ServerToClient t)
(a :: Method 'ClientToServer 'Request -> *).
SMethod m -> TMessage m -> FromServerMessage' a
FromServerMess SMethod m
m (TMessage m -> FromServerMessage)
-> TMessage m -> FromServerMessage
forall a b. (a -> b) -> a -> b
$ (ApplyWorkspaceEditParams -> Identity ApplyWorkspaceEditParams)
-> TRequestMessage 'Method_WorkspaceApplyEdit
-> Identity (TRequestMessage 'Method_WorkspaceApplyEdit)
forall s a. HasParams s a => Lens' s a
Lens'
(TRequestMessage 'Method_WorkspaceApplyEdit)
ApplyWorkspaceEditParams
L.params ((ApplyWorkspaceEditParams -> Identity ApplyWorkspaceEditParams)
-> TRequestMessage 'Method_WorkspaceApplyEdit
-> Identity (TRequestMessage 'Method_WorkspaceApplyEdit))
-> ((WorkspaceEdit -> Identity WorkspaceEdit)
-> ApplyWorkspaceEditParams -> Identity ApplyWorkspaceEditParams)
-> (WorkspaceEdit -> Identity WorkspaceEdit)
-> TRequestMessage 'Method_WorkspaceApplyEdit
-> Identity (TRequestMessage 'Method_WorkspaceApplyEdit)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (WorkspaceEdit -> Identity WorkspaceEdit)
-> ApplyWorkspaceEditParams -> Identity ApplyWorkspaceEditParams
forall s a. HasEdit s a => Lens' s a
Lens' ApplyWorkspaceEditParams WorkspaceEdit
L.edit ((WorkspaceEdit -> Identity WorkspaceEdit)
-> TMessage m -> Identity (TMessage m))
-> WorkspaceEdit -> TMessage m -> TMessage m
forall s t a b. ASetter s t a b -> b -> s -> t
.~ WorkspaceEdit -> WorkspaceEdit
swapWorkspaceEdit (TMessage m
TRequestMessage 'Method_WorkspaceApplyEdit
r TRequestMessage 'Method_WorkspaceApplyEdit
-> Getting
WorkspaceEdit
(TRequestMessage 'Method_WorkspaceApplyEdit)
WorkspaceEdit
-> WorkspaceEdit
forall s a. s -> Getting a s a -> a
^. (ApplyWorkspaceEditParams
-> Const WorkspaceEdit ApplyWorkspaceEditParams)
-> TRequestMessage 'Method_WorkspaceApplyEdit
-> Const WorkspaceEdit (TRequestMessage 'Method_WorkspaceApplyEdit)
forall s a. HasParams s a => Lens' s a
Lens'
(TRequestMessage 'Method_WorkspaceApplyEdit)
ApplyWorkspaceEditParams
L.params ((ApplyWorkspaceEditParams
-> Const WorkspaceEdit ApplyWorkspaceEditParams)
-> TRequestMessage 'Method_WorkspaceApplyEdit
-> Const
WorkspaceEdit (TRequestMessage 'Method_WorkspaceApplyEdit))
-> ((WorkspaceEdit -> Const WorkspaceEdit WorkspaceEdit)
-> ApplyWorkspaceEditParams
-> Const WorkspaceEdit ApplyWorkspaceEditParams)
-> Getting
WorkspaceEdit
(TRequestMessage 'Method_WorkspaceApplyEdit)
WorkspaceEdit
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (WorkspaceEdit -> Const WorkspaceEdit WorkspaceEdit)
-> ApplyWorkspaceEditParams
-> Const WorkspaceEdit ApplyWorkspaceEditParams
forall s a. HasEdit s a => Lens' s a
Lens' ApplyWorkspaceEditParams WorkspaceEdit
L.edit) (TMessage m -> TMessage m) -> TMessage m -> TMessage m
forall a b. (a -> b) -> a -> b
$ TMessage m
r
fromServerMsg (FromServerMess m :: SMethod m
m@SMethod m
SMethod_TextDocumentPublishDiagnostics TMessage m
n) = SMethod m -> TMessage m -> FromServerMessage
forall (t :: MessageKind) (m :: Method 'ServerToClient t)
(a :: Method 'ClientToServer 'Request -> *).
SMethod m -> TMessage m -> FromServerMessage' a
FromServerMess SMethod m
m (TMessage m -> FromServerMessage)
-> TMessage m -> FromServerMessage
forall a b. (a -> b) -> a -> b
$ Lens'
(TNotificationMessage 'Method_TextDocumentPublishDiagnostics)
PublishDiagnosticsParams
-> TNotificationMessage 'Method_TextDocumentPublishDiagnostics
-> TNotificationMessage 'Method_TextDocumentPublishDiagnostics
forall b a. HasUri b Uri => Lens' a b -> a -> a
swapUri (PublishDiagnosticsParams -> f PublishDiagnosticsParams)
-> TNotificationMessage 'Method_TextDocumentPublishDiagnostics
-> f (TNotificationMessage 'Method_TextDocumentPublishDiagnostics)
forall s a. HasParams s a => Lens' s a
Lens'
(TNotificationMessage 'Method_TextDocumentPublishDiagnostics)
PublishDiagnosticsParams
L.params TMessage m
TNotificationMessage 'Method_TextDocumentPublishDiagnostics
n
fromServerMsg (FromServerRsp m :: SMethod m
m@SMethod m
SMethod_TextDocumentDocumentSymbol TResponseMessage m
r) =
let swapUri' :: ([SymbolInformation] |? [DocumentSymbol] |? Null) -> [SymbolInformation] |? [DocumentSymbol] |? Null
swapUri' :: ([SymbolInformation] |? ([DocumentSymbol] |? Null))
-> [SymbolInformation] |? ([DocumentSymbol] |? Null)
swapUri' (InR (InL [DocumentSymbol]
dss)) = ([DocumentSymbol] |? Null)
-> [SymbolInformation] |? ([DocumentSymbol] |? Null)
forall a b. b -> a |? b
InR (([DocumentSymbol] |? Null)
-> [SymbolInformation] |? ([DocumentSymbol] |? Null))
-> ([DocumentSymbol] |? Null)
-> [SymbolInformation] |? ([DocumentSymbol] |? Null)
forall a b. (a -> b) -> a -> b
$ [DocumentSymbol] -> [DocumentSymbol] |? Null
forall a b. a -> a |? b
InL [DocumentSymbol]
dss
swapUri' (InR (InR Null
n)) = ([DocumentSymbol] |? Null)
-> [SymbolInformation] |? ([DocumentSymbol] |? Null)
forall a b. b -> a |? b
InR (([DocumentSymbol] |? Null)
-> [SymbolInformation] |? ([DocumentSymbol] |? Null))
-> ([DocumentSymbol] |? Null)
-> [SymbolInformation] |? ([DocumentSymbol] |? Null)
forall a b. (a -> b) -> a -> b
$ Null -> [DocumentSymbol] |? Null
forall a b. b -> a |? b
InR Null
n
swapUri' (InL [SymbolInformation]
si) = [SymbolInformation]
-> [SymbolInformation] |? ([DocumentSymbol] |? Null)
forall a b. a -> a |? b
InL (Lens' SymbolInformation Location
-> SymbolInformation -> SymbolInformation
forall b a. HasUri b Uri => Lens' a b -> a -> a
swapUri (Location -> f Location)
-> SymbolInformation -> f SymbolInformation
forall s a. HasLocation s a => Lens' s a
Lens' SymbolInformation Location
L.location (SymbolInformation -> SymbolInformation)
-> [SymbolInformation] -> [SymbolInformation]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [SymbolInformation]
si)
in SMethod m -> TResponseMessage m -> FromServerMessage
forall (m :: Method 'ClientToServer 'Request)
(a :: Method 'ClientToServer 'Request -> *).
a m -> TResponseMessage m -> FromServerMessage' a
FromServerRsp SMethod m
m (TResponseMessage m -> FromServerMessage)
-> TResponseMessage m -> FromServerMessage
forall a b. (a -> b) -> a -> b
$ TResponseMessage m
r TResponseMessage m
-> (TResponseMessage m -> TResponseMessage m) -> TResponseMessage m
forall a b. a -> (a -> b) -> b
& (Either
ResponseError ([SymbolInformation] |? ([DocumentSymbol] |? Null))
-> Identity
(Either
ResponseError ([SymbolInformation] |? ([DocumentSymbol] |? Null))))
-> TResponseMessage m -> Identity (TResponseMessage m)
forall s a. HasResult s a => Lens' s a
Lens'
(TResponseMessage m)
(Either
ResponseError ([SymbolInformation] |? ([DocumentSymbol] |? Null)))
L.result ((Either
ResponseError ([SymbolInformation] |? ([DocumentSymbol] |? Null))
-> Identity
(Either
ResponseError ([SymbolInformation] |? ([DocumentSymbol] |? Null))))
-> TResponseMessage m -> Identity (TResponseMessage m))
-> ((([SymbolInformation] |? ([DocumentSymbol] |? Null))
-> Identity ([SymbolInformation] |? ([DocumentSymbol] |? Null)))
-> Either
ResponseError ([SymbolInformation] |? ([DocumentSymbol] |? Null))
-> Identity
(Either
ResponseError ([SymbolInformation] |? ([DocumentSymbol] |? Null))))
-> (([SymbolInformation] |? ([DocumentSymbol] |? Null))
-> Identity ([SymbolInformation] |? ([DocumentSymbol] |? Null)))
-> TResponseMessage m
-> Identity (TResponseMessage m)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (([SymbolInformation] |? ([DocumentSymbol] |? Null))
-> Identity ([SymbolInformation] |? ([DocumentSymbol] |? Null)))
-> Either
ResponseError ([SymbolInformation] |? ([DocumentSymbol] |? Null))
-> Identity
(Either
ResponseError ([SymbolInformation] |? ([DocumentSymbol] |? Null)))
forall c a b (p :: * -> * -> *) (f :: * -> *).
(Choice p, Applicative f) =>
p a (f b) -> p (Either c a) (f (Either c b))
_Right ((([SymbolInformation] |? ([DocumentSymbol] |? Null))
-> Identity ([SymbolInformation] |? ([DocumentSymbol] |? Null)))
-> TResponseMessage m -> Identity (TResponseMessage m))
-> (([SymbolInformation] |? ([DocumentSymbol] |? Null))
-> [SymbolInformation] |? ([DocumentSymbol] |? Null))
-> TResponseMessage m
-> TResponseMessage m
forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ ([SymbolInformation] |? ([DocumentSymbol] |? Null))
-> [SymbolInformation] |? ([DocumentSymbol] |? Null)
swapUri'
fromServerMsg (FromServerRsp m :: SMethod m
m@SMethod m
SMethod_TextDocumentRename TResponseMessage m
r) = SMethod m -> TResponseMessage m -> FromServerMessage
forall (m :: Method 'ClientToServer 'Request)
(a :: Method 'ClientToServer 'Request -> *).
a m -> TResponseMessage m -> FromServerMessage' a
FromServerRsp SMethod m
m (TResponseMessage m -> FromServerMessage)
-> TResponseMessage m -> FromServerMessage
forall a b. (a -> b) -> a -> b
$ TResponseMessage m
r TResponseMessage m
-> (TResponseMessage m -> TResponseMessage m) -> TResponseMessage m
forall a b. a -> (a -> b) -> b
& (Either ResponseError (WorkspaceEdit |? Null)
-> Identity (Either ResponseError (WorkspaceEdit |? Null)))
-> TResponseMessage m -> Identity (TResponseMessage m)
forall s a. HasResult s a => Lens' s a
Lens'
(TResponseMessage m) (Either ResponseError (WorkspaceEdit |? Null))
L.result ((Either ResponseError (WorkspaceEdit |? Null)
-> Identity (Either ResponseError (WorkspaceEdit |? Null)))
-> TResponseMessage m -> Identity (TResponseMessage m))
-> ((WorkspaceEdit -> Identity WorkspaceEdit)
-> Either ResponseError (WorkspaceEdit |? Null)
-> Identity (Either ResponseError (WorkspaceEdit |? Null)))
-> (WorkspaceEdit -> Identity WorkspaceEdit)
-> TResponseMessage m
-> Identity (TResponseMessage m)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ((WorkspaceEdit |? Null) -> Identity (WorkspaceEdit |? Null))
-> Either ResponseError (WorkspaceEdit |? Null)
-> Identity (Either ResponseError (WorkspaceEdit |? Null))
forall c a b (p :: * -> * -> *) (f :: * -> *).
(Choice p, Applicative f) =>
p a (f b) -> p (Either c a) (f (Either c b))
_Right (((WorkspaceEdit |? Null) -> Identity (WorkspaceEdit |? Null))
-> Either ResponseError (WorkspaceEdit |? Null)
-> Identity (Either ResponseError (WorkspaceEdit |? Null)))
-> ((WorkspaceEdit -> Identity WorkspaceEdit)
-> (WorkspaceEdit |? Null) -> Identity (WorkspaceEdit |? Null))
-> (WorkspaceEdit -> Identity WorkspaceEdit)
-> Either ResponseError (WorkspaceEdit |? Null)
-> Identity (Either ResponseError (WorkspaceEdit |? Null))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (WorkspaceEdit -> Identity WorkspaceEdit)
-> (WorkspaceEdit |? Null) -> Identity (WorkspaceEdit |? Null)
forall a b (p :: * -> * -> *) (f :: * -> *).
(Choice p, Applicative f) =>
p a (f a) -> p (a |? b) (f (a |? b))
_L ((WorkspaceEdit -> Identity WorkspaceEdit)
-> TResponseMessage m -> Identity (TResponseMessage m))
-> (WorkspaceEdit -> WorkspaceEdit)
-> TResponseMessage m
-> TResponseMessage m
forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ WorkspaceEdit -> WorkspaceEdit
swapWorkspaceEdit
fromServerMsg FromServerMessage
x = FromServerMessage
x
swapWorkspaceEdit :: WorkspaceEdit -> WorkspaceEdit
swapWorkspaceEdit :: WorkspaceEdit -> WorkspaceEdit
swapWorkspaceEdit WorkspaceEdit
e =
let swapDocumentChangeUri :: DocumentChange -> DocumentChange
swapDocumentChangeUri :: DocumentChange -> DocumentChange
swapDocumentChangeUri (InL TextDocumentEdit
textDocEdit) = TextDocumentEdit -> DocumentChange
forall a b. a -> a |? b
InL (TextDocumentEdit -> DocumentChange)
-> TextDocumentEdit -> DocumentChange
forall a b. (a -> b) -> a -> b
$ Lens' TextDocumentEdit OptionalVersionedTextDocumentIdentifier
-> TextDocumentEdit -> TextDocumentEdit
forall b a. HasUri b Uri => Lens' a b -> a -> a
swapUri (OptionalVersionedTextDocumentIdentifier
-> f OptionalVersionedTextDocumentIdentifier)
-> TextDocumentEdit -> f TextDocumentEdit
forall s a. HasTextDocument s a => Lens' s a
Lens' TextDocumentEdit OptionalVersionedTextDocumentIdentifier
L.textDocument TextDocumentEdit
textDocEdit
swapDocumentChangeUri (InR (InL CreateFile
createFile)) = (CreateFile |? (RenameFile |? DeleteFile)) -> DocumentChange
forall a b. b -> a |? b
InR ((CreateFile |? (RenameFile |? DeleteFile)) -> DocumentChange)
-> (CreateFile |? (RenameFile |? DeleteFile)) -> DocumentChange
forall a b. (a -> b) -> a -> b
$ CreateFile -> CreateFile |? (RenameFile |? DeleteFile)
forall a b. a -> a |? b
InL (CreateFile -> CreateFile |? (RenameFile |? DeleteFile))
-> CreateFile -> CreateFile |? (RenameFile |? DeleteFile)
forall a b. (a -> b) -> a -> b
$ Lens' CreateFile CreateFile -> CreateFile -> CreateFile
forall b a. HasUri b Uri => Lens' a b -> a -> a
swapUri (CreateFile -> f CreateFile) -> CreateFile -> f CreateFile
forall a. a -> a
Lens' CreateFile CreateFile
id CreateFile
createFile
swapDocumentChangeUri (InR (InR (InL RenameFile
renameFile))) = (CreateFile |? (RenameFile |? DeleteFile)) -> DocumentChange
forall a b. b -> a |? b
InR ((CreateFile |? (RenameFile |? DeleteFile)) -> DocumentChange)
-> (CreateFile |? (RenameFile |? DeleteFile)) -> DocumentChange
forall a b. (a -> b) -> a -> b
$ (RenameFile |? DeleteFile)
-> CreateFile |? (RenameFile |? DeleteFile)
forall a b. b -> a |? b
InR ((RenameFile |? DeleteFile)
-> CreateFile |? (RenameFile |? DeleteFile))
-> (RenameFile |? DeleteFile)
-> CreateFile |? (RenameFile |? DeleteFile)
forall a b. (a -> b) -> a -> b
$ RenameFile -> RenameFile |? DeleteFile
forall a b. a -> a |? b
InL (RenameFile -> RenameFile |? DeleteFile)
-> RenameFile -> RenameFile |? DeleteFile
forall a b. (a -> b) -> a -> b
$ (Uri -> Identity Uri) -> RenameFile -> Identity RenameFile
forall s a. HasNewUri s a => Lens' s a
Lens' RenameFile Uri
L.newUri ((Uri -> Identity Uri) -> RenameFile -> Identity RenameFile)
-> Uri -> RenameFile -> RenameFile
forall s t a b. ASetter s t a b -> b -> s -> t
.~ Uri -> Uri
f (RenameFile
renameFile RenameFile -> Getting Uri RenameFile Uri -> Uri
forall s a. s -> Getting a s a -> a
^. Getting Uri RenameFile Uri
forall s a. HasNewUri s a => Lens' s a
Lens' RenameFile Uri
L.newUri) (RenameFile -> RenameFile) -> RenameFile -> RenameFile
forall a b. (a -> b) -> a -> b
$ RenameFile
renameFile
swapDocumentChangeUri (InR (InR (InR DeleteFile
deleteFile))) = (CreateFile |? (RenameFile |? DeleteFile)) -> DocumentChange
forall a b. b -> a |? b
InR ((CreateFile |? (RenameFile |? DeleteFile)) -> DocumentChange)
-> (CreateFile |? (RenameFile |? DeleteFile)) -> DocumentChange
forall a b. (a -> b) -> a -> b
$ (RenameFile |? DeleteFile)
-> CreateFile |? (RenameFile |? DeleteFile)
forall a b. b -> a |? b
InR ((RenameFile |? DeleteFile)
-> CreateFile |? (RenameFile |? DeleteFile))
-> (RenameFile |? DeleteFile)
-> CreateFile |? (RenameFile |? DeleteFile)
forall a b. (a -> b) -> a -> b
$ DeleteFile -> RenameFile |? DeleteFile
forall a b. b -> a |? b
InR (DeleteFile -> RenameFile |? DeleteFile)
-> DeleteFile -> RenameFile |? DeleteFile
forall a b. (a -> b) -> a -> b
$ Lens' DeleteFile DeleteFile -> DeleteFile -> DeleteFile
forall b a. HasUri b Uri => Lens' a b -> a -> a
swapUri (DeleteFile -> f DeleteFile) -> DeleteFile -> f DeleteFile
forall a. a -> a
Lens' DeleteFile DeleteFile
id DeleteFile
deleteFile
in WorkspaceEdit
e
WorkspaceEdit -> (WorkspaceEdit -> WorkspaceEdit) -> WorkspaceEdit
forall a b. a -> (a -> b) -> b
& (Maybe (Map Uri [TextEdit])
-> Identity (Maybe (Map Uri [TextEdit])))
-> WorkspaceEdit -> Identity WorkspaceEdit
forall s a. HasChanges s a => Lens' s a
Lens' WorkspaceEdit (Maybe (Map Uri [TextEdit]))
L.changes ((Maybe (Map Uri [TextEdit])
-> Identity (Maybe (Map Uri [TextEdit])))
-> WorkspaceEdit -> Identity WorkspaceEdit)
-> ((Map Uri [TextEdit] -> Identity (Map Uri [TextEdit]))
-> Maybe (Map Uri [TextEdit])
-> Identity (Maybe (Map Uri [TextEdit])))
-> (Map Uri [TextEdit] -> Identity (Map Uri [TextEdit]))
-> WorkspaceEdit
-> Identity WorkspaceEdit
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Map Uri [TextEdit] -> Identity (Map Uri [TextEdit]))
-> Maybe (Map Uri [TextEdit])
-> Identity (Maybe (Map Uri [TextEdit]))
forall a b (p :: * -> * -> *) (f :: * -> *).
(Choice p, Applicative f) =>
p a (f b) -> p (Maybe a) (f (Maybe b))
_Just ((Map Uri [TextEdit] -> Identity (Map Uri [TextEdit]))
-> WorkspaceEdit -> Identity WorkspaceEdit)
-> (Map Uri [TextEdit] -> Map Uri [TextEdit])
-> WorkspaceEdit
-> WorkspaceEdit
forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ (Uri -> Uri) -> Map Uri [TextEdit] -> Map Uri [TextEdit]
forall k2 k1 a. Ord k2 => (k1 -> k2) -> Map k1 a -> Map k2 a
M.mapKeys Uri -> Uri
f
WorkspaceEdit -> (WorkspaceEdit -> WorkspaceEdit) -> WorkspaceEdit
forall a b. a -> (a -> b) -> b
& (Maybe [DocumentChange] -> Identity (Maybe [DocumentChange]))
-> WorkspaceEdit -> Identity WorkspaceEdit
forall s a. HasDocumentChanges s a => Lens' s a
Lens' WorkspaceEdit (Maybe [DocumentChange])
L.documentChanges ((Maybe [DocumentChange] -> Identity (Maybe [DocumentChange]))
-> WorkspaceEdit -> Identity WorkspaceEdit)
-> ((DocumentChange -> Identity DocumentChange)
-> Maybe [DocumentChange] -> Identity (Maybe [DocumentChange]))
-> (DocumentChange -> Identity DocumentChange)
-> WorkspaceEdit
-> Identity WorkspaceEdit
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ([DocumentChange] -> Identity [DocumentChange])
-> Maybe [DocumentChange] -> Identity (Maybe [DocumentChange])
forall a b (p :: * -> * -> *) (f :: * -> *).
(Choice p, Applicative f) =>
p a (f b) -> p (Maybe a) (f (Maybe b))
_Just (([DocumentChange] -> Identity [DocumentChange])
-> Maybe [DocumentChange] -> Identity (Maybe [DocumentChange]))
-> ((DocumentChange -> Identity DocumentChange)
-> [DocumentChange] -> Identity [DocumentChange])
-> (DocumentChange -> Identity DocumentChange)
-> Maybe [DocumentChange]
-> Identity (Maybe [DocumentChange])
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (DocumentChange -> Identity DocumentChange)
-> [DocumentChange] -> Identity [DocumentChange]
forall (f :: * -> *) a b.
Traversable f =>
IndexedTraversal Int (f a) (f b) a b
IndexedTraversal
Int [DocumentChange] [DocumentChange] DocumentChange DocumentChange
traversed ((DocumentChange -> Identity DocumentChange)
-> WorkspaceEdit -> Identity WorkspaceEdit)
-> (DocumentChange -> DocumentChange)
-> WorkspaceEdit
-> WorkspaceEdit
forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ DocumentChange -> DocumentChange
swapDocumentChangeUri
swapUri :: L.HasUri b Uri => Lens' a b -> a -> a
swapUri :: forall b a. HasUri b Uri => Lens' a b -> a -> a
swapUri Lens' a b
lens = ((b -> Identity b) -> a -> Identity a
Lens' a b
lens ((b -> Identity b) -> a -> Identity a)
-> ((Uri -> Identity Uri) -> b -> Identity b)
-> (Uri -> Identity Uri)
-> a
-> Identity a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Uri -> Identity Uri) -> b -> Identity b
forall s a. HasUri s a => Lens' s a
Lens' b Uri
L.uri) ((Uri -> Identity Uri) -> a -> Identity a)
-> (Uri -> Uri) -> a -> a
forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ Uri -> Uri
f
transformInit :: InitializeParams -> InitializeParams
transformInit :: InitializeParams -> InitializeParams
transformInit InitializeParams
x =
let modifyRootPath :: Text -> Text
modifyRootPath Text
p =
let fp :: FilePath
fp = Text -> FilePath
T.unpack Text
p
uri :: Uri
uri = FilePath -> Uri
filePathToUri FilePath
fp
in case Uri -> Maybe FilePath
uriToFilePath (Uri -> Uri
f Uri
uri) of
Just FilePath
fp -> FilePath -> Text
T.pack FilePath
fp
Maybe FilePath
Nothing -> Text
p
in InitializeParams
x
InitializeParams
-> (InitializeParams -> InitializeParams) -> InitializeParams
forall a b. a -> (a -> b) -> b
& ((Uri |? Null) -> Identity (Uri |? Null))
-> InitializeParams -> Identity InitializeParams
forall s a. HasRootUri s a => Lens' s a
Lens' InitializeParams (Uri |? Null)
L.rootUri (((Uri |? Null) -> Identity (Uri |? Null))
-> InitializeParams -> Identity InitializeParams)
-> ((Uri -> Identity Uri)
-> (Uri |? Null) -> Identity (Uri |? Null))
-> (Uri -> Identity Uri)
-> InitializeParams
-> Identity InitializeParams
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Uri -> Identity Uri) -> (Uri |? Null) -> Identity (Uri |? Null)
forall a b (p :: * -> * -> *) (f :: * -> *).
(Choice p, Applicative f) =>
p a (f a) -> p (a |? b) (f (a |? b))
_L ((Uri -> Identity Uri)
-> InitializeParams -> Identity InitializeParams)
-> (Uri -> Uri) -> InitializeParams -> InitializeParams
forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ Uri -> Uri
f
InitializeParams
-> (InitializeParams -> InitializeParams) -> InitializeParams
forall a b. a -> (a -> b) -> b
& (Maybe (Text |? Null) -> Identity (Maybe (Text |? Null)))
-> InitializeParams -> Identity InitializeParams
forall s a. HasRootPath s a => Lens' s a
Lens' InitializeParams (Maybe (Text |? Null))
L.rootPath ((Maybe (Text |? Null) -> Identity (Maybe (Text |? Null)))
-> InitializeParams -> Identity InitializeParams)
-> ((Text -> Identity Text)
-> Maybe (Text |? Null) -> Identity (Maybe (Text |? Null)))
-> (Text -> Identity Text)
-> InitializeParams
-> Identity InitializeParams
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ((Text |? Null) -> Identity (Text |? Null))
-> Maybe (Text |? Null) -> Identity (Maybe (Text |? Null))
forall a b (p :: * -> * -> *) (f :: * -> *).
(Choice p, Applicative f) =>
p a (f b) -> p (Maybe a) (f (Maybe b))
_Just (((Text |? Null) -> Identity (Text |? Null))
-> Maybe (Text |? Null) -> Identity (Maybe (Text |? Null)))
-> ((Text -> Identity Text)
-> (Text |? Null) -> Identity (Text |? Null))
-> (Text -> Identity Text)
-> Maybe (Text |? Null)
-> Identity (Maybe (Text |? Null))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Text -> Identity Text)
-> (Text |? Null) -> Identity (Text |? Null)
forall a b (p :: * -> * -> *) (f :: * -> *).
(Choice p, Applicative f) =>
p a (f a) -> p (a |? b) (f (a |? b))
_L ((Text -> Identity Text)
-> InitializeParams -> Identity InitializeParams)
-> (Text -> Text) -> InitializeParams -> InitializeParams
forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ Text -> Text
modifyRootPath