monaco-editor-core 0.55.0-dev-20251009 → 0.55.0-dev-20251010.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (76) hide show
  1. package/esm/nls.messages.de.js +1 -1
  2. package/esm/nls.messages.es.js +1 -1
  3. package/esm/nls.messages.fr.js +1 -1
  4. package/esm/nls.messages.it.js +1 -1
  5. package/esm/nls.messages.ja.js +1 -1
  6. package/esm/nls.messages.ko.js +1 -1
  7. package/esm/nls.messages.ru.js +1 -1
  8. package/esm/nls.messages.zh-cn.js +1 -1
  9. package/esm/nls.messages.zh-tw.js +1 -1
  10. package/esm/vs/base/browser/history.js.map +1 -1
  11. package/esm/vs/base/browser/ui/codicons/codicon/codicon.ttf +0 -0
  12. package/esm/vs/base/browser/ui/list/listWidget.js.map +1 -1
  13. package/esm/vs/base/browser/ui/tree/tree.js.map +1 -1
  14. package/esm/vs/base/common/history.js.map +1 -1
  15. package/esm/vs/base/common/worker/webWorker.js.map +1 -1
  16. package/esm/vs/editor/browser/editorBrowser.js.map +1 -1
  17. package/esm/vs/editor/browser/services/hoverService/hoverWidget.js +6 -11
  18. package/esm/vs/editor/browser/services/hoverService/hoverWidget.js.map +1 -1
  19. package/esm/vs/editor/browser/services/inlineCompletionsService.js.map +1 -1
  20. package/esm/vs/editor/browser/widget/markdownRenderer/browser/{markdownRenderer.js → editorMarkdownCodeBlockRenderer.js} +20 -59
  21. package/esm/vs/editor/browser/widget/markdownRenderer/browser/editorMarkdownCodeBlockRenderer.js.map +1 -0
  22. package/esm/vs/editor/common/config/editorConfiguration.js.map +1 -1
  23. package/esm/vs/editor/common/config/editorZoom.js.map +1 -1
  24. package/esm/vs/editor/common/diff/documentDiffProvider.js.map +1 -1
  25. package/esm/vs/editor/common/editorCommon.js.map +1 -1
  26. package/esm/vs/editor/common/languages/language.js.map +1 -1
  27. package/esm/vs/editor/common/languages/languageConfigurationRegistry.js.map +1 -1
  28. package/esm/vs/editor/common/languages.js.map +1 -1
  29. package/esm/vs/editor/common/textModelBracketPairs.js.map +1 -1
  30. package/esm/vs/editor/contrib/hover/browser/glyphHoverWidget.js +2 -2
  31. package/esm/vs/editor/contrib/hover/browser/glyphHoverWidget.js.map +1 -1
  32. package/esm/vs/editor/contrib/hover/browser/markdownHoverParticipant.js +2 -2
  33. package/esm/vs/editor/contrib/hover/browser/markdownHoverParticipant.js.map +1 -1
  34. package/esm/vs/editor/contrib/inlayHints/browser/inlayHintsHover.js +1 -1
  35. package/esm/vs/editor/contrib/inlayHints/browser/inlayHintsHover.js.map +1 -1
  36. package/esm/vs/editor/contrib/inlineCompletions/browser/hintsWidget/hoverParticipant.js +2 -2
  37. package/esm/vs/editor/contrib/inlineCompletions/browser/hintsWidget/hoverParticipant.js.map +1 -1
  38. package/esm/vs/editor/contrib/message/browser/messageController.js +1 -1
  39. package/esm/vs/editor/contrib/message/browser/messageController.js.map +1 -1
  40. package/esm/vs/editor/contrib/parameterHints/browser/parameterHintsWidget.js +2 -2
  41. package/esm/vs/editor/contrib/parameterHints/browser/parameterHintsWidget.js.map +1 -1
  42. package/esm/vs/editor/contrib/snippet/browser/snippetVariables.js +7 -0
  43. package/esm/vs/editor/contrib/snippet/browser/snippetVariables.js.map +1 -1
  44. package/esm/vs/editor/contrib/stickyScroll/browser/stickyScrollController.js.map +1 -1
  45. package/esm/vs/editor/contrib/stickyScroll/browser/stickyScrollProvider.js.map +1 -1
  46. package/esm/vs/editor/contrib/suggest/browser/suggestWidgetDetails.js +2 -2
  47. package/esm/vs/editor/contrib/suggest/browser/suggestWidgetDetails.js.map +1 -1
  48. package/esm/vs/editor/contrib/unicodeHighlighter/browser/bannerController.js +1 -1
  49. package/esm/vs/editor/contrib/unicodeHighlighter/browser/bannerController.js.map +1 -1
  50. package/esm/vs/editor/contrib/unicodeHighlighter/browser/unicodeHighlighter.js +1 -1
  51. package/esm/vs/editor/contrib/unicodeHighlighter/browser/unicodeHighlighter.js.map +1 -1
  52. package/esm/vs/editor/editor.api.d.ts +5 -4
  53. package/esm/vs/editor/standalone/browser/standaloneCodeEditor.js +10 -5
  54. package/esm/vs/editor/standalone/browser/standaloneCodeEditor.js.map +1 -1
  55. package/esm/vs/platform/actions/browser/actionViewItemService.js.map +1 -1
  56. package/esm/vs/platform/actions/browser/menuEntryActionViewItem.js +16 -13
  57. package/esm/vs/platform/actions/browser/menuEntryActionViewItem.js.map +1 -1
  58. package/esm/vs/platform/actions/common/actions.js +1 -0
  59. package/esm/vs/platform/actions/common/actions.js.map +1 -1
  60. package/esm/vs/platform/configuration/common/configuration.js.map +1 -1
  61. package/esm/vs/platform/contextkey/common/contextkey.js.map +1 -1
  62. package/esm/vs/platform/keybinding/common/keybinding.js.map +1 -1
  63. package/esm/vs/platform/log/common/log.js.map +1 -1
  64. package/esm/vs/platform/markdown/browser/markdownRenderer.js +72 -0
  65. package/esm/vs/platform/markdown/browser/markdownRenderer.js.map +1 -0
  66. package/esm/vs/platform/quickinput/browser/quickInput.js +20 -10
  67. package/esm/vs/platform/quickinput/browser/quickInput.js.map +1 -1
  68. package/esm/vs/platform/quickinput/browser/quickInputController.js +1 -0
  69. package/esm/vs/platform/quickinput/browser/quickInputController.js.map +1 -1
  70. package/esm/vs/platform/quickinput/browser/quickInputList.js.map +1 -1
  71. package/esm/vs/platform/quickinput/common/quickInput.js.map +1 -1
  72. package/esm/vs/platform/workspace/common/workspaceTrust.js.map +1 -1
  73. package/monaco.d.ts +5 -4
  74. package/package.json +2 -2
  75. package/version.txt +1 -1
  76. package/esm/vs/editor/browser/widget/markdownRenderer/browser/markdownRenderer.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["vs/editor/contrib/parameterHints/browser/parameterHintsWidget.ts"],"names":[],"mappings":"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","file":"parameterHintsWidget.js","sourceRoot":"file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport * as dom from '../../../../base/browser/dom.js';\nimport * as aria from '../../../../base/browser/ui/aria/aria.js';\nimport { DomScrollableElement } from '../../../../base/browser/ui/scrollbar/scrollableElement.js';\nimport { Codicon } from '../../../../base/common/codicons.js';\nimport { Event } from '../../../../base/common/event.js';\nimport { IMarkdownString } from '../../../../base/common/htmlContent.js';\nimport { Disposable, DisposableStore } from '../../../../base/common/lifecycle.js';\nimport { escapeRegExpCharacters } from '../../../../base/common/strings.js';\nimport { assertReturnsDefined } from '../../../../base/common/types.js';\nimport './parameterHints.css';\nimport { ContentWidgetPositionPreference, ICodeEditor, IContentWidget, IContentWidgetPosition } from '../../../browser/editorBrowser.js';\nimport { EditorOption } from '../../../common/config/editorOptions.js';\nimport { EDITOR_FONT_DEFAULTS } from '../../../common/config/fontInfo.js';\nimport * as languages from '../../../common/languages.js';\nimport { IMarkdownRendererService } from '../../../browser/widget/markdownRenderer/browser/markdownRenderer.js';\nimport { IRenderedMarkdown } from '../../../../base/browser/markdownRenderer.js';\nimport { ParameterHintsModel } from './parameterHintsModel.js';\nimport { Context } from './provideSignatureHelp.js';\nimport * as nls from '../../../../nls.js';\nimport { IContextKey, IContextKeyService } from '../../../../platform/contextkey/common/contextkey.js';\nimport { listHighlightForeground, registerColor } from '../../../../platform/theme/common/colorRegistry.js';\nimport { registerIcon } from '../../../../platform/theme/common/iconRegistry.js';\nimport { ThemeIcon } from '../../../../base/common/themables.js';\n\nconst $ = dom.$;\n\nconst parameterHintsNextIcon = registerIcon('parameter-hints-next', Codicon.chevronDown, nls.localize('parameterHintsNextIcon', 'Icon for show next parameter hint.'));\nconst parameterHintsPreviousIcon = registerIcon('parameter-hints-previous', Codicon.chevronUp, nls.localize('parameterHintsPreviousIcon', 'Icon for show previous parameter hint.'));\n\nexport class ParameterHintsWidget extends Disposable implements IContentWidget {\n\n\tprivate static readonly ID = 'editor.widget.parameterHintsWidget';\n\n\tprivate readonly renderDisposeables = this._register(new DisposableStore());\n\tprivate readonly keyVisible: IContextKey<boolean>;\n\tprivate readonly keyMultipleSignatures: IContextKey<boolean>;\n\n\tprivate domNodes?: {\n\t\treadonly element: HTMLElement;\n\t\treadonly signature: HTMLElement;\n\t\treadonly docs: HTMLElement;\n\t\treadonly overloads: HTMLElement;\n\t\treadonly scrollbar: DomScrollableElement;\n\t};\n\n\tprivate visible: boolean = false;\n\tprivate announcedLabel: string | null = null;\n\n\t// Editor.IContentWidget.allowEditorOverflow\n\tallowEditorOverflow = true;\n\n\tconstructor(\n\t\tprivate readonly editor: ICodeEditor,\n\t\tprivate readonly model: ParameterHintsModel,\n\t\t@IContextKeyService contextKeyService: IContextKeyService,\n\t\t@IMarkdownRendererService private readonly markdownRendererService: IMarkdownRendererService,\n\t) {\n\t\tsuper();\n\n\t\tthis.keyVisible = Context.Visible.bindTo(contextKeyService);\n\t\tthis.keyMultipleSignatures = Context.MultipleSignatures.bindTo(contextKeyService);\n\t}\n\n\tprivate createParameterHintDOMNodes() {\n\t\tconst element = $('.editor-widget.parameter-hints-widget');\n\t\tconst wrapper = dom.append(element, $('.phwrapper'));\n\t\twrapper.tabIndex = -1;\n\n\t\tconst controls = dom.append(wrapper, $('.controls'));\n\t\tconst previous = dom.append(controls, $('.button' + ThemeIcon.asCSSSelector(parameterHintsPreviousIcon)));\n\t\tconst overloads = dom.append(controls, $('.overloads'));\n\t\tconst next = dom.append(controls, $('.button' + ThemeIcon.asCSSSelector(parameterHintsNextIcon)));\n\n\t\tthis._register(dom.addDisposableListener(previous, 'click', e => {\n\t\t\tdom.EventHelper.stop(e);\n\t\t\tthis.previous();\n\t\t}));\n\n\t\tthis._register(dom.addDisposableListener(next, 'click', e => {\n\t\t\tdom.EventHelper.stop(e);\n\t\t\tthis.next();\n\t\t}));\n\n\t\tconst body = $('.body');\n\t\tconst scrollbar = new DomScrollableElement(body, {\n\t\t\talwaysConsumeMouseWheel: true,\n\t\t});\n\t\tthis._register(scrollbar);\n\t\twrapper.appendChild(scrollbar.getDomNode());\n\n\t\tconst signature = dom.append(body, $('.signature'));\n\t\tconst docs = dom.append(body, $('.docs'));\n\n\t\telement.style.userSelect = 'text';\n\n\t\tthis.domNodes = {\n\t\t\telement,\n\t\t\tsignature,\n\t\t\toverloads,\n\t\t\tdocs,\n\t\t\tscrollbar,\n\t\t};\n\n\t\tthis.editor.addContentWidget(this);\n\t\tthis.hide();\n\n\t\tthis._register(this.editor.onDidChangeCursorSelection(e => {\n\t\t\tif (this.visible) {\n\t\t\t\tthis.editor.layoutContentWidget(this);\n\t\t\t}\n\t\t}));\n\n\t\tconst updateFont = () => {\n\t\t\tif (!this.domNodes) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst fontInfo = this.editor.getOption(EditorOption.fontInfo);\n\t\t\tconst element = this.domNodes.element;\n\t\t\telement.style.fontSize = `${fontInfo.fontSize}px`;\n\t\t\telement.style.lineHeight = `${fontInfo.lineHeight / fontInfo.fontSize}`;\n\t\t\telement.style.setProperty('--vscode-parameterHintsWidget-editorFontFamily', fontInfo.fontFamily);\n\t\t\telement.style.setProperty('--vscode-parameterHintsWidget-editorFontFamilyDefault', EDITOR_FONT_DEFAULTS.fontFamily);\n\t\t};\n\n\t\tupdateFont();\n\n\t\tthis._register(Event.chain(\n\t\t\tthis.editor.onDidChangeConfiguration.bind(this.editor),\n\t\t\t$ => $.filter(e => e.hasChanged(EditorOption.fontInfo))\n\t\t)(updateFont));\n\n\t\tthis._register(this.editor.onDidLayoutChange(e => this.updateMaxHeight()));\n\t\tthis.updateMaxHeight();\n\t}\n\n\tpublic show(): void {\n\t\tif (this.visible) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (!this.domNodes) {\n\t\t\tthis.createParameterHintDOMNodes();\n\t\t}\n\n\t\tthis.keyVisible.set(true);\n\t\tthis.visible = true;\n\t\tsetTimeout(() => {\n\t\t\tthis.domNodes?.element.classList.add('visible');\n\t\t}, 100);\n\t\tthis.editor.layoutContentWidget(this);\n\t}\n\n\tpublic hide(): void {\n\t\tthis.renderDisposeables.clear();\n\n\t\tif (!this.visible) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.keyVisible.reset();\n\t\tthis.visible = false;\n\t\tthis.announcedLabel = null;\n\t\tthis.domNodes?.element.classList.remove('visible');\n\t\tthis.editor.layoutContentWidget(this);\n\t}\n\n\tgetPosition(): IContentWidgetPosition | null {\n\t\tif (this.visible) {\n\t\t\treturn {\n\t\t\t\tposition: this.editor.getPosition(),\n\t\t\t\tpreference: [ContentWidgetPositionPreference.ABOVE, ContentWidgetPositionPreference.BELOW]\n\t\t\t};\n\t\t}\n\t\treturn null;\n\t}\n\n\tpublic render(hints: languages.SignatureHelp): void {\n\t\tthis.renderDisposeables.clear();\n\n\t\tif (!this.domNodes) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst multiple = hints.signatures.length > 1;\n\t\tthis.domNodes.element.classList.toggle('multiple', multiple);\n\t\tthis.keyMultipleSignatures.set(multiple);\n\n\t\tthis.domNodes.signature.innerText = '';\n\t\tthis.domNodes.docs.innerText = '';\n\n\t\tconst signature = hints.signatures[hints.activeSignature];\n\t\tif (!signature) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst code = dom.append(this.domNodes.signature, $('.code'));\n\t\tconst hasParameters = signature.parameters.length > 0;\n\t\tconst activeParameterIndex = signature.activeParameter ?? hints.activeParameter;\n\n\t\tif (!hasParameters) {\n\t\t\tconst label = dom.append(code, $('span'));\n\t\t\tlabel.textContent = signature.label;\n\t\t} else {\n\t\t\tthis.renderParameters(code, signature, activeParameterIndex);\n\t\t}\n\n\t\tconst activeParameter: languages.ParameterInformation | undefined = signature.parameters[activeParameterIndex];\n\t\tif (activeParameter?.documentation) {\n\t\t\tconst documentation = $('span.documentation');\n\t\t\tif (typeof activeParameter.documentation === 'string') {\n\t\t\t\tdocumentation.textContent = activeParameter.documentation;\n\t\t\t} else {\n\t\t\t\tconst renderedContents = this.renderMarkdownDocs(activeParameter.documentation);\n\t\t\t\tdocumentation.appendChild(renderedContents.element);\n\t\t\t}\n\t\t\tdom.append(this.domNodes.docs, $('p', {}, documentation));\n\t\t}\n\n\t\tif (signature.documentation === undefined) {\n\t\t\t/** no op */\n\t\t} else if (typeof signature.documentation === 'string') {\n\t\t\tdom.append(this.domNodes.docs, $('p', {}, signature.documentation));\n\t\t} else {\n\t\t\tconst renderedContents = this.renderMarkdownDocs(signature.documentation);\n\t\t\tdom.append(this.domNodes.docs, renderedContents.element);\n\t\t}\n\n\t\tconst hasDocs = this.hasDocs(signature, activeParameter);\n\n\t\tthis.domNodes.signature.classList.toggle('has-docs', hasDocs);\n\t\tthis.domNodes.docs.classList.toggle('empty', !hasDocs);\n\n\t\tthis.domNodes.overloads.textContent =\n\t\t\tString(hints.activeSignature + 1).padStart(hints.signatures.length.toString().length, '0') + '/' + hints.signatures.length;\n\n\t\tif (activeParameter) {\n\t\t\tlet labelToAnnounce = '';\n\t\t\tconst param = signature.parameters[activeParameterIndex];\n\t\t\tif (Array.isArray(param.label)) {\n\t\t\t\tlabelToAnnounce = signature.label.substring(param.label[0], param.label[1]);\n\t\t\t} else {\n\t\t\t\tlabelToAnnounce = param.label;\n\t\t\t}\n\t\t\tif (param.documentation) {\n\t\t\t\tlabelToAnnounce += typeof param.documentation === 'string' ? `, ${param.documentation}` : `, ${param.documentation.value}`;\n\t\t\t}\n\t\t\tif (signature.documentation) {\n\t\t\t\tlabelToAnnounce += typeof signature.documentation === 'string' ? `, ${signature.documentation}` : `, ${signature.documentation.value}`;\n\t\t\t}\n\n\t\t\t// Select method gets called on every user type while parameter hints are visible.\n\t\t\t// We do not want to spam the user with same announcements, so we only announce if the current parameter changed.\n\n\t\t\tif (this.announcedLabel !== labelToAnnounce) {\n\t\t\t\taria.alert(nls.localize('hint', \"{0}, hint\", labelToAnnounce));\n\t\t\t\tthis.announcedLabel = labelToAnnounce;\n\t\t\t}\n\t\t}\n\n\t\tthis.editor.layoutContentWidget(this);\n\t\tthis.domNodes.scrollbar.scanDomNode();\n\t}\n\n\tprivate renderMarkdownDocs(markdown: IMarkdownString): IRenderedMarkdown {\n\t\tconst renderedContents = this.renderDisposeables.add(this.markdownRendererService.render(markdown, {\n\t\t\teditor: this.editor,\n\t\t\tasyncRenderCallback: () => {\n\t\t\t\tthis.domNodes?.scrollbar.scanDomNode();\n\t\t\t}\n\t\t}));\n\t\trenderedContents.element.classList.add('markdown-docs');\n\t\treturn renderedContents;\n\t}\n\n\tprivate hasDocs(signature: languages.SignatureInformation, activeParameter: languages.ParameterInformation | undefined): boolean {\n\t\tif (activeParameter && typeof activeParameter.documentation === 'string' && assertReturnsDefined(activeParameter.documentation).length > 0) {\n\t\t\treturn true;\n\t\t}\n\t\tif (activeParameter && typeof activeParameter.documentation === 'object' && assertReturnsDefined(activeParameter.documentation).value.length > 0) {\n\t\t\treturn true;\n\t\t}\n\t\tif (signature.documentation && typeof signature.documentation === 'string' && assertReturnsDefined(signature.documentation).length > 0) {\n\t\t\treturn true;\n\t\t}\n\t\tif (signature.documentation && typeof signature.documentation === 'object' && assertReturnsDefined(signature.documentation.value).length > 0) {\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\tprivate renderParameters(parent: HTMLElement, signature: languages.SignatureInformation, activeParameterIndex: number): void {\n\t\tconst [start, end] = this.getParameterLabelOffsets(signature, activeParameterIndex);\n\n\t\tconst beforeSpan = document.createElement('span');\n\t\tbeforeSpan.textContent = signature.label.substring(0, start);\n\n\t\tconst paramSpan = document.createElement('span');\n\t\tparamSpan.textContent = signature.label.substring(start, end);\n\t\tparamSpan.className = 'parameter active';\n\n\t\tconst afterSpan = document.createElement('span');\n\t\tafterSpan.textContent = signature.label.substring(end);\n\n\t\tdom.append(parent, beforeSpan, paramSpan, afterSpan);\n\t}\n\n\tprivate getParameterLabelOffsets(signature: languages.SignatureInformation, paramIdx: number): [number, number] {\n\t\tconst param = signature.parameters[paramIdx];\n\t\tif (!param) {\n\t\t\treturn [0, 0];\n\t\t} else if (Array.isArray(param.label)) {\n\t\t\treturn param.label;\n\t\t} else if (!param.label.length) {\n\t\t\treturn [0, 0];\n\t\t} else {\n\t\t\tconst regex = new RegExp(`(\\\\W|^)${escapeRegExpCharacters(param.label)}(?=\\\\W|$)`, 'g');\n\t\t\tregex.test(signature.label);\n\t\t\tconst idx = regex.lastIndex - param.label.length;\n\t\t\treturn idx >= 0\n\t\t\t\t? [idx, regex.lastIndex]\n\t\t\t\t: [0, 0];\n\t\t}\n\t}\n\n\tnext(): void {\n\t\tthis.editor.focus();\n\t\tthis.model.next();\n\t}\n\n\tprevious(): void {\n\t\tthis.editor.focus();\n\t\tthis.model.previous();\n\t}\n\n\tgetDomNode(): HTMLElement {\n\t\tif (!this.domNodes) {\n\t\t\tthis.createParameterHintDOMNodes();\n\t\t}\n\t\treturn this.domNodes!.element;\n\t}\n\n\tgetId(): string {\n\t\treturn ParameterHintsWidget.ID;\n\t}\n\n\tprivate updateMaxHeight(): void {\n\t\tif (!this.domNodes) {\n\t\t\treturn;\n\t\t}\n\t\tconst height = Math.max(this.editor.getLayoutInfo().height / 4, 250);\n\t\tconst maxHeight = `${height}px`;\n\t\tthis.domNodes.element.style.maxHeight = maxHeight;\n\t\tconst wrapper = this.domNodes.element.getElementsByClassName('phwrapper') as HTMLCollectionOf<HTMLElement>;\n\t\tif (wrapper.length) {\n\t\t\twrapper[0].style.maxHeight = maxHeight;\n\t\t}\n\t}\n}\n\nregisterColor('editorHoverWidget.highlightForeground', listHighlightForeground, nls.localize('editorHoverWidgetHighlightForeground', 'Foreground color of the active item in the parameter hint.'));\n"]}
