Skip to content

Commit 5ac1a60

Browse files
authored
Merge pull request #43 from PraneshASP/feat/seperator
feat: ♻️ separators
2 parents 15e24c6 + 7024129 commit 5ac1a60

File tree

2 files changed

+53
-3
lines changed

2 files changed

+53
-3
lines changed

src/commands/separator.js

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
const vscode = require("vscode");
2+
3+
function createSeparator(style) {
4+
if (style === 'solmate') {
5+
return ` /*//////////////////////////////////////////////////////////////
6+
\${1:PLACEHOLDER}
7+
//////////////////////////////////////////////////////////////*/\n`;
8+
} else {
9+
return ` /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/
10+
/* \${1:PLACEHOLDER} */
11+
/*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/\n`;
12+
}
13+
}
14+
15+
function provideCompletionItemsForSeparator(document, position) {
16+
const linePrefix = document.lineAt(position).text.substr(0, position.character);
17+
18+
if (linePrefix.endsWith('////')) {
19+
const soladyItem = new vscode.CompletionItem('Solady Separator', vscode.CompletionItemKind.Snippet);
20+
soladyItem.insertText = new vscode.SnippetString(createSeparator('solady'));
21+
soladyItem.detail = "Insert a Solady style separator \n" + createSeparator('solady');
22+
soladyItem.additionalTextEdits = [vscode.TextEdit.delete(new vscode.Range(position.translate(0, -4), position))];
23+
24+
const solmateItem = new vscode.CompletionItem('Solmate Separator', vscode.CompletionItemKind.Snippet);
25+
solmateItem.insertText = new vscode.SnippetString(createSeparator('solmate'));
26+
solmateItem.detail = "Insert a Solmate style separator \n" + createSeparator('solmate');
27+
solmateItem.additionalTextEdits = [vscode.TextEdit.delete(new vscode.Range(position.translate(0, -4), position))];
28+
29+
return [soladyItem, solmateItem];
30+
}
31+
32+
return undefined;
33+
}
34+
35+
function activate(context) {
36+
context.subscriptions.push(
37+
vscode.languages.registerCompletionItemProvider(
38+
{ language: 'solidity', scheme: 'file' },
39+
{ provideCompletionItems: provideCompletionItemsForSeparator },
40+
'/'
41+
)
42+
);
43+
}
44+
45+
module.exports = {
46+
activate,
47+
provideCompletionItemsForSeparator
48+
};

src/extension.js

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ const { treeFilesCodeActionProvider, treeFilesDiagnosticCollection } = require("
4141
const { scaffoldActiveFile, scaffoldContextMenu } = require("./commands/bulloak-scaffold");
4242

4343
const { provideCompletionItems, resetRemappings } = require("./helpers");
44-
44+
const { activate: activateSeparator } = require("./commands/separator.js");
4545

4646
/** global vars */
4747
const EXTENSION_PREFIX = "vscode-solidity-inspector";
@@ -152,20 +152,22 @@ function onActivate(context) {
152152
context.subscriptions.push(scaffoldActiveFileSubscription);
153153
context.subscriptions.push(scaffoldContextMenuSubscription);
154154

155-
156155
// Import suggestions.
157156
context.subscriptions.push(vscode.languages.registerCompletionItemProvider('solidity', { provideCompletionItems }, ['"', "{"]));
158157
context.subscriptions.push(vscode.commands.registerCommand(EXTENSION_PREFIX + '.resetRemappings', () => {
159158
resetRemappings();
160159
vscode.window.showInformationMessage('Remappings have been refreshed!');
161160
}));
162-
161+
163162
vscode.window.visibleTextEditors.map(editor => {
164163
if (editor && editor.document && editor.document.languageId == "solidity") {
165164
unusedImportsActiveFile(editor);
166165
}
167166
});
168167

168+
// Activate separator
169+
activateSeparator(context);
170+
169171
}
170172

171173

0 commit comments

Comments
 (0)