diff --git a/.vscode/settings.json b/.vscode/settings.json index a651455..b1d6991 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -14,6 +14,7 @@ "highlightjs", "hljs", "markdownit", + "metafile", "octicon", "outfile", "packagejson", diff --git a/src/main.ts b/src/main.ts index ab95614..85eb8b1 100644 --- a/src/main.ts +++ b/src/main.ts @@ -1,9 +1,10 @@ import vscode from "vscode"; +import { changeThemeMode, changeThemeLight, changeThemeDark } from "./commands"; +import { refreshPreview } from "./events"; import markdownItTheme from "./plugins/markdown-it-theme"; import markdownItCodeCopy from "./plugins/markdown-it-code-copy"; import markdownItImage from "./plugins/markdown-it-image"; -import { changeThemeMode, changeThemeLight, changeThemeDark } from "./commands"; -import { refreshPreview } from "./events"; +import markdownItBlockquote from "./plugins/markdown-it-blockquote"; export function activate(context: vscode.ExtensionContext) { // register commands @@ -21,6 +22,7 @@ export function activate(context: vscode.ExtensionContext) { return md .use(markdownItTheme) .use(markdownItCodeCopy) + .use(markdownItBlockquote) .use(markdownItImage(context)) .use(require("markdown-it-emoji")) .use(require("markdown-it-github-headings"), { diff --git a/src/plugins/markdown-it-blockquote.ts b/src/plugins/markdown-it-blockquote.ts new file mode 100644 index 0000000..1d05392 --- /dev/null +++ b/src/plugins/markdown-it-blockquote.ts @@ -0,0 +1,37 @@ +import MarkdownIt from "markdown-it"; +import Token from "markdown-it/lib/token"; + +export default function markdownItBlockquote(md: MarkdownIt) { + md.renderer.rules.blockquote_open = (tokens, idx, options, _env, _self) => { + const token = tokens[idx + 2]; + const types = { + Note: { + class: "color-fg-accent", + icon: ``, + }, + Warning: { + class: "color-fg-attention", + icon: ``, + }, + }; + + const type = token.content.split("**")[1]; + + if (token && type in types) { + token.children.splice(1, 3); + + const customToken = new Token("html_block", "", 0); + + customToken.content = ` + + ${types[type].icon}${type} + + `; + + token.children.unshift(customToken); + + console.log(token.children); + } + return md.renderer.renderToken(tokens, idx, options); + }; +}