-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/


-- | Haskell library for the Microsoft Language Server Protocol
--   
--   An implementation of the types, and basic message server to allow
--   language implementors to support the Language Server Protocol for
--   their specific language.
--   
--   An example of this is for Haskell via the Haskell IDE Engine, at
--   <a>https://github.com//haskell-ide-engine</a>
@package haskell-lsp
@version 0.2.2.0

module Language.Haskell.LSP.Constant
_LOG_NAME :: String
_LOG_FORMAT :: String
_LOG_FORMAT_DATE :: String

module Language.Haskell.LSP.Diagnostics
type DiagnosticStore = Map Uri StoreItem
type DiagnosticsBySource = Map (Maybe DiagnosticSource) (SortedList Diagnostic)
data StoreItem
StoreItem :: (Maybe TextDocumentVersion) -> DiagnosticsBySource -> StoreItem
partitionBySource :: [Diagnostic] -> DiagnosticsBySource
flushBySource :: DiagnosticStore -> Maybe DiagnosticSource -> DiagnosticStore
updateDiagnostics :: DiagnosticStore -> Uri -> Maybe TextDocumentVersion -> DiagnosticsBySource -> DiagnosticStore
getDiagnosticParamsFor :: Int -> DiagnosticStore -> Uri -> Maybe PublishDiagnosticsParams
instance GHC.Classes.Eq Language.Haskell.LSP.Diagnostics.StoreItem
instance GHC.Show.Show Language.Haskell.LSP.Diagnostics.StoreItem

module Language.Haskell.LSP.Messages

module Language.Haskell.LSP.Types

module Language.Haskell.LSP.Utility

-- | UTF8文字列をByteStringへの変換
str2bs :: String -> ByteString

-- | ByteStringをUTF8文字列への変換
bs2str :: ByteString -> String

-- | UTF8文字列をLazyByteStringへの変換
str2lbs :: String -> ByteString

-- | LazyByteStringをUTF8文字列への変換
lbs2str :: ByteString -> String
logs :: String -> IO ()
logm :: ByteString -> IO ()

module Language.Haskell.LSP.VFS
type VFS = Map Uri VirtualFile
data VirtualFile
VirtualFile :: Int -> YiString -> VirtualFile
[$sel:_version:VirtualFile] :: VirtualFile -> Int
[$sel:_text:VirtualFile] :: VirtualFile -> YiString
openVFS :: VFS -> DidOpenTextDocumentNotification -> IO VFS
changeVFS :: VFS -> DidChangeTextDocumentNotification -> IO VFS
closeVFS :: VFS -> DidCloseTextDocumentNotification -> IO VFS
applyChange :: YiString -> TextDocumentContentChangeEvent -> YiString
sortChanges :: [TextDocumentContentChangeEvent] -> [TextDocumentContentChangeEvent]
deleteChars :: YiString -> Position -> Int -> YiString
addChars :: YiString -> Position -> Text -> YiString
changeChars :: YiString -> Position -> Int -> Text -> YiString
yiSplitAt :: Int -> Int -> YiString -> (YiString, YiString)
instance GHC.Show.Show Language.Haskell.LSP.VFS.VirtualFile

module Language.Haskell.LSP.Core
handleRequest :: (Show c) => InitializeCallback c -> TVar (LanguageContextData c) -> ByteString -> ByteString -> IO ()

-- | state used by the LSP dispatcher to manage the message loop
data LanguageContextData a
LanguageContextData :: !Int -> !(Maybe FilePath) -> !Handlers -> !Options -> !SendFunc -> !VFS -> !DiagnosticStore -> !(Maybe a) -> !(TVar Int) -> LspFuncs a -> LanguageContextData a
[resSeqDebugContextData] :: LanguageContextData a -> !Int
[resRootPath] :: LanguageContextData a -> !(Maybe FilePath)
[resHandlers] :: LanguageContextData a -> !Handlers
[resOptions] :: LanguageContextData a -> !Options
[resSendResponse] :: LanguageContextData a -> !SendFunc
[resVFS] :: LanguageContextData a -> !VFS
[resDiagnostics] :: LanguageContextData a -> !DiagnosticStore
[resConfig] :: LanguageContextData a -> !(Maybe a)
[resLspId] :: LanguageContextData a -> !(TVar Int)
[resLspFuncs] :: LanguageContextData a -> LspFuncs a

