@@ -9,6 +9,7 @@ import type { ViewUpdate } from '@codemirror/view'
99import { keymap } from ' @codemirror/view'
1010import { oneDark } from ' @codemirror/theme-one-dark'
1111import { indentLess , insertTab } from ' @codemirror/commands'
12+ import { html } from ' @codemirror/lang-html'
1213import { debounce } from ' ../utils'
1314
1415export interface Props {
@@ -35,7 +36,12 @@ onMounted(() => {
3536 const state = EditorState .create ({
3637 extensions: [
3738 basicSetup ,
38- language .of (vue ()),
39+ language .of (vue ({
40+ base: html ({
41+ matchClosingTags: true ,
42+ autoCloseTags: true ,
43+ }),
44+ })),
3945 EditorState .tabSize .of (2 ),
4046 EditorView .updateListener .of ((update : ViewUpdate ) => {
4147 if (update .docChanged )
@@ -59,12 +65,22 @@ onMounted(() => {
5965 })
6066
6167 watchEffect (() => {
62- if (props .mode === ' javascript' )
68+ if (props .mode === ' javascript' ) {
6369 editor .dispatch ({ effects: language .reconfigure (javascript ()) })
64- else if (props .mode === ' css' )
70+ }
71+ else if (props .mode === ' css' ) {
6572 editor .dispatch ({ effects: language .reconfigure (css ()) })
66- else
67- editor .dispatch ({ effects: language .reconfigure (vue ()) })
73+ }
74+ else {
75+ editor .dispatch ({
76+ effects: language .reconfigure (vue ({
77+ base: html ({
78+ matchClosingTags: true ,
79+ autoCloseTags: true ,
80+ }),
81+ })),
82+ })
83+ }
6884 })
6985
7086 watchEffect (() => {
0 commit comments