fish-lsp
Version:
LSP implementation for fish/fish-shell
75 lines (74 loc) • 3.2 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.FishKindGroups = exports.symbolKindToString = exports.fromFishSymbolKindToSymbolKind = exports.FishSymbolKind = exports.getSymbolKindToString = exports.createSymbolKindLookup = exports.fishSymbolKindToSymbolKind = exports.FishSymbolKindMap = void 0;
const vscode_languageserver_1 = require("vscode-languageserver");
exports.FishSymbolKindMap = {
['argparse']: 'ARGPARSE',
['function']: 'FUNCTION',
['alias']: 'ALIAS',
['complete']: 'COMPLETE',
['set']: 'SET',
['read']: 'READ',
['for']: 'FOR',
['variable']: 'VARIABLE',
['event']: 'EVENT',
['function_variable']: 'FUNCTION_VARIABLE',
['function_event']: 'FUNCTION_EVENT',
['export']: 'EXPORT',
};
exports.fishSymbolKindToSymbolKind = {
['ARGPARSE']: vscode_languageserver_1.SymbolKind.Variable,
['FUNCTION']: vscode_languageserver_1.SymbolKind.Function,
['ALIAS']: vscode_languageserver_1.SymbolKind.Function,
['COMPLETE']: vscode_languageserver_1.SymbolKind.Interface,
['SET']: vscode_languageserver_1.SymbolKind.Variable,
['READ']: vscode_languageserver_1.SymbolKind.Variable,
['FOR']: vscode_languageserver_1.SymbolKind.Variable,
['VARIABLE']: vscode_languageserver_1.SymbolKind.Variable,
['FUNCTION_VARIABLE']: vscode_languageserver_1.SymbolKind.Variable,
['EVENT']: vscode_languageserver_1.SymbolKind.Event,
['FUNCTION_EVENT']: vscode_languageserver_1.SymbolKind.Event,
['EXPORT']: vscode_languageserver_1.SymbolKind.Variable,
};
const createSymbolKindLookup = () => {
const lookup = {};
for (const [key, value] of Object.entries(vscode_languageserver_1.SymbolKind)) {
if (typeof value === 'number') {
lookup[value] = key;
}
}
return lookup;
};
exports.createSymbolKindLookup = createSymbolKindLookup;
const symbolKindToStringMap = (0, exports.createSymbolKindLookup)();
const getSymbolKindToString = (kind) => {
return symbolKindToStringMap[kind] || 'Unknown';
};
exports.getSymbolKindToString = getSymbolKindToString;
var FishSymbolKind;
(function (FishSymbolKind) {
FishSymbolKind.is = (kind) => {
if (typeof kind !== 'string')
return false;
return Object.keys(exports.FishSymbolKindMap).includes(kind.toLowerCase());
};
FishSymbolKind.toSymbolKindStr = (kind) => {
return exports.fishSymbolKindToSymbolKind[kind]?.toString();
};
})(FishSymbolKind || (exports.FishSymbolKind = FishSymbolKind = {}));
const fromFishSymbolKindToSymbolKind = (kind) => exports.fishSymbolKindToSymbolKind[kind];
exports.fromFishSymbolKindToSymbolKind = fromFishSymbolKindToSymbolKind;
const symbolKindToString = (kind) => {
if (FishSymbolKind.is(kind)) {
return FishSymbolKind.toSymbolKindStr(kind);
}
return (0, exports.getSymbolKindToString)(kind);
};
exports.symbolKindToString = symbolKindToString;
exports.FishKindGroups = {
VARIABLES: ['ARGPARSE', 'SET', 'READ', 'FOR', 'VARIABLE', 'FUNCTION_VARIABLE', 'EXPORT'],
FUNCTIONS: ['FUNCTION', 'ALIAS'],
EVENTS: ['EVENT', 'FUNCTION_EVENT'],
ARGPARSE: ['ARGPARSE'],
OTHER: ['COMPLETE'],
};