aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorxb-bx <nazarnik050406@gmail.com>2024-01-30 08:45:32 +0200
committerxb-bx <nazarnik050406@gmail.com>2024-01-30 08:45:32 +0200
commitdf59c13da36a7bffeb5c5d3744934f4ec496261b (patch)
tree02626fac4bfd664f73a66aab48f64decad5580bd
parentd93559abe647e733b0338cf0707aba09c350481a (diff)
fix snippets
-rw-r--r--src/server/completion.odin30
1 files changed, 25 insertions, 5 deletions
diff --git a/src/server/completion.odin b/src/server/completion.odin
index 36db067..4bb0430 100644
--- a/src/server/completion.odin
+++ b/src/server/completion.odin
@@ -675,6 +675,14 @@ get_selector_completion :: proc(
selector,
&items,
)
+ case SymbolSliceValue:
+ list.isIncomplete = false
+ append_magic_dynamic_array_completion(
+ position_context,
+ selector,
+ &items,
+ )
+
case SymbolMapValue:
list.isIncomplete = false
append_magic_map_completion(position_context, selector, &items)
@@ -1732,7 +1740,7 @@ append_magic_map_completion :: proc(
additionalTextEdits := make([]TextEdit, 1, context.temp_allocator)
additionalTextEdits[0] = remove_edit
-
+ symbol_str := get_expression_string_from_position_context(position_context)
//for
{
item := CompletionItem {
@@ -1743,7 +1751,7 @@ append_magic_map_completion :: proc(
textEdit = TextEdit {
newText = fmt.tprintf(
"for ${{1:k}}, ${{2:v}} in %v {{\n\t$0 \n}}",
- symbol.name,
+ symbol_str,
),
range = {start = range.end, end = range.end},
},
@@ -1754,7 +1762,17 @@ append_magic_map_completion :: proc(
append(items, item)
}
}
-
+get_expression_string_from_position_context :: proc(position_context: ^DocumentPositionContext) -> string {
+ src := position_context.file.src
+ if position_context.call != nil {
+ return src[position_context.call.pos.offset:position_context.call.end.offset]
+ } else if position_context.field != nil {
+ return src[position_context.field.pos.offset:position_context.field.end.offset]
+ } else if position_context.selector != nil {
+ return src[position_context.selector.pos.offset:position_context.selector.end.offset]
+ }
+ return ""
+}
append_magic_dynamic_array_completion :: proc(
position_context: ^DocumentPositionContext,
symbol: Symbol,
@@ -1779,9 +1797,11 @@ append_magic_dynamic_array_completion :: proc(
additionalTextEdits := make([]TextEdit, 1, context.temp_allocator)
additionalTextEdits[0] = remove_edit
+ symbol_str := get_expression_string_from_position_context(position_context)
+
//len
{
- text := fmt.tprintf("len(%v)", symbol.name)
+ text := fmt.tprintf("len(%v)", symbol_str)
item := CompletionItem {
label = "len",
@@ -1807,7 +1827,7 @@ append_magic_dynamic_array_completion :: proc(
textEdit = TextEdit {
newText = fmt.tprintf(
"for i in %v {{\n\t$0 \n}}",
- symbol.name,
+ symbol_str,
),
range = {start = range.end, end = range.end},
},