Skip to content

Commit 9d51a81

Browse files
committed
feat: get_symbol_server
1 parent 88240a4 commit 9d51a81

File tree

1 file changed

+31
-1
lines changed

1 file changed

+31
-1
lines changed

src/SymbolServer.jl

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
module SymbolServer
22

3-
export SymbolServerInstance, getstore
3+
export SymbolServerInstance, getstore, get_symbol_server
44

55
using Serialization, Pkg, SHA
66
using Base: UUID, Process
@@ -202,6 +202,36 @@ end
202202

203203
const stdlibs = load_core()
204204

205+
206+
VersionFloat(v::VersionNumber) = join(split(string(v),'.')[1:2],'.')
207+
208+
global_env_path = joinpath(homedir(),".julia/environments/v$(VersionFloat(VERSION))")
209+
210+
"""
211+
symbol_server, symbol_extends = get_symbol_server(module_sym::Vector{Symbol}, env_path = global_env_path)
212+
symbol_server, symbol_extends = get_symbol_server(module_sym::Symbol)
213+
symbol_server, symbol_extends = get_symbol_server(module_sym::Nothing = nothing)
214+
215+
Get symbols for the given module or current environment
216+
"""
217+
function get_symbol_server(module_sym::Vector{Symbol}, env_path = global_env_path)
218+
# TODO write these to a file
219+
printstyled("Getting the symbols for the environment at $env_path. Please wait....", color = :yellow)
220+
env = SymbolServer.getenvtree(module_sym)
221+
# symbol_server = SymbolServer.symbols(env)
222+
symbol_server = getstore(SymbolServerInstance("", env_path), env_path)[2]
223+
symbol_extends = SymbolServer.collect_extended_methods(env)
224+
return symbol_server, symbol_extends
225+
end
226+
227+
get_symbol_server(module_sym::Symbol) = get_symbol_server([module_sym])
228+
229+
function get_symbol_server(module_sym::Nothing = nothing)
230+
symbol_server = SymbolServer.stdlibs
231+
symbol_extends = SymbolServer.collect_extended_methods(SymbolServer.stdlibs)
232+
return symbol_server, symbol_extends
233+
end
234+
205235
function _precompile_()
206236
ccall(:jl_generating_output, Cint, ()) == 1 || return nothing
207237
Base.precompile(Tuple{Type{SymbolServer.DataTypeStore},SymbolServer.FakeTypeName,SymbolServer.FakeTypeName,Array{Any,1},Array{Any,1},Array{Symbol,1},Array{Any,1},String,Bool})

0 commit comments

Comments
 (0)