refactor: implement debounced async linting in CodemirrorEditor

--bug=1057664 --user=刘瑞斌 【工具】创建工具,工具内容输入特定的内容页面会崩溃 https://www.tapd.cn/62980211/s/1726594
This commit is contained in:
CaptainB 2025-07-09 12:08:55 +08:00
parent 8625dd543a
commit 5258bd79d5

View File

@ -98,19 +98,30 @@ const regexpLinter = linter(async (view) => {
if (!lintResults || lintResults.length === 0) {
return diagnostics
}
lintResults.forEach((element: any) => {
const range = getRangeFromLineAndColumn(
view.state,
element.line,
element.column,
element.endColumn,
)
diagnostics.push({
from: range.form,
to: range.to,
severity: element.type,
message: element.message,
})
//
const maxDiagnostics = 50
const limitedResults = lintResults.slice(0, maxDiagnostics)
limitedResults.forEach((element: any) => {
try {
const range = getRangeFromLineAndColumn(
view.state,
element.line,
element.column,
element.endColumn,
)
//
if (range.form >= 0 && range.to >= range.form) {
diagnostics.push({
from: range.form,
to: range.to,
severity: element.type === 'error' ? 'error' : 'warning',
message: element.message,
})
}
} catch (error) {
// console.error('Error processing lint result:', error)
}
})
return diagnostics
})