diff --git a/lib/ex_doc/formatter/html/autolink.ex b/lib/ex_doc/formatter/html/autolink.ex
index 21b094181..0185cb16a 100644
--- a/lib/ex_doc/formatter/html/autolink.ex
+++ b/lib/ex_doc/formatter/html/autolink.ex
@@ -93,11 +93,13 @@ defmodule ExDoc.Formatter.HTML.Autolink do
entry <- [doc.id | doc.defaults],
do: prefix <> module.id <> "." <> entry
+ lib_dirs = extra_lib_dirs ++ elixir_lib_dirs() ++ erlang_lib_dirs()
+
%{
aliases: aliases,
docs_refs: docs_refs ++ types_refs,
extension: extension,
- lib_dirs: extra_lib_dirs ++ elixir_lib_dirs() ++ erlang_lib_dirs(),
+ lib_dirs: lib_dirs,
modules_refs: modules_refs
}
end
@@ -562,7 +564,7 @@ defmodule ExDoc.Formatter.HTML.Autolink do
nil
path ->
- path = List.to_string(path)
+ path = path |> List.to_string() |> Path.expand()
lib_dirs
|> Enum.filter(fn {lib_dir, _} -> String.starts_with?(path, lib_dir) end)
@@ -594,17 +596,17 @@ defmodule ExDoc.Formatter.HTML.Autolink do
path =
case :code.where_is_file('Elixir.Kernel.beam') do
:non_existing -> ""
- path -> List.to_string(path)
+ path -> path |> List.to_string() |> Path.expand()
end
if File.exists?(path) do
- path =
+ elixir_root_lib =
path
|> Path.dirname()
|> Path.dirname()
|> Path.dirname()
- path <> "/" <> app <> "/ebin"
+ elixir_root_lib <> "/" <> app <> "/ebin"
else
# if beam file doesn't exists it's likely an escript
Path.dirname(path)