Skip to content

Commit 91c9bc2

Browse files
authored
Merge branch 'main' into feat/add-embed-mode
2 parents f08956e + f9f650a commit 91c9bc2

File tree

4 files changed

+21
-2
lines changed

4 files changed

+21
-2
lines changed

src/Repl.vue

+2
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import {
99
injectKeyProps,
1010
} from './types'
1111
import EditorContainer from './editor/EditorContainer.vue'
12+
import type * as monaco from 'monaco-editor-core'
1213
1314
export interface Props {
1415
theme?: 'dark' | 'light'
@@ -37,6 +38,7 @@ export interface Props {
3738
}
3839
editorOptions?: {
3940
showErrorText?: string
41+
monacoOptions?: monaco.editor.IStandaloneEditorConstructionOptions
4042
}
4143
splitPaneOptions?: {
4244
CodeTogglerButtonText?: string

src/monaco/Monaco.vue

+7-1
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,12 @@ const emit = defineEmits<{
3535
const containerRef = ref<HTMLDivElement>()
3636
const ready = ref(false)
3737
const editor = shallowRef<monaco.editor.IStandaloneCodeEditor>()
38-
const { store, autoSave, theme: replTheme } = inject(injectKeyProps)!
38+
const {
39+
store,
40+
autoSave,
41+
theme: replTheme,
42+
editorOptions,
43+
} = inject(injectKeyProps)!
3944
4045
initMonaco(store.value)
4146
@@ -67,6 +72,7 @@ onMounted(async () => {
6772
enabled: false,
6873
},
6974
fixedOverflowWidgets: true,
75+
...editorOptions.value.monacoOptions,
7076
})
7177
editor.value = editorInstance
7278

src/monaco/env.ts

+7-1
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import type { CreateData } from './vue.worker'
88
import vueWorker from './vue.worker?worker'
99
import * as languageConfigs from './language-configs'
1010
import type { LanguageService } from '@vue/language-service'
11+
import { debounce } from '../utils'
1112

1213
let initted = false
1314
export function initMonaco(store: Store) {
@@ -155,7 +156,12 @@ export function loadMonacoEnv(store: Store) {
155156
languages.setLanguageConfiguration('typescript', languageConfigs.ts)
156157
languages.setLanguageConfiguration('css', languageConfigs.css)
157158

158-
store.reloadLanguageTools = () => reloadLanguageTools(store)
159+
let languageToolsPromise: Promise<void> | undefined
160+
store.reloadLanguageTools = debounce(async () => {
161+
;(languageToolsPromise ||= reloadLanguageTools(store)).finally(() => {
162+
languageToolsPromise = undefined
163+
})
164+
}, 250)
159165
languages.onLanguage('vue', () => store.reloadLanguageTools!())
160166

161167
// Support for go to definition

test/main.ts

+5
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,11 @@ const App = {
7272
// OutputTogglerButtonText: '输出 >',
7373
// },
7474
// isEmbedMode: true,
75+
editorOptions: {
76+
monacoOptions: {
77+
// wordWrap: 'on',
78+
},
79+
},
7580
})
7681
},
7782
}

0 commit comments

Comments
 (0)