From a5120a166fd3a2c6b9bb3513afb8fa48ed555444 Mon Sep 17 00:00:00 2001 From: karan verma Date: Wed, 21 Nov 2018 17:24:21 +0530 Subject: [PATCH] fix: #55946 Added comment snippet variable --- .../editor/contrib/snippet/snippetSession.ts | 3 ++- .../contrib/snippet/snippetVariables.ts | 25 ++++++++++++++++++- 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/src/vs/editor/contrib/snippet/snippetSession.ts b/src/vs/editor/contrib/snippet/snippetSession.ts index 9928428a60cbd..17bf8b96b3a8a 100644 --- a/src/vs/editor/contrib/snippet/snippetSession.ts +++ b/src/vs/editor/contrib/snippet/snippetSession.ts @@ -17,7 +17,7 @@ import { ModelDecorationOptions } from 'vs/editor/common/model/textModel'; import { IClipboardService } from 'vs/platform/clipboard/common/clipboardService'; import { optional } from 'vs/platform/instantiation/common/instantiation'; import { Choice, Placeholder, SnippetParser, Text, TextmateSnippet } from './snippetParser'; -import { ClipboardBasedVariableResolver, CompositeSnippetVariableResolver, ModelBasedVariableResolver, SelectionBasedVariableResolver, TimeBasedVariableResolver } from './snippetVariables'; +import { ClipboardBasedVariableResolver, CompositeSnippetVariableResolver, ModelBasedVariableResolver, SelectionBasedVariableResolver, TimeBasedVariableResolver, CommentBasedVariableResolver } from './snippetVariables'; import { registerThemingParticipant } from 'vs/platform/theme/common/themeService'; import * as colors from 'vs/platform/theme/common/colorRegistry'; @@ -402,6 +402,7 @@ export class SnippetSession { modelBasedVariableResolver, new ClipboardBasedVariableResolver(clipboardService, idx, indexedSelections.length), new SelectionBasedVariableResolver(model, selection), + new CommentBasedVariableResolver(model), new TimeBasedVariableResolver ])); diff --git a/src/vs/editor/contrib/snippet/snippetVariables.ts b/src/vs/editor/contrib/snippet/snippetVariables.ts index 1546872bf3156..6ac0c9730254d 100644 --- a/src/vs/editor/contrib/snippet/snippetVariables.ts +++ b/src/vs/editor/contrib/snippet/snippetVariables.ts @@ -8,6 +8,7 @@ import { basename, dirname } from 'vs/base/common/paths'; import { ITextModel } from 'vs/editor/common/model'; import { Selection } from 'vs/editor/common/core/selection'; import { VariableResolver, Variable, Text } from 'vs/editor/contrib/snippet/snippetParser'; +import { LanguageConfigurationRegistry } from 'vs/editor/common/modes/languageConfigurationRegistry'; import { getLeadingWhitespace, commonPrefixLength, isFalsyOrWhitespace, pad } from 'vs/base/common/strings'; import { IClipboardService } from 'vs/platform/clipboard/common/clipboardService'; @@ -34,6 +35,9 @@ export const KnownSnippetVariableNames = Object.freeze({ 'TM_FILENAME_BASE': true, 'TM_DIRECTORY': true, 'TM_FILEPATH': true, + 'BLOCK_COMMENT_START': true, + 'BLOCK_COMMENT_END': true, + 'LINE_COMMENT': true, }); export class CompositeSnippetVariableResolver implements VariableResolver { @@ -180,7 +184,26 @@ export class ClipboardBasedVariableResolver implements VariableResolver { } } } - +export class CommentBasedVariableResolver implements VariableResolver { + constructor( + private readonly _model: ITextModel + ) { + // + } + resolve(variable: Variable): string | undefined { + const { name } = variable; + const language = this._model.getLanguageIdentifier(); + const comments = LanguageConfigurationRegistry.getComments(language.id); + if (name === 'LINE_COMMENT') { + return comments.lineCommentToken; + } else if (name === 'BLOCK_COMMENT_START') { + return comments.blockCommentStartToken; + } else if (name === 'BLOCK_COMMENT_END') { + return comments.blockCommentEndToken; + } + return undefined; + } +} export class TimeBasedVariableResolver implements VariableResolver { private static readonly dayNames = [nls.localize('Sunday', "Sunday"), nls.localize('Monday', "Monday"), nls.localize('Tuesday', "Tuesday"), nls.localize('Wednesday', "Wednesday"), nls.localize('Thursday', "Thursday"), nls.localize('Friday', "Friday"), nls.localize('Saturday', "Saturday")];