-- | The Handler type captures a function that receives local read-only
--   state <tt>a</tt>, a function to send a reply message once encoded as a
--   ByteString, and a received message of type <tt>b</tt>
type Handler b = b -> IO ()

-- | The function in the LSP process that is called once the
--   <tt>initialize</tt> message is received. Message processing will only
--   continue once this returns, so it should create whatever processes are
--   needed.
type InitializeCallback c = (DidChangeConfigurationNotification -> Either Text c, LspFuncs c -> IO (Maybe ResponseError))

-- | Returned to the server on startup, providing ways to interact with the
--   client.
data LspFuncs c
LspFuncs :: !ClientCapabilities -> !(IO (Maybe c)) -> !SendFunc -> !(Uri -> IO (Maybe VirtualFile)) -> !PublishDiagnosticsFunc -> !FlushDiagnosticsBySourceFunc -> !(IO LspId) -> LspFuncs c
[clientCapabilities] :: LspFuncs c -> !ClientCapabilities

-- | Derived from the DidChangeConfigurationNotification message via a
--   server-provided function.
[config] :: LspFuncs c -> !(IO (Maybe c))
[sendFunc] :: LspFuncs c -> !SendFunc
[getVirtualFileFunc] :: LspFuncs c -> !(Uri -> IO (Maybe VirtualFile))
[publishDiagnosticsFunc] :: LspFuncs c -> !PublishDiagnosticsFunc
[flushDiagnosticsBySourceFunc] :: LspFuncs c -> !FlushDiagnosticsBySourceFunc
[getNextReqId] :: LspFuncs c -> !(IO LspId)

-- | A function to send a message to the client
type SendFunc = forall a. (ToJSON a => a -> IO ())

-- | Callbacks from the language server to the language handler
data Handlers
Handlers :: !(Maybe (Handler HoverRequest)) -> !(Maybe (Handler CompletionRequest)) -> !(Maybe (Handler CompletionItemResolveRequest)) -> !(Maybe (Handler SignatureHelpRequest)) -> !(Maybe (Handler DefinitionRequest)) -> !(Maybe (Handler ReferencesRequest)) -> !(Maybe (Handler DocumentHighlightRequest)) -> !(Maybe (Handler DocumentSymbolRequest)) -> !(Maybe (Handler WorkspaceSymbolRequest)) -> !(Maybe (Handler CodeActionRequest)) -> !(Maybe (Handler CodeLensRequest)) -> !(Maybe (Handler CodeLensResolveRequest)) -> !(Maybe (Handler DocumentFormattingRequest)) -> !(Maybe (Handler DocumentRangeFormattingRequest)) -> !(Maybe (Handler DocumentOnTypeFormattingRequest)) -> !(Maybe (Handler RenameRequest)) -> !(Maybe (Handler DocumentLinkRequest)) -> !(Maybe (Handler DocumentLinkResolveRequest)) -> !(Maybe (Handler ExecuteCommandRequest)) -> !(Maybe (Handler WillSaveWaitUntilTextDocumentResponse)) -> !(Maybe (Handler DidChangeConfigurationNotification)) -> !(Maybe (Handler DidOpenTextDocumentNotification)) -> !(Maybe (Handler DidChangeTextDocumentNotification)) -> !(Maybe (Handler DidCloseTextDocumentNotification)) -> !(Maybe (Handler DidSaveTextDocumentNotification)) -> !(Maybe (Handler DidChangeWatchedFilesNotification)) -> !(Maybe (Handler InitializedNotification)) -> !(Maybe (Handler WillSaveTextDocumentNotification)) -> !(Maybe (Handler CancelNotification)) -> !(Maybe (Handler BareResponseMessage)) -> Handlers
[hoverHandler] :: Handlers -> !(Maybe (Handler HoverRequest))
[completionHandler] :: Handlers -> !(Maybe (Handler CompletionRequest))
[completionResolveHandler] :: Handlers -> !(Maybe (Handler CompletionItemResolveRequest))
[signatureHelpHandler] :: Handlers -> !(Maybe (Handler SignatureHelpRequest))
[definitionHandler] :: Handlers -> !(Maybe (Handler DefinitionRequest))
[referencesHandler] :: Handlers -> !(Maybe (Handler ReferencesRequest))
[documentHighlightHandler] :: Handlers -> !(Maybe (Handler DocumentHighlightRequest))
[documentSymbolHandler] :: Handlers -> !(Maybe (Handler DocumentSymbolRequest))
[workspaceSymbolHandler] :: Handlers -> !(Maybe (Handler WorkspaceSymbolRequest))
[codeActionHandler] :: Handlers -> !(Maybe (Handler CodeActionRequest))
[codeLensHandler] :: Handlers -> !(Maybe (Handler CodeLensRequest))
[codeLensResolveHandler] :: Handlers -> !(Maybe (Handler CodeLensResolveRequest))
[documentFormattingHandler] :: Handlers -> !(Maybe (Handler DocumentFormattingRequest))
[documentRangeFormattingHandler] :: Handlers -> !(Maybe (Handler DocumentRangeFormattingRequest))
[documentTypeFormattingHandler] :: Handlers -> !(Maybe (Handler DocumentOnTypeFormattingRequest))
[renameHandler] :: Handlers -> !(Maybe (Handler RenameRequest))
[documentLinkHandler] :: Handlers -> !(Maybe (Handler DocumentLinkRequest))
[documentLinkResolveHandler] :: Handlers -> !(Maybe (Handler DocumentLinkResolveRequest))
[executeCommandHandler] :: Handlers -> !(Maybe (Handler ExecuteCommandRequest))
[willSaveWaitUntilTextDocHandler] :: Handlers -> !(Maybe (Handler WillSaveWaitUntilTextDocumentResponse))
[didChangeConfigurationParamsHandler] :: Handlers -> !(Maybe (Handler DidChangeConfigurationNotification))
[didOpenTextDocumentNotificationHandler] :: Handlers -> !(Maybe (Handler DidOpenTextDocumentNotification))
[didChangeTextDocumentNotificationHandler] :: Handlers -> !(Maybe (Handler DidChangeTextDocumentNotification))
[didCloseTextDocumentNotificationHandler] :: Handlers -> !(Maybe (Handler DidCloseTextDocumentNotification))
[didSaveTextDocumentNotificationHandler] :: Handlers -> !(Maybe (Handler DidSaveTextDocumentNotification))
[didChangeWatchedFilesNotificationHandler] :: Handlers -> !(Maybe (Handler DidChangeWatchedFilesNotification))
[initializedHandler] :: Handlers -> !(Maybe (Handler InitializedNotification))
[willSaveTextDocumentNotificationHandler] :: Handlers -> !(Maybe (Handler WillSaveTextDocumentNotification))
[cancelNotificationHandler] :: Handlers -> !(Maybe (Handler CancelNotification))
[responseHandler] :: Handlers -> !(Maybe (Handler BareResponseMessage))

