Skip to content
This repository was archived by the owner on Sep 24, 2018. It is now read-only.

Commit e2a62ff

Browse files
author
James Humphries
committed
Added ability to create new templates using a command
1 parent 50868ab commit e2a62ff

File tree

4 files changed

+34
-5
lines changed

4 files changed

+34
-5
lines changed

package.json

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,14 +16,19 @@
1616
"Snippets"
1717
],
1818
"activationEvents": [
19-
"onCommand:extension.createFromList"
19+
"onCommand:extension.createFromList",
20+
"onCommand:extension.createTemplate"
2021
],
2122
"main": "./out/src/extension",
2223
"contributes": {
2324
"commands": [
2425
{
2526
"command": "extension.createFromList",
2627
"title": "New C# File"
28+
},
29+
{
30+
"command": "extension.createTemplate",
31+
"title": "Create New C# Template"
2732
}
2833
],
2934
"menus": {

src/extension.ts

Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,30 @@ export function activate(context: vscode.ExtensionContext) {
2727

2828
//context.subscriptions.push(disposable);
2929
context.subscriptions.push(vscode.commands.registerCommand('extension.createFromList', createFromList));
30+
context.subscriptions.push(vscode.commands.registerCommand('extension.createTemplate', createTemplate));
31+
}
32+
33+
let templateDirectory = vscode.extensions.getExtension('jchannon.csharpextensions').extensionPath + '/templates/';
34+
35+
function createNewTemplateFile(newTemplateFile) {
36+
if(!fs.exists(newTemplateFile)){
37+
fs.writeFileSync(newTemplateFile, `\${Description: Template Description Here}
38+
//use \${namespace} to set namespace
39+
//use \${name} to set name
40+
//use \${cursor} to set where the cursor will go when the file is first opened
41+
//rename this file to the name of your template
42+
`);
43+
}
44+
45+
}
46+
47+
function createTemplate() {
48+
vscode.window.showInputBox({ ignoreFocusOut: true, prompt: 'Please enter template name', value: "templateName.tmpl" }).then(result => {
49+
createNewTemplateFile(path.join(templateDirectory, result));
50+
var uri = vscode.Uri.parse(templateDirectory);
51+
vscode.commands.executeCommand('vscode.openFolder', uri, true);
52+
});
53+
3054
}
3155

3256
function createFromList(args) {
@@ -74,11 +98,11 @@ function openTemplateAndSaveNewFile(type: string, namespace: string, filename: s
7498

7599
let templatefileName = type + '.tmpl';
76100

77-
vscode.workspace.openTextDocument(vscode.extensions.getExtension('jchannon.csharpextensions').extensionPath + '/templates/' + templatefileName)
101+
vscode.workspace.openTextDocument(path.join(templateDirectory, templatefileName))
78102
.then((doc: vscode.TextDocument) => {
79103
let text = doc.getText();
80104
text = text.replace('${namespace}', namespace);
81-
text = text.replace('${classname}', filename);
105+
text = text.replace('${name}', filename);
82106
text = text.replace(new RegExp(/\$\{Description:(.*)\n/i), '');
83107
let cursorPosition = findCursorInTemlpate(text);
84108
text = text.replace('${cursor}', '');

templates/class.tmpl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
${Description:Creates a basic C# class}
22
namespace ${namespace}
33
{
4-
public class ${classname}
4+
public class ${name}
55
{
66
${cursor}
77
}

templates/interface.tmpl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
${Description:Creates a basic C# interface}
22
namespace ${namespace}
33
{
4-
public interface ${classname}
4+
public interface ${name}
55
{
66
${cursor}
77
}

0 commit comments

Comments
 (0)