aboutsummaryrefslogtreecommitdiffstats
path: root/markdown/extensions/codehilite.py
diff options
context:
space:
mode:
Diffstat (limited to 'markdown/extensions/codehilite.py')
-rw-r--r--markdown/extensions/codehilite.py33
1 files changed, 23 insertions, 10 deletions
diff --git a/markdown/extensions/codehilite.py b/markdown/extensions/codehilite.py
index bab8c6f..fd8e2f4 100644
--- a/markdown/extensions/codehilite.py
+++ b/markdown/extensions/codehilite.py
@@ -21,6 +21,7 @@ Dependencies:
"""
import markdown
+import warnings
try:
from pygments import highlight
from pygments.lexers import get_lexer_by_name, guess_lexer, TextLexer
@@ -40,7 +41,8 @@ class CodeHilite:
* src: Source string or any object with a .readline attribute.
- * linenos: (Boolean) Turn line numbering 'on' or 'off' (off by default).
+ * linenums: (Boolean) Set line numbering to 'on' (True), 'off' (False) or 'auto'(None).
+ Set to 'auto' by default.
* guess_lang: (Boolean) Turn language auto-detection 'on' or 'off' (on by default).
@@ -54,12 +56,12 @@ class CodeHilite:
"""
- def __init__(self, src=None, linenos=False, guess_lang=True,
+ def __init__(self, src=None, linenums=None, guess_lang=True,
css_class="codehilite", lang=None, style='default',
noclasses=False, tab_length=4):
self.src = src
self.lang = lang
- self.linenos = linenos
+ self.linenums = linenums
self.guess_lang = guess_lang
self.css_class = css_class
self.style = style
@@ -93,7 +95,7 @@ class CodeHilite:
lexer = TextLexer()
except ValueError:
lexer = TextLexer()
- formatter = HtmlFormatter(linenos=self.linenos,
+ formatter = HtmlFormatter(linenos=self.linenums,
cssclass=self.css_class,
style=self.style,
noclasses=self.noclasses)
@@ -107,7 +109,7 @@ class CodeHilite:
classes = []
if self.lang:
classes.append('language-%s' % self.lang)
- if self.linenos:
+ if self.linenums:
classes.append('linenums')
class_str = ''
if classes:
@@ -153,9 +155,9 @@ class CodeHilite:
if m.group('path'):
# path exists - restore first line
lines.insert(0, fl)
- if m.group('shebang'):
- # shebang exists - use line numbers
- self.linenos = True
+ if self.linenums is None and m.group('shebang'):
+ # Overridable and Shebang exists - use line numbers
+ self.linenums = True
else:
# No match
lines.insert(0, fl)
@@ -175,7 +177,7 @@ class HiliteTreeprocessor(markdown.treeprocessors.Treeprocessor):
children = block.getchildren()
if len(children) == 1 and children[0].tag == 'code':
code = CodeHilite(children[0].text,
- linenos=self.config['force_linenos'],
+ linenums=self.config['linenums'],
guess_lang=self.config['guess_lang'],
css_class=self.config['css_class'],
style=self.config['pygments_style'],
@@ -197,7 +199,8 @@ class CodeHiliteExtension(markdown.Extension):
def __init__(self, configs):
# define default configs
self.config = {
- 'force_linenos' : [False, "Force line numbers - Default: False"],
+ 'linenums': [None, "Use lines numbers. True=yes, False=no, None=auto"],
+ 'force_linenos' : [False, "Depreciated! Use 'linenums' instead. Force line numbers - Default: False"],
'guess_lang' : [True, "Automatic language detection - Default: True"],
'css_class' : ["codehilite",
"Set class name for wrapper <div> - Default: codehilite"],
@@ -210,6 +213,16 @@ class CodeHiliteExtension(markdown.Extension):
# convert strings to booleans
if value == 'True': value = True
if value == 'False': value = False
+ if value == 'None': value = None
+
+ if key == 'force_linenos':
+ warnings.warn('The "force_linenos" config setting'
+ ' to the CodeHilite extension is deprecrecated.'
+ ' Use "linenums" instead.', PendingDeprecationWarning)
+ if value:
+ # Carry 'force_linenos' over to new 'linenos'.
+ self.setConfig('linenums', True)
+
self.setConfig(key, value)
def extendMarkdown(self, md, md_globals):