X-Git-Url: https://thelambdalab.xyz/gitweb/index.cgi?a=blobdiff_plain;f=src%2Fforth.jl;h=9df99d08d103aca667075911fa5012e0e5fcbe76;hb=69aba7543145b983179ba7998d06a6459cc28a1a;hp=f10ea045cedc74258f737254a55e0cce0746c3a7;hpb=e57561fe2d6e29350b0bfb580d7129910ece9689;p=forth.jl.git diff --git a/src/forth.jl b/src/forth.jl index f10ea04..9df99d0 100644 --- a/src/forth.jl +++ b/src/forth.jl @@ -585,6 +585,14 @@ end) sources = Array{Any,1}() currentSource() = sources[length(sources)] +CLOSEFILES_CFA = defPrimWord("CLOSEFILES", () -> begin + while currentSource() != STDIN + close(pop!(sources)) + end + + return NEXT +end) + EOF_CFA = defPrimWord("\x04", () -> begin if currentSource() != STDIN close(pop!(sources)) @@ -640,8 +648,8 @@ function getLineFromSTDIN() elseif key == '\b' if !isempty(line) + print("\b\033[K") line = line[1:length(line)-1] - print("\b \b") end elseif key == '\e' @@ -656,6 +664,9 @@ function getLineFromSTDIN() end end + elseif key == '\t' + # Currently do nothing + else print(key) line = string(line, key) @@ -1031,7 +1042,7 @@ QUIT_CFA = defWord("QUIT", BRANCH_CFA,-4]) ABORT_CFA = defWord("ABORT", - [PSP0_CFA, PSPSTORE_CFA, QUIT_CFA]) + [CLOSEFILES_CFA, PSP0_CFA, PSPSTORE_CFA, QUIT_CFA]) BYE_CFA = defPrimWord("BYE", () -> begin println("\nBye!")