Skip to content

Commit 49ea88d

Browse files
committed
wip
1 parent 639f6e1 commit 49ea88d

File tree

4 files changed

+339
-229
lines changed

4 files changed

+339
-229
lines changed

apps/language_server/lib/language_server/markdown_utils.ex

Lines changed: 40 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -55,107 +55,114 @@ defmodule ElixirLS.LanguageServer.MarkdownUtils do
5555
end
5656

5757
# erlang name
58-
defp get_metadata_entry_md({:name, _text}), do: nil
58+
def get_metadata_entry_md({:name, _text}), do: nil
5959

6060
# erlang signature
61-
defp get_metadata_entry_md({:signature, _text}), do: nil
61+
def get_metadata_entry_md({:signature, _text}), do: nil
6262

6363
# erlang edit_url
64-
defp get_metadata_entry_md({:edit_url, _text}), do: nil
64+
def get_metadata_entry_md({:edit_url, _text}), do: nil
6565

6666
# erlang :otp_doc_vsn
67-
defp get_metadata_entry_md({:otp_doc_vsn, _text}), do: nil
67+
def get_metadata_entry_md({:otp_doc_vsn, _text}), do: nil
6868

6969
# erlang :source
70-
defp get_metadata_entry_md({:source, _text}), do: nil
70+
def get_metadata_entry_md({:source, _text}), do: nil
7171

7272
# erlang :types
73-
defp get_metadata_entry_md({:types, _text}), do: nil
73+
def get_metadata_entry_md({:types, _text}), do: nil
7474

7575
# erlang :group
76-
defp get_metadata_entry_md({:group, _group}), do: nil
76+
def get_metadata_entry_md({:group, _group}), do: nil
7777

7878
# erlang :equiv
7979
# OTP < 27
80-
defp get_metadata_entry_md({:equiv, {:function, name, arity}}) do
80+
def get_metadata_entry_md({:equiv, {:function, name, arity}}) do
8181
"**Equivalent to** #{name}/#{arity}"
8282
end
8383

8484
# OTP >= 27
85-
defp get_metadata_entry_md({:equiv, text}) when is_binary(text) do
85+
def get_metadata_entry_md({:equiv, text}) when is_binary(text) do
8686
"**Equivalent to** #{text}"
8787
end
8888

89-
defp get_metadata_entry_md({:deprecated, text}) when is_binary(text) do
89+
def get_metadata_entry_md({:deprecated, text}) when is_binary(text) do
9090
"**Deprecated** #{text}"
9191
end
9292

93-
defp get_metadata_entry_md({:since, text}) when is_binary(text) do
93+
def get_metadata_entry_md({:since, text}) when is_binary(text) do
9494
"**Since** #{text}"
9595
end
9696

97-
defp get_metadata_entry_md({:guard, true}) do
97+
def get_metadata_entry_md({:guard, true}) do
9898
"**Guard**"
9999
end
100100

101-
defp get_metadata_entry_md({:hidden, true}) do
101+
def get_metadata_entry_md({:hidden, true}) do
102102
"**Hidden**"
103103
end
104104

105-
defp get_metadata_entry_md({:builtin, true}) do
105+
def get_metadata_entry_md({:builtin, true}) do
106106
"**Built-in**"
107107
end
108108

109-
defp get_metadata_entry_md({:implementing, module}) when is_atom(module) do
109+
def get_metadata_entry_md({:implementing, module}) when is_atom(module) do
110110
"**Implementing behaviour** #{inspect(module)}"
111111
end
112112

113-
defp get_metadata_entry_md({:implementing_module_app, app}) when is_atom(app) do
113+
def get_metadata_entry_md({:implementing_module_app, app}) when is_atom(app) do
114114
"**Behaviour defined in application** #{to_string(app)}"
115115
end
116116

117-
defp get_metadata_entry_md({:app, app}) when is_atom(app) do
117+
def get_metadata_entry_md({:app, app}) when is_atom(app) do
118118
"**Application** #{to_string(app)}"
119119
end
120120

121-
defp get_metadata_entry_md({:optional, true}) do
121+
def get_metadata_entry_md({:optional, true}) do
122122
"**Optional**"
123123
end
124124

125-
defp get_metadata_entry_md({:optional, false}), do: nil
125+
def get_metadata_entry_md({:optional, false}), do: nil
126126

127-
defp get_metadata_entry_md({:overridable, true}) do
127+
def get_metadata_entry_md({:overridable, true}) do
128128
"**Overridable**"
129129
end
130130

131-
defp get_metadata_entry_md({:overridable, false}), do: nil
131+
def get_metadata_entry_md({:overridable, false}), do: nil
132132

133-
defp get_metadata_entry_md({:opaque, true}) do
133+
def get_metadata_entry_md({:opaque, true}) do
134134
"**Opaque**"
135135
end
136136

137-
defp get_metadata_entry_md({:defaults, _}), do: nil
137+
def get_metadata_entry_md({:defaults, _}), do: nil
138138

139-
defp get_metadata_entry_md({:delegate_to, {m, f, a}})
140-
when is_atom(m) and is_atom(f) and is_integer(a) do
139+
def get_metadata_entry_md({:delegate_to, {m, f, a}})
140+
when is_atom(m) and is_atom(f) and is_integer(a) do
141141
"**Delegates to** #{inspect(m)}.#{f}/#{a}"
142142
end
143143

144-
defp get_metadata_entry_md({:behaviours, []}), do: nil
144+
def get_metadata_entry_md({:behaviours, []}), do: nil
145145

146-
defp get_metadata_entry_md({:behaviours, list})
147-
when is_list(list) do
146+
def get_metadata_entry_md({:behaviours, list})
147+
when is_list(list) do
148148
"**Implements** #{Enum.map_join(list, ", ", &inspect/1)}"
149149
end
150150

151-
defp get_metadata_entry_md({:source_annos, _}), do: nil
151+
def get_metadata_entry_md({:source_annos, _}), do: nil
152152

153-
defp get_metadata_entry_md({:source_path, _}), do: nil
153+
def get_metadata_entry_md({:source_path, _}), do: nil
154154

155-
defp get_metadata_entry_md({:spark_opts, _}), do: nil
155+
def get_metadata_entry_md({:spark_opts, _}), do: nil
156156

157-
defp get_metadata_entry_md({key, value}) do
158-
"**#{key}** #{inspect(value)}"
157+
# Filter out complex attribute/spec metadata that can't be serialized
158+
def get_metadata_entry_md({:attribute, _}), do: nil
159+
160+
def get_metadata_entry_md({key, value}) do
161+
try do
162+
"**#{key}** #{inspect(value)}"
163+
rescue
164+
_ -> nil
165+
end
159166
end
160167

161168
@doc """

0 commit comments

Comments
 (0)