【问题标题】:Same CompletionItemProvider works in javascript but not in json files相同的 CompletionItemProvider 适用于 javascript 但不适用于 json 文件
【发布时间】:2020-12-26 08:45:57
【问题描述】:
    context.subscriptions.push(vscode.languages.registerCompletionItemProvider(['json', 'javascript'], {
        provideCompletionItems: completionProvider,
    }, ...['"', '/']))
}

completionProvider (document: vscode.TextDocument, position: vscode.Position) => {
    return ['foo', 'foo2', 'foo3'].map(item => ({ label: item })) 
}

js文件可以,json文件不行。 JSON类型的文件有什么机制可以防止智能吗? enter image description here

【问题讨论】:

  • 请分享一段可以复制的代码。
  • completionProvider function ``` export default (document: vscode.TextDocument, position: vscode.Position) => { return ['foo', 'foo2', 'foo3'].map(item = >({标签:项目}))}```

标签: typescript visual-studio-code plugins vscode-extensions


【解决方案1】:

这是一段有效的代码:

context.subscriptions.push(vscode.languages.registerCompletionItemProvider(

  ['json', 'javascript'],
  {
    provideCompletionItems(document, position) {
      return ['foo', 'foo2', 'foo3'].map(item => {
          let completionItem = new vscode.CompletionItem(item);  // change to this
          completionItem.range = new vscode.Range(position, position);  // you need this for json
          return completionItem;
      })
    }
  },
  ...['"', "/"]
  )
); 

range 选项专门用于 json 文件。例如,它与 json 中的 wordjavascript 不同有关。见Custom Extension for JSON Completion Does Not Work in Double Quoteshttps://stackoverflow.com/a/64593598/836330

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-05
    • 2018-03-11
    • 1970-01-01
    • 1970-01-01
    • 2022-10-01
    • 2022-11-21
    相关资源
    最近更新 更多