Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add LSIF functionality #510

Merged
merged 1 commit into from
Mar 7, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 8 additions & 8 deletions uni/ulsp/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,10 @@ UFLAGS=-s -u

prog=ulsp

SRC=launch-lsp.icn workspace.icn database.icn server.icn completion.icn signature.icn hover.icn \
definition.icn jsonrpc.icn logger.icn
OBJ=launch-lsp.u workspace.u database.u server.u completion.u signature.u hover.u definition.u \
jsonrpc.u logger.u
SRC=launch-lsp.icn file_handler.icn database.icn server.icn completion.icn signature.icn hover.icn \
definition.icn jsonrpc.icn logger.icn lsif.icn
OBJ=launch-lsp.u file_handler.u database.u server.u completion.u signature.u hover.u definition.u \
jsonrpc.u logger.u lsif.u

export IPATH=$(UNI)/unidoc

Expand All @@ -22,14 +22,14 @@ $(prog): $(OBJ)
jsonrpc-test: jsonrpc-test.u jsonrpc.u
$(UC) -o jsonrpc-test jsonrpc-test.u jsonrpc.u

launch-lsp.u:launch-lsp.icn workspace.u database.u server.u completion.u signature.u hover.u definition.u
launch-lsp.u: launch-lsp.icn file_handler.u database.u server.u completion.u signature.u hover.u definition.u

server.u:server.icn database.u completion.u workspace.u signature.u hover.u definition.u jsonrpc.u logger.u
hover.u:hover.icn signature.u
server.u: server.icn database.u completion.u file_handler.u signature.u hover.u definition.u jsonrpc.u logger.u
hover.u: hover.icn signature.u
definition.u: definition.icn hover.u

zip:
zip ulsp.zip Makefile *.icn

clean:
$(RM) -f *.u $(prog) uniclass*
$(RM) -f *.u $(prog) uniclass*
68 changes: 34 additions & 34 deletions uni/ulsp/completion.icn
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,12 @@ package ulsp
import json

class CompletionHandler(
workspace,
filehandler,
params
)

method setVariables(new_workspace, new_params)
workspace := new_workspace
method setVariables(new_filehandler, new_params)
filehandler := new_filehandler
params := new_params
end

Expand All @@ -18,7 +18,7 @@ class CompletionHandler(
line := params["position"]["line"] + 1
character := params["position"]["character"] + 1

context := workspace.getContext(line, character)
context := filehandler.getContext(line, character)
desired_line := context.line
_context := context.getCase()

Expand All @@ -34,10 +34,10 @@ class CompletionHandler(
results_table["items"] := []
}
"object" : {
workspace.buildObjectCompletionItems(results_table, context.objectName)
filehandler.buildObjectCompletionItems(results_table, context.objectName)
}
"packdualcolon" : {
workspace.buildPackageConstructorItems(results_table, context.packageName)
filehandler.buildPackageConstructorItems(results_table, context.packageName)
}
"package" : {
addPackageCompletionItems(results_table)
Expand All @@ -46,7 +46,7 @@ class CompletionHandler(
addFileCompletionItems(results_table)
}
default : {
buildDefaultCompletionItems(results_table, workspace)
buildDefaultCompletionItems(results_table, filehandler)
}
}

Expand All @@ -55,115 +55,115 @@ class CompletionHandler(

method addBuiltInFunctionsCompletionItems(results_table)
local _function
every _function := key(workspace.getBuiltInFunctions()) do {
every _function := key(filehandler.getBuiltInFunctions()) do {
put(results_table["items"], table("label", _function, "kind", 3))
}
end

method addActionWordsCompletionItems(results_table)
local _actionWord
every _actionWord := !workspace.getActionWords() do {
every _actionWord := !filehandler.getActionWords() do {
put(results_table["items"], table("label", _actionWord))
}
end

method addDeclarativeExpressionsCompletionItems(results_table)
local _declarativeExpression
every _declarativeExpression := !workspace.getDeclarativeExpressions() do {
every _declarativeExpression := !filehandler.getDeclarativeExpressions() do {
put(results_table["items"], table("label", _declarativeExpression))
}
end

method addSyntaxReservedWordsCompletionItems(results_table)
local _syntaxReservedWord
every _syntaxReservedWord := !workspace.getSyntaxReservedWords() do {
every _syntaxReservedWord := !filehandler.getSyntaxReservedWords() do {
put(results_table["items"], table("label", _syntaxReservedWord))
}
end

method addKeywordsCompletionItems(results_table)
local _keyword
every _keyword := !workspace.getKeywords() do {
every _keyword := !filehandler.getKeywords() do {
put(results_table["items"], table("label", _keyword, "kind", 14))
}
end

method addPreprocessorCompletionItems(results_table)
local _preprocessor
every _preprocessor := !workspace.getPreprocessors() do {
every _preprocessor := !filehandler.getPreprocessors() do {
put(results_table["items"], table("label", _preprocessor))
}
end

method addWorkspaceProcedures(results_table, workspace)
method addFileHandlerProcedures(results_table, filehandler)
local _internalProcedure, _linkedProcedure, _importedProcedure, _packageProcedure
every _internalProcedure := key(workspace.getInternalProcedures()) do {
every _internalProcedure := key(filehandler.getInternalProcedures()) do {
put(results_table["items"], table("label", _internalProcedure, "kind", 3))
}
every _linkedProcedure := key(workspace.getLinkedProcedures()) do {
every _linkedProcedure := key(filehandler.getLinkedProcedures()) do {
put(results_table["items"], table("label", _linkedProcedure, "kind", 3))
}
every _importedProcedure := key(workspace.getImportedProcedures()) do {
every _importedProcedure := key(filehandler.getImportedProcedures()) do {
put(results_table["items"], table("label", _importedProcedure, "kind", 3))
}
every _packageProcedure := key(workspace.getPackageProcedures()) do {
every _packageProcedure := key(filehandler.getPackageProcedures()) do {
put(results_table["items"], table("label", _packageProcedure, "kind", 3))
}
end

method addWordspaceClasses(results_table, workspace)
method addWordspaceClasses(results_table, filehandler)
local _internalClass, _linkedClass, _importedClass, _packageClass
every _internalClass := key(workspace.getInternalClasses()) do {
every _internalClass := key(filehandler.getInternalClasses()) do {
put(results_table["items"], table("label", _internalClass, "kind", 4))
}
every _linkedClass := key(workspace.getLinkedClasses()) do {
every _linkedClass := key(filehandler.getLinkedClasses()) do {
put(results_table["items"], table("label", _linkedClass, "kind", 4))
}
every _importedClass := key(workspace.getImportedClasses()) do {
every _importedClass := key(filehandler.getImportedClasses()) do {
put(results_table["items"], table("label", _importedClass, "kind", 4))
}
every _packageClass := key(workspace.getPackageClasses()) do {
every _packageClass := key(filehandler.getPackageClasses()) do {
put(results_table["items"], table("label", _packageClass, "kind", 4))
}
end

method addInternalObjects(results_table, workspace)
method addInternalObjects(results_table, filehandler)
local _object
every _object := key(workspace.getObjects()) do {
every _object := key(filehandler.getObjects()) do {
put(results_table["items"], table("label", _object, "kind", 6))
}
end

method addInternalVariables(results_table, workspace)
method addInternalVariables(results_table, filehandler)
local _variable
every _variable := key(workspace.getVariables()) do {
every _variable := key(filehandler.getVariables()) do {
put(results_table["items"], table("label", _variable, "kind", 6))
}
end

method buildDefaultCompletionItems(results_table, workspace)
method buildDefaultCompletionItems(results_table, filehandler)
addActionWordsCompletionItems(results_table)
addBuiltInFunctionsCompletionItems(results_table)
addDeclarativeExpressionsCompletionItems(results_table)
addKeywordsCompletionItems(results_table)
addPreprocessorCompletionItems(results_table)
addSyntaxReservedWordsCompletionItems(results_table)
addWordspaceClasses(results_table, workspace)
addWorkspaceProcedures(results_table, workspace)
addInternalObjects(results_table, workspace)
addInternalVariables(results_table, workspace)
addWordspaceClasses(results_table, filehandler)
addFileHandlerProcedures(results_table, filehandler)
addInternalObjects(results_table, filehandler)
addInternalVariables(results_table, filehandler)
end

method addFileCompletionItems(results_table)
local _file
every _file := !workspace.getFileNames() do {
every _file := !filehandler.getFileNames() do {
put(results_table["items"], table("label", _file, "kind", 17))
}
end

method addPackageCompletionItems(results_table)
local _package
every _package := key(workspace.getPackages()) do {
every _package := key(filehandler.getPackages()) do {
if _package === "(main)" then next
put(results_table["items"], table("label", _package, "kind", 12))
}
Expand Down
Loading