packages feed

phoityne-vscode 0.0.12.0 → 0.0.13.0

raw patch · 7 files changed

+140/−91 lines, 7 files

Files

Changelog.md view
@@ -1,4 +1,11 @@ +20170402 phoityne-vscode-0.0.13.0+  * [FIX] [10](https://github.com/phoityne/phoityne-vscode/issues/10) : Unable to set breakpoints+  * [FIX] [11](https://github.com/phoityne/phoityne-vscode/issues/11) : Debugger not progressing past IO+  * [ADD] [12](https://github.com/phoityne/phoityne-vscode/issues/12) : support Column break points+  * [MODIFY] [6](https://github.com/phoityne/phoityne-vscode/issues/6) : adding stopOnEntry setting on launch.json +  * [MODIFY] : add ghci-options -fprint-evld-with-show to stack run command in launch.json file.+ 20170205 phoityne-vscode-0.0.12.0   * [FIX] [8](https://github.com/phoityne/phoityne-vscode/issues/8) : Unterminated process after leaving GHCi  
README.md view
@@ -7,26 +7,40 @@  ## Information -* [2017/02/05] phoityne-vscode released.  -  * Marketplace [phoityne-vscode-0.0.10](https://marketplace.visualstudio.com/items?itemName=phoityne.phoityne-vscode)-  * hackage [phoityne-vscode-0.0.12.0](https://hackage.haskell.org/package/phoityne-vscode)  +* [2017/04/02] phoityne-vscode released.  +  * Marketplace [phoityne-vscode-0.0.11](https://marketplace.visualstudio.com/items?itemName=phoityne.phoityne-vscode)+  * hackage [phoityne-vscode-0.0.13.0](https://hackage.haskell.org/package/phoityne-vscode)   * Release Summary-  * FIX [8](https://github.com/phoityne/phoityne-vscode/issues/8) : Unterminated process after leaving GHCi+  * FIX [10](https://github.com/phoityne/phoityne-vscode/issues/10) : Unable to set breakpoints+  * FIX [11](https://github.com/phoityne/phoityne-vscode/issues/11) : Debugger not progressing past IO+  * ADD [12](https://github.com/phoityne/phoityne-vscode/issues/12) : support Column breakpoints+  * MODIFY [6](https://github.com/phoityne/phoityne-vscode/issues/6) : add "stopOnEntry" setting to launch.json +  * MODIFY : add "--ghci-options -fprint-evld-with-show" to ghci command option in launch.json, instead of hard-coded.  + ![01_debug.gif](https://raw.githubusercontent.com/phoityne/phoityne-vscode/master/docs/01_debug.gif)   ## Important -* Breakpoint can be set in a .hs file which defineds "module ... where".-* Source file extension must be ".hs"+* Limitation. Breakpoint can be set in a .hs file which defineds "module ... where".+* Limitation. Source file extension must be ".hs"+* Limitation. Can not use STDIN handle while debugging.  * When you start debugging for the first time, .vscode/tasks.json will be created automatically. Then you can use F6, F7, F8 shortcut key.   * F5 : start debug   * F6 : show command menu (for stack watch)   * Shift + F6 : stop stack watch   * F7 : stack clean & build   * F8 : stack test+  * F9 : put bp on current line+  * Shift + F9 : put bp on current column+* While debugging, you can use F5, F9, F10, F11 shortcut key.+  * F5 : jump to next bp+  * F9 : put bp on the line+  * Shift + F9 : put bp on the column+  * F10 : step next+  * F11 : step into   ## Install@@ -43,14 +57,19 @@     % where $path:phoityne-vscode.exe     C:\Users\[user name]\AppData\Roaming\local\bin\phoityne-vscode.exe     +    % phoityne-vscode --version+    phoityne-vscode-0.0.13.0     %+    % code  + ### Install vscode extensions -1. open Extensions from side menu of VSCode.-2. search "haskell" -3. select "[Haskell GHCi debug viewer Phoityne](https://marketplace.visualstudio.com/items?itemName=phoityne.phoityne-vscode)"+1. run VSCode and open stack project __Folder__ from file menu. +2. open Extensions from side menu of VSCode.+3. search "haskell" +4. select "[__Haskell GHCi debug viewer Phoityne__](https://marketplace.visualstudio.com/items?itemName=phoityne.phoityne-vscode)"       @@ -113,6 +132,7 @@ * supportsRestartRequest : no * supportsExceptionOptions : no * supportsValueFormattingOptions : no+* supportsExceptionInfoRequest : no  ## Configuration @@ -121,8 +141,9 @@ |NAME|REQUIRED OR OPTIONAL|DEFAULT SETTING|DESCRIPTION| |:--|:--:|:--|:--| |startup|required|${workspaceRoot}/test/Spec.hs|debug startup file, will be loaded automatically.|-|ghciCmd|required|stack ghci --test --no-load --no-build --main-is TARGET|launch ghci command, must be Prelude module loaded. For example, "ghci -i${workspaceRoot}/src", "cabal exec -- ghci -i${workspaceRoot}/src"|+|ghciCmd|required|stack ghci --test --no-load --no-build --main-is TARGET --ghci-options -fprint-evld-with-show|launch ghci command, must be Prelude module loaded. For example, "ghci -i${workspaceRoot}/src", "cabal exec -- ghci -i${workspaceRoot}/src"| |ghciPrompt|required|H>>=|ghci command prompt string.|+|stopOnEntry|required|true|stop or not after debugger launched. |logFile|required|${workspaceRoot}/.vscode/phoityne.log|internal log file.| |logLevel|required|WARNING|internal log level.| @@ -137,6 +158,10 @@   ## Version history++* [2017/02/05] phoityne-vscode released.  +  * Marketplace [phoityne-vscode-0.0.10](https://marketplace.visualstudio.com/items?itemName=phoityne.phoityne-vscode)+  * hackage [phoityne-vscode-0.0.12.0](https://hackage.haskell.org/package/phoityne-vscode)    * [2016/12/18] phoityne-vscode released.     * Marketplace [phoityne-vscode-0.0.9](https://marketplace.visualstudio.com/items?itemName=phoityne.phoityne-vscode)
app/Phoityne/GHCi/IO/Command.hs view
@@ -80,6 +80,10 @@  -- | --+type ColNo = Int++-- |+-- type BreakId = Int  -- |@@ -136,10 +140,6 @@      setPrompt2 ghci@(GHCiProcess _ _ _ _ pmt) = set ghci outHdl ("prompt2 \"" ++ pmt ++ "\"") >>= \case       Left err -> return $ Left err-      Right _  -> setPrintEval ghci--    setPrintEval ghci = set ghci outHdl "-fprint-evld-with-show" >>= \case-      Left err -> return $ Left err       Right _  -> return $ Right ghci      endOfStartMsg msg@@ -241,9 +241,10 @@          -> OutputHandler          -> ModuleName          -> LineNo-         -> IO (Either ErrorData BreakId)-setBreak ghci outHdl modName lineNo = do-  let cmd = ":break " ++ modName ++ " " ++ show lineNo+         -> ColNo+         -> IO (Either ErrorData (BreakId, SourcePosition))+setBreak ghci outHdl modName lineNo col = do+  let cmd = ":break " ++ modName ++ " " ++ show lineNo ++ (if (-1) == col then "" else " " ++ show col)   exec ghci outHdl cmd >>= \case     Left err -> return $ Left err     Right msg -> getBreakId msg@@ -254,9 +255,10 @@       Left  err -> return $ Left $ "unexpected break set result. " ++ show err ++ msg      getBreakIdParser = do-      _ <- manyTill anyChar (string "Breakpoint ")-      no <- manyTill digit (string " activated at")-      return $ read no+      _   <- manyTill anyChar (string "Breakpoint ")+      no  <- manyTill digit (string " activated at ")+      pos <- parsePosition+      return (read no, pos)  -- | --
app/Phoityne/VSCode/IO/Core.hs view
@@ -123,6 +123,7 @@   , modifiedDebugContextData                :: Bool   , ghciProcessDebugContextData             :: Maybe G.GHCiProcess   , responseHandlerDebugContextData         :: BSL.ByteString -> IO ()+  , stopOnEntryDebugContextData             :: Bool   }  @@ -132,8 +133,7 @@ data BreakPointData =   BreakPointData {     nameBreakPointData :: String-  , filePathBreakPointData     :: FilePath-  , lineNoBreakPointData       :: Int+  , srcPosBreakPointData       :: G.SourcePosition   , breakNoBreakPointData      :: Maybe Int   , conditionBreakPointData    :: Maybe String   , hitConditionBreakPointData :: Maybe String@@ -144,7 +144,7 @@ -- | --   -- -type BreakPointDataKey = (FilePath, Int)+type BreakPointDataKey = G.SourcePosition  -- | --  @@ -155,7 +155,7 @@ --   --  getBreakPointKey :: BreakPointData -> BreakPointDataKey-getBreakPointKey bp = (filePathBreakPointData bp, lineNoBreakPointData bp)+getBreakPointKey = srcPosBreakPointData   -- |@@ -275,14 +275,20 @@ -- -- defaultDebugContextData :: DebugContextData-defaultDebugContextData = DebugContextData _INITIAL_RESPONSE_SEQUENCE (MAP.fromList []) (MAP.fromList []) "" "" False Nothing 0 False Nothing BSL.putStr---- |-------getKeyOfSourcePosition :: G.SourcePosition -> BreakPointDataKey-getKeyOfSourcePosition (G.SourcePosition file line _ _ _) = (file, line)-+defaultDebugContextData = DebugContextData {+    resSeqDebugContextData                  = _INITIAL_RESPONSE_SEQUENCE+  , functionBreakPointDatasDebugContextData = MAP.fromList []+  , breakPointDatasDebugContextData         = MAP.fromList []+  , workspaceDebugContextData               = ""+  , startupDebugContextData                 = ""+  , debugStartedDebugContextData            = False+  , debugStoppedPosDebugContextData         = Nothing+  , currentFrameIdDebugContextData          = 0+  , modifiedDebugContextData                = False+  , ghciProcessDebugContextData             = Nothing+  , responseHandlerDebugContextData         = BSL.putStr+  , stopOnEntryDebugContextData             = False+  }   -- |=====================================================================@@ -534,8 +540,9 @@   -- コンテキストデータの保持   ctx <- takeMVar mvarCtx   putMVar mvarCtx ctx {-      workspaceDebugContextData = J.workspaceLaunchRequestArguments args-    , startupDebugContextData   = J.startupLaunchRequestArguments args+      workspaceDebugContextData   = J.workspaceLaunchRequestArguments args+    , startupDebugContextData     = J.startupLaunchRequestArguments args+    , stopOnEntryDebugContextData = J.stopOnEntryLaunchRequestArguments args     }    -- ロギング設定@@ -632,11 +639,16 @@       resSeq <- getIncreasedResponseSequence mvarCtx       sendResponse mvarCtx $ J.encode $ J.defaultConfigurationDoneResponse resSeq req +      stopOnEntryDebugContextData <$> (readMVar mvarCtx) >>= stopOnEntry ++    stopOnEntry False = proceedDebug mvarCtx+    stopOnEntry True = do       resSeq <- getIncreasedResponseSequence mvarCtx       let stopEvt    = J.defaultStoppedEvent resSeq           stopEvtStr = J.encode stopEvt       sendEvent mvarCtx stopEvtStr + -- | -- disconnectRequestHandler :: MVar DebugContextData -> J.DisconnectRequest -> IO ()@@ -695,11 +707,10 @@       sendResponse mvarCtx $ J.encode $ J.errorSetBreakpointsResponse resSeq req msg        sendErrorEvent mvarCtx msg -    convBp cwd path (J.SourceBreakpoint lineNo _ cond hitCond) =+    convBp cwd path (J.SourceBreakpoint lineNo colNo cond hitCond) =       BreakPointData {         nameBreakPointData       = src2mod cwd path-      , filePathBreakPointData   = path-      , lineNoBreakPointData     = lineNo+      , srcPosBreakPointData     = G.SourcePosition path lineNo (maybe (-1) id colNo) (-1) (-1)       , breakNoBreakPointData    = Nothing       , conditionBreakPointData  = normalizeCond cond       , hitConditionBreakPointData = hitCond@@ -714,8 +725,8 @@     delete path = do       ctx <- takeMVar mvarCtx       let bps = breakPointDatasDebugContextData ctx-          newBps = MAP.filterWithKey (\(p,_) _-> path /= p) bps-          delBps = MAP.elems $ MAP.filterWithKey (\(p,_) _-> path == p) bps+          newBps = MAP.filterWithKey (\(G.SourcePosition p _ _ _ _) _-> path /= p) bps+          delBps = MAP.elems $ MAP.filterWithKey (\(G.SourcePosition p _ _ _ _) _-> path == p) bps        putMVar mvarCtx ctx{breakPointDatasDebugContextData = newBps} @@ -726,7 +737,7 @@      insert reqBps = do       results <- mapM insertInternal reqBps-      let addBps  = filter (\(_, (J.Breakpoint _ verified _ _ _ _)) -> verified) results+      let addBps  = filter (\(_, (J.Breakpoint _ verified _ _ _ _ _ _)) -> verified) results           resData = map snd results        debugM _LOG_NAME $ "add bps:" ++ show addBps@@ -734,20 +745,25 @@        ctx <- takeMVar mvarCtx       let bps    = breakPointDatasDebugContextData ctx-          newBps = foldr (\v@(BreakPointData _ p l _ _ _ _)->MAP.insert (p,l) v) bps $ map fst results+          newBps = foldr (\v@(BreakPointData _ s _ _ _ _)->MAP.insert s v) bps $ map fst results       putMVar mvarCtx ctx{breakPointDatasDebugContextData = newBps}        return resData  -    insertInternal reqBp@(BreakPointData modName filePath lineNo _ _ _ _) = do-      let src = J.Source (Just modName) filePath Nothing Nothing -+    insertInternal reqBp@(BreakPointData modName (G.SourcePosition filePath lineNo _ _ _) _ _ _ _) =       addBreakPointOnGHCi mvarCtx reqBp >>= \case-        Right no -> do-          --putStrLnStdout mvarCtx $ "set breakpoint on " ++ filePathBreakPointData reqBp ++ ":L" ++ show (lineNoBreakPointData reqBp) -          return (reqBp{breakNoBreakPointData = Just no}, J.Breakpoint (Just no) True "" src lineNo 1)-        Left err -> return (reqBp, J.Breakpoint Nothing False err src lineNo 1)+        Right (no, srcPos@(G.SourcePosition path sl sc el ec)) ->+          return (reqBp{ breakNoBreakPointData   = Just no+                       , srcPosBreakPointData    = srcPos+                       },+                  J.Breakpoint (Just no) True ""+                    (J.Source (Just modName) path Nothing Nothing) sl sc el ec)+        Left err ->+          return (reqBp,+                  J.Breakpoint Nothing False err+                    (J.Source (Just modName) filePath Nothing Nothing)+                    lineNo (-1) lineNo (-1))  -- | --@@ -778,8 +794,7 @@     convBp (J.FunctionBreakpoint name cond hitCond) =       BreakPointData {         nameBreakPointData         = name-      , filePathBreakPointData     = ""-      , lineNoBreakPointData       = -1+      , srcPosBreakPointData       = G.SourcePosition "" (-1) (-1) (-1) (-1)       , breakNoBreakPointData      = Nothing       , conditionBreakPointData    = normalizeCond cond       , hitConditionBreakPointData = hitCond@@ -805,7 +820,7 @@      insert reqBps = do       results <- mapM insertInternal reqBps-      let addBps  = filter (\(_, (J.Breakpoint _ verified _ _ _ _)) -> verified) results+      let addBps  = filter (\(_, (J.Breakpoint _ verified _ _ _ _ _ _)) -> verified) results           resData = map snd results        debugM _LOG_NAME $ "add funBPs:" ++ show addBps@@ -813,22 +828,20 @@        ctx <- takeMVar mvarCtx       let bps    = functionBreakPointDatasDebugContextData ctx-          newBps = foldr (\v@(BreakPointData _ p l _ _ _ _)->MAP.insert (p,l) v) bps $ map fst results+          newBps = foldr (\v@(BreakPointData _ s _ _ _ _)->MAP.insert s v) bps $ map fst results       putMVar mvarCtx ctx{functionBreakPointDatasDebugContextData = newBps}        return resData  -    insertInternal reqBp@(BreakPointData funcName _ _ _ _ _ _) = do+    insertInternal reqBp@(BreakPointData funcName _ _ _ _ _) = do       addFunctionBreakPointOnGHCi mvarCtx reqBp >>= \case-        Right (no, (G.SourcePosition path sl sc _ _)) -> do-          --putStrLnStdout mvarCtx $ "set breakpoint on " ++ filePathBreakPointData reqBp ++ ":L" ++ show (lineNoBreakPointData reqBp) -          return ( reqBp{ breakNoBreakPointData  = Just no-                        , filePathBreakPointData = path-                        , lineNoBreakPointData   = sl+        Right (no, srcPos@(G.SourcePosition path sl sc el ec)) -> do+          return ( reqBp{ breakNoBreakPointData   = Just no+                        , srcPosBreakPointData    = srcPos                         }-                 , J.Breakpoint (Just no) True "" (J.Source (Just funcName) path Nothing Nothing) sl sc)-        Left err -> return (reqBp, J.Breakpoint Nothing False err (J.Source (Just funcName) "" Nothing Nothing) (-1) (-1))+                 , J.Breakpoint (Just no) True "" (J.Source (Just funcName) path Nothing Nothing) sl sc el ec)+        Left err -> return (reqBp, J.Breakpoint Nothing False err (J.Source (Just funcName) "" Nothing Nothing) (-1) (-1) (-1) (-1))  -- | --@@ -1297,7 +1310,7 @@    where     startUpperCase modName -      | null modName = True+      | null modName = False       | otherwise = isUpper $ head modName  @@ -1358,7 +1371,7 @@ --  ブレークポイントをGHCi上でdeleteする -- deleteBreakPointOnGHCi :: MVar DebugContextData -> BreakPointData -> IO ()-deleteBreakPointOnGHCi mvarCtx bp@(BreakPointData _ _ _ (Just breakNo) _ _ _) = +deleteBreakPointOnGHCi mvarCtx bp@(BreakPointData _ _ (Just breakNo) _ _ _) =    ghciProcessDebugContextData <$> (readMVar mvarCtx) >>= \case     Nothing -> sendErrorEvent mvarCtx $ "[deleteBreakPointOnGHCi] ghci not started. " ++ show bp     Just ghciProc -> G.delete ghciProc outHdl breakNo >>= withResult@@ -1374,13 +1387,13 @@ -- | --  GHCi上でブレークポイントを追加する ---addBreakPointOnGHCi :: MVar DebugContextData -> BreakPointData -> IO (Either String Int)-addBreakPointOnGHCi mvarCtx bp@(BreakPointData modName _ lineNo _ _ _ _) =+addBreakPointOnGHCi :: MVar DebugContextData -> BreakPointData -> IO (Either String (Int, G.SourcePosition))+addBreakPointOnGHCi mvarCtx bp@(BreakPointData modName (G.SourcePosition _ lineNo col _ _) _ _ _ _) =   ghciProcessDebugContextData <$> (readMVar mvarCtx) >>= \case     Nothing -> do       errorM _LOG_NAME $ "[addBreakPointOnGHCi] ghci not started. " ++ show bp       return $ Left $ "[addBreakPointOnGHCi] ghci not started. " ++ show bp-    Just ghciProc -> G.setBreak ghciProc outHdl modName lineNo+    Just ghciProc -> G.setBreak ghciProc outHdl modName lineNo col      where     outHdl = sendStdoutEvent mvarCtx@@ -1389,7 +1402,7 @@ --  GHCi上で関数ブレークポイントを追加する -- addFunctionBreakPointOnGHCi :: MVar DebugContextData -> BreakPointData -> IO (Either String (Int, G.SourcePosition))-addFunctionBreakPointOnGHCi mvarCtx bp@(BreakPointData name _ _ _ _ _ _) =+addFunctionBreakPointOnGHCi mvarCtx bp@(BreakPointData name _ _ _ _ _) =   ghciProcessDebugContextData <$> (readMVar mvarCtx) >>= \case     Nothing -> do       errorM _LOG_NAME $ "[addFunctionBreakPointOnGHCi] ghci not started. " ++ show bp@@ -1577,13 +1590,12 @@ findBreakPointType mvarCtx pos = do   ctx <- readMVar mvarCtx -  let bpKey = getKeyOfSourcePosition pos-      bpMap = breakPointDatasDebugContextData ctx+  let bpMap = breakPointDatasDebugContextData ctx       funcMap = functionBreakPointDatasDebugContextData ctx -  case MAP.lookup bpKey bpMap of+  case MAP.lookup pos bpMap of     Just bp -> return $ SourceBreakPoint bp-    Nothing -> case MAP.lookup bpKey funcMap of+    Nothing -> case MAP.lookup pos funcMap of       Just bp -> return $ FunctionBreakPoint bp       Nothing -> return UnknownBreakPoint @@ -1614,10 +1626,10 @@ -- | -- breakOrContinueByCondition :: MVar DebugContextData -> BreakPointData -> IO BreakOrContinueType-breakOrContinueByCondition _ (BreakPointData _ _ _ _ Nothing Nothing _) = return DoBreak-breakOrContinueByCondition _ (BreakPointData _ _ _ _ Nothing (Just hitCond) hitCount) = breakOrContinueByHitCount hitCond hitCount-breakOrContinueByCondition mvarCtx (BreakPointData _ _ _ _ (Just condStr) Nothing _) = breakOrContinueByOpCond mvarCtx condStr-breakOrContinueByCondition mvarCtx (BreakPointData _ _ _ _ (Just condStr) (Just hitCond) hitCount) =+breakOrContinueByCondition _ (BreakPointData _ _ _ Nothing Nothing _) = return DoBreak+breakOrContinueByCondition _ (BreakPointData _ _ _ Nothing (Just hitCond) hitCount) = breakOrContinueByHitCount hitCond hitCount+breakOrContinueByCondition mvarCtx (BreakPointData _ _ _ (Just condStr) Nothing _) = breakOrContinueByOpCond mvarCtx condStr+breakOrContinueByCondition mvarCtx (BreakPointData _ _ _ (Just condStr) (Just hitCond) hitCount) =   breakOrContinueByHitCount hitCond hitCount >>= \case     DoError m  -> return $ DoError m     DoContinue -> return DoContinue
app/Phoityne/VSCode/TH/BreakpointJSON.hs view
@@ -12,12 +12,14 @@ -- data Breakpoint =   Breakpoint {-    idBreakpoint       :: Maybe Int -- An optional unique identifier for the breakpoint.-  , verifiedBreakpoint :: Bool      -- If true breakpoint could be set (but not necessarily at the desired location).-  , messageBreakpoint  :: String    -- An optional message about the state of the breakpoint. This is shown to the user and can be used to explain why a breakpoint could not be verified.-  , sourceBreakpoint   :: Source    -- The source where the breakpoint is located.-  , lineBreakpoint     :: Int       -- The actual line of the breakpoint.-  , columnBreakpoint   :: Int       -- The actual column of the breakpoint.+    idBreakpoint        :: Maybe Int -- An optional unique identifier for the breakpoint.+  , verifiedBreakpoint  :: Bool      -- If true breakpoint could be set (but not necessarily at the desired location).+  , messageBreakpoint   :: String    -- An optional message about the state of the breakpoint. This is shown to the user and can be used to explain why a breakpoint could not be verified.+  , sourceBreakpoint    :: Source    -- The source where the breakpoint is located.+  , lineBreakpoint      :: Int       -- The actual line of the breakpoint.+  , columnBreakpoint    :: Int       -- The actual column of the breakpoint.+  , endLineBreakpoint   :: Int       -- An optional end line of the actual range covered by the breakpoint.+  , endColumnBreakpoint :: Int       -- n optional end column of the actual range covered by the breakpoint. If no end line is given, then the end column is assumed to be in the start line.   } deriving (Show, Read, Eq)  $(deriveJSON defaultOptions { fieldLabelModifier = rdrop (length "Breakpoint") } ''Breakpoint)
app/Phoityne/VSCode/TH/LaunchRequestArgumentsJSON.hs view
@@ -12,16 +12,17 @@ -- data LaunchRequestArguments =   LaunchRequestArguments {-    noDebugLaunchRequestArguments    :: Maybe Bool --  If noDebug is true the launch request should launch the program without enabling debugging.-  , nameLaunchRequestArguments       :: String     -- Phoityne specific argument. required.-  , typeLaunchRequestArguments       :: String     -- Phoityne specific argument. required.-  , requestLaunchRequestArguments    :: String     -- Phoityne specific argument. required. must be "request"-  , startupLaunchRequestArguments    :: String     -- Phoityne specific argument. required.-  , workspaceLaunchRequestArguments  :: String     -- Phoityne specific argument. required.-  , logFileLaunchRequestArguments    :: String     -- Phoityne specific argument. required.-  , logLevelLaunchRequestArguments   :: String     -- Phoityne specific argument. required.-  , ghciPromptLaunchRequestArguments :: String     -- Phoityne specific argument. required.-  , ghciCmdLaunchRequestArguments    :: String     -- Phoityne specific argument. required.+    noDebugLaunchRequestArguments      :: Maybe Bool -- If noDebug is true the launch request should launch the program without enabling debugging.+  , nameLaunchRequestArguments         :: String     -- Phoityne specific argument. required.+  , typeLaunchRequestArguments         :: String     -- Phoityne specific argument. required.+  , requestLaunchRequestArguments      :: String     -- Phoityne specific argument. required. must be "request"+  , startupLaunchRequestArguments      :: String     -- Phoityne specific argument. required.+  , workspaceLaunchRequestArguments    :: String     -- Phoityne specific argument. required.+  , logFileLaunchRequestArguments      :: String     -- Phoityne specific argument. required.+  , logLevelLaunchRequestArguments     :: String     -- Phoityne specific argument. required.+  , ghciPromptLaunchRequestArguments   :: String     -- Phoityne specific argument. required.+  , ghciCmdLaunchRequestArguments      :: String     -- Phoityne specific argument. required.+  , stopOnEntryLaunchRequestArguments  :: Bool       -- Phoityne specific argument. required.   } deriving (Show, Read, Eq)  
phoityne-vscode.cabal view
@@ -1,5 +1,5 @@ name:                  phoityne-vscode-version:               0.0.12.0+version:               0.0.13.0 synopsis:              ghci debug viewer on Visual Studio Code description:           Please see README.md license:               BSD3