-- | Language Server Protocol options supported by the given language
--   server. These are automatically turned into capabilities reported to
--   the client during initialization.
data Options
Options :: Maybe TextDocumentSyncOptions -> Maybe CompletionOptions -> Maybe SignatureHelpOptions -> Maybe CodeLensOptions -> Maybe DocumentOnTypeFormattingOptions -> Maybe DocumentLinkOptions -> Maybe ExecuteCommandOptions -> Options
[textDocumentSync] :: Options -> Maybe TextDocumentSyncOptions
[completionProvider] :: Options -> Maybe CompletionOptions
[signatureHelpProvider] :: Options -> Maybe SignatureHelpOptions
[codeLensProvider] :: Options -> Maybe CodeLensOptions
[documentOnTypeFormattingProvider] :: Options -> Maybe DocumentOnTypeFormattingOptions
[documentLinkProvider] :: Options -> Maybe DocumentLinkOptions
[executeCommandProvider] :: Options -> Maybe ExecuteCommandOptions

-- | Wrap all the protocol messages into a single type, for use in the
--   language handler in storing the original message
data OutMessage
ReqHover :: HoverRequest -> OutMessage
ReqCompletion :: CompletionRequest -> OutMessage
ReqCompletionItemResolve :: CompletionItemResolveRequest -> OutMessage
ReqSignatureHelp :: SignatureHelpRequest -> OutMessage
ReqDefinition :: DefinitionRequest -> OutMessage
ReqFindReferences :: ReferencesRequest -> OutMessage
ReqDocumentHighlights :: DocumentHighlightRequest -> OutMessage
ReqDocumentSymbols :: DocumentSymbolRequest -> OutMessage
ReqWorkspaceSymbols :: WorkspaceSymbolRequest -> OutMessage
ReqCodeAction :: CodeActionRequest -> OutMessage
ReqCodeLens :: CodeLensRequest -> OutMessage
ReqCodeLensResolve :: CodeLensResolveRequest -> OutMessage
ReqDocumentFormatting :: DocumentFormattingRequest -> OutMessage
ReqDocumentRangeFormatting :: DocumentRangeFormattingRequest -> OutMessage
ReqDocumentOnTypeFormatting :: DocumentOnTypeFormattingRequest -> OutMessage
ReqRename :: RenameRequest -> OutMessage
ReqExecuteCommand :: ExecuteCommandRequest -> OutMessage
RspHover :: HoverResponse -> OutMessage
RspCompletion :: CompletionResponse -> OutMessage
RspCompletionItemResolve :: CompletionItemResolveResponse -> OutMessage
RspSignatureHelp :: SignatureHelpResponse -> OutMessage
RspDefinition :: DefinitionResponse -> OutMessage
RspFindReferences :: ReferencesResponse -> OutMessage
RspDocumentHighlights :: DocumentHighlightsResponse -> OutMessage
RspDocumentSymbols :: DocumentSymbolsResponse -> OutMessage
RspWorkspaceSymbols :: WorkspaceSymbolsResponse -> OutMessage
RspCodeAction :: CodeActionResponse -> OutMessage
RspCodeLens :: CodeLensResponse -> OutMessage
RspCodeLensResolve :: CodeLensResolveResponse -> OutMessage
RspDocumentFormatting :: DocumentFormattingResponse -> OutMessage
RspDocumentRangeFormatting :: DocumentRangeFormattingResponse -> OutMessage
RspDocumentOnTypeFormatting :: DocumentOnTypeFormattingResponse -> OutMessage
RspRename :: RenameResponse -> OutMessage
RspExecuteCommand :: ExecuteCommandResponse -> OutMessage
NotInitialized :: InitializedNotification -> OutMessage
NotDidChangeConfigurationParams :: DidChangeConfigurationNotification -> OutMessage
NotDidOpenTextDocument :: DidOpenTextDocumentNotification -> OutMessage
NotDidChangeTextDocument :: DidChangeTextDocumentNotification -> OutMessage
NotDidCloseTextDocument :: DidCloseTextDocumentNotification -> OutMessage
NotWillSaveTextDocument :: WillSaveTextDocumentNotification -> OutMessage
NotDidSaveTextDocument :: DidSaveTextDocumentNotification -> OutMessage
NotDidChangeWatchedFiles :: DidChangeWatchedFilesNotification -> OutMessage
NotCancelRequest :: CancelNotification -> OutMessage
RspFromClient :: BareResponseMessage -> OutMessage

