diff --git a/src/spinasm_lsp/docs/__init__.py b/src/spinasm_lsp/docs/__init__.py index 3f1ea95..771de4d 100644 --- a/src/spinasm_lsp/docs/__init__.py +++ b/src/spinasm_lsp/docs/__init__.py @@ -12,7 +12,8 @@ class DocumentationManager: """A manager for case-insensitive documentation lookups.""" - _instructions = INSTRUCTIONS + instructions = INSTRUCTIONS + assemblers = ASSEMBLERS data: dict[str, MarkdownGenerator] = {**INSTRUCTIONS, **ASSEMBLERS} def __getitem__(self, key: str) -> str: @@ -22,7 +23,7 @@ def get_markdown(self, key: str, default: str = "") -> str: return str(self.data.get(key.upper(), default)) def get_instruction(self, key: str) -> Instruction | None: - return self._instructions.get(key.upper(), None) + return self.instructions.get(key.upper(), None) def __contains__(self, key: str) -> bool: return self.data.__contains__(key.upper()) diff --git a/src/spinasm_lsp/server.py b/src/spinasm_lsp/server.py index a6b5162..b029675 100644 --- a/src/spinasm_lsp/server.py +++ b/src/spinasm_lsp/server.py @@ -178,12 +178,25 @@ async def completions( value=ls.documentation.get_markdown(opcode), ), ) - for opcode in [k.upper() for k in ls.documentation] + for opcode in [k.upper() for k in ls.documentation.instructions] + ] + + assembler_completions = [ + lsp.CompletionItem( + label=assembler, + kind=lsp.CompletionItemKind.Operator, + detail="(assembler)", + documentation=lsp.MarkupContent( + kind=lsp.MarkupKind.Markdown, + value=ls.documentation.get_markdown(assembler), + ), + ) + for assembler in [k.upper() for k in ls.documentation.assemblers] ] return lsp.CompletionList( is_incomplete=False, - items=symbol_completions + opcode_completions, + items=symbol_completions + opcode_completions + assembler_completions, ) diff --git a/tests/server_tests/test_completion.py b/tests/server_tests/test_completion.py index f358596..8b90351 100644 --- a/tests/server_tests/test_completion.py +++ b/tests/server_tests/test_completion.py @@ -45,8 +45,8 @@ class CompletionTestCase(TestCase): { "name": "EQU", "label": "EQU", - "detail": "(opcode)", - "kind": lsp.CompletionItemKind.Function, + "detail": "(assembler)", + "kind": lsp.CompletionItemKind.Operator, "doc_contains": "**`EQU`** allows one to define symbolic operands", "uri": f"file:///{PATCH_DIR / 'Basic.spn'}", },