🚧 Optimize
This commit is contained in:
@@ -26,10 +26,10 @@ onMounted(async () => {
|
||||
|
||||
// 从URL查询参数中获取documentId
|
||||
const urlDocumentId = windowStore.currentDocumentId ? parseInt(windowStore.currentDocumentId) : undefined;
|
||||
|
||||
|
||||
// 初始化文档存储,优先使用URL参数中的文档ID
|
||||
await documentStore.initialize(urlDocumentId);
|
||||
|
||||
|
||||
// 设置编辑器容器
|
||||
editorStore.setEditorContainer(editorElement.value);
|
||||
|
||||
@@ -42,12 +42,14 @@ onBeforeUnmount(() => {
|
||||
if (editorElement.value) {
|
||||
editorElement.value.removeEventListener('wheel', wheelHandler);
|
||||
}
|
||||
editorStore.clearAllEditors();
|
||||
|
||||
});
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div class="editor-container">
|
||||
<LoadingScreen v-if="editorStore.isLoading && configStore.config.general?.enableLoadingAnimation" text="VOIDRAFT" />
|
||||
<LoadingScreen v-if="editorStore.isLoading && configStore.config.general?.enableLoadingAnimation" text="VOIDRAFT"/>
|
||||
<div ref="editorElement" class="editor"></div>
|
||||
<Toolbar/>
|
||||
</div>
|
||||
|
||||
@@ -16,7 +16,7 @@ export const tabHandler = (view: EditorView, tabSize: number, tabType: TabType):
|
||||
}
|
||||
|
||||
// 根据tabType创建缩进字符
|
||||
const indent = tabType === 'spaces' ? ' '.repeat(tabSize) : '\t';
|
||||
const indent = tabType === TabType.TabTypeSpaces ? ' '.repeat(tabSize) : '\t';
|
||||
|
||||
// 在光标位置插入缩进字符
|
||||
const {state, dispatch} = view;
|
||||
@@ -29,7 +29,7 @@ export const getTabExtensions = (tabSize: number, enableTabIndent: boolean, tabT
|
||||
const extensions: Extension[] = [];
|
||||
|
||||
// 根据tabType设置缩进单位
|
||||
const indentStr = tabType === 'spaces' ? ' '.repeat(tabSize) : '\t';
|
||||
const indentStr = tabType === TabType.TabTypeSpaces ? ' '.repeat(tabSize) : '\t';
|
||||
extensions.push(tabSizeCompartment.of(indentUnit.of(indentStr)));
|
||||
|
||||
// 如果启用了Tab缩进,添加自定义Tab键映射
|
||||
@@ -59,7 +59,7 @@ export const updateTabConfig = (
|
||||
if (!view) return;
|
||||
|
||||
// 根据tabType更新indentUnit配置
|
||||
const indentStr = tabType === 'spaces' ? ' '.repeat(tabSize) : '\t';
|
||||
const indentStr = tabType === TabType.TabTypeSpaces ? ' '.repeat(tabSize) : '\t';
|
||||
view.dispatch({
|
||||
effects: tabSizeCompartment.reconfigure(indentUnit.of(indentStr))
|
||||
});
|
||||
|
||||
@@ -38,9 +38,6 @@ export interface CodeBlockOptions {
|
||||
|
||||
/** 新建块时的默认语言 */
|
||||
defaultLanguage?: SupportedLanguage;
|
||||
|
||||
/** 新建块时是否默认启用自动检测(添加-a标记) */
|
||||
defaultAutoDetect?: boolean;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -87,7 +84,6 @@ export function createCodeBlockExtension(options: CodeBlockOptions = {}): Extens
|
||||
showBackground = true,
|
||||
enableAutoDetection = true,
|
||||
defaultLanguage = 'text',
|
||||
defaultAutoDetect = true,
|
||||
} = options;
|
||||
|
||||
return [
|
||||
|
||||
@@ -83,56 +83,10 @@ export interface EditorOptions {
|
||||
defaultBlockAutoDetect: boolean;
|
||||
}
|
||||
|
||||
// 语言信息接口
|
||||
export interface LanguageInfo {
|
||||
name: SupportedLanguage;
|
||||
auto: boolean; // 是否自动检测语言
|
||||
}
|
||||
|
||||
// 位置范围接口
|
||||
export interface Range {
|
||||
from: number;
|
||||
to: number;
|
||||
}
|
||||
|
||||
// 代码块核心接口
|
||||
export interface CodeBlock {
|
||||
language: LanguageInfo;
|
||||
content: Range; // 内容区域
|
||||
delimiter: Range; // 分隔符区域
|
||||
range: Range; // 整个块区域(包括分隔符和内容)
|
||||
}
|
||||
|
||||
// 代码块解析选项
|
||||
export interface ParseOptions {
|
||||
fallbackLanguage?: SupportedLanguage;
|
||||
enableAutoDetection?: boolean;
|
||||
}
|
||||
|
||||
// 分隔符格式常量
|
||||
export const DELIMITER_REGEX = /^\n∞∞∞([a-zA-Z0-9_-]+)(-a)?\n/gm;
|
||||
export const DELIMITER_PREFIX = '\n∞∞∞';
|
||||
export const DELIMITER_SUFFIX = '\n';
|
||||
export const AUTO_DETECT_SUFFIX = '-a';
|
||||
|
||||
// 代码块操作类型
|
||||
export type BlockOperation =
|
||||
| 'insert-after'
|
||||
| 'insert-before'
|
||||
| 'delete'
|
||||
| 'move-up'
|
||||
| 'move-down'
|
||||
| 'change-language';
|
||||
|
||||
// 代码块状态更新事件
|
||||
export interface BlockStateUpdate {
|
||||
blocks: CodeBlock[];
|
||||
activeBlockIndex: number;
|
||||
operation?: BlockOperation;
|
||||
}
|
||||
|
||||
// 语言检测结果
|
||||
export interface LanguageDetectionResult {
|
||||
language: SupportedLanguage;
|
||||
confidence: number;
|
||||
}
|
||||
Reference in New Issue
Block a user