From f43f8593b1b6c54104d3ff20470e5217592b5405 Mon Sep 17 00:00:00 2001 From: Brad Lewis <22850972+BradLewis@users.noreply.github.com> Date: Mon, 11 Aug 2025 19:59:03 -0400 Subject: Remove functions, consts, variables and fields when in struct definitions --- src/server/analysis.odin | 15 +++++++++++++++ src/server/completion.odin | 7 +++++++ 2 files changed, 22 insertions(+) (limited to 'src/server') diff --git a/src/server/analysis.odin b/src/server/analysis.odin index 4401d5b..4c5aebd 100644 --- a/src/server/analysis.odin +++ b/src/server/analysis.odin @@ -4477,6 +4477,21 @@ position_in_proc_decl :: proc(position_context: ^DocumentPositionContext) -> boo return false } +position_in_struct_decl :: proc(position_context: ^DocumentPositionContext) -> bool { + if position_context.value_decl == nil { + return false + } + + if len(position_context.value_decl.values) != 1 { + return false + } + + if _, ok := position_context.value_decl.values[0].derived.(^ast.Struct_Type); ok { + return true + } + + return false +} is_lhs_comp_lit :: proc(position_context: ^DocumentPositionContext) -> bool { if position_context.position <= position_context.comp_lit.open.offset { diff --git a/src/server/completion.odin b/src/server/completion.odin index d1a630a..3921958 100644 --- a/src/server/completion.odin +++ b/src/server/completion.odin @@ -236,6 +236,13 @@ convert_completion_results :: proc( continue } + if position_in_struct_decl(position_context) { + to_skip: bit_set[SymbolType] = {.Function, .Variable, .Constant, .Field} + if result.symbol.type in to_skip { + continue + } + } + if result.snippet.insert != "" { item := CompletionItem { label = result.symbol.name, -- cgit v1.2.3