Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/sphinx-doc/sphinx.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTakeshi KOMIYA <i.tkomiya@gmail.com>2021-01-25 16:52:45 +0300
committerGitHub <noreply@github.com>2021-01-25 16:52:45 +0300
commitd6498f820987b1ed40225d505a94c7a2096bc5fd (patch)
tree98d876cb80b1dbf0496f909bbdac8eab0215e0ed /sphinx/ext
parent37b07ca7a0584668373e550fa45f837953286854 (diff)
parent8dc8c0142584e29f81440eea7c7470f4563c4014 (diff)
Merge pull request #8757 from tk0miya/8756_viewcode_purge_doc
Fix #8756: viewcode: highlighted code is generated even if not referenced
Diffstat (limited to 'sphinx/ext')
-rw-r--r--sphinx/ext/viewcode.py13
1 files changed, 13 insertions, 0 deletions
diff --git a/sphinx/ext/viewcode.py b/sphinx/ext/viewcode.py
index baf86dbbf..21cff6a03 100644
--- a/sphinx/ext/viewcode.py
+++ b/sphinx/ext/viewcode.py
@@ -149,6 +149,18 @@ def env_merge_info(app: Sphinx, env: BuildEnvironment, docnames: Iterable[str],
env._viewcode_modules.update(other._viewcode_modules) # type: ignore
+def env_purge_doc(app: Sphinx, env: BuildEnvironment, docname: str) -> None:
+ modules = getattr(env, '_viewcode_modules', {})
+
+ for modname, (code, tags, used, refname) in list(modules.items()):
+ for fullname in list(used):
+ if used[fullname] == docname:
+ used.pop(fullname)
+
+ if len(used) == 0:
+ modules.pop(modname)
+
+
class ViewcodeAnchorTransform(SphinxPostTransform):
"""Convert or remove viewcode_anchor nodes depends on builder."""
default_priority = 100
@@ -323,6 +335,7 @@ def setup(app: Sphinx) -> Dict[str, Any]:
app.add_config_value('viewcode_follow_imported_members', True, False)
app.connect('doctree-read', doctree_read)
app.connect('env-merge-info', env_merge_info)
+ app.connect('env-purge-doc', env_purge_doc)
app.connect('html-collect-pages', collect_pages)
app.connect('missing-reference', missing_reference)
# app.add_config_value('viewcode_include_modules', [], 'env')