65 lines
2.0 KiB
Fennel
65 lines
2.0 KiB
Fennel
(local fennel (require :fennel))
|
|
(local {:metadata METADATA
|
|
:scopes {:global {:specials SPECIALS
|
|
:macros MACROS}}}
|
|
(require :fennel.compiler))
|
|
|
|
(local specials
|
|
(collect [name value (pairs SPECIALS)]
|
|
name {:binding name :metadata (. METADATA value)}))
|
|
|
|
(local macros*
|
|
(collect [name value (pairs MACROS)]
|
|
name {:binding name :metadata (. METADATA value)}))
|
|
|
|
(local versions
|
|
{:lua51 (require :fennel-ls.docs.lua51)
|
|
:lua52 (require :fennel-ls.docs.lua52)
|
|
:lua53 (require :fennel-ls.docs.lua53)
|
|
:lua54 (require :fennel-ls.docs.lua54)})
|
|
|
|
(fn get-lua-version [version]
|
|
(when (not (. versions version))
|
|
(error (.. "fennel-ls doesn't know about lua version " version "\n"
|
|
"The allowed versions are: "
|
|
(fennel.view (doto (icollect [key (pairs versions)] key) table.sort)))))
|
|
(. versions version))
|
|
|
|
(local libraries
|
|
{:tic80 (require :fennel-ls.docs.tic80)})
|
|
|
|
(fn get-native-library [library]
|
|
(when (not (. libraries library))
|
|
(error (.. "fennel-ls doesn't know about native library " library "\n"
|
|
"The builtin libraries are: "
|
|
(fennel.view (doto (icollect [key (pairs libraries)] key) table.sort)))))
|
|
(. libraries library))
|
|
|
|
(fn get-all-globals [server]
|
|
(let [result []]
|
|
(each [_ library (ipairs server.configuration.native-libraries)]
|
|
(icollect [name (pairs (get-native-library library)) &into result]
|
|
name))
|
|
(icollect [name (pairs (get-lua-version server.configuration.version)) &into result]
|
|
name)))
|
|
|
|
(fn get-global [server global-name]
|
|
(or
|
|
(accumulate [result nil
|
|
_ library (ipairs server.configuration.native-libraries)
|
|
&until result]
|
|
(. (get-native-library library)
|
|
global-name))
|
|
(. (get-lua-version server.configuration.version)
|
|
global-name)))
|
|
|
|
(fn get-builtin [_server builtin-name]
|
|
(or (. specials builtin-name)
|
|
(. macros* builtin-name)))
|
|
|
|
;; TODO get-module-metadata
|
|
|
|
{: get-global
|
|
: get-builtin
|
|
: get-all-globals}
|