diff --git a/features/collections.feature b/features/collections.feature index 84677831d58..c0d44ed99da 100644 --- a/features/collections.feature +++ b/features/collections.feature @@ -391,7 +391,7 @@ Feature: Collections When I run jekyll build Then I should get a zero exit status Then the _site directory should exist - And I should see "Second document's output:

Use Jekyll.configuration to build a full configuration for use w/Jekyll.

\n\n

Whatever: foo.bar

" in "_site/index.html" + And I should see "Second document's output:

Use Jekyll.configuration to build a full configuration for use w/Jekyll.

\n\n

Whatever: foo.bar

" in "_site/index.html" Scenario: Documents have an output attribute, which is the converted HTML based on site.config Given I have an "index.html" page that contains "Second document's output: {{ site.documents[2].output }}" diff --git a/lib/jekyll/converters/markdown/kramdown_parser.rb b/lib/jekyll/converters/markdown/kramdown_parser.rb index 8a5543c5ddd..35b663f2e95 100644 --- a/lib/jekyll/converters/markdown/kramdown_parser.rb +++ b/lib/jekyll/converters/markdown/kramdown_parser.rb @@ -99,6 +99,7 @@ def initialize(config) def setup @config["syntax_highlighter"] ||= highlighter @config["syntax_highlighter_opts"] ||= {} + @config["syntax_highlighter_opts"]["default_lang"] ||= "plaintext" @config["syntax_highlighter_opts"]["guess_lang"] = @config["guess_lang"] @config["coderay"] ||= {} # XXX: Legacy. modernize_coderay_config diff --git a/test/test_kramdown.rb b/test/test_kramdown.rb index 437e2a1c030..02d2b0c05e1 100644 --- a/test/test_kramdown.rb +++ b/test/test_kramdown.rb @@ -75,6 +75,44 @@ def fixture_converter(config) refute(result.css(selector).empty?, result.to_html) end + context "when configured" do + setup do + @source = <<~TEXT + ## Code Sample + + def ruby_fu + "Hello" + end + TEXT + end + + should "have 'plaintext' as the default syntax_highlighter language" do + converter = fixture_converter(@config) + parser = converter.setup && converter.instance_variable_get(:@parser) + parser_config = parser.instance_variable_get(:@config) + + assert_equal "plaintext", parser_config.dig("syntax_highlighter_opts", "default_lang") + end + + should "accept the specified default syntax_highlighter language" do + override = { + "kramdown" => { + "syntax_highlighter_opts" => { + "default_lang" => "yaml", + }, + }, + } + converter = fixture_converter(Utils.deep_merge_hashes(@config, override)) + parser = converter.setup && converter.instance_variable_get(:@parser) + parser_config = parser.instance_variable_get(:@config) + + assert_equal "yaml", parser_config.dig("syntax_highlighter_opts", "default_lang") + refute_match %r!