1111from sqlmesh ._version import __version__
1212from sqlmesh .core .context import Context
1313from sqlmesh .core .linter .definition import AnnotatedRuleViolation
14+ from sqlmesh .lsp .completions import get_sql_completions
1415from sqlmesh .lsp .context import LSPContext
16+ from sqlmesh .lsp .custom import ALL_MODELS_FEATURE , AllModelsRequest , AllModelsResponse
1517from sqlmesh .lsp .reference import get_model_definitions_for_a_path
1618
1719
@@ -38,6 +40,14 @@ def __init__(
3840 def _register_features (self ) -> None :
3941 """Register LSP features on the internal LanguageServer instance."""
4042
43+ @self .server .feature (ALL_MODELS_FEATURE )
44+ def all_models (ls : LanguageServer , params : AllModelsRequest ) -> AllModelsResponse :
45+ try :
46+ context = self ._context_get_or_load (params .textDocument .uri )
47+ return get_sql_completions (context , params .textDocument .uri )
48+ except Exception as e :
49+ return get_sql_completions (None , params .textDocument .uri )
50+
4151 @self .server .feature (types .TEXT_DOCUMENT_DID_OPEN )
4252 def did_open (ls : LanguageServer , params : types .DidOpenTextDocumentParams ) -> None :
4353 context = self ._context_get_or_load (params .text_document .uri )
@@ -130,43 +140,6 @@ def formatting(
130140 ls .show_message (f"Error formatting SQL: { e } " , types .MessageType .Error )
131141 return []
132142
133- @self .server .feature (types .TEXT_DOCUMENT_DEFINITION )
134- def goto_definition (
135- ls : LanguageServer , params : types .DefinitionParams
136- ) -> t .List [types .LocationLink ]:
137- """Jump to an object's definition."""
138- try :
139- self ._ensure_context_for_document (params .text_document .uri )
140- document = ls .workspace .get_document (params .text_document .uri )
141- if self .lsp_context is None :
142- raise RuntimeError (f"No context found for document: { document .path } " )
143-
144- references = get_model_definitions_for_a_path (
145- self .lsp_context , params .text_document .uri
146- )
147- if len (references ) == 0 :
148- return []
149-
150- return [
151- types .LocationLink (
152- target_uri = reference .uri ,
153- target_selection_range = types .Range (
154- start = types .Position (line = 0 , character = 0 ),
155- end = types .Position (line = 0 , character = 0 ),
156- ),
157- target_range = types .Range (
158- start = types .Position (line = 0 , character = 0 ),
159- end = types .Position (line = 0 , character = 0 ),
160- ),
161- origin_selection_range = reference .range ,
162- )
163- for reference in references
164- ]
165-
166- except Exception as e :
167- ls .show_message (f"Error formatting SQL: { e } " , types .MessageType .Error )
168- return []
169-
170143 @self .server .feature (types .TEXT_DOCUMENT_DEFINITION )
171144 def goto_definition (
172145 ls : LanguageServer , params : types .DefinitionParams
0 commit comments