From ad136b00ec14606c0f9030e322bacd9a2d60d876 Mon Sep 17 00:00:00 2001 From: XeroOl Date: Tue, 1 Jul 2025 00:00:26 -0500 Subject: [PATCH] use ? line numbers when position is unknown in --lint I only did this for compile errors, not parse errors or lint errors. --- src/fennel-ls.fnl | 10 +++++----- src/fennel-ls/compiler.fnl | 2 +- src/fennel-ls/message.fnl | 6 +++++- 3 files changed, 11 insertions(+), 7 deletions(-) diff --git a/src/fennel-ls.fnl b/src/fennel-ls.fnl index a47be09..eb0d177 100644 --- a/src/fennel-ls.fnl +++ b/src/fennel-ls.fnl @@ -2,17 +2,17 @@ (local dispatch (require :fennel-ls.dispatch)) (local json-rpc (require :fennel-ls.json-rpc)) (local files (require :fennel-ls.files)) -(local {: severity->string} (require :fennel-ls.message)) +(local {: severity->string &as message} (require :fennel-ls.message)) -(fn print-diagnostic [filename message ?range ?severity] +(fn print-diagnostic [filename msg range ?severity] (print (: "%s:%s:%s: %s: %s" :format filename ;; LSP line numbers are zero-indexed, but Emacs and Vim both use ;; 1-indexing for this. - (+ (or (?. ?range :start :line) 0) 1) - (or (?. ?range :start :character) "?") + (if (= range message.unknown-range) "?" (+ range.start.line 1)) + (if (= range message.unknown-range) "?" range.start.character) (or (. severity->string ?severity) "?") - message))) + msg))) (fn initialize [server] (let [params {:id 1 diff --git a/src/fennel-ls/compiler.fnl b/src/fennel-ls/compiler.fnl index cef90ee..463c974 100644 --- a/src/fennel-ls/compiler.fnl +++ b/src/fennel-ls/compiler.fnl @@ -300,7 +300,7 @@ identifiers are declared / referenced in which places." (λ on-compile-error [_ msg ast call-me-to-reset-the-compiler] (let [range (or (message.ast->range server file ast) - (line+byte->range server file 1 1))] + message.unknown-range)] (table.insert diagnostics {:range range :message msg diff --git a/src/fennel-ls/message.fnl b/src/fennel-ls/message.fnl index 51eb0ea..860d085 100644 --- a/src/fennel-ls/message.fnl +++ b/src/fennel-ls/message.fnl @@ -66,6 +66,9 @@ LSP json objects." : id :result (nullify ?result)}) +(local unknown-range {:start {:line 0 :character 0} + :end {:line 0 :character 0}}) + (λ ast->range [server file ?ast] (case (fennel.ast-source ?ast) {: bytestart : byteend} {:start (utils.byte->position file.text bytestart @@ -133,4 +136,5 @@ LSP json objects." : diagnostics : severity : severity->string - : show-message} + : show-message + : unknown-range}