Skip to content

Commit

Permalink
Merge pull request #16 from CFiggers/multiple-diagnostics
Browse files Browse the repository at this point in the history
  • Loading branch information
CFiggers committed Jan 9, 2024
2 parents d73620a + 00cea9a commit 146d85a
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 20 deletions.
17 changes: 7 additions & 10 deletions src/eval.janet
Original file line number Diff line number Diff line change
Expand Up @@ -63,25 +63,22 @@

(def eval-fiber
(fiber/new
|(do (var returnval :ok)
|(do (var returnval @[])
(try (run-context {:chunks chunks
:on-compile-error (fn compile-error [msg errf where line col]
(set returnval [:error {:message msg
:location [line col]}]))
(array/push returnval {:message msg
:location [line col]}))
:on-parse-error (fn parse-error [p x]
(set returnval [:error {:message (parser/error p)
:location (parser/where p)}]))
(array/push returnval {:message (parser/error p)
:location (parser/where p)}))
:evaluator flycheck-evaluator
:fiber-flags :i
:source filename})
([err]
(set returnval [:error {:message err
:location [0 0]}])))
# (logging/log (string/format "from within fiber, returnval is: %m" returnval))
(array/push returnval {:message err
:location [0 0]})))
returnval) :e (dyn :eval-env)))
(def eval-fiber-return (resume eval-fiber))
# (logging/log (string/format "eval-fiber-return is: %m" eval-fiber-return))
# (logging/log (string/format "fiber last value was: %m" (fiber/last-value eval-fiber)))
eval-fiber-return)

# tests
Expand Down
21 changes: 11 additions & 10 deletions src/main.janet
Original file line number Diff line number Diff line change
Expand Up @@ -48,16 +48,17 @@
(defn on-document-diagnostic [state params]
(let [uri (get-in params ["textDocument" "uri"])
content (get-in state [:documents uri :content])
items @[]]

(match (eval/eval-buffer content (path/basename uri))
:ok ()
[:error {:location [line col] :message message}]
(array/push items
{:range
{:start {:line (max 0 (dec line)) :character col}
:end {:line (max 0 (dec line)) :character col}}
:message message}))
items @[]
eval-result (eval/eval-buffer content (path/basename uri))]

(each res eval-result
(match res
{:location [line col] :message message}
(array/push items
{:range
{:start {:line (max 0 (dec line)) :character col}
:end {:line (max 0 (dec line)) :character col}}
:message message})))

[:ok state {:kind "full"
:items items}]))
Expand Down

0 comments on commit 146d85a

Please sign in to comment.