def send_definition_using_connected_completions()

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