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+ } ;
0 commit comments