fix pipe issue in REPL, add ability to dump top in repl

This commit is contained in:
2026-02-09 10:36:59 -08:00
parent 08ed4178cf
commit a17a9c4342
5 changed files with 10 additions and 1 deletions

View File

@@ -47,6 +47,9 @@ export let shim: NodeShim = {
writeFileSync(name: string, data: string, enc?: string) {
shim.files[name] = new TextEncoder().encode(data)
},
writeSync(fd: number, data: string) {
shim.stdout += data;
}
},
process: {
argv: ["", ""],

View File

@@ -484,6 +484,7 @@ const processOutput = (
let endLineNumber = +eline;
let endColumn = +ecol
// FIXME - pass the real path in
if (file.startsWith("./")) file = file.slice(2);
if (fn && fn !== file) {
startLineNumber = startColumn = 0;
}

View File

@@ -14,6 +14,7 @@ data ReplCommand
| GetDoc String
| BrowseCmd QName
| HelpCmd
| DumpTop
kw : String Parser String
kw s = satisfy (\t => t.val.text == s) "Expected \{show s}"
@@ -61,6 +62,7 @@ commands
:: MkCmd ":d" "document function" ArgIdent GetDoc
:: MkCmd ":doc" "document function" ArgIdent GetDoc
:: MkCmd ":b" "browse namespace" ArgQName BrowseCmd
:: MkCmd ":top" "dump top context as json" ArgNone DumpTop
-- type at point
-- solve hole
-- search by prefix (for autocomplete - ideally include types at point, but we'd need recovery)

View File

@@ -304,6 +304,9 @@ runCommand (GetDoc name) = getDoc name
runCommand (Verbose Nothing) = modifyTop [ verbose $= _+_ 1 ]
runCommand (Verbose (Just v)) = modifyTop [ verbose := v ]
runCommand (OutputJS fn) = writeSource fn
runCommand DumpTop = do
json <- jsonTopContext
putStrLn "TOP:\{renderJson json}"
-- Broken out to a separate function so I can hook it.
runString : String → M Unit

View File

@@ -389,7 +389,7 @@ instance HasIO IO where
liftIO a = a
pfunc primPutStrLn uses (MkIORes MkUnit) : String IO Unit := `(s) => (w) => {
console.log(s)
require('fs').writeSync(1, s + '\n')
return Prelude_MkIORes(Prelude_MkUnit,w)
}`