diff options
| author | DanielGavin <danielgavin5@hotmail.com> | 2025-06-22 23:40:24 +0200 |
|---|---|---|
| committer | DanielGavin <danielgavin5@hotmail.com> | 2025-06-22 23:40:24 +0200 |
| commit | f0efd3728e8d6408b5b13b71c49b03b2eb062bd9 (patch) | |
| tree | 5e65cdf008364492f6541f824e91a8663a864b4f /src/server/completion.odin | |
| parent | 3d1b2a5d7849c16dac4acea8b205af15be3351f4 (diff) | |
Auto import packages from core on completion.
Diffstat (limited to 'src/server/completion.odin')
| -rw-r--r-- | src/server/completion.odin | 46 |
1 files changed, 37 insertions, 9 deletions
diff --git a/src/server/completion.odin b/src/server/completion.odin index 04d580a..cc9975e 100644 --- a/src/server/completion.odin +++ b/src/server/completion.odin @@ -1700,23 +1700,51 @@ append_non_imported_packages :: proc( position_context: ^DocumentPositionContext, items: ^[dynamic]CompletionItem, ) { - - for collection, pkgs in build_cache.pkg_aliases { - + //Right now only do it for core + if collection != "core" { + continue + } for pkg in pkgs { + fullpath := path.join({common.config.collections[collection], pkg}) + found := false - //filepath.is_separator() + for doc_pkg in ast_context.imports { + if fullpath == doc_pkg.name { + found = true + } + } - } + if !found { + pkg_decl := ast_context.file.pkg_decl - } + import_edit := TextEdit { + range = { + start = {line = pkg_decl.end.line + 1, character = 0}, + end = {line = pkg_decl.end.line + 1, character = 0}, + }, + newText = fmt.tprintf("import \"%v:%v\"\n", collection, pkg), + } - for pkg in ast_context.imports { - //log.error(pkg) - } + additionalTextEdits := make([]TextEdit, 1, context.temp_allocator) + additionalTextEdits[0] = import_edit + + item := CompletionItem { + label = pkg, + kind = .Module, + detail = pkg, + insertText = path.base(pkg), + additionalTextEdits = additionalTextEdits, + insertTextFormat = .PlainText, + InsertTextMode = .adjustIndentation, + } + log.error(item) + append(items, item) + } + } + } } append_magic_map_completion :: proc( |