users-guide: Make reverse flags addressable via :ghc-flag:
authorBen Gamari <ben@smart-cactus.org>
Sun, 6 Oct 2019 19:31:40 +0000 (15:31 -0400)
committerMarge Bot <ben+marge-bot@smart-cactus.org>
Tue, 8 Oct 2019 09:12:58 +0000 (05:12 -0400)
Previously one could not easily link to the :reverse: flag of a
ghc-flag.

docs/users_guide/flags.py

index c95b9aa..ac5de4c 100644 (file)
@@ -212,8 +212,10 @@ class Flag(GenericFlag):
         # Manually create references
         name_string = ", ".join([':ghc-flag:`'+n+'`' for n in self.names])
         reverse_string = ''
-        if 'reverse' in self.options and self.options['reverse'] != '':
-            reverse_string = ':ghc-flag:`' + self.options['reverse'] + '`'
+        reverse = self.options.get('reverse')
+        if reverse is not None and reverse != '':
+            reverse_string = ':ghc-flag:`' + reverse + '`'
+            self.names += [reverse]
 
         self.register_flag(
             self.names,
@@ -223,6 +225,17 @@ class Flag(GenericFlag):
             self.options['type'],
             reverse_string)
 
+    # Add additional targets
+    def add_target_and_index(self, name, sig, signode):
+
+        GenericFlag.add_target_and_index(self, name, sig, signode)
+
+        reverse = self.options.get('reverse')
+        if reverse is not None and reverse != '':
+            # Make this also addressable via the reverse flag
+            self.env.domaindata['std']['objects']['ghc-flag', reverse] = \
+                self.env.docname, 'ghc-flag-%s' % name
+
 # This class inherits from Sphinx's internal GenericObject, which drives
 # the add_object_type() utility function. We want to keep that tooling,
 # but need to override some of the functionality.