Skip to content

Commit 6b0613a

Browse files
authored
Merge pull request microsoft#82529 from Krystofee/added_random_snippet_variable
Added RANDOM, RANDOM_HEX snippet variables
2 parents ed32bc2 + 0e6b372 commit 6b0613a

2 files changed

Lines changed: 19 additions & 1 deletion

File tree

src/vs/editor/contrib/snippet/snippetSession.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ import { IClipboardService } from 'vs/platform/clipboard/common/clipboardService
1818
import { IWorkspaceContextService } from 'vs/platform/workspace/common/workspace';
1919
import { optional } from 'vs/platform/instantiation/common/instantiation';
2020
import { Choice, Placeholder, SnippetParser, Text, TextmateSnippet, Marker } from './snippetParser';
21-
import { ClipboardBasedVariableResolver, CompositeSnippetVariableResolver, ModelBasedVariableResolver, SelectionBasedVariableResolver, TimeBasedVariableResolver, CommentBasedVariableResolver, WorkspaceBasedVariableResolver } from './snippetVariables';
21+
import { ClipboardBasedVariableResolver, CompositeSnippetVariableResolver, ModelBasedVariableResolver, SelectionBasedVariableResolver, TimeBasedVariableResolver, CommentBasedVariableResolver, WorkspaceBasedVariableResolver, RandomBasedVariableResolver } from './snippetVariables';
2222
import { registerThemingParticipant } from 'vs/platform/theme/common/themeService';
2323
import * as colors from 'vs/platform/theme/common/colorRegistry';
2424
import { withNullAsUndefined } from 'vs/base/common/types';
@@ -450,6 +450,7 @@ export class SnippetSession {
450450
new CommentBasedVariableResolver(model),
451451
new TimeBasedVariableResolver,
452452
new WorkspaceBasedVariableResolver(workspaceService),
453+
new RandomBasedVariableResolver,
453454
]));
454455

455456
const offset = model.getOffsetAt(start) + delta;

src/vs/editor/contrib/snippet/snippetVariables.ts

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,8 @@ export const KnownSnippetVariableNames: { [key: string]: true } = Object.freeze(
4646
'LINE_COMMENT': true,
4747
'WORKSPACE_NAME': true,
4848
'WORKSPACE_FOLDER': true,
49+
'RANDOM': true,
50+
'RANDOM_HEX': true,
4951
});
5052

5153
export class CompositeSnippetVariableResolver implements VariableResolver {
@@ -316,3 +318,18 @@ export class WorkspaceBasedVariableResolver implements VariableResolver {
316318
return (folderpath ? normalizeDriveLetter(folderpath) : '/');
317319
}
318320
}
321+
322+
export class RandomBasedVariableResolver implements VariableResolver {
323+
resolve(variable: Variable): string | undefined {
324+
const { name } = variable;
325+
326+
if (name === 'RANDOM') {
327+
return Math.random().toString().slice(-6);
328+
}
329+
else if (name === 'RANDOM_HEX') {
330+
return Math.random().toString(16).slice(-6);
331+
}
332+
333+
return undefined;
334+
}
335+
}

0 commit comments

Comments
 (0)