monaco-editor-core
Version:
A browser based code editor
405 lines (404 loc) • 16.8 kB
JavaScript
import { Codicon } from '../../base/common/codicons.js';
import { URI } from '../../base/common/uri.js';
import { Range } from './core/range.js';
import { TokenizationRegistry as TokenizationRegistryImpl } from './tokenizationRegistry.js';
import { localize } from '../../nls.js';
export class Token {
constructor(offset, type, language) {
this.offset = offset;
this.type = type;
this.language = language;
this._tokenBrand = undefined;
}
toString() {
return '(' + this.offset + ', ' + this.type + ')';
}
}
/**
* @internal
*/
export class TokenizationResult {
constructor(tokens, endState) {
this.tokens = tokens;
this.endState = endState;
this._tokenizationResultBrand = undefined;
}
}
/**
* @internal
*/
export class EncodedTokenizationResult {
constructor(
/**
* The tokens in binary format. Each token occupies two array indices. For token i:
* - at offset 2*i => startIndex
* - at offset 2*i + 1 => metadata
*
*/
tokens, endState) {
this.tokens = tokens;
this.endState = endState;
this._encodedTokenizationResultBrand = undefined;
}
}
export var HoverVerbosityAction;
(function (HoverVerbosityAction) {
/**
* Increase the verbosity of the hover
*/
HoverVerbosityAction[HoverVerbosityAction["Increase"] = 0] = "Increase";
/**
* Decrease the verbosity of the hover
*/
HoverVerbosityAction[HoverVerbosityAction["Decrease"] = 1] = "Decrease";
})(HoverVerbosityAction || (HoverVerbosityAction = {}));
/**
* @internal
*/
export var CompletionItemKinds;
(function (CompletionItemKinds) {
const byKind = new Map();
byKind.set(0 /* CompletionItemKind.Method */, Codicon.symbolMethod);
byKind.set(1 /* CompletionItemKind.Function */, Codicon.symbolFunction);
byKind.set(2 /* CompletionItemKind.Constructor */, Codicon.symbolConstructor);
byKind.set(3 /* CompletionItemKind.Field */, Codicon.symbolField);
byKind.set(4 /* CompletionItemKind.Variable */, Codicon.symbolVariable);
byKind.set(5 /* CompletionItemKind.Class */, Codicon.symbolClass);
byKind.set(6 /* CompletionItemKind.Struct */, Codicon.symbolStruct);
byKind.set(7 /* CompletionItemKind.Interface */, Codicon.symbolInterface);
byKind.set(8 /* CompletionItemKind.Module */, Codicon.symbolModule);
byKind.set(9 /* CompletionItemKind.Property */, Codicon.symbolProperty);
byKind.set(10 /* CompletionItemKind.Event */, Codicon.symbolEvent);
byKind.set(11 /* CompletionItemKind.Operator */, Codicon.symbolOperator);
byKind.set(12 /* CompletionItemKind.Unit */, Codicon.symbolUnit);
byKind.set(13 /* CompletionItemKind.Value */, Codicon.symbolValue);
byKind.set(15 /* CompletionItemKind.Enum */, Codicon.symbolEnum);
byKind.set(14 /* CompletionItemKind.Constant */, Codicon.symbolConstant);
byKind.set(15 /* CompletionItemKind.Enum */, Codicon.symbolEnum);
byKind.set(16 /* CompletionItemKind.EnumMember */, Codicon.symbolEnumMember);
byKind.set(17 /* CompletionItemKind.Keyword */, Codicon.symbolKeyword);
byKind.set(27 /* CompletionItemKind.Snippet */, Codicon.symbolSnippet);
byKind.set(18 /* CompletionItemKind.Text */, Codicon.symbolText);
byKind.set(19 /* CompletionItemKind.Color */, Codicon.symbolColor);
byKind.set(20 /* CompletionItemKind.File */, Codicon.symbolFile);
byKind.set(21 /* CompletionItemKind.Reference */, Codicon.symbolReference);
byKind.set(22 /* CompletionItemKind.Customcolor */, Codicon.symbolCustomColor);
byKind.set(23 /* CompletionItemKind.Folder */, Codicon.symbolFolder);
byKind.set(24 /* CompletionItemKind.TypeParameter */, Codicon.symbolTypeParameter);
byKind.set(25 /* CompletionItemKind.User */, Codicon.account);
byKind.set(26 /* CompletionItemKind.Issue */, Codicon.issues);
/**
* @internal
*/
function toIcon(kind) {
let codicon = byKind.get(kind);
if (!codicon) {
console.info('No codicon found for CompletionItemKind ' + kind);
codicon = Codicon.symbolProperty;
}
return codicon;
}
CompletionItemKinds.toIcon = toIcon;
const data = new Map();
data.set('method', 0 /* CompletionItemKind.Method */);
data.set('function', 1 /* CompletionItemKind.Function */);
data.set('constructor', 2 /* CompletionItemKind.Constructor */);
data.set('field', 3 /* CompletionItemKind.Field */);
data.set('variable', 4 /* CompletionItemKind.Variable */);
data.set('class', 5 /* CompletionItemKind.Class */);
data.set('struct', 6 /* CompletionItemKind.Struct */);
data.set('interface', 7 /* CompletionItemKind.Interface */);
data.set('module', 8 /* CompletionItemKind.Module */);
data.set('property', 9 /* CompletionItemKind.Property */);
data.set('event', 10 /* CompletionItemKind.Event */);
data.set('operator', 11 /* CompletionItemKind.Operator */);
data.set('unit', 12 /* CompletionItemKind.Unit */);
data.set('value', 13 /* CompletionItemKind.Value */);
data.set('constant', 14 /* CompletionItemKind.Constant */);
data.set('enum', 15 /* CompletionItemKind.Enum */);
data.set('enum-member', 16 /* CompletionItemKind.EnumMember */);
data.set('enumMember', 16 /* CompletionItemKind.EnumMember */);
data.set('keyword', 17 /* CompletionItemKind.Keyword */);
data.set('snippet', 27 /* CompletionItemKind.Snippet */);
data.set('text', 18 /* CompletionItemKind.Text */);
data.set('color', 19 /* CompletionItemKind.Color */);
data.set('file', 20 /* CompletionItemKind.File */);
data.set('reference', 21 /* CompletionItemKind.Reference */);
data.set('customcolor', 22 /* CompletionItemKind.Customcolor */);
data.set('folder', 23 /* CompletionItemKind.Folder */);
data.set('type-parameter', 24 /* CompletionItemKind.TypeParameter */);
data.set('typeParameter', 24 /* CompletionItemKind.TypeParameter */);
data.set('account', 25 /* CompletionItemKind.User */);
data.set('issue', 26 /* CompletionItemKind.Issue */);
/**
* @internal
*/
function fromString(value, strict) {
let res = data.get(value);
if (typeof res === 'undefined' && !strict) {
res = 9 /* CompletionItemKind.Property */;
}
return res;
}
CompletionItemKinds.fromString = fromString;
})(CompletionItemKinds || (CompletionItemKinds = {}));
/**
* 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 class SelectedSuggestionInfo {
constructor(range, text, completionKind, isSnippetText) {
this.range = range;
this.text = text;
this.completionKind = completionKind;
this.isSnippetText = isSnippetText;
}
equals(other) {
return Range.lift(this.range).equalsRange(other.range)
&& this.text === other.text
&& this.completionKind === other.completionKind
&& this.isSnippetText === other.isSnippetText;
}
}
/**
* @internal
*/
export var DocumentPasteTriggerKind;
(function (DocumentPasteTriggerKind) {
DocumentPasteTriggerKind[DocumentPasteTriggerKind["Automatic"] = 0] = "Automatic";
DocumentPasteTriggerKind[DocumentPasteTriggerKind["PasteAs"] = 1] = "PasteAs";
})(DocumentPasteTriggerKind || (DocumentPasteTriggerKind = {}));
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 const symbolKindNames = {
[17 /* SymbolKind.Array */]: localize('Array', "array"),
[16 /* SymbolKind.Boolean */]: localize('Boolean', "boolean"),
[4 /* SymbolKind.Class */]: localize('Class', "class"),
[13 /* SymbolKind.Constant */]: localize('Constant', "constant"),
[8 /* SymbolKind.Constructor */]: localize('Constructor', "constructor"),
[9 /* SymbolKind.Enum */]: localize('Enum', "enumeration"),
[21 /* SymbolKind.EnumMember */]: localize('EnumMember', "enumeration member"),
[23 /* SymbolKind.Event */]: localize('Event', "event"),
[7 /* SymbolKind.Field */]: localize('Field', "field"),
[0 /* SymbolKind.File */]: localize('File', "file"),
[11 /* SymbolKind.Function */]: localize('Function', "function"),
[10 /* SymbolKind.Interface */]: localize('Interface', "interface"),
[19 /* SymbolKind.Key */]: localize('Key', "key"),
[5 /* SymbolKind.Method */]: localize('Method', "method"),
[1 /* SymbolKind.Module */]: localize('Module', "module"),
[2 /* SymbolKind.Namespace */]: localize('Namespace', "namespace"),
[20 /* SymbolKind.Null */]: localize('Null', "null"),
[15 /* SymbolKind.Number */]: localize('Number', "number"),
[18 /* SymbolKind.Object */]: localize('Object', "object"),
[24 /* SymbolKind.Operator */]: localize('Operator', "operator"),
[3 /* SymbolKind.Package */]: localize('Package', "package"),
[6 /* SymbolKind.Property */]: localize('Property', "property"),
[14 /* SymbolKind.String */]: localize('String', "string"),
[22 /* SymbolKind.Struct */]: localize('Struct', "struct"),
[25 /* SymbolKind.TypeParameter */]: localize('TypeParameter', "type parameter"),
[12 /* SymbolKind.Variable */]: localize('Variable', "variable"),
};
/**
* @internal
*/
export function getAriaLabelForSymbol(symbolName, kind) {
return localize('symbolAriaLabel', '{0} ({1})', symbolName, symbolKindNames[kind]);
}
/**
* @internal
*/
export var SymbolKinds;
(function (SymbolKinds) {
const byKind = new Map();
byKind.set(0 /* SymbolKind.File */, Codicon.symbolFile);
byKind.set(1 /* SymbolKind.Module */, Codicon.symbolModule);
byKind.set(2 /* SymbolKind.Namespace */, Codicon.symbolNamespace);
byKind.set(3 /* SymbolKind.Package */, Codicon.symbolPackage);
byKind.set(4 /* SymbolKind.Class */, Codicon.symbolClass);
byKind.set(5 /* SymbolKind.Method */, Codicon.symbolMethod);
byKind.set(6 /* SymbolKind.Property */, Codicon.symbolProperty);
byKind.set(7 /* SymbolKind.Field */, Codicon.symbolField);
byKind.set(8 /* SymbolKind.Constructor */, Codicon.symbolConstructor);
byKind.set(9 /* SymbolKind.Enum */, Codicon.symbolEnum);
byKind.set(10 /* SymbolKind.Interface */, Codicon.symbolInterface);
byKind.set(11 /* SymbolKind.Function */, Codicon.symbolFunction);
byKind.set(12 /* SymbolKind.Variable */, Codicon.symbolVariable);
byKind.set(13 /* SymbolKind.Constant */, Codicon.symbolConstant);
byKind.set(14 /* SymbolKind.String */, Codicon.symbolString);
byKind.set(15 /* SymbolKind.Number */, Codicon.symbolNumber);
byKind.set(16 /* SymbolKind.Boolean */, Codicon.symbolBoolean);
byKind.set(17 /* SymbolKind.Array */, Codicon.symbolArray);
byKind.set(18 /* SymbolKind.Object */, Codicon.symbolObject);
byKind.set(19 /* SymbolKind.Key */, Codicon.symbolKey);
byKind.set(20 /* SymbolKind.Null */, Codicon.symbolNull);
byKind.set(21 /* SymbolKind.EnumMember */, Codicon.symbolEnumMember);
byKind.set(22 /* SymbolKind.Struct */, Codicon.symbolStruct);
byKind.set(23 /* SymbolKind.Event */, Codicon.symbolEvent);
byKind.set(24 /* SymbolKind.Operator */, Codicon.symbolOperator);
byKind.set(25 /* SymbolKind.TypeParameter */, Codicon.symbolTypeParameter);
/**
* @internal
*/
function toIcon(kind) {
let icon = byKind.get(kind);
if (!icon) {
console.info('No codicon found for SymbolKind ' + kind);
icon = Codicon.symbolProperty;
}
return icon;
}
SymbolKinds.toIcon = toIcon;
})(SymbolKinds || (SymbolKinds = {}));
/** @internal */
export class TextEdit {
}
export class FoldingRangeKind {
/**
* Kind for folding range representing a comment. The value of the kind is 'comment'.
*/
static { this.Comment = new FoldingRangeKind('comment'); }
/**
* Kind for folding range representing a import. The value of the kind is 'imports'.
*/
static { this.Imports = new FoldingRangeKind('imports'); }
/**
* Kind for folding range representing regions (for example marked by `#region`, `#endregion`).
* The value of the kind is 'region'.
*/
static { this.Region = new FoldingRangeKind('region'); }
/**
* Returns a {@link FoldingRangeKind} for the given value.
*
* @param value of the kind.
*/
static fromValue(value) {
switch (value) {
case 'comment': return FoldingRangeKind.Comment;
case 'imports': return FoldingRangeKind.Imports;
case 'region': return FoldingRangeKind.Region;
}
return new FoldingRangeKind(value);
}
/**
* Creates a new {@link FoldingRangeKind}.
*
* @param value of the kind.
*/
constructor(value) {
this.value = value;
}
}
export var NewSymbolNameTag;
(function (NewSymbolNameTag) {
NewSymbolNameTag[NewSymbolNameTag["AIGenerated"] = 1] = "AIGenerated";
})(NewSymbolNameTag || (NewSymbolNameTag = {}));
export var NewSymbolNameTriggerKind;
(function (NewSymbolNameTriggerKind) {
NewSymbolNameTriggerKind[NewSymbolNameTriggerKind["Invoke"] = 0] = "Invoke";
NewSymbolNameTriggerKind[NewSymbolNameTriggerKind["Automatic"] = 1] = "Automatic";
})(NewSymbolNameTriggerKind || (NewSymbolNameTriggerKind = {}));
/**
* @internal
*/
export var Command;
(function (Command) {
/**
* @internal
*/
function is(obj) {
if (!obj || typeof obj !== 'object') {
return false;
}
return typeof obj.id === 'string' &&
typeof obj.title === 'string';
}
Command.is = is;
})(Command || (Command = {}));
export var InlayHintKind;
(function (InlayHintKind) {
InlayHintKind[InlayHintKind["Type"] = 1] = "Type";
InlayHintKind[InlayHintKind["Parameter"] = 2] = "Parameter";
})(InlayHintKind || (InlayHintKind = {}));
/**
* @internal
*/
export class LazyTokenizationSupport {
constructor(createSupport) {
this.createSupport = createSupport;
this._tokenizationSupport = null;
}
dispose() {
if (this._tokenizationSupport) {
this._tokenizationSupport.then((support) => {
if (support) {
support.dispose();
}
});
}
}
get tokenizationSupport() {
if (!this._tokenizationSupport) {
this._tokenizationSupport = this.createSupport();
}
return this._tokenizationSupport;
}
}
/**
* @internal
*/
export const TokenizationRegistry = new TokenizationRegistryImpl();
/**
* @internal
*/
export const TreeSitterTokenizationRegistry = new TokenizationRegistryImpl();
export var InlineEditTriggerKind;
(function (InlineEditTriggerKind) {
InlineEditTriggerKind[InlineEditTriggerKind["Invoke"] = 0] = "Invoke";
InlineEditTriggerKind[InlineEditTriggerKind["Automatic"] = 1] = "Automatic";
})(InlineEditTriggerKind || (InlineEditTriggerKind = {}));