diff --git a/.nvim.fnl b/.nvim.fnl index 4d708e9b..ffc6517c 100644 --- a/.nvim.fnl +++ b/.nvim.fnl @@ -8,6 +8,9 @@ ; (set vim.g.conjure#client#scheme#stdio#prompt_pattern "\n-#;%d-> ") ; (set vim.g.conjure#mapping#enable_defaults false) +; (set vim.g.conjure#filetype#scheme "conjure.client.guile.socket") +; (set vim.g.conjure#client#guile#socket#pipename "guile-repl.socket") + ; (set vim.g.conjure#client#python#stdio#command "ipython --classic") diff --git a/dev/guile/sandbox.scm b/dev/guile/sandbox.scm index 27f271c6..8f95e17b 100644 --- a/dev/guile/sandbox.scm +++ b/dev/guile/sandbox.scm @@ -5,3 +5,16 @@ (+ 5 6) (add 1 2) + +(define (print-hi-and-return x) + (begin + (display "Hi") + (newline)) + x) + +(print-hi-and-return 123) + +(define (return-values) + (values 123 "Hi")) + +(return-values) diff --git a/fnl/conjure/client/guile/socket.fnl b/fnl/conjure/client/guile/socket.fnl index ac63eb21..474303a9 100644 --- a/fnl/conjure/client/guile/socket.fnl +++ b/fnl/conjure/client/guile/socket.fnl @@ -115,22 +115,28 @@ (defn- parse-guile-result [s] (let [prompt (s:find "scheme@%([%w%-%s]+%)> ")] - (if prompt - (let [(ind1 ind2 result) (s:find "%$%d+ = ([^\n]+)\n")] - (if result - {:done? true - :error? false - :result result} - {:done? true - :error? false - :result (s:sub 1 (- prompt 1))})) - (if (s:find "scheme@%([%w%-%s]+%) %[%d+%]>") + (if + prompt + (let [(ind1 _ result) (s:find "%$%d+ = ([^\n]+)\n") + stray-output (s:sub + 1 + (- (if result ind1 prompt) 1))] + (when (> (length stray-output) 0) + (log.append + (-> (text.trim-last-newline stray-output) + (text.prefixed-lines "; (out) ")))) {:done? true - :error? true - :result nil} - {:done? false :error? false - :result s})))) + :result result}) + + (s:find "scheme@%([%w%-%s]+%) %[%d+%]>") + {:done? true + :error? true + :result nil} + + {:done? false + :error? false + :result s}))) (defn connect [opts] (disconnect) diff --git a/fnl/conjure/sponsors.fnl b/fnl/conjure/sponsors.fnl index 756d9371..743bad08 100644 --- a/fnl/conjure/sponsors.fnl +++ b/fnl/conjure/sponsors.fnl @@ -1,5 +1,4 @@ [ ;; Generated by: make sponsors -"AbhinavOmprakash" "Akeboshiwind" "aleksandersumowski" "AlexChalk" diff --git a/lua/conjure/client/guile/socket.lua b/lua/conjure/client/guile/socket.lua index b7e34336..1ebcc50d 100644 --- a/lua/conjure/client/guile/socket.lua +++ b/lua/conjure/client/guile/socket.lua @@ -156,18 +156,25 @@ _2amodule_2a["disconnect"] = disconnect local function parse_guile_result(s) local prompt = s:find("scheme@%([%w%-%s]+%)> ") if prompt then - local ind1, ind2, result = s:find("%$%d+ = ([^\n]+)\n") - if result then - return {["done?"] = true, result = result, ["error?"] = false} - else - return {["done?"] = true, result = s:sub(1, (prompt - 1)), ["error?"] = false} + local ind1, _0, result = s:find("%$%d+ = ([^\n]+)\n") + local stray_output + local function _21_() + if result then + return ind1 + else + return prompt + end end - else - if s:find("scheme@%([%w%-%s]+%) %[%d+%]>") then - return {["done?"] = true, ["error?"] = true, result = nil} + stray_output = s:sub(1, (_21_() - 1)) + if (#stray_output > 0) then + log.append(text["prefixed-lines"](text["trim-last-newline"](stray_output), "; (out) ")) else - return {result = s, ["done?"] = false, ["error?"] = false} end + return {["done?"] = true, result = result, ["error?"] = false} + elseif s:find("scheme@%([%w%-%s]+%) %[%d+%]>") then + return {["done?"] = true, ["error?"] = true, result = nil} + else + return {result = s, ["done?"] = false, ["error?"] = false} end end _2amodule_locals_2a["parse-guile-result"] = parse_guile_result diff --git a/lua/conjure/sponsors.lua b/lua/conjure/sponsors.lua index 4dec0e77..edc4d6bc 100644 --- a/lua/conjure/sponsors.lua +++ b/lua/conjure/sponsors.lua @@ -1,2 +1,2 @@ local _2afile_2a = "fnl/conjure/sponsors.fnl" -return {"AbhinavOmprakash", "Akeboshiwind", "aleksandersumowski", "AlexChalk", "alloy-d", "anthony-khong", "axvr", "beanpuppy", "BerkeleyTrue", "campbellr", "daveyarwood", "davidmh", "dharrigan", "djwhitt", "edlandm", "extradosages", "frenchy64", "fuadsaud", "harrisoncramer", "harrygallagher4", "jacobobryant", "jcpsantiago", "jkrasnay", "ketansrivastav", "kevinkrouse", "lucasdf", "lucaslollobrigida", "martinklepsch", "NickCellino", "nickcernis", "orestis", "penryu", "pyrmont", "qnkhuat", "rafaeldelboni", "rbatista", "rgm", "stelcodes", "thiru", "TimoKramer", "trev-dev", "valsen", "victorb", "zhming0"} \ No newline at end of file +return {"Akeboshiwind", "aleksandersumowski", "AlexChalk", "alloy-d", "anthony-khong", "axvr", "beanpuppy", "BerkeleyTrue", "campbellr", "daveyarwood", "davidmh", "dharrigan", "djwhitt", "edlandm", "extradosages", "frenchy64", "fuadsaud", "harrisoncramer", "harrygallagher4", "jacobobryant", "jcpsantiago", "jkrasnay", "ketansrivastav", "kevinkrouse", "lucasdf", "lucaslollobrigida", "martinklepsch", "NickCellino", "nickcernis", "orestis", "penryu", "pyrmont", "qnkhuat", "rafaeldelboni", "rbatista", "rgm", "stelcodes", "thiru", "TimoKramer", "trev-dev", "valsen", "victorb", "zhming0"} \ No newline at end of file