Providing a default language for fenced code blocks
See original GitHub issueUse case
In many markdown editors, I can write a fenced code blog and receive plaintext code styling without specifying a language.
E.g. writing this in GitHub markdown:
```
This is some plain text
```
Looks like this:
This is some plain text
Currently, when no language is specified on a fenced code block, this plugin outputs plain <pre>
and <code>
tags without a "language-*"
class applied. In many Prism themes, such as the prism-okaidia theme shown in the plugin docs, this means the code block will not receive any styling. This is unexpected behavior for me.
Proposed Solution
To avoid breaking changes, I propose adding a defaultLanguage
plugin option, which users may want to set to "plain"
. That way a generic code block like this:
```
This is some plain text
```
could be rendered as
<pre class="language-plain"><code class="language-plain">
This is some plain text
</code></pre>
Additional Context
Initially I thought I could set default languages like so:
eleventyConfig.addPlugin(pluginSyntaxHighlight, {
preAttributes: {
class: "language-plain",
},
codeAttributes: {
class: "language-plain",
},
});
However, as brought up in #52 this does not work. Resolving that issue could also resolve this one.
Issue Analytics
- State:
- Created a year ago
- Reactions:2
- Comments:7 (3 by maintainers)
Top GitHub Comments
Code blocks without language are still rendered without a language, even with this:
Am I doing something wrong? I suspect the lib returns here already: https://github.com/11ty/eleventy-plugin-syntaxhighlight/blob/7b7b547fff07f2e60d91c0a7ed3bba1938dbc057/src/markdownSyntaxHighlightOptions.js#L8-L11
and my preAttributes-class-function is never called.
The function is called on code blocks with a language specified though.
For convenience, I’d even prefer the
defaultLanguage
option as suggested by @mattrossmanEdit: I “solved” this problem for myself by using https://github.com/jGleitz/markdown-it-prism instead of this plugin. It supports specifying a defaultLanguage, and I already had a custom markdown-it configuration, so the integration worked easy for me. I’d prefer to use your plugin, but this is an important feature to me.
Just to be clear, I mean something like: