Bladeren bron

doc/sphinx: Stop touching state_machine internals

Instead of just forcefully inserting our kernel-doc input and letting
the state machine stumble over it the recommended way is to create
ViewList, parse that and then return the list of parsed nodes.

Suggested by Jani.

Cc: Jani Nikula <jani.nikula@intel.com>
Cc: linux-doc@vger.kernel.org
Cc: Jonathan Corbet <corbet@lwn.net>
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
Daniel Vetter 9 jaren geleden
bovenliggende
commit
16e161c8c6
1 gewijzigde bestanden met toevoegingen van 9 en 2 verwijderingen
  1. 9 2
      Documentation/sphinx/kernel-doc.py

+ 9 - 2
Documentation/sphinx/kernel-doc.py

@@ -32,6 +32,7 @@ import subprocess
 import sys
 import sys
 
 
 from docutils import nodes, statemachine
 from docutils import nodes, statemachine
+from docutils.statemachine import ViewList
 from docutils.parsers.rst import directives
 from docutils.parsers.rst import directives
 from sphinx.util.compat import Directive
 from sphinx.util.compat import Directive
 
 
@@ -92,8 +93,14 @@ class KernelDocDirective(Directive):
                 sys.stderr.write(err)
                 sys.stderr.write(err)
 
 
             lines = statemachine.string2lines(out, tab_width, convert_whitespace=True)
             lines = statemachine.string2lines(out, tab_width, convert_whitespace=True)
-            self.state_machine.insert_input(lines, source)
-            return []
+            result = ViewList(lines, source)
+
+            node = nodes.section()
+            node.document = self.state.document
+            self.state.nested_parse(result, self.content_offset, node)
+
+            return node.children
+
         except Exception as e:
         except Exception as e:
             env.app.warn('kernel-doc \'%s\' processing failed with: %s' %
             env.app.warn('kernel-doc \'%s\' processing failed with: %s' %
                          (" ".join(cmd), str(e)))
                          (" ".join(cmd), str(e)))