aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorBradley Lewis <22850972+BradLewis@users.noreply.github.com>2025-12-06 21:08:53 +1100
committerGitHub <noreply@github.com>2025-12-06 21:08:53 +1100
commit84e77e089c17a07bb5920b64083c2d983e9c654e (patch)
tree9788443eefd450b46a56814e7e98d5ae34177d6b /src
parent787544c10e5842efc9990a12de680b471333ba4a (diff)
parentf1c77965bbdb137aa40d5890e52f71006aaa1470 (diff)
Merge pull request #1204 from BradLewis/feat/profile-defines-and-arch
Add support for ols config profiles with defines and arch
Diffstat (limited to 'src')
-rw-r--r--src/main.odin8
-rw-r--r--src/server/requests.odin40
-rw-r--r--src/server/unmarshal.odin2
-rw-r--r--src/server/when.odin1
4 files changed, 23 insertions, 28 deletions
diff --git a/src/main.odin b/src/main.odin
index a77b2b4..b4aad6f 100644
--- a/src/main.odin
+++ b/src/main.odin
@@ -2,20 +2,12 @@ package main
import "base:intrinsics"
-import "core:encoding/json"
import "core:fmt"
import "core:log"
import "core:mem"
import "core:os"
-import "core:reflect"
-import "core:slice"
-import "core:strconv"
-import "core:strings"
-import "core:sync"
import "core:thread"
-import "core:sys/windows"
-
import "src:common"
import "src:server"
diff --git a/src/server/requests.odin b/src/server/requests.odin
index 82d0ae2..9a7326a 100644
--- a/src/server/requests.odin
+++ b/src/server/requests.odin
@@ -363,12 +363,14 @@ read_ols_initialize_options :: proc(config: ^common.Config, ols_config: OlsConfi
config.enable_format = ols_config.enable_format.(bool) or_else config.enable_format
config.enable_hover = ols_config.enable_hover.(bool) or_else config.enable_hover
config.enable_semantic_tokens = ols_config.enable_semantic_tokens.(bool) or_else config.enable_semantic_tokens
- config.enable_unused_imports_reporting = ols_config.enable_unused_imports_reporting.(bool) or_else config.enable_unused_imports_reporting
+ config.enable_unused_imports_reporting =
+ ols_config.enable_unused_imports_reporting.(bool) or_else config.enable_unused_imports_reporting
config.enable_procedure_context =
ols_config.enable_procedure_context.(bool) or_else config.enable_procedure_context
config.enable_snippets = ols_config.enable_snippets.(bool) or_else config.enable_snippets
config.enable_references = ols_config.enable_references.(bool) or_else config.enable_references
- config.enable_document_highlights = ols_config.enable_document_highlights.(bool) or_else config.enable_document_highlights
+ config.enable_document_highlights =
+ ols_config.enable_document_highlights.(bool) or_else config.enable_document_highlights
config.enable_completion_matching =
ols_config.enable_completion_matching.(bool) or_else config.enable_completion_matching
config.enable_document_links = ols_config.enable_document_links.(bool) or_else config.enable_document_links
@@ -420,6 +422,11 @@ read_ols_initialize_options :: proc(config: ^common.Config, ols_config: OlsConfi
}
config.profile.os = strings.clone(profile.os)
+ config.profile.arch = strings.clone(profile.arch)
+
+ for key, value in profile.defines {
+ config.profile.defines[strings.clone(key)] = strings.clone(value)
+ }
break
}
@@ -652,17 +659,13 @@ request_initialize :: proc(
read_ols_config :: proc(file: string, config: ^common.Config, uri: common.Uri) {
if data, ok := os.read_entire_file(file, context.temp_allocator); ok {
- if value, err := json.parse(data = data, allocator = context.temp_allocator, parse_integers = true);
- err == .None {
- ols_config: OlsConfig
-
- if unmarshal(value, ols_config, context.temp_allocator) == nil {
- read_ols_initialize_options(config, ols_config, uri)
- } else {
- log.warnf("Failed to unmarshal %v", file)
- }
+ ols_config: OlsConfig
+
+ err := json.unmarshal(data, &ols_config, allocator = context.temp_allocator)
+ if err == nil {
+ read_ols_initialize_options(config, ols_config, uri)
} else {
- log.warnf("Failed to parse json %v", file)
+ log.errorf("Failed to unmarshal %v: %v", file, err)
}
} else {
log.warnf("Failed to read/find %v", file)
@@ -748,11 +751,9 @@ request_initialize :: proc(
tokenModifiers = semantic_token_modifier_names,
},
},
- inlayHintProvider = (
- config.enable_inlay_hints_params ||
+ inlayHintProvider = (config.enable_inlay_hints_params ||
config.enable_inlay_hints_default_params ||
- config.enable_inlay_hints_implicit_return
- ),
+ config.enable_inlay_hints_implicit_return),
documentSymbolProvider = config.enable_document_symbols,
hoverProvider = config.enable_hover,
documentFormattingProvider = config.enable_format,
@@ -1557,7 +1558,12 @@ request_highlights :: proc(
return .None
}
-request_code_action :: proc(params: json.Value, id: RequestId, config: ^common.Config, writer: ^Writer) -> common.Error {
+request_code_action :: proc(
+ params: json.Value,
+ id: RequestId,
+ config: ^common.Config,
+ writer: ^Writer,
+) -> common.Error {
params_object, ok := params.(json.Object)
if !ok {
diff --git a/src/server/unmarshal.odin b/src/server/unmarshal.odin
index d93663c..04e155d 100644
--- a/src/server/unmarshal.odin
+++ b/src/server/unmarshal.odin
@@ -1,9 +1,7 @@
package server
import "base:runtime"
-
import "core:encoding/json"
-import "core:fmt"
import "core:mem"
import "core:strings"
diff --git a/src/server/when.odin b/src/server/when.odin
index 20ef128..ea1d397 100644
--- a/src/server/when.odin
+++ b/src/server/when.odin
@@ -3,7 +3,6 @@ package server
import "base:runtime"
import "core:fmt"
-import "core:log"
import "core:odin/ast"
import "core:strconv"