From 0e6b372987305c8c488a2cbe6bc7c2c05da55ed5 Mon Sep 17 00:00:00 2001 From: Krystof Rehacek Date: Mon, 14 Oct 2019 22:54:13 +0200 Subject: [PATCH] Added RANDOM, RANDOM_HEX snippet variables --- src/vs/editor/contrib/snippet/snippetSession.ts | 3 ++- .../editor/contrib/snippet/snippetVariables.ts | 17 +++++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/src/vs/editor/contrib/snippet/snippetSession.ts b/src/vs/editor/contrib/snippet/snippetSession.ts index 91cf566e74284..c479ffa78b36b 100644 --- a/src/vs/editor/contrib/snippet/snippetSession.ts +++ b/src/vs/editor/contrib/snippet/snippetSession.ts @@ -18,7 +18,7 @@ import { IClipboardService } from 'vs/platform/clipboard/common/clipboardService import { IWorkspaceContextService } from 'vs/platform/workspace/common/workspace'; import { optional } from 'vs/platform/instantiation/common/instantiation'; import { Choice, Placeholder, SnippetParser, Text, TextmateSnippet, Marker } from './snippetParser'; -import { ClipboardBasedVariableResolver, CompositeSnippetVariableResolver, ModelBasedVariableResolver, SelectionBasedVariableResolver, TimeBasedVariableResolver, CommentBasedVariableResolver, WorkspaceBasedVariableResolver } from './snippetVariables'; +import { ClipboardBasedVariableResolver, CompositeSnippetVariableResolver, ModelBasedVariableResolver, SelectionBasedVariableResolver, TimeBasedVariableResolver, CommentBasedVariableResolver, WorkspaceBasedVariableResolver, RandomBasedVariableResolver } from './snippetVariables'; import { registerThemingParticipant } from 'vs/platform/theme/common/themeService'; import * as colors from 'vs/platform/theme/common/colorRegistry'; import { withNullAsUndefined } from 'vs/base/common/types'; @@ -450,6 +450,7 @@ export class SnippetSession { new CommentBasedVariableResolver(model), new TimeBasedVariableResolver, new WorkspaceBasedVariableResolver(workspaceService), + new RandomBasedVariableResolver, ])); const offset = model.getOffsetAt(start) + delta; diff --git a/src/vs/editor/contrib/snippet/snippetVariables.ts b/src/vs/editor/contrib/snippet/snippetVariables.ts index db6700822a4e3..09fd3ca980616 100644 --- a/src/vs/editor/contrib/snippet/snippetVariables.ts +++ b/src/vs/editor/contrib/snippet/snippetVariables.ts @@ -46,6 +46,8 @@ export const KnownSnippetVariableNames: { [key: string]: true } = Object.freeze( 'LINE_COMMENT': true, 'WORKSPACE_NAME': true, 'WORKSPACE_FOLDER': true, + 'RANDOM': true, + 'RANDOM_HEX': true, }); export class CompositeSnippetVariableResolver implements VariableResolver { @@ -316,3 +318,18 @@ export class WorkspaceBasedVariableResolver implements VariableResolver { return (folderpath ? normalizeDriveLetter(folderpath) : '/'); } } + +export class RandomBasedVariableResolver implements VariableResolver { + resolve(variable: Variable): string | undefined { + const { name } = variable; + + if (name === 'RANDOM') { + return Math.random().toString().slice(-6); + } + else if (name === 'RANDOM_HEX') { + return Math.random().toString(16).slice(-6); + } + + return undefined; + } +}