Skip to content

Commit

Permalink
Ensure NikolaPygmentsHTML is always used with Markdown
Browse files Browse the repository at this point in the history
  • Loading branch information
Kwpolska committed Apr 24, 2022
1 parent 3ba185c commit 7e2fd4f
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 1 deletion.
9 changes: 8 additions & 1 deletion nikola/plugins/compile/markdown/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,13 +33,20 @@

from nikola import shortcodes as sc
from nikola.plugin_categories import PageCompiler
from nikola.utils import makedirs, req_missing, write_metadata, LocaleBorg, map_metadata
from nikola.utils import makedirs, req_missing, write_metadata, LocaleBorg, map_metadata, NikolaPygmentsHTML

try:
from markdown import Markdown
except ImportError:
Markdown = None

# Override Pygments formatter for Markdown.
try:
import markdown.extensions.codehilite
markdown.extensions.codehilite.get_formatter_by_name = lambda _, **args: NikolaPygmentsHTML(**args)
except ImportError:
pass


class ThreadLocalMarkdown(threading.local):
"""Convert Markdown to HTML using per-thread Markdown objects.
Expand Down
12 changes: 12 additions & 0 deletions nikola/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -1708,6 +1708,18 @@ def wrap(self, source, *args):

# For consistency, override the default formatter.
pygments.formatters._formatter_cache['HTML'] = NikolaPygmentsHTML
pygments.formatters._formatter_cache['html'] = NikolaPygmentsHTML
_original_find_formatter_class = pygments.formatters.find_formatter_class


def nikola_find_formatter_class(alias):
"""A Nikola-specific version of find_formatter_class."""
if alias.lower().contains('html'):
return NikolaPygmentsHTML
return _original_find_formatter_class(alias)


pygments.formatters.find_formatter_class = nikola_find_formatter_class


def get_displayed_page_number(i, num_pages, site):
Expand Down

0 comments on commit 7e2fd4f

Please sign in to comment.