pss-langserver
Version:
A Language server for the Portable Stimulus Standard
131 lines (130 loc) • 5.74 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.getCompletionKind = getCompletionKind;
/*
* Copyright (C) 2025 Darshan(@thisisthedarshan)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
const node_1 = require("vscode-languageserver/node");
const dataTypes_1 = require("../definitions/dataTypes");
function getCompletionKind(type) {
switch (type) {
/* Structural elements */
case dataTypes_1.objType.COMPONENT:
return node_1.CompletionItemKind.Class;
case dataTypes_1.objType.ACTION:
case dataTypes_1.objType.ACTIVITY:
return node_1.CompletionItemKind.Module;
case dataTypes_1.objType.PACKAGE:
return node_1.CompletionItemKind.Module;
case dataTypes_1.objType.MONITOR:
return node_1.CompletionItemKind.Interface;
case dataTypes_1.objType.CONSTRAINT:
return node_1.CompletionItemKind.Event;
/* Function types */
case dataTypes_1.objType.FUNCTION:
case dataTypes_1.objType.PROCEDURAL_FUNCTION:
return node_1.CompletionItemKind.Function;
case dataTypes_1.objType.ACTION_HANDLE:
return node_1.CompletionItemKind.Method;
case dataTypes_1.objType.CALL_SUPER:
return node_1.CompletionItemKind.Method;
/* Data structures */
case dataTypes_1.objType.ENUM:
return node_1.CompletionItemKind.Enum;
case dataTypes_1.objType.BUFFER:
case dataTypes_1.objType.STRUCT:
return node_1.CompletionItemKind.Struct;
case dataTypes_1.objType.STRUCT_ITEM:
return node_1.CompletionItemKind.Field;
case dataTypes_1.objType.RESOURCE_OBJECT:
return node_1.CompletionItemKind.Class;
/* Register types */
case dataTypes_1.objType.REGISTER_BODY_ITEM:
return node_1.CompletionItemKind.Field;
case dataTypes_1.objType.REGISTER_GROUP:
case dataTypes_1.objType.REGISTER_COMP:
case dataTypes_1.objType.REGISTER_DEF:
case dataTypes_1.objType.REGISTER:
return node_1.CompletionItemKind.Property;
/* Memory and address elements */
case dataTypes_1.objType.MEMORY_SPACE:
case dataTypes_1.objType.MEMORY_REGION:
case dataTypes_1.objType.MEMORY_CLAIM:
case dataTypes_1.objType.ADDRESS_SPACE:
case dataTypes_1.objType.ADDRESS_REGION:
case dataTypes_1.objType.ADDRESS_CLAIM:
return node_1.CompletionItemKind.Reference;
/* State and streams */
case dataTypes_1.objType.STATE:
return node_1.CompletionItemKind.Variable;
case dataTypes_1.objType.STREAM:
case dataTypes_1.objType.POOLS:
return node_1.CompletionItemKind.Variable;
/* Primitive types */
case dataTypes_1.objType.CHANDLE:
return node_1.CompletionItemKind.Variable;
case dataTypes_1.objType.DATA:
return node_1.CompletionItemKind.Value;
case dataTypes_1.objType.TYPEDEF:
return node_1.CompletionItemKind.TypeParameter;
case dataTypes_1.objType.INTEGER:
case dataTypes_1.objType.BIT:
case dataTypes_1.objType.STRING:
case dataTypes_1.objType.BOOL:
case dataTypes_1.objType.FLOAT32:
case dataTypes_1.objType.FLOAT64:
return node_1.CompletionItemKind.Keyword;
/* Collection types */
case dataTypes_1.objType.REF:
return node_1.CompletionItemKind.Reference;
case dataTypes_1.objType.ARRAY:
case dataTypes_1.objType.LIST:
case dataTypes_1.objType.MAP:
case dataTypes_1.objType.SET:
case dataTypes_1.objType.INSTANCE:
return node_1.CompletionItemKind.Value;
/* Template and var args */
case dataTypes_1.objType.TEMPLATE_ITEM:
return node_1.CompletionItemKind.TypeParameter;
case dataTypes_1.objType.VARARGS:
return node_1.CompletionItemKind.Variable;
/* Executable blocks */
case dataTypes_1.objType.EXEC_PRESOLVE:
case dataTypes_1.objType.EXEC_POSTSOLVE:
case dataTypes_1.objType.EXEC_PREBODY:
case dataTypes_1.objType.EXEC_BODY:
case dataTypes_1.objType.EXEC_HEADER:
case dataTypes_1.objType.EXEC_DECLARATION:
case dataTypes_1.objType.EXEC_RUNSTART:
case dataTypes_1.objType.EXEC_RUNEND:
case dataTypes_1.objType.EXEC_INITDOWN:
case dataTypes_1.objType.EXEC_INITUP:
case dataTypes_1.objType.EXEC_INIT:
case dataTypes_1.objType.EXEC_TARGET:
case dataTypes_1.objType.EXEC_FILE:
return node_1.CompletionItemKind.Snippet;
/* Misc */
case dataTypes_1.objType.IMPORT:
return node_1.CompletionItemKind.File;
case dataTypes_1.objType.ASSIGNMENT:
return node_1.CompletionItemKind.Operator;
/* Default cases */
case dataTypes_1.objType.NONE:
case dataTypes_1.objType.UNKNOWN:
default:
return node_1.CompletionItemKind.Text;
}
}