{-# LANGUAGE MultiParamTypeClasses #-}
{-# OPTIONS_GHC -fno-warn-orphans #-}
module Haskell.Debug.Adapter.State.Init.Initialize where
import Control.Monad.IO.Class
import qualified System.Log.Logger as L
import qualified Haskell.DAP as DAP
import Haskell.Debug.Adapter.Type
import Haskell.Debug.Adapter.Constant
import qualified Haskell.Debug.Adapter.Utility as U
import Haskell.Debug.Adapter.Utility
instance StateActivityIF InitStateData DAP.InitializeRequest where
action _ (InitializeRequest req) = do
liftIO $ L.debugM _LOG_APP $ "InitState InitializeRequest called. " ++ show req
app req
app :: DAP.InitializeRequest -> AppContext (Maybe StateTransit)
app req = do
debugEV _LOG_APP "initialize request called."
resSeq <- U.getIncreasedResponseSequence
let capa = DAP.defaultInitializeResponseBody {
DAP.supportsConfigurationDoneRequestInitializeResponseBody = True
, DAP.supportsFunctionBreakpointsInitializeResponseBody = True
, DAP.supportsConditionalBreakpointsInitializeResponseBody = True
, DAP.supportsHitConditionalBreakpointsInitializeResponseBody = True
, DAP.supportsEvaluateForHoversInitializeResponseBody = True
, DAP.exceptionBreakpointFiltersInitializeResponseBody = [
DAP.ExceptionBreakpointsFilter "break-on-error" "break-on-error" False
, DAP.ExceptionBreakpointsFilter "break-on-exception" "break-on-exception" False
]
, DAP.supportsStepBackInitializeResponseBody = False
, DAP.supportsSetVariableInitializeResponseBody = False
, DAP.supportsRestartFrameInitializeResponseBody = False
, DAP.supportsGotoTargetsRequestInitializeResponseBody = False
, DAP.supportsStepInTargetsRequestInitializeResponseBody = False
, DAP.supportsCompletionsRequestInitializeResponseBody = True
, DAP.supportsModulesRequestInitializeResponseBody = False
, DAP.additionalModuleColumnsInitializeResponseBody = []
, DAP.supportsLogPointsInitializeResponseBody = True
, DAP.supportsTerminateRequestInitializeResponseBody = True
}
res = DAP.defaultInitializeResponse {
DAP.seqInitializeResponse = resSeq
, DAP.request_seqInitializeResponse = DAP.seqInitializeRequest req
, DAP.successInitializeResponse = True
, DAP.bodyInitializeResponse = capa
}
U.addResponse $ InitializeResponse res
return Nothing