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