phoityne-vscode 0.0.12.0 → 0.0.13.0
raw patch · 7 files changed
+140/−91 lines, 7 files
Files
- Changelog.md +7/−0
- README.md +35/−10
- app/Phoityne/GHCi/IO/Command.hs +12/−10
- app/Phoityne/VSCode/IO/Core.hs +66/−54
- app/Phoityne/VSCode/TH/BreakpointJSON.hs +8/−6
- app/Phoityne/VSCode/TH/LaunchRequestArgumentsJSON.hs +11/−10
- phoityne-vscode.cabal +1/−1
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. +  ## 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