1
+ {"version":3,"sources":["vs/editor/contrib/parameterHints/browser/parameterHintsWidget.ts"],"names":[],"mappings":"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","file":"parameterHintsWidget.js","sourceRoot":"file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport * as dom from '../../../../base/browser/dom.js';\nimport * as aria from '../../../../base/browser/ui/aria/aria.js';\nimport { DomScrollableElement } from '../../../../base/browser/ui/scrollbar/scrollableElement.js';\nimport { Codicon } from '../../../../base/common/codicons.js';\nimport { Event } from '../../../../base/common/event.js';\nimport { IMarkdownString } from '../../../../base/common/htmlContent.js';\nimport { Disposable, DisposableStore } from '../../../../base/common/lifecycle.js';\nimport { escapeRegExpCharacters } from '../../../../base/common/strings.js';\nimport { assertReturnsDefined } from '../../../../base/common/types.js';\nimport './parameterHints.css';\nimport { ContentWidgetPositionPreference, ICodeEditor, IContentWidget, IContentWidgetPosition } from '../../../browser/editorBrowser.js';\nimport { EditorOption } from '../../../common/config/editorOptions.js';\nimport { EDITOR_FONT_DEFAULTS } from '../../../common/config/fontInfo.js';\nimport * as languages from '../../../common/languages.js';\nimport { IMarkdownRendererService } from '../../../../platform/markdown/browser/markdownRenderer.js';\nimport { IRenderedMarkdown } from '../../../../base/browser/markdownRenderer.js';\nimport { ParameterHintsModel } from './parameterHintsModel.js';\nimport { Context } from './provideSignatureHelp.js';\nimport * as nls from '../../../../nls.js';\nimport { IContextKey, IContextKeyService } from '../../../../platform/contextkey/common/contextkey.js';\nimport { listHighlightForeground, registerColor } from '../../../../platform/theme/common/colorRegistry.js';\nimport { registerIcon } from '../../../../platform/theme/common/iconRegistry.js';\nimport { ThemeIcon } from '../../../../base/common/themables.js';\n\nconst $ = dom.$;\n\nconst parameterHintsNextIcon = registerIcon('parameter-hints-next', Codicon.chevronDown, nls.localize('parameterHintsNextIcon', 'Icon for show next parameter hint.'));\nconst parameterHintsPreviousIcon = registerIcon('parameter-hints-previous', Codicon.chevronUp, nls.localize('parameterHintsPreviousIcon', 'Icon for show previous parameter hint.'));\n\nexport class ParameterHintsWidget extends Disposable implements IContentWidget {\n\n\tprivate static readonly ID = 'editor.widget.parameterHintsWidget';\n\n\tprivate readonly renderDisposeables = this._register(new DisposableStore());\n\tprivate readonly keyVisible: IContextKey<boolean>;\n\tprivate readonly keyMultipleSignatures: IContextKey<boolean>;\n\n\tprivate domNodes?: {\n\t\treadonly element: HTMLElement;\n\t\treadonly signature: HTMLElement;\n\t\treadonly docs: HTMLElement;\n\t\treadonly overloads: HTMLElement;\n\t\treadonly scrollbar: DomScrollableElement;\n\t};\n\n\tprivate visible: boolean = false;\n\tprivate announcedLabel: string | null = null;\n\n\t// Editor.IContentWidget.allowEditorOverflow\n\tallowEditorOverflow = true;\n\n\tconstructor(\n\t\tprivate readonly editor: ICodeEditor,\n\t\tprivate readonly model: ParameterHintsModel,\n\t\t@IContextKeyService contextKeyService: IContextKeyService,\n\t\t@IMarkdownRendererService private readonly markdownRendererService: IMarkdownRendererService,\n\t) {\n\t\tsuper();\n\n\t\tthis.keyVisible = Context.Visible.bindTo(contextKeyService);\n\t\tthis.keyMultipleSignatures = Context.MultipleSignatures.bindTo(contextKeyService);\n\t}\n\n\tprivate createParameterHintDOMNodes() {\n\t\tconst element = $('.editor-widget.parameter-hints-widget');\n\t\tconst wrapper = dom.append(element, $('.phwrapper'));\n\t\twrapper.tabIndex = -1;\n\n\t\tconst controls = dom.append(wrapper, $('.controls'));\n\t\tconst previous = dom.append(controls, $('.button' + ThemeIcon.asCSSSelector(parameterHintsPreviousIcon)));\n\t\tconst overloads = dom.append(controls, $('.overloads'));\n\t\tconst next = dom.append(controls, $('.button' + ThemeIcon.asCSSSelector(parameterHintsNextIcon)));\n\n\t\tthis._register(dom.addDisposableListener(previous, 'click', e => {\n\t\t\tdom.EventHelper.stop(e);\n\t\t\tthis.previous();\n\t\t}));\n\n\t\tthis._register(dom.addDisposableListener(next, 'click', e => {\n\t\t\tdom.EventHelper.stop(e);\n\t\t\tthis.next();\n\t\t}));\n\n\t\tconst body = $('.body');\n\t\tconst scrollbar = new DomScrollableElement(body, {\n\t\t\talwaysConsumeMouseWheel: true,\n\t\t});\n\t\tthis._register(scrollbar);\n\t\twrapper.appendChild(scrollbar.getDomNode());\n\n\t\tconst signature = dom.append(body, $('.signature'));\n\t\tconst docs = dom.append(body, $('.docs'));\n\n\t\telement.style.userSelect = 'text';\n\n\t\tthis.domNodes = {\n\t\t\telement,\n\t\t\tsignature,\n\t\t\toverloads,\n\t\t\tdocs,\n\t\t\tscrollbar,\n\t\t};\n\n\t\tthis.editor.addContentWidget(this);\n\t\tthis.hide();\n\n\t\tthis._register(this.editor.onDidChangeCursorSelection(e => {\n\t\t\tif (this.visible) {\n\t\t\t\tthis.editor.layoutContentWidget(this);\n\t\t\t}\n\t\t}));\n\n\t\tconst updateFont = () => {\n\t\t\tif (!this.domNodes) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst fontInfo = this.editor.getOption(EditorOption.fontInfo);\n\t\t\tconst element = this.domNodes.element;\n\t\t\telement.style.fontSize = `${fontInfo.fontSize}px`;\n\t\t\telement.style.lineHeight = `${fontInfo.lineHeight / fontInfo.fontSize}`;\n\t\t\telement.style.setProperty('--vscode-parameterHintsWidget-editorFontFamily', fontInfo.fontFamily);\n\t\t\telement.style.setProperty('--vscode-parameterHintsWidget-editorFontFamilyDefault', EDITOR_FONT_DEFAULTS.fontFamily);\n\t\t};\n\n\t\tupdateFont();\n\n\t\tthis._register(Event.chain(\n\t\t\tthis.editor.onDidChangeConfiguration.bind(this.editor),\n\t\t\t$ => $.filter(e => e.hasChanged(EditorOption.fontInfo))\n\t\t)(updateFont));\n\n\t\tthis._register(this.editor.onDidLayoutChange(e => this.updateMaxHeight()));\n\t\tthis.updateMaxHeight();\n\t}\n\n\tpublic show(): void {\n\t\tif (this.visible) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (!this.domNodes) {\n\t\t\tthis.createParameterHintDOMNodes();\n\t\t}\n\n\t\tthis.keyVisible.set(true);\n\t\tthis.visible = true;\n\t\tsetTimeout(() => {\n\t\t\tthis.domNodes?.element.classList.add('visible');\n\t\t}, 100);\n\t\tthis.editor.layoutContentWidget(this);\n\t}\n\n\tpublic hide(): void {\n\t\tthis.renderDisposeables.clear();\n\n\t\tif (!this.visible) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.keyVisible.reset();\n\t\tthis.visible = false;\n\t\tthis.announcedLabel = null;\n\t\tthis.domNodes?.element.classList.remove('visible');\n\t\tthis.editor.layoutContentWidget(this);\n\t}\n\n\tgetPosition(): IContentWidgetPosition | null {\n\t\tif (this.visible) {\n\t\t\treturn {\n\t\t\t\tposition: this.editor.getPosition(),\n\t\t\t\tpreference: [ContentWidgetPositionPreference.ABOVE, ContentWidgetPositionPreference.BELOW]\n\t\t\t};\n\t\t}\n\t\treturn null;\n\t}\n\n\tpublic render(hints: languages.SignatureHelp): void {\n\t\tthis.renderDisposeables.clear();\n\n\t\tif (!this.domNodes) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst multiple = hints.signatures.length > 1;\n\t\tthis.domNodes.element.classList.toggle('multiple', multiple);\n\t\tthis.keyMultipleSignatures.set(multiple);\n\n\t\tthis.domNodes.signature.innerText = '';\n\t\tthis.domNodes.docs.innerText = '';\n\n\t\tconst signature = hints.signatures[hints.activeSignature];\n\t\tif (!signature) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst code = dom.append(this.domNodes.signature, $('.code'));\n\t\tconst hasParameters = signature.parameters.length > 0;\n\t\tconst activeParameterIndex = signature.activeParameter ?? hints.activeParameter;\n\n\t\tif (!hasParameters) {\n\t\t\tconst label = dom.append(code, $('span'));\n\t\t\tlabel.textContent = signature.label;\n\t\t} else {\n\t\t\tthis.renderParameters(code, signature, activeParameterIndex);\n\t\t}\n\n\t\tconst activeParameter: languages.ParameterInformation | undefined = signature.parameters[activeParameterIndex];\n\t\tif (activeParameter?.documentation) {\n\t\t\tconst documentation = $('span.documentation');\n\t\t\tif (typeof activeParameter.documentation === 'string') {\n\t\t\t\tdocumentation.textContent = activeParameter.documentation;\n\t\t\t} else {\n\t\t\t\tconst renderedContents = this.renderMarkdownDocs(activeParameter.documentation);\n\t\t\t\tdocumentation.appendChild(renderedContents.element);\n\t\t\t}\n\t\t\tdom.append(this.domNodes.docs, $('p', {}, documentation));\n\t\t}\n\n\t\tif (signature.documentation === undefined) {\n\t\t\t/** no op */\n\t\t} else if (typeof signature.documentation === 'string') {\n\t\t\tdom.append(this.domNodes.docs, $('p', {}, signature.documentation));\n\t\t} else {\n\t\t\tconst renderedContents = this.renderMarkdownDocs(signature.documentation);\n\t\t\tdom.append(this.domNodes.docs, renderedContents.element);\n\t\t}\n\n\t\tconst hasDocs = this.hasDocs(signature, activeParameter);\n\n\t\tthis.domNodes.signature.classList.toggle('has-docs', hasDocs);\n\t\tthis.domNodes.docs.classList.toggle('empty', !hasDocs);\n\n\t\tthis.domNodes.overloads.textContent =\n\t\t\tString(hints.activeSignature + 1).padStart(hints.signatures.length.toString().length, '0') + '/' + hints.signatures.length;\n\n\t\tif (activeParameter) {\n\t\t\tlet labelToAnnounce = '';\n\t\t\tconst param = signature.parameters[activeParameterIndex];\n\t\t\tif (Array.isArray(param.label)) {\n\t\t\t\tlabelToAnnounce = signature.label.substring(param.label[0], param.label[1]);\n\t\t\t} else {\n\t\t\t\tlabelToAnnounce = param.label;\n\t\t\t}\n\t\t\tif (param.documentation) {\n\t\t\t\tlabelToAnnounce += typeof param.documentation === 'string' ? `, ${param.documentation}` : `, ${param.documentation.value}`;\n\t\t\t}\n\t\t\tif (signature.documentation) {\n\t\t\t\tlabelToAnnounce += typeof signature.documentation === 'string' ? `, ${signature.documentation}` : `, ${signature.documentation.value}`;\n\t\t\t}\n\n\t\t\t// Select method gets called on every user type while parameter hints are visible.\n\t\t\t// We do not want to spam the user with same announcements, so we only announce if the current parameter changed.\n\n\t\t\tif (this.announcedLabel !== labelToAnnounce) {\n\t\t\t\taria.alert(nls.localize('hint', \"{0}, hint\", labelToAnnounce));\n\t\t\t\tthis.announcedLabel = labelToAnnounce;\n\t\t\t}\n\t\t}\n\n\t\tthis.editor.layoutContentWidget(this);\n\t\tthis.domNodes.scrollbar.scanDomNode();\n\t}\n\n\tprivate renderMarkdownDocs(markdown: IMarkdownString): IRenderedMarkdown {\n\t\tconst renderedContents = this.renderDisposeables.add(this.markdownRendererService.render(markdown, {\n\t\t\tcontext: this.editor,\n\t\t\tasyncRenderCallback: () => {\n\t\t\t\tthis.domNodes?.scrollbar.scanDomNode();\n\t\t\t}\n\t\t}));\n\t\trenderedContents.element.classList.add('markdown-docs');\n\t\treturn renderedContents;\n\t}\n\n\tprivate hasDocs(signature: languages.SignatureInformation, activeParameter: languages.ParameterInformation | undefined): boolean {\n\t\tif (activeParameter && typeof activeParameter.documentation === 'string' && assertReturnsDefined(activeParameter.documentation).length > 0) {\n\t\t\treturn true;\n\t\t}\n\t\tif (activeParameter && typeof activeParameter.documentation === 'object' && assertReturnsDefined(activeParameter.documentation).value.length > 0) {\n\t\t\treturn true;\n\t\t}\n\t\tif (signature.documentation && typeof signature.documentation === 'string' && assertReturnsDefined(signature.documentation).length > 0) {\n\t\t\treturn true;\n\t\t}\n\t\tif (signature.documentation && typeof signature.documentation === 'object' && assertReturnsDefined(signature.documentation.value).length > 0) {\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\tprivate renderParameters(parent: HTMLElement, signature: languages.SignatureInformation, activeParameterIndex: number): void {\n\t\tconst [start, end] = this.getParameterLabelOffsets(signature, activeParameterIndex);\n\n\t\tconst beforeSpan = document.createElement('span');\n\t\tbeforeSpan.textContent = signature.label.substring(0, start);\n\n\t\tconst paramSpan = document.createElement('span');\n\t\tparamSpan.textContent = signature.label.substring(start, end);\n\t\tparamSpan.className = 'parameter active';\n\n\t\tconst afterSpan = document.createElement('span');\n\t\tafterSpan.textContent = signature.label.substring(end);\n\n\t\tdom.append(parent, beforeSpan, paramSpan, afterSpan);\n\t}\n\n\tprivate getParameterLabelOffsets(signature: languages.SignatureInformation, paramIdx: number): [number, number] {\n\t\tconst param = signature.parameters[paramIdx];\n\t\tif (!param) {\n\t\t\treturn [0, 0];\n\t\t} else if (Array.isArray(param.label)) {\n\t\t\treturn param.label;\n\t\t} else if (!param.label.length) {\n\t\t\treturn [0, 0];\n\t\t} else {\n\t\t\tconst regex = new RegExp(`(\\\\W|^)${escapeRegExpCharacters(param.label)}(?=\\\\W|$)`, 'g');\n\t\t\tregex.test(signature.label);\n\t\t\tconst idx = regex.lastIndex - param.label.length;\n\t\t\treturn idx >= 0\n\t\t\t\t? [idx, regex.lastIndex]\n\t\t\t\t: [0, 0];\n\t\t}\n\t}\n\n\tnext(): void {\n\t\tthis.editor.focus();\n\t\tthis.model.next();\n\t}\n\n\tprevious(): void {\n\t\tthis.editor.focus();\n\t\tthis.model.previous();\n\t}\n\n\tgetDomNode(): HTMLElement {\n\t\tif (!this.domNodes) {\n\t\t\tthis.createParameterHintDOMNodes();\n\t\t}\n\t\treturn this.domNodes!.element;\n\t}\n\n\tgetId(): string {\n\t\treturn ParameterHintsWidget.ID;\n\t}\n\n\tprivate updateMaxHeight(): void {\n\t\tif (!this.domNodes) {\n\t\t\treturn;\n\t\t}\n\t\tconst height = Math.max(this.editor.getLayoutInfo().height / 4, 250);\n\t\tconst maxHeight = `${height}px`;\n\t\tthis.domNodes.element.style.maxHeight = maxHeight;\n\t\tconst wrapper = this.domNodes.element.getElementsByClassName('phwrapper') as HTMLCollectionOf<HTMLElement>;\n\t\tif (wrapper.length) {\n\t\t\twrapper[0].style.maxHeight = maxHeight;\n\t\t}\n\t}\n}\n\nregisterColor('editorHoverWidget.highlightForeground', listHighlightForeground, nls.localize('editorHoverWidgetHighlightForeground', 'Foreground color of the active item in the parameter hint.'));\n"]}
@@ -44,6 +44,7 @@ export const KnownSnippetVariableNames = Object.freeze({
44
44
  'TM_FILENAME': true,
45
45
  'TM_FILENAME_BASE': true,
46
46
  'TM_DIRECTORY': true,
47
+ 'TM_DIRECTORY_BASE': true,
47
48
  'TM_FILEPATH': true,
48
49
  'CURSOR_INDEX': true, // 0-offset
49
50
  'CURSOR_NUMBER': true, // 1-offset
@@ -167,6 +168,12 @@ export class ModelBasedVariableResolver {
167
168
  }
168
169
  return this._labelService.getUriLabel(dirname(this._model.uri));
169
170
  }
171
+ else if (name === 'TM_DIRECTORY_BASE') {
172
+ if (path.dirname(this._model.uri.fsPath) === '.') {
173
+ return '';
174
+ }
175
+ return path.basename(path.dirname(this._model.uri.fsPath));
176
+ }
170
177
  else if (name === 'TM_FILEPATH') {
171
178
  return this._labelService.getUriLabel(this._model.uri);
172
179
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["vs/editor/contrib/snippet/browser/snippetVariables.ts"],"names":[],"mappings":"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","file":"snippetVariables.js","sourceRoot":"file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport { normalizeDriveLetter } from '../../../../base/common/labels.js';\nimport * as path from '../../../../base/common/path.js';\nimport { dirname } from '../../../../base/common/resources.js';\nimport { commonPrefixLength, getLeadingWhitespace, isFalsyOrWhitespace, splitLines } from '../../../../base/common/strings.js';\nimport { generateUuid } from '../../../../base/common/uuid.js';\nimport { Selection } from '../../../common/core/selection.js';\nimport { ITextModel } from '../../../common/model.js';\nimport { ILanguageConfigurationService } from '../../../common/languages/languageConfigurationRegistry.js';\nimport { Text, Variable, VariableResolver } from './snippetParser.js';\nimport { OvertypingCapturer } from '../../suggest/browser/suggestOvertypingCapturer.js';\nimport * as nls from '../../../../nls.js';\nimport { ILabelService } from '../../../../platform/label/common/label.js';\nimport { WORKSPACE_EXTENSION, isSingleFolderWorkspaceIdentifier, toWorkspaceIdentifier, IWorkspaceContextService, ISingleFolderWorkspaceIdentifier, IWorkspaceIdentifier, isEmptyWorkspaceIdentifier } from '../../../../platform/workspace/common/workspace.js';\n\nexport const KnownSnippetVariableNames = Object.freeze<{ [key: string]: true }>({\n\t'CURRENT_YEAR': true,\n\t'CURRENT_YEAR_SHORT': true,\n\t'CURRENT_MONTH': true,\n\t'CURRENT_DATE': true,\n\t'CURRENT_HOUR': true,\n\t'CURRENT_MINUTE': true,\n\t'CURRENT_SECOND': true,\n\t'CURRENT_DAY_NAME': true,\n\t'CURRENT_DAY_NAME_SHORT': true,\n\t'CURRENT_MONTH_NAME': true,\n\t'CURRENT_MONTH_NAME_SHORT': true,\n\t'CURRENT_SECONDS_UNIX': true,\n\t'CURRENT_TIMEZONE_OFFSET': true,\n\t'SELECTION': true,\n\t'CLIPBOARD': true,\n\t'TM_SELECTED_TEXT': true,\n\t'TM_CURRENT_LINE': true,\n\t'TM_CURRENT_WORD': true,\n\t'TM_LINE_INDEX': true,\n\t'TM_LINE_NUMBER': true,\n\t'TM_FILENAME': true,\n\t'TM_FILENAME_BASE': true,\n\t'TM_DIRECTORY': true,\n\t'TM_FILEPATH': true,\n\t'CURSOR_INDEX': true, // 0-offset\n\t'CURSOR_NUMBER': true, // 1-offset\n\t'RELATIVE_FILEPATH': true,\n\t'BLOCK_COMMENT_START': true,\n\t'BLOCK_COMMENT_END': true,\n\t'LINE_COMMENT': true,\n\t'WORKSPACE_NAME': true,\n\t'WORKSPACE_FOLDER': true,\n\t'RANDOM': true,\n\t'RANDOM_HEX': true,\n\t'UUID': true\n});\n\nexport class CompositeSnippetVariableResolver implements VariableResolver {\n\n\tconstructor(private readonly _delegates: VariableResolver[]) {\n\t\t//\n\t}\n\n\tresolve(variable: Variable): string | undefined {\n\t\tfor (const delegate of this._delegates) {\n\t\t\tconst value = delegate.resolve(variable);\n\t\t\tif (value !== undefined) {\n\t\t\t\treturn value;\n\t\t\t}\n\t\t}\n\t\treturn undefined;\n\t}\n}\n\nexport class SelectionBasedVariableResolver implements VariableResolver {\n\n\tconstructor(\n\t\tprivate readonly _model: ITextModel,\n\t\tprivate readonly _selection: Selection,\n\t\tprivate readonly _selectionIdx: number,\n\t\tprivate readonly _overtypingCapturer: OvertypingCapturer | undefined\n\t) {\n\t\t//\n\t}\n\n\tresolve(variable: Variable): string | undefined {\n\n\t\tconst { name } = variable;\n\n\t\tif (name === 'SELECTION' || name === 'TM_SELECTED_TEXT') {\n\t\t\tlet value = this._model.getValueInRange(this._selection) || undefined;\n\t\t\tlet isMultiline = this._selection.startLineNumber !== this._selection.endLineNumber;\n\n\t\t\t// If there was no selected text, try to get last overtyped text\n\t\t\tif (!value && this._overtypingCapturer) {\n\t\t\t\tconst info = this._overtypingCapturer.getLastOvertypedInfo(this._selectionIdx);\n\t\t\t\tif (info) {\n\t\t\t\t\tvalue = info.value;\n\t\t\t\t\tisMultiline = info.multiline;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (value && isMultiline && variable.snippet) {\n\t\t\t\t// Selection is a multiline string which we indentation we now\n\t\t\t\t// need to adjust. We compare the indentation of this variable\n\t\t\t\t// with the indentation at the editor position and add potential\n\t\t\t\t// extra indentation to the value\n\n\t\t\t\tconst line = this._model.getLineContent(this._selection.startLineNumber);\n\t\t\t\tconst lineLeadingWhitespace = getLeadingWhitespace(line, 0, this._selection.startColumn - 1);\n\n\t\t\t\tlet varLeadingWhitespace = lineLeadingWhitespace;\n\t\t\t\tvariable.snippet.walk(marker => {\n\t\t\t\t\tif (marker === variable) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\tif (marker instanceof Text) {\n\t\t\t\t\t\tvarLeadingWhitespace = getLeadingWhitespace(splitLines(marker.value).pop()!);\n\t\t\t\t\t}\n\t\t\t\t\treturn true;\n\t\t\t\t});\n\t\t\t\tconst whitespaceCommonLength = commonPrefixLength(varLeadingWhitespace, lineLeadingWhitespace);\n\n\t\t\t\tvalue = value.replace(\n\t\t\t\t\t/(\\r\\n|\\r|\\n)(.*)/g,\n\t\t\t\t\t(m, newline, rest) => `${newline}${varLeadingWhitespace.substr(whitespaceCommonLength)}${rest}`\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn value;\n\n\t\t} else if (name === 'TM_CURRENT_LINE') {\n\t\t\treturn this._model.getLineContent(this._selection.positionLineNumber);\n\n\t\t} else if (name === 'TM_CURRENT_WORD') {\n\t\t\tconst info = this._model.getWordAtPosition({\n\t\t\t\tlineNumber: this._selection.positionLineNumber,\n\t\t\t\tcolumn: this._selection.positionColumn\n\t\t\t});\n\t\t\treturn info && info.word || undefined;\n\n\t\t} else if (name === 'TM_LINE_INDEX') {\n\t\t\treturn String(this._selection.positionLineNumber - 1);\n\n\t\t} else if (name === 'TM_LINE_NUMBER') {\n\t\t\treturn String(this._selection.positionLineNumber);\n\n\t\t} else if (name === 'CURSOR_INDEX') {\n\t\t\treturn String(this._selectionIdx);\n\n\t\t} else if (name === 'CURSOR_NUMBER') {\n\t\t\treturn String(this._selectionIdx + 1);\n\t\t}\n\t\treturn undefined;\n\t}\n}\n\nexport class ModelBasedVariableResolver implements VariableResolver {\n\n\tconstructor(\n\t\tprivate readonly _labelService: ILabelService,\n\t\tprivate readonly _model: ITextModel\n\t) {\n\t\t//\n\t}\n\n\tresolve(variable: Variable): string | undefined {\n\n\t\tconst { name } = variable;\n\n\t\tif (name === 'TM_FILENAME') {\n\t\t\treturn path.basename(this._model.uri.fsPath);\n\n\t\t} else if (name === 'TM_FILENAME_BASE') {\n\t\t\tconst name = path.basename(this._model.uri.fsPath);\n\t\t\tconst idx = name.lastIndexOf('.');\n\t\t\tif (idx <= 0) {\n\t\t\t\treturn name;\n\t\t\t} else {\n\t\t\t\treturn name.slice(0, idx);\n\t\t\t}\n\n\t\t} else if (name === 'TM_DIRECTORY') {\n\t\t\tif (path.dirname(this._model.uri.fsPath) === '.') {\n\t\t\t\treturn '';\n\t\t\t}\n\t\t\treturn this._labelService.getUriLabel(dirname(this._model.uri));\n\n\t\t} else if (name === 'TM_FILEPATH') {\n\t\t\treturn this._labelService.getUriLabel(this._model.uri);\n\t\t} else if (name === 'RELATIVE_FILEPATH') {\n\t\t\treturn this._labelService.getUriLabel(this._model.uri, { relative: true, noPrefix: true });\n\t\t}\n\n\t\treturn undefined;\n\t}\n}\n\nexport interface IReadClipboardText {\n\t(): string | undefined;\n}\n\nexport class ClipboardBasedVariableResolver implements VariableResolver {\n\n\tconstructor(\n\t\tprivate readonly _readClipboardText: IReadClipboardText,\n\t\tprivate readonly _selectionIdx: number,\n\t\tprivate readonly _selectionCount: number,\n\t\tprivate readonly _spread: boolean\n\t) {\n\t\t//\n\t}\n\n\tresolve(variable: Variable): string | undefined {\n\t\tif (variable.name !== 'CLIPBOARD') {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tconst clipboardText = this._readClipboardText();\n\t\tif (!clipboardText) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\t// `spread` is assigning each cursor a line of the clipboard\n\t\t// text whenever there the line count equals the cursor count\n\t\t// and when enabled\n\t\tif (this._spread) {\n\t\t\tconst lines = clipboardText.split(/\\r\\n|\\n|\\r/).filter(s => !isFalsyOrWhitespace(s));\n\t\t\tif (lines.length === this._selectionCount) {\n\t\t\t\treturn lines[this._selectionIdx];\n\t\t\t}\n\t\t}\n\t\treturn clipboardText;\n\t}\n}\nexport class CommentBasedVariableResolver implements VariableResolver {\n\tconstructor(\n\t\tprivate readonly _model: ITextModel,\n\t\tprivate readonly _selection: Selection,\n\t\t@ILanguageConfigurationService private readonly _languageConfigurationService: ILanguageConfigurationService\n\t) {\n\t\t//\n\t}\n\tresolve(variable: Variable): string | undefined {\n\t\tconst { name } = variable;\n\t\tconst langId = this._model.getLanguageIdAtPosition(this._selection.selectionStartLineNumber, this._selection.selectionStartColumn);\n\t\tconst config = this._languageConfigurationService.getLanguageConfiguration(langId).comments;\n\t\tif (!config) {\n\t\t\treturn undefined;\n\t\t}\n\t\tif (name === 'LINE_COMMENT') {\n\t\t\treturn config.lineCommentToken || undefined;\n\t\t} else if (name === 'BLOCK_COMMENT_START') {\n\t\t\treturn config.blockCommentStartToken || undefined;\n\t\t} else if (name === 'BLOCK_COMMENT_END') {\n\t\t\treturn config.blockCommentEndToken || undefined;\n\t\t}\n\t\treturn undefined;\n\t}\n}\nexport class TimeBasedVariableResolver implements VariableResolver {\n\n\tprivate 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\")];\n\tprivate static readonly dayNamesShort = [nls.localize('SundayShort', \"Sun\"), nls.localize('MondayShort', \"Mon\"), nls.localize('TuesdayShort', \"Tue\"), nls.localize('WednesdayShort', \"Wed\"), nls.localize('ThursdayShort', \"Thu\"), nls.localize('FridayShort', \"Fri\"), nls.localize('SaturdayShort', \"Sat\")];\n\tprivate static readonly monthNames = [nls.localize('January', \"January\"), nls.localize('February', \"February\"), nls.localize('March', \"March\"), nls.localize('April', \"April\"), nls.localize('May', \"May\"), nls.localize('June', \"June\"), nls.localize('July', \"July\"), nls.localize('August', \"August\"), nls.localize('September', \"September\"), nls.localize('October', \"October\"), nls.localize('November', \"November\"), nls.localize('December', \"December\")];\n\tprivate static readonly monthNamesShort = [nls.localize('JanuaryShort', \"Jan\"), nls.localize('FebruaryShort', \"Feb\"), nls.localize('MarchShort', \"Mar\"), nls.localize('AprilShort', \"Apr\"), nls.localize('MayShort', \"May\"), nls.localize('JuneShort', \"Jun\"), nls.localize('JulyShort', \"Jul\"), nls.localize('AugustShort', \"Aug\"), nls.localize('SeptemberShort', \"Sep\"), nls.localize('OctoberShort', \"Oct\"), nls.localize('NovemberShort', \"Nov\"), nls.localize('DecemberShort', \"Dec\")];\n\n\tprivate readonly _date = new Date();\n\n\tresolve(variable: Variable): string | undefined {\n\t\tconst { name } = variable;\n\n\t\tif (name === 'CURRENT_YEAR') {\n\t\t\treturn String(this._date.getFullYear());\n\t\t} else if (name === 'CURRENT_YEAR_SHORT') {\n\t\t\treturn String(this._date.getFullYear()).slice(-2);\n\t\t} else if (name === 'CURRENT_MONTH') {\n\t\t\treturn String(this._date.getMonth().valueOf() + 1).padStart(2, '0');\n\t\t} else if (name === 'CURRENT_DATE') {\n\t\t\treturn String(this._date.getDate().valueOf()).padStart(2, '0');\n\t\t} else if (name === 'CURRENT_HOUR') {\n\t\t\treturn String(this._date.getHours().valueOf()).padStart(2, '0');\n\t\t} else if (name === 'CURRENT_MINUTE') {\n\t\t\treturn String(this._date.getMinutes().valueOf()).padStart(2, '0');\n\t\t} else if (name === 'CURRENT_SECOND') {\n\t\t\treturn String(this._date.getSeconds().valueOf()).padStart(2, '0');\n\t\t} else if (name === 'CURRENT_DAY_NAME') {\n\t\t\treturn TimeBasedVariableResolver.dayNames[this._date.getDay()];\n\t\t} else if (name === 'CURRENT_DAY_NAME_SHORT') {\n\t\t\treturn TimeBasedVariableResolver.dayNamesShort[this._date.getDay()];\n\t\t} else if (name === 'CURRENT_MONTH_NAME') {\n\t\t\treturn TimeBasedVariableResolver.monthNames[this._date.getMonth()];\n\t\t} else if (name === 'CURRENT_MONTH_NAME_SHORT') {\n\t\t\treturn TimeBasedVariableResolver.monthNamesShort[this._date.getMonth()];\n\t\t} else if (name === 'CURRENT_SECONDS_UNIX') {\n\t\t\treturn String(Math.floor(this._date.getTime() / 1000));\n\t\t} else if (name === 'CURRENT_TIMEZONE_OFFSET') {\n\t\t\tconst rawTimeOffset = this._date.getTimezoneOffset();\n\t\t\tconst sign = rawTimeOffset > 0 ? '-' : '+';\n\t\t\tconst hours = Math.trunc(Math.abs(rawTimeOffset / 60));\n\t\t\tconst hoursString = (hours < 10 ? '0' + hours : hours);\n\t\t\tconst minutes = Math.abs(rawTimeOffset) - hours * 60;\n\t\t\tconst minutesString = (minutes < 10 ? '0' + minutes : minutes);\n\t\t\treturn sign + hoursString + ':' + minutesString;\n\t\t}\n\n\t\treturn undefined;\n\t}\n}\n\nexport class WorkspaceBasedVariableResolver implements VariableResolver {\n\tconstructor(\n\t\tprivate readonly _workspaceService: IWorkspaceContextService | undefined,\n\t) {\n\t\t//\n\t}\n\n\tresolve(variable: Variable): string | undefined {\n\t\tif (!this._workspaceService) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tconst workspaceIdentifier = toWorkspaceIdentifier(this._workspaceService.getWorkspace());\n\t\tif (isEmptyWorkspaceIdentifier(workspaceIdentifier)) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif (variable.name === 'WORKSPACE_NAME') {\n\t\t\treturn this._resolveWorkspaceName(workspaceIdentifier);\n\t\t} else if (variable.name === 'WORKSPACE_FOLDER') {\n\t\t\treturn this._resoveWorkspacePath(workspaceIdentifier);\n\t\t}\n\n\t\treturn undefined;\n\t}\n\tprivate _resolveWorkspaceName(workspaceIdentifier: IWorkspaceIdentifier | ISingleFolderWorkspaceIdentifier): string | undefined {\n\t\tif (isSingleFolderWorkspaceIdentifier(workspaceIdentifier)) {\n\t\t\treturn path.basename(workspaceIdentifier.uri.path);\n\t\t}\n\n\t\tlet filename = path.basename(workspaceIdentifier.configPath.path);\n\t\tif (filename.endsWith(WORKSPACE_EXTENSION)) {\n\t\t\tfilename = filename.substr(0, filename.length - WORKSPACE_EXTENSION.length - 1);\n\t\t}\n\t\treturn filename;\n\t}\n\tprivate _resoveWorkspacePath(workspaceIdentifier: IWorkspaceIdentifier | ISingleFolderWorkspaceIdentifier): string | undefined {\n\t\tif (isSingleFolderWorkspaceIdentifier(workspaceIdentifier)) {\n\t\t\treturn normalizeDriveLetter(workspaceIdentifier.uri.fsPath);\n\t\t}\n\n\t\tconst filename = path.basename(workspaceIdentifier.configPath.path);\n\t\tlet folderpath = workspaceIdentifier.configPath.fsPath;\n\t\tif (folderpath.endsWith(filename)) {\n\t\t\tfolderpath = folderpath.substr(0, folderpath.length - filename.length - 1);\n\t\t}\n\t\treturn (folderpath ? normalizeDriveLetter(folderpath) : '/');\n\t}\n}\n\nexport class RandomBasedVariableResolver implements VariableResolver {\n\tresolve(variable: Variable): string | undefined {\n\t\tconst { name } = variable;\n\n\t\tif (name === 'RANDOM') {\n\t\t\treturn Math.random().toString().slice(-6);\n\t\t} else if (name === 'RANDOM_HEX') {\n\t\t\treturn Math.random().toString(16).slice(-6);\n\t\t} else if (name === 'UUID') {\n\t\t\treturn generateUuid();\n\t\t}\n\n\t\treturn undefined;\n\t}\n}\n"]}
1
+ {"version":3,"sources":["vs/editor/contrib/snippet/browser/snippetVariables.ts"],"names":[],"mappings":"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","file":"snippetVariables.js","sourceRoot":"file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport { normalizeDriveLetter } from '../../../../base/common/labels.js';\nimport * as path from '../../../../base/common/path.js';\nimport { dirname } from '../../../../base/common/resources.js';\nimport { commonPrefixLength, getLeadingWhitespace, isFalsyOrWhitespace, splitLines } from '../../../../base/common/strings.js';\nimport { generateUuid } from '../../../../base/common/uuid.js';\nimport { Selection } from '../../../common/core/selection.js';\nimport { ITextModel } from '../../../common/model.js';\nimport { ILanguageConfigurationService } from '../../../common/languages/languageConfigurationRegistry.js';\nimport { Text, Variable, VariableResolver } from './snippetParser.js';\nimport { OvertypingCapturer } from '../../suggest/browser/suggestOvertypingCapturer.js';\nimport * as nls from '../../../../nls.js';\nimport { ILabelService } from '../../../../platform/label/common/label.js';\nimport { WORKSPACE_EXTENSION, isSingleFolderWorkspaceIdentifier, toWorkspaceIdentifier, IWorkspaceContextService, ISingleFolderWorkspaceIdentifier, IWorkspaceIdentifier, isEmptyWorkspaceIdentifier } from '../../../../platform/workspace/common/workspace.js';\n\nexport const KnownSnippetVariableNames = Object.freeze<{ [key: string]: true }>({\n\t'CURRENT_YEAR': true,\n\t'CURRENT_YEAR_SHORT': true,\n\t'CURRENT_MONTH': true,\n\t'CURRENT_DATE': true,\n\t'CURRENT_HOUR': true,\n\t'CURRENT_MINUTE': true,\n\t'CURRENT_SECOND': true,\n\t'CURRENT_DAY_NAME': true,\n\t'CURRENT_DAY_NAME_SHORT': true,\n\t'CURRENT_MONTH_NAME': true,\n\t'CURRENT_MONTH_NAME_SHORT': true,\n\t'CURRENT_SECONDS_UNIX': true,\n\t'CURRENT_TIMEZONE_OFFSET': true,\n\t'SELECTION': true,\n\t'CLIPBOARD': true,\n\t'TM_SELECTED_TEXT': true,\n\t'TM_CURRENT_LINE': true,\n\t'TM_CURRENT_WORD': true,\n\t'TM_LINE_INDEX': true,\n\t'TM_LINE_NUMBER': true,\n\t'TM_FILENAME': true,\n\t'TM_FILENAME_BASE': true,\n\t'TM_DIRECTORY': true,\n\t'TM_DIRECTORY_BASE': true,\n\t'TM_FILEPATH': true,\n\t'CURSOR_INDEX': true, // 0-offset\n\t'CURSOR_NUMBER': true, // 1-offset\n\t'RELATIVE_FILEPATH': true,\n\t'BLOCK_COMMENT_START': true,\n\t'BLOCK_COMMENT_END': true,\n\t'LINE_COMMENT': true,\n\t'WORKSPACE_NAME': true,\n\t'WORKSPACE_FOLDER': true,\n\t'RANDOM': true,\n\t'RANDOM_HEX': true,\n\t'UUID': true\n});\n\nexport class CompositeSnippetVariableResolver implements VariableResolver {\n\n\tconstructor(private readonly _delegates: VariableResolver[]) {\n\t\t//\n\t}\n\n\tresolve(variable: Variable): string | undefined {\n\t\tfor (const delegate of this._delegates) {\n\t\t\tconst value = delegate.resolve(variable);\n\t\t\tif (value !== undefined) {\n\t\t\t\treturn value;\n\t\t\t}\n\t\t}\n\t\treturn undefined;\n\t}\n}\n\nexport class SelectionBasedVariableResolver implements VariableResolver {\n\n\tconstructor(\n\t\tprivate readonly _model: ITextModel,\n\t\tprivate readonly _selection: Selection,\n\t\tprivate readonly _selectionIdx: number,\n\t\tprivate readonly _overtypingCapturer: OvertypingCapturer | undefined\n\t) {\n\t\t//\n\t}\n\n\tresolve(variable: Variable): string | undefined {\n\n\t\tconst { name } = variable;\n\n\t\tif (name === 'SELECTION' || name === 'TM_SELECTED_TEXT') {\n\t\t\tlet value = this._model.getValueInRange(this._selection) || undefined;\n\t\t\tlet isMultiline = this._selection.startLineNumber !== this._selection.endLineNumber;\n\n\t\t\t// If there was no selected text, try to get last overtyped text\n\t\t\tif (!value && this._overtypingCapturer) {\n\t\t\t\tconst info = this._overtypingCapturer.getLastOvertypedInfo(this._selectionIdx);\n\t\t\t\tif (info) {\n\t\t\t\t\tvalue = info.value;\n\t\t\t\t\tisMultiline = info.multiline;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (value && isMultiline && variable.snippet) {\n\t\t\t\t// Selection is a multiline string which we indentation we now\n\t\t\t\t// need to adjust. We compare the indentation of this variable\n\t\t\t\t// with the indentation at the editor position and add potential\n\t\t\t\t// extra indentation to the value\n\n\t\t\t\tconst line = this._model.getLineContent(this._selection.startLineNumber);\n\t\t\t\tconst lineLeadingWhitespace = getLeadingWhitespace(line, 0, this._selection.startColumn - 1);\n\n\t\t\t\tlet varLeadingWhitespace = lineLeadingWhitespace;\n\t\t\t\tvariable.snippet.walk(marker => {\n\t\t\t\t\tif (marker === variable) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\tif (marker instanceof Text) {\n\t\t\t\t\t\tvarLeadingWhitespace = getLeadingWhitespace(splitLines(marker.value).pop()!);\n\t\t\t\t\t}\n\t\t\t\t\treturn true;\n\t\t\t\t});\n\t\t\t\tconst whitespaceCommonLength = commonPrefixLength(varLeadingWhitespace, lineLeadingWhitespace);\n\n\t\t\t\tvalue = value.replace(\n\t\t\t\t\t/(\\r\\n|\\r|\\n)(.*)/g,\n\t\t\t\t\t(m, newline, rest) => `${newline}${varLeadingWhitespace.substr(whitespaceCommonLength)}${rest}`\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn value;\n\n\t\t} else if (name === 'TM_CURRENT_LINE') {\n\t\t\treturn this._model.getLineContent(this._selection.positionLineNumber);\n\n\t\t} else if (name === 'TM_CURRENT_WORD') {\n\t\t\tconst info = this._model.getWordAtPosition({\n\t\t\t\tlineNumber: this._selection.positionLineNumber,\n\t\t\t\tcolumn: this._selection.positionColumn\n\t\t\t});\n\t\t\treturn info && info.word || undefined;\n\n\t\t} else if (name === 'TM_LINE_INDEX') {\n\t\t\treturn String(this._selection.positionLineNumber - 1);\n\n\t\t} else if (name === 'TM_LINE_NUMBER') {\n\t\t\treturn String(this._selection.positionLineNumber);\n\n\t\t} else if (name === 'CURSOR_INDEX') {\n\t\t\treturn String(this._selectionIdx);\n\n\t\t} else if (name === 'CURSOR_NUMBER') {\n\t\t\treturn String(this._selectionIdx + 1);\n\t\t}\n\t\treturn undefined;\n\t}\n}\n\nexport class ModelBasedVariableResolver implements VariableResolver {\n\n\tconstructor(\n\t\tprivate readonly _labelService: ILabelService,\n\t\tprivate readonly _model: ITextModel\n\t) {\n\t\t//\n\t}\n\n\tresolve(variable: Variable): string | undefined {\n\n\t\tconst { name } = variable;\n\n\t\tif (name === 'TM_FILENAME') {\n\t\t\treturn path.basename(this._model.uri.fsPath);\n\n\t\t} else if (name === 'TM_FILENAME_BASE') {\n\t\t\tconst name = path.basename(this._model.uri.fsPath);\n\t\t\tconst idx = name.lastIndexOf('.');\n\t\t\tif (idx <= 0) {\n\t\t\t\treturn name;\n\t\t\t} else {\n\t\t\t\treturn name.slice(0, idx);\n\t\t\t}\n\n\t\t} else if (name === 'TM_DIRECTORY') {\n\t\t\tif (path.dirname(this._model.uri.fsPath) === '.') {\n\t\t\t\treturn '';\n\t\t\t}\n\t\t\treturn this._labelService.getUriLabel(dirname(this._model.uri));\n\n\t\t} else if (name === 'TM_DIRECTORY_BASE') {\n\t\t\tif (path.dirname(this._model.uri.fsPath) === '.') {\n\t\t\t\treturn '';\n\t\t\t}\n\t\t\treturn path.basename(path.dirname(this._model.uri.fsPath));\n\n\t\t} else if (name === 'TM_FILEPATH') {\n\t\t\treturn this._labelService.getUriLabel(this._model.uri);\n\t\t} else if (name === 'RELATIVE_FILEPATH') {\n\t\t\treturn this._labelService.getUriLabel(this._model.uri, { relative: true, noPrefix: true });\n\t\t}\n\n\t\treturn undefined;\n\t}\n}\n\nexport interface IReadClipboardText {\n\t(): string | undefined;\n}\n\nexport class ClipboardBasedVariableResolver implements VariableResolver {\n\n\tconstructor(\n\t\tprivate readonly _readClipboardText: IReadClipboardText,\n\t\tprivate readonly _selectionIdx: number,\n\t\tprivate readonly _selectionCount: number,\n\t\tprivate readonly _spread: boolean\n\t) {\n\t\t//\n\t}\n\n\tresolve(variable: Variable): string | undefined {\n\t\tif (variable.name !== 'CLIPBOARD') {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tconst clipboardText = this._readClipboardText();\n\t\tif (!clipboardText) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\t// `spread` is assigning each cursor a line of the clipboard\n\t\t// text whenever there the line count equals the cursor count\n\t\t// and when enabled\n\t\tif (this._spread) {\n\t\t\tconst lines = clipboardText.split(/\\r\\n|\\n|\\r/).filter(s => !isFalsyOrWhitespace(s));\n\t\t\tif (lines.length === this._selectionCount) {\n\t\t\t\treturn lines[this._selectionIdx];\n\t\t\t}\n\t\t}\n\t\treturn clipboardText;\n\t}\n}\nexport class CommentBasedVariableResolver implements VariableResolver {\n\tconstructor(\n\t\tprivate readonly _model: ITextModel,\n\t\tprivate readonly _selection: Selection,\n\t\t@ILanguageConfigurationService private readonly _languageConfigurationService: ILanguageConfigurationService\n\t) {\n\t\t//\n\t}\n\tresolve(variable: Variable): string | undefined {\n\t\tconst { name } = variable;\n\t\tconst langId = this._model.getLanguageIdAtPosition(this._selection.selectionStartLineNumber, this._selection.selectionStartColumn);\n\t\tconst config = this._languageConfigurationService.getLanguageConfiguration(langId).comments;\n\t\tif (!config) {\n\t\t\treturn undefined;\n\t\t}\n\t\tif (name === 'LINE_COMMENT') {\n\t\t\treturn config.lineCommentToken || undefined;\n\t\t} else if (name === 'BLOCK_COMMENT_START') {\n\t\t\treturn config.blockCommentStartToken || undefined;\n\t\t} else if (name === 'BLOCK_COMMENT_END') {\n\t\t\treturn config.blockCommentEndToken || undefined;\n\t\t}\n\t\treturn undefined;\n\t}\n}\nexport class TimeBasedVariableResolver implements VariableResolver {\n\n\tprivate 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\")];\n\tprivate static readonly dayNamesShort = [nls.localize('SundayShort', \"Sun\"), nls.localize('MondayShort', \"Mon\"), nls.localize('TuesdayShort', \"Tue\"), nls.localize('WednesdayShort', \"Wed\"), nls.localize('ThursdayShort', \"Thu\"), nls.localize('FridayShort', \"Fri\"), nls.localize('SaturdayShort', \"Sat\")];\n\tprivate static readonly monthNames = [nls.localize('January', \"January\"), nls.localize('February', \"February\"), nls.localize('March', \"March\"), nls.localize('April', \"April\"), nls.localize('May', \"May\"), nls.localize('June', \"June\"), nls.localize('July', \"July\"), nls.localize('August', \"August\"), nls.localize('September', \"September\"), nls.localize('October', \"October\"), nls.localize('November', \"November\"), nls.localize('December', \"December\")];\n\tprivate static readonly monthNamesShort = [nls.localize('JanuaryShort', \"Jan\"), nls.localize('FebruaryShort', \"Feb\"), nls.localize('MarchShort', \"Mar\"), nls.localize('AprilShort', \"Apr\"), nls.localize('MayShort', \"May\"), nls.localize('JuneShort', \"Jun\"), nls.localize('JulyShort', \"Jul\"), nls.localize('AugustShort', \"Aug\"), nls.localize('SeptemberShort', \"Sep\"), nls.localize('OctoberShort', \"Oct\"), nls.localize('NovemberShort', \"Nov\"), nls.localize('DecemberShort', \"Dec\")];\n\n\tprivate readonly _date = new Date();\n\n\tresolve(variable: Variable): string | undefined {\n\t\tconst { name } = variable;\n\n\t\tif (name === 'CURRENT_YEAR') {\n\t\t\treturn String(this._date.getFullYear());\n\t\t} else if (name === 'CURRENT_YEAR_SHORT') {\n\t\t\treturn String(this._date.getFullYear()).slice(-2);\n\t\t} else if (name === 'CURRENT_MONTH') {\n\t\t\treturn String(this._date.getMonth().valueOf() + 1).padStart(2, '0');\n\t\t} else if (name === 'CURRENT_DATE') {\n\t\t\treturn String(this._date.getDate().valueOf()).padStart(2, '0');\n\t\t} else if (name === 'CURRENT_HOUR') {\n\t\t\treturn String(this._date.getHours().valueOf()).padStart(2, '0');\n\t\t} else if (name === 'CURRENT_MINUTE') {\n\t\t\treturn String(this._date.getMinutes().valueOf()).padStart(2, '0');\n\t\t} else if (name === 'CURRENT_SECOND') {\n\t\t\treturn String(this._date.getSeconds().valueOf()).padStart(2, '0');\n\t\t} else if (name === 'CURRENT_DAY_NAME') {\n\t\t\treturn TimeBasedVariableResolver.dayNames[this._date.getDay()];\n\t\t} else if (name === 'CURRENT_DAY_NAME_SHORT') {\n\t\t\treturn TimeBasedVariableResolver.dayNamesShort[this._date.getDay()];\n\t\t} else if (name === 'CURRENT_MONTH_NAME') {\n\t\t\treturn TimeBasedVariableResolver.monthNames[this._date.getMonth()];\n\t\t} else if (name === 'CURRENT_MONTH_NAME_SHORT') {\n\t\t\treturn TimeBasedVariableResolver.monthNamesShort[this._date.getMonth()];\n\t\t} else if (name === 'CURRENT_SECONDS_UNIX') {\n\t\t\treturn String(Math.floor(this._date.getTime() / 1000));\n\t\t} else if (name === 'CURRENT_TIMEZONE_OFFSET') {\n\t\t\tconst rawTimeOffset = this._date.getTimezoneOffset();\n\t\t\tconst sign = rawTimeOffset > 0 ? '-' : '+';\n\t\t\tconst hours = Math.trunc(Math.abs(rawTimeOffset / 60));\n\t\t\tconst hoursString = (hours < 10 ? '0' + hours : hours);\n\t\t\tconst minutes = Math.abs(rawTimeOffset) - hours * 60;\n\t\t\tconst minutesString = (minutes < 10 ? '0' + minutes : minutes);\n\t\t\treturn sign + hoursString + ':' + minutesString;\n\t\t}\n\n\t\treturn undefined;\n\t}\n}\n\nexport class WorkspaceBasedVariableResolver implements VariableResolver {\n\tconstructor(\n\t\tprivate readonly _workspaceService: IWorkspaceContextService | undefined,\n\t) {\n\t\t//\n\t}\n\n\tresolve(variable: Variable): string | undefined {\n\t\tif (!this._workspaceService) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tconst workspaceIdentifier = toWorkspaceIdentifier(this._workspaceService.getWorkspace());\n\t\tif (isEmptyWorkspaceIdentifier(workspaceIdentifier)) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif (variable.name === 'WORKSPACE_NAME') {\n\t\t\treturn this._resolveWorkspaceName(workspaceIdentifier);\n\t\t} else if (variable.name === 'WORKSPACE_FOLDER') {\n\t\t\treturn this._resoveWorkspacePath(workspaceIdentifier);\n\t\t}\n\n\t\treturn undefined;\n\t}\n\tprivate _resolveWorkspaceName(workspaceIdentifier: IWorkspaceIdentifier | ISingleFolderWorkspaceIdentifier): string | undefined {\n\t\tif (isSingleFolderWorkspaceIdentifier(workspaceIdentifier)) {\n\t\t\treturn path.basename(workspaceIdentifier.uri.path);\n\t\t}\n\n\t\tlet filename = path.basename(workspaceIdentifier.configPath.path);\n\t\tif (filename.endsWith(WORKSPACE_EXTENSION)) {\n\t\t\tfilename = filename.substr(0, filename.length - WORKSPACE_EXTENSION.length - 1);\n\t\t}\n\t\treturn filename;\n\t}\n\tprivate _resoveWorkspacePath(workspaceIdentifier: IWorkspaceIdentifier | ISingleFolderWorkspaceIdentifier): string | undefined {\n\t\tif (isSingleFolderWorkspaceIdentifier(workspaceIdentifier)) {\n\t\t\treturn normalizeDriveLetter(workspaceIdentifier.uri.fsPath);\n\t\t}\n\n\t\tconst filename = path.basename(workspaceIdentifier.configPath.path);\n\t\tlet folderpath = workspaceIdentifier.configPath.fsPath;\n\t\tif (folderpath.endsWith(filename)) {\n\t\t\tfolderpath = folderpath.substr(0, folderpath.length - filename.length - 1);\n\t\t}\n\t\treturn (folderpath ? normalizeDriveLetter(folderpath) : '/');\n\t}\n}\n\nexport class RandomBasedVariableResolver implements VariableResolver {\n\tresolve(variable: Variable): string | undefined {\n\t\tconst { name } = variable;\n\n\t\tif (name === 'RANDOM') {\n\t\t\treturn Math.random().toString().slice(-6);\n\t\t} else if (name === 'RANDOM_HEX') {\n\t\t\treturn Math.random().toString(16).slice(-6);\n\t\t} else if (name === 'UUID') {\n\t\t\treturn generateUuid();\n\t\t}\n\n\t\treturn undefined;\n\t}\n}\n"]}