aboutsummaryrefslogtreecommitdiff
path: root/src/server
diff options
context:
space:
mode:
Diffstat (limited to 'src/server')
-rw-r--r--src/server/documents.odin4
-rw-r--r--src/server/requests.odin4
2 files changed, 8 insertions, 0 deletions
diff --git a/src/server/documents.odin b/src/server/documents.odin
index 1c281c0..bbde1ca 100644
--- a/src/server/documents.odin
+++ b/src/server/documents.odin
@@ -307,6 +307,10 @@ document_close :: proc(uri_string: string) -> common.Error {
return .InvalidRequest
}
+ if document.uri.uri in file_resolve_cache.files {
+ delete_key(&file_resolve_cache.files, document.uri.uri)
+ }
+
document_free_allocator(document.allocator)
document.allocator = nil
diff --git a/src/server/requests.odin b/src/server/requests.odin
index 7de995a..555ffd3 100644
--- a/src/server/requests.odin
+++ b/src/server/requests.odin
@@ -666,6 +666,8 @@ request_initialize :: proc(
append(&indexer.builtin_packages, path.join({core, "runtime"}))
}
+ file_resolve_cache.files = make(map[string]FileResolve, 200)
+
setup_index()
for pkg in indexer.builtin_packages {
@@ -1125,6 +1127,8 @@ request_semantic_token_range :: proc(
symbols: SemanticTokens
if config.enable_semantic_tokens {
+ resolve_entire_file_cached(document)
+
if file, ok := file_resolve_cache.files[document.uri.uri]; ok {
symbols = get_semantic_tokens(
document,