{-# 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 -- | -- Any errors should be critical. don't catch anything here. -- 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 -- no GUI on VSCode , DAP.additionalModuleColumnsInitializeResponseBody = [] -- no GUI on VSCode , 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