diff options
author | Takeshi KOMIYA <i.tkomiya@gmail.com> | 2021-01-25 16:52:45 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-01-25 16:52:45 +0300 |
commit | d6498f820987b1ed40225d505a94c7a2096bc5fd (patch) | |
tree | 98d876cb80b1dbf0496f909bbdac8eab0215e0ed /sphinx/ext | |
parent | 37b07ca7a0584668373e550fa45f837953286854 (diff) | |
parent | 8dc8c0142584e29f81440eea7c7470f4563c4014 (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.py | 13 |
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') |