From 55d5b9abdc9e86376b5ad25802ba9eed8b0358d9 Mon Sep 17 00:00:00 2001 From: Shuhei Kadowaki Date: Sun, 16 Feb 2020 02:17:16 +0900 Subject: [PATCH 1/3] really erase module input --- src/docs.jl | 32 ++++++++++++++++++++------------ test/docs.jl | 16 +++++++--------- 2 files changed, 27 insertions(+), 21 deletions(-) diff --git a/src/docs.jl b/src/docs.jl index 6cf2d5d1..9931d8e2 100644 --- a/src/docs.jl +++ b/src/docs.jl @@ -9,31 +9,39 @@ handle("searchdocs") do data exportedonly = exportedOnly || false, allPackages || false ] = data - searchdocs′( - needle; + return searchdocs′( + needle, # kwargs to be passed to `DocSeeker.searchdocs`: # TODO: configuration for `maxreturns` - loaded = !allPackages, mod = getmodule(mod), exportedonly = exportedonly, name_only = name_only + !allPackages, mod, exportedonly, name_only ) end -function searchdocs′(needle; kwargs...) - items = _searchdocs(needle; kwargs...) - return processdocs(items) +function searchdocs′(needle, loaded = true, mod = "Main", exportedonly = false, name_only = false) + searchmod = getmodule(mod) + + items, actualmod = _searchdocs(needle, loaded, searchmod, exportedonly, name_only) + results = processdocs(items) + + # erase module input if the actual searched module has been changed + push!(results, :shoulderase => searchmod ≠ actualmod) + + return results end -function _searchdocs(needle; kwargs...) +function _searchdocs(needle, loaded = true, mod = Main, exportedonly = false, name_only = false) identifiers = split(needle, '.') head = string(identifiers[1]) - mod = get(kwargs, :mod, Main) - if head ≠ needle && (nextmod = getfield′(mod, head)) isa Module + if loaded && head ≠ needle && (nextmod = getfield′(mod, head)) isa Module # if `head` is a module, update `needle` and `mod` nextneedle = join(identifiers[2:end], '.') - nextkwargs = Dict(k => (k === :mod ? nextmod : v) for (k, v) in kwargs) - return _searchdocs(nextneedle; nextkwargs...) + return _searchdocs(nextneedle, loaded, nextmod, exportedonly, name_only) end - return @errs searchdocs(needle; kwargs...) + return @errs searchdocs( + needle; + loaded = loaded, mod = mod, exportedonly = exportedonly, name_only = name_only + ), mod end function processdocs(items) diff --git a/test/docs.jl b/test/docs.jl index 88afe7ee..d3d3a6ea 100644 --- a/test/docs.jl +++ b/test/docs.jl @@ -1,16 +1,14 @@ @testset "docs" begin @testset "searchdocs" begin - using Atom: searchdocs′, _searchdocs + using Atom: searchdocs′ + # don't error on fallback case @test !searchdocs′("sin")[:error] - # module awareness - @test all(_searchdocs("getfield′"; mod = "Atom")) do (score, docobj) - docobj.mod == "Atom" - end - # strip module accessor - @test all(_searchdocs("Atom.getfield′"; mod = "Main")) do (score, docobj) - docobj.mod == "Atom" - end + + # don't erase module input when it's used + @test !searchdocs′("getfield′", true, "Atom")[:shoulderase] + # erase module input when it's replaced by module prefix in search text + @test searchdocs′("Atom.getfield′", true, "Main")[:shoulderase] end @testset "moduleinfo" begin From a8d9da9d96ce6269ee955c5e238b245318ee46dc Mon Sep 17 00:00:00 2001 From: Shuhei Kadowaki Date: Sun, 16 Feb 2020 02:17:28 +0900 Subject: [PATCH 2/3] update to internal change in Pkg.jl --- src/docs.jl | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/docs.jl b/src/docs.jl index 9931d8e2..8307265d 100644 --- a/src/docs.jl +++ b/src/docs.jl @@ -99,7 +99,8 @@ ispackage(mod) = Base.find_package(mod) ≠ nothing function packageinfo(mod) path = DocSeeker.readmepath(mod) readme = ispath(path) ? String(read(path)) : "" - description = Markdown.parse(mod ∈ values(Pkg.Types.stdlib()) ? "## Standard library package `$(mod)`" : readme) + stdlibs = @static isdefined(Pkg.Types, :stdlibs) ? Pkg.Types.stdlibs() : Pkg.Types.stdlib() + description = Markdown.parse(mod ∈ values(stdlibs) ? "## Standard library package `$(mod)`" : readme) return Hiccup.div( renderMD(description), From a5930abd69acb3a768df066e54ebf8dbf74e5e8d Mon Sep 17 00:00:00 2001 From: Shuhei Kadowaki Date: Sun, 16 Feb 2020 02:21:45 +0900 Subject: [PATCH 3/3] I forgot to include the file I wrote ... --- test/runtests.jl | 1 + 1 file changed, 1 insertion(+) diff --git a/test/runtests.jl b/test/runtests.jl index 9c7279d5..8ce27151 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -59,3 +59,4 @@ include("completions.jl") include("goto.jl") include("datatip.jl") include("workspace.jl") +include("docs.jl")