Created
March 29, 2022 08:03
-
-
Save thautwarm/9fd6c47f0344cb24998346d9181c6bb2 to your computer and use it in GitHub Desktop.
autocompletion in vscode
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const commandCreateFile = vscode.commands.registerCommand("extension.dired.createFile", async () => { | |
// list files of provider.dirname | |
const quickPick = vscode.window.createQuickPick(); | |
quickPick.canSelectMany = false; | |
quickPick.placeholder = "Filename:"; | |
let dirname = provider.dirname ?? path.normalize("."); | |
quickPick.items = [{ label: dirname }]; | |
let fileName = quickPick.value; | |
let disposables: vscode.Disposable[] = []; | |
try { | |
await new Promise<void>(resolve => { | |
quickPick.placeholder = "Create Or Open Files" | |
disposables.push( | |
quickPick.onDidChangeValue(directoryOrFile => { | |
if (!path.isAbsolute(directoryOrFile)) | |
{ | |
if (provider.dirname == undefined) | |
return | |
directoryOrFile = path.join(provider.dirname, directoryOrFile); | |
} | |
let files: vscode.QuickPickItem[] = [] | |
let dirname: string | |
try { | |
let stat = fs.statSync(directoryOrFile); | |
files.push({label : directoryOrFile}); | |
if (stat.isDirectory()) { | |
dirname = directoryOrFile; | |
} | |
else { | |
dirname = path.dirname(directoryOrFile); | |
} | |
} | |
catch | |
{ | |
dirname = path.dirname(directoryOrFile); | |
} | |
fs.readdirSync(dirname).forEach( | |
fileName => files.push( {label : path.join(dirname, fileName)}) | |
) | |
quickPick.items = files; | |
}), | |
quickPick.onDidAccept(() => { | |
if (quickPick.selectedItems.length == 0 || quickPick.selectedItems[0].label == quickPick.value) { | |
fileName = quickPick.value; | |
quickPick.hide(); | |
resolve(); | |
} | |
else { | |
quickPick.value = quickPick.selectedItems[0].label; | |
} | |
}), | |
quickPick.onDidHide(() => { | |
quickPick.dispose(); | |
resolve(); | |
}) | |
); | |
quickPick.show(); | |
}); | |
} | |
finally { | |
disposables.forEach(d => d.dispose()); | |
} | |
vscode.window.showInformationMessage(`${fileName} success`); | |
if (fileName == undefined) { | |
return; | |
} | |
let openFile: boolean = false; | |
try { | |
let stat = await fs.promises.stat(fileName); | |
if (stat.isDirectory()) { | |
provider.openDir(fileName); | |
} | |
else { | |
openFile = true; | |
} | |
} | |
catch { | |
openFile = true; | |
} | |
if (openFile) { | |
let document = await vscode.workspace.openTextDocument(fileName); | |
await vscode.window.showTextDocument(document); | |
provider.reload(); | |
} | |
}); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment