diff --git a/src/components/Milkdown/Slash.vue b/src/components/Milkdown/Slash.vue
index 2ea523a..9b890a1 100644
--- a/src/components/Milkdown/Slash.vue
+++ b/src/components/Milkdown/Slash.vue
@@ -1,20 +1,15 @@
diff --git a/src/components/Milkdown/Tooltip.vue b/src/components/Milkdown/Tooltip.vue
index c5e0a13..fbe0d17 100644
--- a/src/components/Milkdown/Tooltip.vue
+++ b/src/components/Milkdown/Tooltip.vue
@@ -1,20 +1,15 @@
diff --git a/src/utils/utils.ts b/src/utils/utils.ts
index e69de29..1d9459e 100644
--- a/src/utils/utils.ts
+++ b/src/utils/utils.ts
@@ -0,0 +1,30 @@
+/* eslint-disable antfu/if-newline */
+import { useInstance } from '@milkdown/vue'
+import { editorViewCtx } from '@milkdown/core'
+import { callCommand } from '@milkdown/utils'
+import {
+ createCodeBlockCommand,
+ toggleStrongCommand,
+} from '@milkdown/preset-commonmark'
+
+const [loading, get] = useInstance()
+
+export const addCodeBlock = (e: Event) => {
+ if (loading.value) return
+ e.preventDefault()
+
+ get()!.action((ctx) => {
+ const view = ctx.get(editorViewCtx)
+ const { dispatch, state } = view
+ const { tr, selection } = state
+ const { from } = selection
+ dispatch(tr.deleteRange(from - 1, from))
+ return callCommand(createCodeBlockCommand.key)(ctx)
+ })
+}
+
+export const toggleBold = (e: Event) => {
+ if (loading.value) return
+ e.preventDefault()
+ get()!.action(callCommand(toggleStrongCommand.key))
+}