Hi,

I'm developing a Sphinx extension and Django application that I hope
to publicly release soon.  The extension allows for commenting on each
node in the documentation.

Docutils makes the starting line number available for each node in the
RST file. However, the node's line number is not always propagated for
some of the custom Sphinx nodes.

It would helpful if the following small patches can be made to:

* sphinx/directives/code.py
* sphinx/directives/other.py
* sphinx/ext/mathbase.py

as given by the attached Mercurial diff output against the latest tip.

These changes simply ensure that the line number, provided by Docutils
via ``self.lineno``, are available in the node object when the various
``visit_ ....`` methods are called later on.  The line numbers for
most nodes are already available, but these few were not.

These patches do not break any tests.

Thanks,
Kevin

-- 
You received this message because you are subscribed to the Google Groups 
"sphinx-dev" group.
To post to this group, send email to sphinx-...@googlegroups.com.
To unsubscribe from this group, send email to 
sphinx-dev+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/sphinx-dev?hl=en.

diff -r f86cc904f833 sphinx/directives/code.py
--- a/sphinx/directives/code.py Mon Aug 23 17:16:45 2010 +0000
+++ b/sphinx/directives/code.py Tue Aug 24 08:23:50 2010 -0400
@@ -62,6 +62,7 @@
         literal = nodes.literal_block(code, code)
         literal['language'] = self.arguments[0]
         literal['linenos'] = 'linenos' in self.options
+        literal.line = self.lineno
         return [literal]
 
 
@@ -166,6 +167,7 @@
             text = text.expandtabs(self.options['tab-width'])
         retnode = nodes.literal_block(text, text, source=filename)
         retnode.line = 1
+        retnode.attributes['line_number'] = self.lineno 
         if self.options.get('language', ''):
             retnode['language'] = self.options['language']
         if 'linenos' in self.options:
diff -r f86cc904f833 sphinx/directives/other.py
--- a/sphinx/directives/other.py        Mon Aug 23 17:16:45 2010 +0000
+++ b/sphinx/directives/other.py        Tue Aug 24 08:23:50 2010 -0400
@@ -259,6 +259,7 @@
     def run(self):
         node = addnodes.tabular_col_spec()
         node['spec'] = self.arguments[0]
+        node.line = self.lineno 
         return [node]
 
 
diff -r f86cc904f833 sphinx/ext/mathbase.py
--- a/sphinx/ext/mathbase.py    Mon Aug 23 17:16:45 2010 +0000
+++ b/sphinx/ext/mathbase.py    Tue Aug 24 08:23:50 2010 -0400
@@ -69,6 +69,8 @@
         node['nowrap'] = 'nowrap' in self.options
         node['docname'] = self.state.document.settings.env.docname
         ret = [node]
+        node.line = self.lineno
+        node.source = self.src
         if node['label']:
             tnode = nodes.target('', '', ids=['equation-' + node['label']])
             self.state.document.note_explicit_target(tnode)

Reply via email to