mirror of
https://github.com/livebook-dev/livebook.git
synced 2025-10-06 03:34:57 +08:00
Skip docs requests for remote node intellisense (#2447)
This commit is contained in:
parent
9c2df06b5d
commit
0056a81b7f
2 changed files with 22 additions and 10 deletions
|
@ -1,6 +1,12 @@
|
|||
defmodule Livebook.Intellisense.Docs do
|
||||
# This module is responsible for extracting and normalizing
|
||||
# information like documentation, signatures and specs.
|
||||
#
|
||||
# Note that we only extract the docs information when requested for
|
||||
# for the current node. For remote nodes, making several requests
|
||||
# for docs (which may be necessary if there are multiple modules)
|
||||
# adds to the overall latency. Remote intellisense is primarily used
|
||||
# with remote release nodes, which have docs stripped out anyway.
|
||||
|
||||
@type member_info :: %{
|
||||
kind: member_kind(),
|
||||
|
@ -38,6 +44,8 @@ defmodule Livebook.Intellisense.Docs do
|
|||
Fetches documentation for the given module if available.
|
||||
"""
|
||||
@spec get_module_documentation(module(), node()) :: documentation()
|
||||
def get_module_documentation(_module, node) when node != node(), do: nil
|
||||
|
||||
def get_module_documentation(module, node) do
|
||||
case :erpc.call(node, Code, :fetch_docs, [module]) do
|
||||
{:docs_v1, _, _, format, %{"en" => docstring}, _, _} ->
|
||||
|
@ -75,7 +83,11 @@ defmodule Livebook.Intellisense.Docs do
|
|||
node(),
|
||||
keyword()
|
||||
) :: list(member_info())
|
||||
def lookup_module_members(module, members, node, opts \\ []) do
|
||||
def lookup_module_members(module, members, node, opts \\ [])
|
||||
|
||||
def lookup_module_members(_module, _members, node, _opts) when node != node(), do: []
|
||||
|
||||
def lookup_module_members(module, members, node, opts) do
|
||||
members = MapSet.new(members)
|
||||
kinds = opts[:kinds] || [:function, :macro, :type]
|
||||
|
||||
|
|
|
@ -74,7 +74,7 @@ defmodule Livebook.RemoteIntellisenseTest do
|
|||
label: "RemoteModule",
|
||||
kind: :module,
|
||||
detail: "module",
|
||||
documentation: "RemoteModule module docs",
|
||||
documentation: "No documentation available",
|
||||
insert_text: "RemoteModule"
|
||||
} in Intellisense.get_completion_items("RemoteModule", context, node)
|
||||
end
|
||||
|
@ -85,8 +85,8 @@ defmodule Livebook.RemoteIntellisenseTest do
|
|||
assert %{
|
||||
label: "hello/1",
|
||||
kind: :function,
|
||||
detail: "RemoteModule.hello(message)",
|
||||
documentation: "Hello doc",
|
||||
detail: nil,
|
||||
documentation: "No documentation available",
|
||||
insert_text: "hello(${})"
|
||||
} in Intellisense.get_completion_items("RemoteModule.hel", context, node)
|
||||
end
|
||||
|
@ -97,20 +97,20 @@ defmodule Livebook.RemoteIntellisenseTest do
|
|||
|
||||
assert [
|
||||
%{
|
||||
label: "all_keys/1",
|
||||
label: "unsubscribe/1",
|
||||
kind: :function,
|
||||
detail: ":mnesia.all_keys/1",
|
||||
documentation: _all_keys_doc,
|
||||
insert_text: "all_keys(${})"
|
||||
detail: nil,
|
||||
documentation: "No documentation available",
|
||||
insert_text: "unsubscribe(${})"
|
||||
}
|
||||
] = Intellisense.get_completion_items(":mnesia.all", context, node)
|
||||
] = Intellisense.get_completion_items(":mnesia.unsub", context, node)
|
||||
end
|
||||
|
||||
test "get details", %{node: node} do
|
||||
context = eval(do: nil)
|
||||
|
||||
assert %{contents: [content]} = Intellisense.get_details("RemoteModule", 6, context, node)
|
||||
assert content =~ "RemoteModule module docs"
|
||||
assert content =~ "No documentation available"
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Add table
Reference in a new issue