Commits

Georg Brandl  committed c574ec1

When highlighting Python code, ignore extra indentation before
trying to parse it as Python.

  • Participants
  • Parent commits 90b8616

Comments (0)

Files changed (4)

 Release 0.6.2 (in development)
 ==============================
 
+* When highlighting Python code, ignore extra indentation before
+  trying to parse it as Python.
+
 * #191: Don't escape the tilde in URIs in LaTeX.
 
 * Don't consider contents of source comments for the search index.

File sphinx/highlighting.py

 import cgi
 import re
 import parser
+import textwrap
 
 from sphinx.util.texescape import tex_hl_escape_map
 
         # Make sure it ends in a newline
         src += '\n'
 
+        # Ignore consistent indentation.
+        if src.lstrip('\n').startswith(' '):
+            src = textwrap.dedent(src)
+
         # Replace "..." by a mark which is also a valid python expression
         # (Note, the highlighter gets the original source, this is only done
         #  to allow "..." in code and still highlight it as Python code.)

File tests/root/includes.txt

+Testing downloadable files
+==========================
+
+Download :download:`img.png` here.
+Download :download:`this <subdir/img.png>` there.
+Don't download :download:`this <nonexisting.png>`.
+
 Test file and literal inclusion
 ===============================
 
    :start-after: coding: utf-8
    :end-before: class Foo
 
+Test if dedenting before parsing works.
 
-Testing downloadable files
-==========================
+.. highlight:: python
 
-Download :download:`img.png` here.
-Download :download:`this <subdir/img.png>` there.
-Don't download :download:`this <nonexisting.png>`.
+.. cssclass:: inc-pyobj-dedent
+.. literalinclude:: literal.inc
+   :pyobject: Bar.baz

File tests/test_build.py

 http://www.python.org/logo.png
 %(root)s/includes.txt:: (WARNING/2) Encoding 'utf-8-sig' used for reading \
 included file u'wrongenc.inc' seems to be wrong, try giving an :encoding: option
-%(root)s/includes.txt:56: WARNING: download file not readable: nonexisting.png
+%(root)s/includes.txt:4: WARNING: download file not readable: nonexisting.png
 """
 
 HTML_WARNINGS = ENV_WARNINGS + """\
             r'^class Foo:\n    pass\nclass Bar:\n$',
         ".//div[@class='inc-startend highlight-text']/div/pre":
             ur'^foo = u"Including Unicode characters: üöä"\n$',
+        ".//div[@class='inc-pyobj-dedent highlight-python']/div/pre/span":
+            r'def',
     })
     HTML_XPATH['subdir/includes.html'].update({
         ".//pre/span": 'line 1',