Skip to content

Commit 5258bd7

Browse files
committed
refactor: implement debounced async linting in CodemirrorEditor
--bug=1057664 --user=刘瑞斌 【工具】创建工具,工具内容输入特定的内容页面会崩溃 https://www.tapd.cn/62980211/s/1726594
1 parent 8625dd5 commit 5258bd7

File tree

1 file changed

+24
-13
lines changed

1 file changed

+24
-13
lines changed

ui/src/components/codemirror-editor/index.vue

Lines changed: 24 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -98,19 +98,30 @@ const regexpLinter = linter(async (view) => {
9898
if (!lintResults || lintResults.length === 0) {
9999
return diagnostics
100100
}
101-
lintResults.forEach((element: any) => {
102-
const range = getRangeFromLineAndColumn(
103-
view.state,
104-
element.line,
105-
element.column,
106-
element.endColumn,
107-
)
108-
diagnostics.push({
109-
from: range.form,
110-
to: range.to,
111-
severity: element.type,
112-
message: element.message,
113-
})
101+
// 限制诊断数量,避免过多诊断信息
102+
const maxDiagnostics = 50
103+
const limitedResults = lintResults.slice(0, maxDiagnostics)
104+
105+
limitedResults.forEach((element: any) => {
106+
try {
107+
const range = getRangeFromLineAndColumn(
108+
view.state,
109+
element.line,
110+
element.column,
111+
element.endColumn,
112+
)
113+
// 验证范围有效性
114+
if (range.form >= 0 && range.to >= range.form) {
115+
diagnostics.push({
116+
from: range.form,
117+
to: range.to,
118+
severity: element.type === 'error' ? 'error' : 'warning',
119+
message: element.message,
120+
})
121+
}
122+
} catch (error) {
123+
// console.error('Error processing lint result:', error)
124+
}
114125
})
115126
return diagnostics
116127
})

0 commit comments

Comments
 (0)