# Proofing · 拼写与语法校对

把文本分段提交给宿主提供的校对 provider，显示临时问题标记。provider 默认为 null，仅安装扩展不会产生校对结果。

把文本分段提交给宿主提供的校对 provider，显示临时问题标记。provider 默认为 null，仅安装扩展不会产生校对结果。

`@quirekit/extension-proofing` · **MIT**

## 编辑器适用范围
层次：**共享文档能力**
| 编辑器 | 状态 | 所需装配与边界 |
| --- | --- | --- |
| Classic | 直接支持 | [createClassicWordPreset](/plugins/reference/create-classic-word-preset) — 使用 createClassicWordPreset 装配 Word 模型、布局与产品适配；具体控件、开关、宿主服务及文件支持以本页说明为准。批注、修订和内容控件的完整创作界面另需 Pro。 |
| Block | 需适配 | 需由宿主连接本页所列服务、目标与生命周期，并验证所选 View 和文档模型。核心接口可复用，但没有一段无宿主参数的通用产品安装代码。 |

“直接支持”指已有上述产品装配；具体交互、宿主服务和格式支持仍有各自条件。[状态与接入规则](/plugins/compatibility)。许可独立显示。

## 接入

```sh
pnpm add @quirekit/extension-proofing@alpha
```

在创建 Editor 时放入 `extensions`。挂载容器、视图和保存由宿主提供，见[快速开始](/guide/quick-start)。

```ts
import { Proofing } from '@quirekit/extension-proofing'
```

安装时按包声明选择兼容版本，外部可用版本以分发源为准。本站使用工作区 Alpha；许可标签来自入口所属包，使用条件见[支持与许可](/support)。

## 按编辑器接入

以下片段沿用已挂载的宿主元素 `element`，宿主负责容器尺寸与保存；退出页面时调用 `instance.destroy()`。已有预设装配的能力不要再重复追加；需要宿主端口的入口应先完成下方配置。

### Classic

使用 createClassicWordPreset 装配 Word 模型、布局与产品适配；具体控件、开关、宿主服务及文件支持以本页说明为准。批注、修订和内容控件的完整创作界面另需 Pro。

[createClassicWordPreset](/plugins/reference/create-classic-word-preset)

```ts
import { createClassicEditor } from '@quirekit/classic-editor'
import '@quirekit/classic-editor/styles.css'
import { createClassicWordDefaultDocument, createClassicWordPreset } from '@quirekit/classic-docx'
import '@quirekit/classic-docx/styles.css'

const instance = createClassicEditor({
  element,
  preset: createClassicWordPreset(),
  document: createClassicWordDefaultDocument(),
})
```

### Block

需由宿主连接本页所列服务、目标与生命周期，并验证所选 View 和文档模型。核心接口可复用，但没有一段无宿主参数的通用产品安装代码。

## 配置

下面是扩展自身的默认选项。预设可以覆盖这些值；它们不等于当前文档属性。配置方法见[配置插件](/plugins/configuration)。

### enabled

是否启用此能力的会话行为。禁用不会删除规范文档内容。

类型：`boolean`

默认：`true`

### provider

校对服务接口。默认 null 不执行检查；宿主提供拼写、语法服务或选择独立 provider 适配包。

类型：`ProofingProvider | null`

默认：`null`

### policy

校对时的策略适配，用于语言、分段或业务范围等规则。

类型：`ProofingDocumentPolicy | null`

默认：`null`

### defaultLanguage

未从文本读取到语言时使用的默认语言；CodeBlock 中则是代码语言值。

类型：`string | null`

默认：`"en-US"`

### debounceMs

连续输入后等待再检查的延迟，单位为毫秒。

类型：`number`

默认：`400`

### maxWaitMs

连续输入期间允许推迟校对的最长时间，单位为毫秒。

类型：`number`

默认：`2000`

### timeoutMs

单次校对请求超时，单位为毫秒。

类型：`number`

默认：`10000`

### maxConcurrentRequests

最多同时执行的校对请求数。

类型：`number`

默认：`2`

### maxSegmentsPerBatch

每批提交的最大文本分段数。

类型：`number`

默认：`40`

### maxCharactersPerBatch

每批提交的最大字符数。

类型：`number`

默认：`8000`

### maxSuggestions

每个校对问题最多保留的建议数。

类型：`number`

默认：`5`

### maxIssues

会话最多保留的问题数量，避免无界增长。

类型：`number`

默认：`2000`

### dictionaryStore

个人词典的宿主持久化接口。未提供时不承诺跨页面保留。

类型：`ProofingDictionaryStore | null`

默认：`null`

### appearance

拼写、语法与风格问题的下划线颜色配置。

类型：`ProofingAppearance`

默认：`{ spelling: "#e5484d", grammar: "#3e63dd", style: "#8e4ec6" }`

### onError

校对发生错误时的回调；用于宿主反馈或记录失败。

类型：`((error: ProofingError) => void) | null`

默认：`null`

### resolveVisibleRange

读取当前可见文档范围，供校对调度优先处理。默认实现使用已挂载视图。

类型：`((editor: QuireEditor) => ProofingRange | null) | null`

默认：`resolveDefaultProofingVisibleRange`

## 命令与运行方式

以下命令由此扩展直接提供，均在当前 Editor 上调用。命令是否可用由已安装 schema、当前选区与保护策略决定；可以先用 `editor.can()` 查询。

| 命令 | 参数签名 |
| --- | --- |
| `setProofingEnabled` | `setProofingEnabled(enabled: boolean)` |
| `recheckProofing` | `recheckProofing()` |
| `replaceProofingIssue` | `replaceProofingIssue(issueId: string, replacement: string)` |
| `ignoreProofingIssue` | `ignoreProofingIssue(issueId: string)` |
| `ignoreProofingWord` | `ignoreProofingWord(word: string)` |
| `addProofingWord` | `addProofingWord(word: string)` |

这里只展示参数签名。接界面时见[命令与控件](/build/commands)，正文变更继续经过同一事务与历史。

接入 provider 后才会检查。可选适配包为 @quirekit/proofing-harper 与 @quirekit/proofing-hunspell；二者是服务实现，不是再放进 extensions 的另一项 Core 扩展。

## 下一步

返回[全部插件](/plugins)，或阅读[配置插件](/plugins/configuration)区分配置、文档属性与命令。

自己定义能力时见[扩展开发](/build/extension)；搭建完整宿主时见[构建产品](/build)。
