diff --git a/frontend/src/components/Preview.vue b/frontend/src/components/Preview.vue index 3c8d8d41..db583f7c 100644 --- a/frontend/src/components/Preview.vue +++ b/frontend/src/components/Preview.vue @@ -58,6 +58,7 @@ import LinkTargetPlugin from '../plugins/LinkTargetPlugin' import DrawioPlugin from '../plugins/DrawioPlugin' import PlantumlPlugin from '../plugins/PlantumlPlugin' import MermaidPlugin from '../plugins/MermaidPlugin' +import CodePlugin from '../plugins/CodePlugin' import file from '@/lib/file' import env from '@/lib/env' import { encodeMarkdownLink } from '@/lib/utils' @@ -94,6 +95,7 @@ const markdown = Markdown({ .use(MarkdownItToc) .use(MarkdownItECharts) .use(MermaidPlugin) + .use(CodePlugin) export default { name: 'xview', diff --git a/frontend/src/plugins/CodePlugin.js b/frontend/src/plugins/CodePlugin.js new file mode 100644 index 00000000..754f9ad8 --- /dev/null +++ b/frontend/src/plugins/CodePlugin.js @@ -0,0 +1,12 @@ +export default (md) => { + const Fun = fn => (tokens, idx, options, env, slf) => { + if (tokens[idx].attrIndex('title') < 0) { + tokens[idx].attrPush(['title', 'Ctrl + 单击复制代码']) + tokens[idx].attrPush(['onclick', `event.ctrlKey && window.appVm.$bus.emit('copy-text', this.innerText)`]) + } + + return (fn)(tokens, idx, options, env, slf) + } + + md.renderer.rules.code_inline = Fun(md.renderer.rules.code_inline.bind(md.renderer.rules)) +}