簡體   English   中英

如何在同一命令中在新文檔中插入文本示例?

[英]How to insert a sample of text in a new document in the same command?

我嘗試將文本樣本放入在同一命令中創建的新文檔中。

import * as vscode from 'vscode';
import * as fs from 'fs'; 
export function activate(context: vscode.ExtensionContext) {
    let disposable_getSelectedFolder = vscode.commands.registerCommand('tima.getSelectedFolder', (uri:vscode.Uri) => {
            let selectedPath = uri.fsPath;
            let fileNameBase; 
            if(selectedPath){
                const wsedit = new vscode.WorkspaceEdit();
                fileNameBase = LastSubFolder(selectedPath);
                wsedit.createFile(vscode.Uri.file(selectedPath+"\\"+fileNameBase+".cpp"),{ignoreIfExists:false} );
                wsedit.createFile(vscode.Uri.file(selectedPath+"\\"+fileNameBase+".h"),{ignoreIfExists:false} );
                vscode.workspace.applyEdit(wsedit);
            }else{
                vscode.window.showInformationMessage("selectedPath n'a pas été défini");
                return;  //TODO: Voir pour enregistrer un defaut à un endroit approprié.
            }       
            //Write in source and header file
            let sourceFile;
            let textToSource = "#include <"+fileNameBase+".h>";         // The text to send in sourceFile.cpp
            let fileToOpen = selectedPath+"\\"+fileNameBase+".cpp";

            function LastSubFolder(words:String) {
                var n = words.split("\\");
                return n[n.length - 1];         
            }           
            if (!fs.existsSync(fileToOpen)) {
                vscode.window.showInformationMessage(`le fichier n'existe pas`);
            }

            function writeInFile(file:String,text:string){
                vscode.workspace.openTextDocument(fileToOpen).then((sourceFile: vscode.TextDocument) => {
                    vscode.window.showTextDocument(sourceFile ,1,false).then(e => {
                        e.edit(edit =>{
                            edit.insert(new vscode.Position(0,0),textToSource);
                        });
                    });
                });
            }

文件已創建,但尚未插入文本。 這是因為執行發送文本命令時文件尚未創建。 請問我該如何解決?

為了解決這個問題,我使用了vscode.workspace.onDidCreateFiles的回調:

const wsedit = new vscode.WorkspaceEdit();              
                wsedit.createFile(vscode.Uri.file(selectedPath+"\\"+fileNameBase+".cpp"),{ignoreIfExists:false} );
                wsedit.createFile(vscode.Uri.file(selectedPath+"\\"+fileNameBase+".h"),{ignoreIfExists:false} );
                vscode.workspace.applyEdit(wsedit);
                vscode.workspace.onDidCreateFiles(()=> {
                    vscode.window.showInformationMessage("Les fichiers sont en cours de création");
                    headerText(fileNameBase);
                });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM