aboutsummaryrefslogtreecommitdiff
path: root/src/server
diff options
context:
space:
mode:
authorDaniel Gavin <danielgavin@Daniels-MacBook-Air.local>2023-06-11 12:42:52 +0200
committerDaniel Gavin <danielgavin@Daniels-MacBook-Air.local>2023-06-11 12:42:52 +0200
commit4b43b21b502764f0eb7cbdbb5401ae3de15b81ea (patch)
tree435749ea5afb030f910993b023cc666d5dde4884 /src/server
parent1e3ee20840e706752d97576175c5758c1b92192a (diff)
Add workspace symbol types
Diffstat (limited to 'src/server')
-rw-r--r--src/server/document_symbols.odin1
-rw-r--r--src/server/requests.odin14
-rw-r--r--src/server/types.odin11
3 files changed, 25 insertions, 1 deletions
diff --git a/src/server/document_symbols.odin b/src/server/document_symbols.odin
index bed5734..1219413 100644
--- a/src/server/document_symbols.odin
+++ b/src/server/document_symbols.odin
@@ -53,7 +53,6 @@ get_document_symbols :: proc(document: ^Document) -> []DocumentSymbol {
children_symbols := make([dynamic]DocumentSymbol, context.temp_allocator)
for k, global in ast_context.globals {
-
symbol: DocumentSymbol
symbol.range = common.get_token_range(
global.expr,
diff --git a/src/server/requests.odin b/src/server/requests.odin
index 191f850..0d4b2c0 100644
--- a/src/server/requests.odin
+++ b/src/server/requests.odin
@@ -20,6 +20,7 @@ import "core:time"
import "shared:common"
+
Header :: struct {
content_length: int,
content_type: string,
@@ -276,6 +277,7 @@ call_map: map[string]proc(
"textDocument/rename" = request_rename,
"textDocument/references" = request_references,
"window/progress" = request_noop,
+ "workspace/symbol" = request_workspace_symbols,
}
notification_map: map[string]bool = {
@@ -675,6 +677,7 @@ request_initialize :: proc(
save = {includeText = true},
},
renameProvider = config.enable_rename,
+ workspaceSymbolProvider = true,
referencesProvider = config.enable_references,
definitionProvider = true,
completionProvider = CompletionOptions{
@@ -1430,6 +1433,17 @@ request_references :: proc(
return .None
}
+request_workspace_symbols :: proc(
+ params: json.Value,
+ id: RequestId,
+ config: ^common.Config,
+ writer: ^Writer,
+) -> common.Error {
+
+
+ return .None
+}
+
request_noop :: proc(
params: json.Value,
id: RequestId,
diff --git a/src/server/types.odin b/src/server/types.odin
index e39bd7b..b0e4a9b 100644
--- a/src/server/types.odin
+++ b/src/server/types.odin
@@ -98,6 +98,7 @@ ServerCapabilities :: struct {
inlayHintProvider: bool,
renameProvider: bool,
referencesProvider: bool,
+ workspaceSymbolProvider: bool,
documentLinkProvider: DocumentLinkOptions,
}
@@ -472,3 +473,13 @@ TextDocumentEdit :: struct {
WorkspaceEdit :: struct {
documentChanges: []TextDocumentEdit,
}
+
+WorkspaceSymbolParams :: struct {
+ query: string,
+}
+
+WorkspaceSymbol :: struct {
+ name: string,
+ kind: SymbolKind,
+ location: common.Location,
+}