vscode-extensions - vscode 扩展补全:如何替换原文?
问题描述
const scarlingProvider = vscode.languages.registerCompletionItemProvider(
'javascript',
{
provideCompletionItems(document, position, token, context) {
const linePrefix = document.lineAt(position).text.substr(0, position.character);
if (!hasChinese(linePrefix)) {
return undefined;
}
const reminds = starling.match(linePrefix)
console.log('reminds: ', reminds);
return [reminds].map(val => {
try {
const item = new vscode.CompletionItem(val, vscode.CompletionItemKind.Method)
item.insertText = `$t('${val}', '${linePrefix.trim()}')`
return item
} catch(err) {
console.log('err: ', err);
}
})
}
},
' '
如上所述,它是完成扩展的一个片段。我希望所选文本替换原始文本,而不是在原始文本之后插入。我该怎么办?
解决方案
您必须为您的完成项目指定一个范围。该模型可以为您提供已调用提供程序的原始文本的位置:
const scarlingProvider = vscode.languages.registerCompletionItemProvider(
'javascript',
{
provideCompletionItems(document, position, token, context) {
const linePrefix = document.lineAt(position).text.substr(0, position.character);
if (!hasChinese(linePrefix)) {
return undefined;
}
const info = model.getWordUntilPosition(position);
const range = {
startLineNumber: position.lineNumber,
startColumn: info.startColumn - 1,
endLineNumber: position.lineNumber,
endColumn: info.endColumn,
};
const reminds = starling.match(linePrefix)
console.log('reminds: ', reminds);
return [reminds].map(val => {
try {
return {
label: "<a label>",
kind: CompletionItemKind.Method,
range,
insertText: `$t('${val}', '${linePrefix.trim()}')`,
detail: "<a description>",
}
} catch(err) {
console.log('err: ', err);
}
})
}
},
' '
推荐阅读
- python - "errorMessage": "'Session' 对象在 AWS 中没有属性 'region_id'"
- jwt - 如何在 React 中实现 JTW 的刷新?
- php - Centos 7 Apache 和 PHP5 错误:包:php-5.6.40-21.el6.remi.x86_64 (remi-php56)
- components - StencilJS - 更新导致整个组件重新渲染的状态
- javascript - 在一个表单中将两个事件监听器添加到两个提交按钮
- arrays - 从 Dart 的地图中迭代和提取键/值的最佳方法?
- javascript - 如何在 javascript 中实现委托(c#)之类的东西?
- apache-spark - 如何将微批量数据聚合到数据帧中以进行 Spark 结构化流式传输?
- java - 在类路径资源 Mongobee 中定义名称为“mongoTemplate”的 bean 创建错误
- fonts - 中文 PDF 字体 STSong-Light 不适用于 Jasper Report