in ossdbtoolsservice/language/language_service.py [0:0]
def send_definition_using_connected_completions(self, request_context: RequestContext, scriptparseinfo: ScriptParseInfo,
params: TextDocumentPosition, context: ConnectionContext) -> bool:
if not context or not context.is_connected:
return False
definition_result: DefinitionResult = None
completer: Completer = context.completer
completions: List[Completion] = completer.get_completions(scriptparseinfo.document, None)
if completions:
word_under_cursor = scriptparseinfo.document.get_word_under_cursor()
matching_completion = next(completion for completion in completions if completion.display == word_under_cursor)
if matching_completion:
connection = self._connection_service.get_connection(params.text_document.uri,
ConnectionType.QUERY)
scripter_instance = scripter.Scripter(connection)
object_metadata = ObjectMetadata(None, None, matching_completion.display_meta,
matching_completion.display,
matching_completion.schema)
create_script = scripter_instance.script(ScriptOperation.CREATE, object_metadata)
if create_script:
with tempfile.NamedTemporaryFile(mode='wt', delete=False, encoding='utf-8', suffix='.sql', newline=None) as namedfile:
namedfile.write(create_script)
if namedfile.name:
file_uri = "file:///" + namedfile.name.strip('/')
location_in_script = Location(file_uri, Range(Position(0, 1), Position(1, 1)))
definition_result = DefinitionResult(False, None, [location_in_script, ])
request_context.send_response(definition_result.locations)
return True
if definition_result is None:
request_context.send_response(DefinitionResult(True, '', []))
return False