[英]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.