diff --git a/doc/_templates/breadcrumbs.html b/doc/_templates/breadcrumbs.html
index 499354e523d..c0052e0ce53 100644
--- a/doc/_templates/breadcrumbs.html
+++ b/doc/_templates/breadcrumbs.html
@@ -17,4 +17,12 @@
+
+ {%- if display_vcs_link %}
+ {% set vcs_url = pagename | vcs_link_get_url %}
+ {% if vcs_url %}
+ {{ _('Open on GitHub') }}
+ {% endif %}
+ {% endif %}
+
{%- endblock %}
diff --git a/doc/conf.py b/doc/conf.py
index 867d6466e9d..5694d134a38 100644
--- a/doc/conf.py
+++ b/doc/conf.py
@@ -80,6 +80,7 @@ extensions = [
"sphinx_tabs.tabs",
"zephyr.warnings_filter",
"zephyr.doxyrunner",
+ "zephyr.vcs_link",
"notfound.extension",
"zephyr.external_content",
]
@@ -149,6 +150,7 @@ html_context = {
("2.3.0", "/2.3.0/"),
("1.14.1", "/1.14.1/"),
),
+ "display_vcs_link": True,
}
# -- Options for LaTeX output ---------------------------------------------
@@ -221,6 +223,21 @@ warnings_filter_silent = False
notfound_urls_prefix = f"/{version}/" if is_release else "/latest/"
+# -- Options for zephyr.vcs_link ------------------------------------------
+
+vcs_link_version = f"v{version}" if is_release else "main"
+vcs_link_base_url = f"https://github.com/zephyrproject-rtos/zephyr/blob/{vcs_link_version}"
+vcs_link_prefixes = {
+ "samples/.*": "",
+ "boards/.*": "",
+ ".*": "doc",
+}
+vcs_link_exclude = [
+ "reference/kconfig.*",
+ "reference/devicetree/bindings.*",
+ "reference/devicetree/compatibles.*",
+]
+
# -- Options for zephyr.external_content ----------------------------------
external_content_contents = [