Skip to content

Commit 5e015d9

Browse files
committed
Fix macro completions
1 parent 4dcd41d commit 5e015d9

3 files changed

Lines changed: 20 additions & 5 deletions

File tree

sqlmesh/lsp/completions.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,8 +59,14 @@ def get_models(context: t.Optional[LSPContext], file_uri: t.Optional[URI]) -> t.
5959

6060

6161
def get_macros(context: t.Optional[LSPContext]) -> t.Set[str]:
62-
"""Return a list of all macros available in the context."""
63-
return set(macro.get_registry().keys())
62+
"""Return a set of all macros with the ``@`` prefix."""
63+
names = set(macro.get_registry().keys())
64+
if context is not None:
65+
try:
66+
names.update(context.context._macros.keys())
67+
except Exception:
68+
pass
69+
return {f"@{name}" for name in names}
6470

6571

6672
def get_keywords(context: t.Optional[LSPContext], file_uri: t.Optional[URI]) -> t.Set[str]:

sqlmesh/lsp/main.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -521,6 +521,15 @@ def completion(
521521
detail="SQLMesh Model",
522522
)
523523
)
524+
# Add macro completions
525+
for macro_name in completion_response.macros:
526+
completion_items.append(
527+
types.CompletionItem(
528+
label=macro_name,
529+
kind=types.CompletionItemKind.Function,
530+
detail="SQLMesh Macro",
531+
)
532+
)
524533
# Add keyword completions
525534
for keyword in completion_response.keywords:
526535
completion_items.append(

tests/lsp/test_completions.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ def test_get_sql_completions_no_context():
2020
completions = get_sql_completions(None, None)
2121
assert len(completions.keywords) >= len(TOKENIZER_KEYWORDS)
2222
assert len(completions.models) == 0
23-
assert "each" in completions.macros
23+
assert "@each" in completions.macros
2424

2525

2626
def test_get_sql_completions_with_context_no_file_uri():
@@ -31,7 +31,7 @@ def test_get_sql_completions_with_context_no_file_uri():
3131
assert len(completions.keywords) > len(TOKENIZER_KEYWORDS)
3232
assert "sushi.active_customers" in completions.models
3333
assert "sushi.customers" in completions.models
34-
assert "add_one" in completions.macros
34+
assert "@add_one" in completions.macros
3535

3636

3737
def test_get_sql_completions_with_context_and_file_uri():
@@ -42,7 +42,7 @@ def test_get_sql_completions_with_context_and_file_uri():
4242
completions = lsp_context.get_autocomplete(URI.from_path(file_uri))
4343
assert len(completions.keywords) > len(TOKENIZER_KEYWORDS)
4444
assert "sushi.active_customers" not in completions.models
45-
assert "add_one" in completions.macros
45+
assert "@add_one" in completions.macros
4646

4747

4848
def test_extract_keywords_from_content():

0 commit comments

Comments
 (0)