DTStack / monaco-sql-languages

SQL languages for monaco-editor

Home Page:https://dtstack.github.io/monaco-sql-languages/

Repository from Github https://github.comDTStack/monaco-sql-languagesRepository from Github https://github.comDTStack/monaco-sql-languages

重写 provideCompletionItems 方法时 insertTextRules 设置了默认值

liuxy0551 opened this issue · comments

commented
const  completionItems: languages.CompletionItem[] = unwrappedCompletions.map(
	(item) => ({
		...item,
		insertText:
			item.insertText ??
			(typeof item.label === 'string' ? item.label : item.label.label),
		range: item.range ?? wordRange,
		insertTextRules:
			item.insertTextRules ??
			languages.CompletionItemInsertTextRule.InsertAsSnippet
	})
);

  monaco-editor 中没有设置 insertTextRules 的默认值,加上的话会需要在使用的地方明确传入 insertTextRules 的值,否则可能产生不明就里的问题,比如禅道 #81899。

  补全表名时,表名含有 $ 特殊字符,此时就需要明确 insertTextRules 的值为 KeepWhitespace;对于函数名含有 $ 特殊字符时,需要对函数名中的 $ 字符进行转义 (\\$) 处理,insertTextRules 的值依旧为 InsertAsSnippet

2024-06-18 11 34 21

commented

建议把默认值去掉
这里写成这个默认值,导致Monaco SQL Languages 的补全项的默认行为与 Monaco 原生 API的行为不同,