split code path for builtins vs globals
This commit is contained in:
parent
db7a911b7f
commit
579fb44109
@ -14,10 +14,13 @@
|
|||||||
(local lua54 (require :fennel-ls.docs.lua54))
|
(local lua54 (require :fennel-ls.docs.lua54))
|
||||||
|
|
||||||
(fn get-global [_self global-name]
|
(fn get-global [_self global-name]
|
||||||
(or (. specials global-name)
|
(. lua54 global-name))
|
||||||
(. macros* global-name)
|
|
||||||
(. lua54 global-name)))
|
(fn get-builtin [_self builtin-name]
|
||||||
|
(or (. specials builtin-name)
|
||||||
|
(. macros* builtin-name)))
|
||||||
|
|
||||||
;; TODO get-module-metadata
|
;; TODO get-module-metadata
|
||||||
|
|
||||||
{: get-global}
|
{: get-global
|
||||||
|
: get-builtin}
|
||||||
|
|||||||
@ -174,8 +174,7 @@ find the definition `10`, but if `opts.stop-early?` is set, it would find
|
|||||||
(let [?byte initialization-opts.byte
|
(let [?byte initialization-opts.byte
|
||||||
split (utils.multi-sym-split symbol (if ?byte (- ?byte symbol.bytestart)))]
|
split (utils.multi-sym-split symbol (if ?byte (- ?byte symbol.bytestart)))]
|
||||||
(stack-add-split! [] split)))]
|
(stack-add-split! [] split)))]
|
||||||
|
(case (docs.get-builtin self (utils.multi-sym-base symbol))
|
||||||
(case (docs.get-global self (utils.multi-sym-base symbol))
|
|
||||||
document (search-document self document stack opts)
|
document (search-document self document stack opts)
|
||||||
_ (case (. file.references symbol)
|
_ (case (. file.references symbol)
|
||||||
ref (search-reference self file ref stack opts)
|
ref (search-reference self file ref stack opts)
|
||||||
@ -192,11 +191,14 @@ find the definition `10`, but if `opts.stop-early?` is set, it would find
|
|||||||
"find a definition just from the name of the item, and the scope it is in"
|
"find a definition just from the name of the item, and the scope it is in"
|
||||||
(assert (= (type name) :string))
|
(assert (= (type name) :string))
|
||||||
(let [split (utils.multi-sym-split name)
|
(let [split (utils.multi-sym-split name)
|
||||||
stack (stack-add-split! [] split)]
|
stack (stack-add-split! [] split)
|
||||||
(case (docs.get-global self (. split 1))
|
opts (or ?opts {})]
|
||||||
metadata (search-document self metadata stack (or ?opts {}))
|
(case (docs.get-builtin self (. split 1))
|
||||||
_ (case (find-local-definition file name scope)
|
metadata (search-document self metadata stack opts)
|
||||||
def (search-val self file def.definition (stack-add-keys! stack def.keys) (or ?opts {}))))))
|
_ (case (docs.get-global self (. split 1))
|
||||||
|
metadata (search-document self metadata stack opts)
|
||||||
|
_ (case (find-local-definition file name scope)
|
||||||
|
def (search-val self file def.definition (stack-add-keys! stack def.keys) opts))))))
|
||||||
|
|
||||||
(λ _past? [?ast byte]
|
(λ _past? [?ast byte]
|
||||||
;; check if a byte is past an ast object
|
;; check if a byte is past an ast object
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user