Beispiel #1
0
    def setUpClass(cls):
        cls.client_server = ClientServer()
        cls.client, cls.server = cls.client_server

        @cls.server.feature(
            SIGNATURE_HELP,
            SignatureHelpOptions(
                trigger_characters=['a', 'b'],
                retrigger_characters=['c', 'd'],
            ),
        )
        def f(params: SignatureHelpParams) -> Optional[SignatureHelp]:
            if params.text_document.uri == 'file://return.signature_help':
                return SignatureHelp(
                    signatures=[
                        SignatureInformation(
                            label='label',
                            documentation='documentation',
                            parameters=[
                                ParameterInformation(
                                    label=(0, 0),
                                    documentation='documentation',
                                ),
                            ]),
                    ],
                    active_signature=0,
                    active_parameter=0,
                )
            else:
                return None

        cls.client_server.start()
Beispiel #2
0
 def _with_signature_help(self):
     value = self._provider_options(SIGNATURE_HELP,
                                    default=SignatureHelpOptions())
     if value is not None:
         self.server_cap.signature_help_provider = value
     return self
Beispiel #3
0
 def _with_signature_help(self):
     self.server_cap.signature_help_provider = \
         self._provider_options(SIGNATURE_HELP,
                                default=SignatureHelpOptions())
     return self
Beispiel #4
0
    jedi_utils.clear_completions_cache()
    completion_items = [
        jedi_utils.lsp_completion_item(
            completion=completion,
            char_before_cursor=char_before_cursor,
            enable_snippets=enable_snippets,
            resolve_eagerly=resolve_eagerly,
            markup_kind=markup_kind,
        ) for completion in completions_jedi
    ]
    return (CompletionList(is_incomplete=False, items=completion_items)
            if completion_items else None)


@SERVER.feature(SIGNATURE_HELP,
                SignatureHelpOptions(trigger_characters=["(", ","]))
def signature_help(
        server: JediLanguageServer,
        params: TextDocumentPositionParams) -> Optional[SignatureHelp]:
    """Returns signature help.

    Note: for docstring, we currently choose plaintext because coc doesn't
    handle markdown well in the signature. Will update if this changes in the
    future.
    """
    document = server.workspace.get_document(params.text_document.uri)
    jedi_script = jedi_utils.script(server.project, document)
    jedi_lines = jedi_utils.line_column(jedi_script, params.position)
    signatures_jedi = jedi_script.get_signatures(**jedi_lines)
    markup_kind = _choose_markup(server)
    signatures = [
Beispiel #5
0
            enable_snippets=enable_snippets,
            resolve_eagerly=resolve_eagerly,
            markup_kind=markup_kind,
            sort_append_text=str(count).zfill(total_completion_chars),
        )
        for count, completion in enumerate(completions_jedi)
    ]
    return (
        CompletionList(is_incomplete=False, items=completion_items)
        if completion_items
        else None
    )


@SERVER.feature(
    SIGNATURE_HELP, SignatureHelpOptions(trigger_characters=["(", ","])
)
def signature_help(
    server: JediLanguageServer, params: TextDocumentPositionParams
) -> Optional[SignatureHelp]:
    """Returns signature help.

    Note: for docstring, we currently choose plaintext because coc doesn't
    handle markdown well in the signature. Will update if this changes in the
    future.
    """
    document = server.workspace.get_document(params.text_document.uri)
    jedi_script = jedi_utils.script(server.project, document)
    jedi_lines = jedi_utils.line_column(params.position)
    signatures_jedi = jedi_script.get_signatures(*jedi_lines)
    markup_kind = _choose_markup(server)