diff options
| author | DanielGavin <danielgavin5@hotmail.com> | 2023-07-24 17:03:34 +0200 |
|---|---|---|
| committer | DanielGavin <danielgavin5@hotmail.com> | 2023-07-24 17:03:34 +0200 |
| commit | 7343fc4bdf4ffd616c1818bb2dfefa04d1242167 (patch) | |
| tree | ad5c8ef1d68c9511900802ced54d878ea404fa4f | |
| parent | cbc578cc9bfc013866e726438296798ab6407d39 (diff) | |
Save the client name for specific client handling
| -rw-r--r-- | src/common/config.odin | 1 | ||||
| -rw-r--r-- | src/server/completion.odin | 24 | ||||
| -rw-r--r-- | src/server/requests.odin | 9 | ||||
| -rw-r--r-- | src/server/types.odin | 6 |
4 files changed, 25 insertions, 15 deletions
diff --git a/src/common/config.odin b/src/common/config.odin index 79eb802..673805b 100644 --- a/src/common/config.odin +++ b/src/common/config.odin @@ -26,6 +26,7 @@ Config :: struct { file_log: bool, odin_command: string, checker_args: string, + client_name: string, } config: Config diff --git a/src/server/completion.odin b/src/server/completion.odin index e4604b7..f5f32ac 100644 --- a/src/server/completion.odin +++ b/src/server/completion.odin @@ -1830,16 +1830,24 @@ format_to_label_details :: proc(list: ^CompletionList) { case .Keyword: item.detail = "keyword" } - - // hack for sublime text's issue + + // hack for sublime text's issue // remove when this issue is fixed: https://github.com/sublimehq/sublime_text/issues/6033 // or if this PR gets merged: https://github.com/sublimelsp/LSP/pull/2293 - dt:= &item.labelDetails.? or_else nil - if dt == nil do continue - if strings.contains(dt.detail, "..") && strings.contains(dt.detail, "#") { - s, _ := strings.replace_all(dt.detail, "..", "ꓸꓸ", allocator = context.temp_allocator) - dt.detail = s - } + if common.config.client_name == "Sublime Text LSP" { + dt := &item.labelDetails.? or_else nil + if dt == nil do continue + if strings.contains(dt.detail, "..") && + strings.contains(dt.detail, "#") { + s, _ := strings.replace_all( + dt.detail, + "..", + "ꓸꓸ", + allocator = context.temp_allocator, + ) + dt.detail = s + } + } } } diff --git a/src/server/requests.odin b/src/server/requests.odin index 0874b7f..22cba7a 100644 --- a/src/server/requests.odin +++ b/src/server/requests.odin @@ -508,6 +508,7 @@ request_initialize :: proc( return .ParseError } + config.client_name = initialize_params.clientInfo.name config.workspace_folders = make([dynamic]common.WorkspaceFolder) for s in initialize_params.workspaceFolders { @@ -659,12 +660,8 @@ request_initialize :: proc( signatureTriggerCharacters := []string{"(", ","} signatureRetriggerCharacters := []string{","} - token_type := type_info_of( - SemanticTokenTypes, - ).variant.(runtime.Type_Info_Named).base.variant.(runtime.Type_Info_Enum) - token_modifier := type_info_of( - SemanticTokenModifiers, - ).variant.(runtime.Type_Info_Named).base.variant.(runtime.Type_Info_Enum) + token_type := type_info_of(SemanticTokenTypes).variant.(runtime.Type_Info_Named).base.variant.(runtime.Type_Info_Enum) + token_modifier := type_info_of(SemanticTokenModifiers).variant.(runtime.Type_Info_Named).base.variant.(runtime.Type_Info_Enum) token_types := make( []string, diff --git a/src/server/types.odin b/src/server/types.odin index 31a388e..42e9699 100644 --- a/src/server/types.odin +++ b/src/server/types.odin @@ -80,6 +80,11 @@ RequestInitializeParams :: struct { capabilities: ClientCapabilities, rootUri: string, initializationOptions: OlsConfig, + clientInfo: ClientInfo, +} + +ClientInfo :: struct { + name: string, } MarkupContent :: struct { @@ -490,4 +495,3 @@ WorkspaceSymbol :: struct { DidChangeConfigurationParams :: struct { settings: OlsConfig, } - |