From 8c7d33a8ff6d3ea55b5dc8108d9441521af68ab8 Mon Sep 17 00:00:00 2001 From: Zejun Wu Date: Thu, 20 Sep 2018 16:05:28 -0400 Subject: users_guide: fix sphinx error caused by non-explicit override Encouter following error when `make`: ``` Extension error: The 'ghc-flag' directive is already registered to domain std ``` as we register `ghc-flag` to `std` in `add_object_type` first and then overtride it in `add_directive_to_domain`. Test Plan: make -C utils/haddock/doc html SPHINX_BUILD=/usr/bin/sphinx-build Reviewers: austin, bgamari, patrickdoc Subscribers: rwbarton, carter Differential Revision: https://phabricator.haskell.org/D5161 --- docs/users_guide/flags.py | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-) (limited to 'docs/users_guide/flags.py') diff --git a/docs/users_guide/flags.py b/docs/users_guide/flags.py index 284b5e06cc..0e56bdfcc3 100644 --- a/docs/users_guide/flags.py +++ b/docs/users_guide/flags.py @@ -48,8 +48,6 @@ from docutils import nodes from docutils.parsers.rst import Directive, directives from sphinx import addnodes from sphinx.domains.std import GenericObject -from sphinx.domains import ObjType -from sphinx.roles import XRefRole from sphinx.errors import SphinxError from utils import build_table_from_list @@ -601,20 +599,15 @@ def purge_flags(app, env, docname): ### Initialization def setup(app): - # Yuck: We can't use app.add_object_type since we need to provide the - # Directive instance ourselves. - std_object_types = app.registry.domain_object_types.setdefault('std', {}) # Add ghc-flag directive, and override the class with our own - app.add_directive_to_domain('std', 'ghc-flag', Flag) - app.add_role_to_domain('std', 'ghc-flag', XRefRole()) - std_object_types['ghc-flag'] = ObjType('ghc-flag', 'ghc-flag') + app.add_object_type('ghc-flag', 'ghc-flag') + app.add_directive_to_domain('std', 'ghc-flag', Flag, override=True) # Add extension directive, and override the class with our own - app.add_directive_to_domain('std', 'extension', LanguageExtension) - app.add_role_to_domain('std', 'extension', XRefRole()) - std_object_types['extension'] = ObjType('ghc-flag', 'ghc-flag') - + app.add_object_type('extension', 'extension') + app.add_directive_to_domain('std', 'extension', LanguageExtension, + override=True) # NB: language-extension would be misinterpreted by sphinx, and produce # lang="extensions" XML attributes -- cgit v1.2.1