2

我想用一些JavaScript代码片段发布Visual Studio代码扩展,但是,我想让用户选择一个选项,而不是另一个。具体而言,我想有两套片断,其中一个产生的JavaScript模块,格式化这样Visual Studio代码:代码段扩展的安装钩

export default class C { } 

出口和另一格式化这样

class C { 
} 

export default C; 

,我想加载基于用户偏好的一个或其他一组摘要。

有什么办法可以支持这样的事情吗?换句话说,当我在市场上发布我的扩展时,是否有任何可以暴露的钩子,这会让用户指示他们偏好哪种格式,因此我可以加载那些片段?

回答

1

我不认为一个分机可以通过JSON文件有助于动态片段,但您的扩展也许可以使用自定义CompletionItemProvider动态返回段,是这样的:

import * as vscode from 'vscode' 

class MySnippetProvider extends vscode.CompletionItemProvider { 
    public provideCompletionItems(
     _document: vscode.TextDocument, 
     _position: vscode.Position, 
     _token: vscode.CancellationToken 
    ): vscode.ProviderResult<vscode.CompletionItem[]> { 
     const item = new vscode.CompletionItem('export snippet', vscode.CompletionItemKind.Snippet) 

     const config = vscode.workspace.getConfiguration('myExtension') 
     if (config.get('option', false)) { 
      item.insertText = new vscode.SnippetString('export default class C { $0 }') 
     } else { 
      item.insertText = new vscode.SnippetString(
`class C { 
    $0 
} 

export default C;`) 
     } 


     return [item] 
    } 

    public resolveCompletionItem(
     item: vscode.CompletionItem, 
     _token: vscode.CancellationToken 
    ) { 
     return item 
    } 
} 
相关问题