Skip to content

Commit 60887b5

Browse files
committed
refactor(lsp): move the autocomplete calls about
1 parent f33fce3 commit 60887b5

4 files changed

Lines changed: 23 additions & 7 deletions

File tree

sqlmesh/lsp/completions.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,9 @@
66
from sqlmesh.lsp.uri import URI
77

88

9-
def get_sql_completions(context: t.Optional[LSPContext], file_uri: URI) -> AllModelsResponse:
9+
def get_sql_completions(
10+
context: t.Optional[LSPContext], file_uri: t.Optional[URI]
11+
) -> AllModelsResponse:
1012
"""
1113
Return a list of completions for a given file.
1214
"""

sqlmesh/lsp/context.py

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
from sqlmesh.core.model.definition import SqlModel
77
from sqlmesh.core.linter.definition import AnnotatedRuleViolation
8-
from sqlmesh.lsp.custom import RenderModelEntry
8+
from sqlmesh.lsp.custom import AllModelsResponse, RenderModelEntry
99
from sqlmesh.lsp.uri import URI
1010

1111

@@ -148,3 +148,16 @@ def lint_model(self, uri: URI) -> t.List[AnnotatedRuleViolation]:
148148
# Store in cache
149149
self._lint_cache[path] = diagnostics
150150
return diagnostics
151+
152+
def get_autocomplete(self, uri: t.Optional[URI]) -> AllModelsResponse:
153+
"""Get autocomplete suggestions for a file.
154+
155+
Args:
156+
uri: The URI of the file to get autocomplete suggestions for.
157+
158+
Returns:
159+
AllModelsResponse containing models and keywords.
160+
"""
161+
from sqlmesh.lsp.completions import get_sql_completions
162+
163+
return get_sql_completions(self, uri)

sqlmesh/lsp/main.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020
ApiResponseGetLineage,
2121
ApiResponseGetModels,
2222
)
23-
from sqlmesh.lsp.completions import get_sql_completions
2423
from sqlmesh.lsp.context import (
2524
LSPContext,
2625
ModelTarget,
@@ -107,9 +106,11 @@ def all_models(ls: LanguageServer, params: AllModelsRequest) -> AllModelsRespons
107106
try:
108107
uri = URI(params.textDocument.uri)
109108
context = self._context_get_or_load(uri)
110-
return get_sql_completions(context, uri)
109+
return context.get_autocomplete(uri)
111110
except Exception as e:
112-
return get_sql_completions(None, uri)
111+
from sqlmesh.lsp.completions import get_sql_completions
112+
113+
return get_sql_completions(None, URI(params.textDocument.uri))
113114

114115
@self.server.feature(RENDER_MODEL_FEATURE)
115116
def render_model(ls: LanguageServer, params: RenderModelRequest) -> RenderModelResponse:

tests/lsp/test_completions.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ def test_get_sql_completions_with_context_no_file_uri():
2626
context = Context(paths=["examples/sushi"])
2727
lsp_context = LSPContext(context)
2828

29-
completions = get_sql_completions(lsp_context, None)
29+
completions = lsp_context.get_autocomplete(None)
3030
assert len(completions.keywords) > len(TOKENIZER_KEYWORDS)
3131
assert "sushi.active_customers" in completions.models
3232
assert "sushi.customers" in completions.models
@@ -38,6 +38,6 @@ def test_get_sql_completions_with_context_and_file_uri():
3838
lsp_context = LSPContext(context)
3939

4040
file_uri = next(key for key in lsp_context.map.keys() if key.name == "active_customers.sql")
41-
completions = get_sql_completions(lsp_context, URI.from_path(file_uri))
41+
completions = lsp_context.get_autocomplete(URI.from_path(file_uri))
4242
assert len(completions.keywords) > len(TOKENIZER_KEYWORDS)
4343
assert "sushi.active_customers" not in completions.models

0 commit comments

Comments
 (0)