defaultLanguageContextData :: Handlers -> Options -> LspFuncs c -> TVar Int -> SendFunc -> LanguageContextData c

-- | 
--   <h6>===============================================================</h6>
--   
--   Handlers
initializeRequestHandler :: (Show c) => InitializeCallback c -> TVar (LanguageContextData c) -> InitializeRequest -> IO ()
makeResponseMessage :: RequestMessage ClientMethod req resp -> resp -> ResponseMessage resp
makeResponseError :: LspIdRsp -> ResponseError -> ResponseMessage ()

-- | 
--   <h6>===============================================================</h6>
--   
--   utility
--   
--   Logger
setupLogger :: Maybe FilePath -> [String] -> Priority -> IO ()
sendErrorResponseS :: SendFunc -> LspIdRsp -> ErrorCode -> Text -> IO ()
sendErrorLogS :: SendFunc -> Text -> IO ()
sendErrorShowS :: SendFunc -> Text -> IO ()

-- | The changes in a workspace edit should be applied from the end of the
--   file toward the start. Sort them into this order.
reverseSortEdit :: WorkspaceEdit -> WorkspaceEdit
instance GHC.Show.Show Language.Haskell.LSP.Core.OutMessage
instance GHC.Read.Read Language.Haskell.LSP.Core.OutMessage
instance GHC.Classes.Eq Language.Haskell.LSP.Core.OutMessage
instance Data.Default.Class.Default Language.Haskell.LSP.Core.Handlers
instance Data.Default.Class.Default Language.Haskell.LSP.Core.Options

module Language.Haskell.LSP.Control
run :: (Show c) => InitializeCallback c -> Handlers -> Options -> IO Int
