123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415 |
- /*---------------------------------------------------------------------------------------------
- * Copyright (c) Microsoft Corporation. All rights reserved.
- * Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
- import { URI } from '../../base/common/uri.js';
- import { Range } from './core/range.js';
- import { LanguageFeatureRegistry } from './modes/languageFeatureRegistry.js';
- import { TokenizationRegistryImpl } from './modes/tokenizationRegistry.js';
- import { iconRegistry, Codicon } from '../../base/common/codicons.js';
- /**
- * @internal
- */
- export class TokenMetadata {
- static getLanguageId(metadata) {
- return (metadata & 255 /* LANGUAGEID_MASK */) >>> 0 /* LANGUAGEID_OFFSET */;
- }
- static getTokenType(metadata) {
- return (metadata & 1792 /* TOKEN_TYPE_MASK */) >>> 8 /* TOKEN_TYPE_OFFSET */;
- }
- static getFontStyle(metadata) {
- return (metadata & 14336 /* FONT_STYLE_MASK */) >>> 11 /* FONT_STYLE_OFFSET */;
- }
- static getForeground(metadata) {
- return (metadata & 8372224 /* FOREGROUND_MASK */) >>> 14 /* FOREGROUND_OFFSET */;
- }
- static getBackground(metadata) {
- return (metadata & 4286578688 /* BACKGROUND_MASK */) >>> 23 /* BACKGROUND_OFFSET */;
- }
- static getClassNameFromMetadata(metadata) {
- let foreground = this.getForeground(metadata);
- let className = 'mtk' + foreground;
- let fontStyle = this.getFontStyle(metadata);
- if (fontStyle & 1 /* Italic */) {
- className += ' mtki';
- }
- if (fontStyle & 2 /* Bold */) {
- className += ' mtkb';
- }
- if (fontStyle & 4 /* Underline */) {
- className += ' mtku';
- }
- return className;
- }
- static getInlineStyleFromMetadata(metadata, colorMap) {
- const foreground = this.getForeground(metadata);
- const fontStyle = this.getFontStyle(metadata);
- let result = `color: ${colorMap[foreground]};`;
- if (fontStyle & 1 /* Italic */) {
- result += 'font-style: italic;';
- }
- if (fontStyle & 2 /* Bold */) {
- result += 'font-weight: bold;';
- }
- if (fontStyle & 4 /* Underline */) {
- result += 'text-decoration: underline;';
- }
- return result;
- }
- }
- /**
- * @internal
- */
- export const completionKindToCssClass = (function () {
- let data = Object.create(null);
- data[0 /* Method */] = 'symbol-method';
- data[1 /* Function */] = 'symbol-function';
- data[2 /* Constructor */] = 'symbol-constructor';
- data[3 /* Field */] = 'symbol-field';
- data[4 /* Variable */] = 'symbol-variable';
- data[5 /* Class */] = 'symbol-class';
- data[6 /* Struct */] = 'symbol-struct';
- data[7 /* Interface */] = 'symbol-interface';
- data[8 /* Module */] = 'symbol-module';
- data[9 /* Property */] = 'symbol-property';
- data[10 /* Event */] = 'symbol-event';
- data[11 /* Operator */] = 'symbol-operator';
- data[12 /* Unit */] = 'symbol-unit';
- data[13 /* Value */] = 'symbol-value';
- data[14 /* Constant */] = 'symbol-constant';
- data[15 /* Enum */] = 'symbol-enum';
- data[16 /* EnumMember */] = 'symbol-enum-member';
- data[17 /* Keyword */] = 'symbol-keyword';
- data[27 /* Snippet */] = 'symbol-snippet';
- data[18 /* Text */] = 'symbol-text';
- data[19 /* Color */] = 'symbol-color';
- data[20 /* File */] = 'symbol-file';
- data[21 /* Reference */] = 'symbol-reference';
- data[22 /* Customcolor */] = 'symbol-customcolor';
- data[23 /* Folder */] = 'symbol-folder';
- data[24 /* TypeParameter */] = 'symbol-type-parameter';
- data[25 /* User */] = 'account';
- data[26 /* Issue */] = 'issues';
- return function (kind) {
- const name = data[kind];
- let codicon = name && iconRegistry.get(name);
- if (!codicon) {
- console.info('No codicon found for CompletionItemKind ' + kind);
- codicon = Codicon.symbolProperty;
- }
- return codicon.classNames;
- };
- })();
- /**
- * @internal
- */
- export let completionKindFromString = (function () {
- let data = Object.create(null);
- data['method'] = 0 /* Method */;
- data['function'] = 1 /* Function */;
- data['constructor'] = 2 /* Constructor */;
- data['field'] = 3 /* Field */;
- data['variable'] = 4 /* Variable */;
- data['class'] = 5 /* Class */;
- data['struct'] = 6 /* Struct */;
- data['interface'] = 7 /* Interface */;
- data['module'] = 8 /* Module */;
- data['property'] = 9 /* Property */;
- data['event'] = 10 /* Event */;
- data['operator'] = 11 /* Operator */;
- data['unit'] = 12 /* Unit */;
- data['value'] = 13 /* Value */;
- data['constant'] = 14 /* Constant */;
- data['enum'] = 15 /* Enum */;
- data['enum-member'] = 16 /* EnumMember */;
- data['enumMember'] = 16 /* EnumMember */;
- data['keyword'] = 17 /* Keyword */;
- data['snippet'] = 27 /* Snippet */;
- data['text'] = 18 /* Text */;
- data['color'] = 19 /* Color */;
- data['file'] = 20 /* File */;
- data['reference'] = 21 /* Reference */;
- data['customcolor'] = 22 /* Customcolor */;
- data['folder'] = 23 /* Folder */;
- data['type-parameter'] = 24 /* TypeParameter */;
- data['typeParameter'] = 24 /* TypeParameter */;
- data['account'] = 25 /* User */;
- data['issue'] = 26 /* Issue */;
- return function (value, strict) {
- let res = data[value];
- if (typeof res === 'undefined' && !strict) {
- res = 9 /* Property */;
- }
- return res;
- };
- })();
- /**
- * How an {@link InlineCompletionsProvider inline completion provider} was triggered.
- */
- export var InlineCompletionTriggerKind;
- (function (InlineCompletionTriggerKind) {
- /**
- * Completion was triggered automatically while editing.
- * It is sufficient to return a single completion item in this case.
- */
- InlineCompletionTriggerKind[InlineCompletionTriggerKind["Automatic"] = 0] = "Automatic";
- /**
- * Completion was triggered explicitly by a user gesture.
- * Return multiple completion items to enable cycling through them.
- */
- InlineCompletionTriggerKind[InlineCompletionTriggerKind["Explicit"] = 1] = "Explicit";
- })(InlineCompletionTriggerKind || (InlineCompletionTriggerKind = {}));
- export var SignatureHelpTriggerKind;
- (function (SignatureHelpTriggerKind) {
- SignatureHelpTriggerKind[SignatureHelpTriggerKind["Invoke"] = 1] = "Invoke";
- SignatureHelpTriggerKind[SignatureHelpTriggerKind["TriggerCharacter"] = 2] = "TriggerCharacter";
- SignatureHelpTriggerKind[SignatureHelpTriggerKind["ContentChange"] = 3] = "ContentChange";
- })(SignatureHelpTriggerKind || (SignatureHelpTriggerKind = {}));
- /**
- * A document highlight kind.
- */
- export var DocumentHighlightKind;
- (function (DocumentHighlightKind) {
- /**
- * A textual occurrence.
- */
- DocumentHighlightKind[DocumentHighlightKind["Text"] = 0] = "Text";
- /**
- * Read-access of a symbol, like reading a variable.
- */
- DocumentHighlightKind[DocumentHighlightKind["Read"] = 1] = "Read";
- /**
- * Write-access of a symbol, like writing to a variable.
- */
- DocumentHighlightKind[DocumentHighlightKind["Write"] = 2] = "Write";
- })(DocumentHighlightKind || (DocumentHighlightKind = {}));
- /**
- * @internal
- */
- export function isLocationLink(thing) {
- return thing
- && URI.isUri(thing.uri)
- && Range.isIRange(thing.range)
- && (Range.isIRange(thing.originSelectionRange) || Range.isIRange(thing.targetSelectionRange));
- }
- /**
- * @internal
- */
- export var SymbolKinds;
- (function (SymbolKinds) {
- const byName = new Map();
- byName.set('file', 0 /* File */);
- byName.set('module', 1 /* Module */);
- byName.set('namespace', 2 /* Namespace */);
- byName.set('package', 3 /* Package */);
- byName.set('class', 4 /* Class */);
- byName.set('method', 5 /* Method */);
- byName.set('property', 6 /* Property */);
- byName.set('field', 7 /* Field */);
- byName.set('constructor', 8 /* Constructor */);
- byName.set('enum', 9 /* Enum */);
- byName.set('interface', 10 /* Interface */);
- byName.set('function', 11 /* Function */);
- byName.set('variable', 12 /* Variable */);
- byName.set('constant', 13 /* Constant */);
- byName.set('string', 14 /* String */);
- byName.set('number', 15 /* Number */);
- byName.set('boolean', 16 /* Boolean */);
- byName.set('array', 17 /* Array */);
- byName.set('object', 18 /* Object */);
- byName.set('key', 19 /* Key */);
- byName.set('null', 20 /* Null */);
- byName.set('enum-member', 21 /* EnumMember */);
- byName.set('struct', 22 /* Struct */);
- byName.set('event', 23 /* Event */);
- byName.set('operator', 24 /* Operator */);
- byName.set('type-parameter', 25 /* TypeParameter */);
- const byKind = new Map();
- byKind.set(0 /* File */, 'file');
- byKind.set(1 /* Module */, 'module');
- byKind.set(2 /* Namespace */, 'namespace');
- byKind.set(3 /* Package */, 'package');
- byKind.set(4 /* Class */, 'class');
- byKind.set(5 /* Method */, 'method');
- byKind.set(6 /* Property */, 'property');
- byKind.set(7 /* Field */, 'field');
- byKind.set(8 /* Constructor */, 'constructor');
- byKind.set(9 /* Enum */, 'enum');
- byKind.set(10 /* Interface */, 'interface');
- byKind.set(11 /* Function */, 'function');
- byKind.set(12 /* Variable */, 'variable');
- byKind.set(13 /* Constant */, 'constant');
- byKind.set(14 /* String */, 'string');
- byKind.set(15 /* Number */, 'number');
- byKind.set(16 /* Boolean */, 'boolean');
- byKind.set(17 /* Array */, 'array');
- byKind.set(18 /* Object */, 'object');
- byKind.set(19 /* Key */, 'key');
- byKind.set(20 /* Null */, 'null');
- byKind.set(21 /* EnumMember */, 'enum-member');
- byKind.set(22 /* Struct */, 'struct');
- byKind.set(23 /* Event */, 'event');
- byKind.set(24 /* Operator */, 'operator');
- byKind.set(25 /* TypeParameter */, 'type-parameter');
- /**
- * @internal
- */
- function fromString(value) {
- return byName.get(value);
- }
- SymbolKinds.fromString = fromString;
- /**
- * @internal
- */
- function toString(kind) {
- return byKind.get(kind);
- }
- SymbolKinds.toString = toString;
- /**
- * @internal
- */
- function toCssClassName(kind, inline) {
- const symbolName = byKind.get(kind);
- let codicon = symbolName && iconRegistry.get('symbol-' + symbolName);
- if (!codicon) {
- console.info('No codicon found for SymbolKind ' + kind);
- codicon = Codicon.symbolProperty;
- }
- return `${inline ? 'inline' : 'block'} ${codicon.classNames}`;
- }
- SymbolKinds.toCssClassName = toCssClassName;
- })(SymbolKinds || (SymbolKinds = {}));
- export class FoldingRangeKind {
- /**
- * Creates a new {@link FoldingRangeKind}.
- *
- * @param value of the kind.
- */
- constructor(value) {
- this.value = value;
- }
- }
- /**
- * Kind for folding range representing a comment. The value of the kind is 'comment'.
- */
- FoldingRangeKind.Comment = new FoldingRangeKind('comment');
- /**
- * Kind for folding range representing a import. The value of the kind is 'imports'.
- */
- FoldingRangeKind.Imports = new FoldingRangeKind('imports');
- /**
- * Kind for folding range representing regions (for example marked by `#region`, `#endregion`).
- * The value of the kind is 'region'.
- */
- FoldingRangeKind.Region = new FoldingRangeKind('region');
- export var InlayHintKind;
- (function (InlayHintKind) {
- InlayHintKind[InlayHintKind["Other"] = 0] = "Other";
- InlayHintKind[InlayHintKind["Type"] = 1] = "Type";
- InlayHintKind[InlayHintKind["Parameter"] = 2] = "Parameter";
- })(InlayHintKind || (InlayHintKind = {}));
- // --- feature registries ------
- /**
- * @internal
- */
- export const ReferenceProviderRegistry = new LanguageFeatureRegistry();
- /**
- * @internal
- */
- export const RenameProviderRegistry = new LanguageFeatureRegistry();
- /**
- * @internal
- */
- export const CompletionProviderRegistry = new LanguageFeatureRegistry();
- /**
- * @internal
- */
- export const InlineCompletionsProviderRegistry = new LanguageFeatureRegistry();
- /**
- * @internal
- */
- export const SignatureHelpProviderRegistry = new LanguageFeatureRegistry();
- /**
- * @internal
- */
- export const HoverProviderRegistry = new LanguageFeatureRegistry();
- /**
- * @internal
- */
- export const DocumentSymbolProviderRegistry = new LanguageFeatureRegistry();
- /**
- * @internal
- */
- export const DocumentHighlightProviderRegistry = new LanguageFeatureRegistry();
- /**
- * @internal
- */
- export const LinkedEditingRangeProviderRegistry = new LanguageFeatureRegistry();
- /**
- * @internal
- */
- export const DefinitionProviderRegistry = new LanguageFeatureRegistry();
- /**
- * @internal
- */
- export const DeclarationProviderRegistry = new LanguageFeatureRegistry();
- /**
- * @internal
- */
- export const ImplementationProviderRegistry = new LanguageFeatureRegistry();
- /**
- * @internal
- */
- export const TypeDefinitionProviderRegistry = new LanguageFeatureRegistry();
- /**
- * @internal
- */
- export const CodeLensProviderRegistry = new LanguageFeatureRegistry();
- /**
- * @internal
- */
- export const InlayHintsProviderRegistry = new LanguageFeatureRegistry();
- /**
- * @internal
- */
- export const CodeActionProviderRegistry = new LanguageFeatureRegistry();
- /**
- * @internal
- */
- export const DocumentFormattingEditProviderRegistry = new LanguageFeatureRegistry();
- /**
- * @internal
- */
- export const DocumentRangeFormattingEditProviderRegistry = new LanguageFeatureRegistry();
- /**
- * @internal
- */
- export const OnTypeFormattingEditProviderRegistry = new LanguageFeatureRegistry();
- /**
- * @internal
- */
- export const LinkProviderRegistry = new LanguageFeatureRegistry();
- /**
- * @internal
- */
- export const ColorProviderRegistry = new LanguageFeatureRegistry();
- /**
- * @internal
- */
- export const SelectionRangeRegistry = new LanguageFeatureRegistry();
- /**
- * @internal
- */
- export const FoldingRangeProviderRegistry = new LanguageFeatureRegistry();
- /**
- * @internal
- */
- export const DocumentSemanticTokensProviderRegistry = new LanguageFeatureRegistry();
- /**
- * @internal
- */
- export const DocumentRangeSemanticTokensProviderRegistry = new LanguageFeatureRegistry();
- /**
- * @internal
- */
- export const TokenizationRegistry = new TokenizationRegistryImpl();
|