CoC не отправляет сообщение с запросом автозаполнения на языковой сервер

#c #vim #vim-plugin #neovim #coc.nvim

#c #vim #vim-плагин #neovim #coc.nvim

Вопрос:

Мое окно автозаполнения nvim не отображается при редактировании кода C . Я пытался следовать этому руководству по отладке, но у меня не было особого успеха. Я использую языковой сервер Kythe, настроенный следующим образом в coc-settings.json :

 {
    "languageserver": {
        "kythe": {
            "command": "/full/path/omitted/kythe_languageserver",
            "filetypes": ["python", "go", "java", "cpp", "cc", "c  ", "proto"],
            "trace.server" : "verbose"
        }
    }
}
 

При открытии и запуске файла C :CocList services я вижу, что языковой сервер запущен:

 languageserver.kythe [running] python, go, java, cpp, cc, c  , proto
 

И действительно, в :CocCommand workspace.showOutput , есть сообщения, указывающие на успешную инициализацию:

 [Trace - 4:45:05 PM] Received response 'initialize - (0)' in 264ms.
Result: {
    "capabilities": {
        "textDocumentSync": 1,
        "hoverProvider": true,
        "definitionProvider": true,
        "referencesProvider": true
    }
}
 

Одна мысль, есть ли здесь недостающая возможность, которая требуется для автозаполнения? В любом случае, когда я редактирую файл и пытаюсь, например, ввести std:: ожидание некоторой формы автозаполнения для этого пространства имен, ничего не происходит, и единственные сообщения, отправляемые на языковой сервер, выглядят следующим образом:

 [Trace - 4:45:47 PM] Sending notification 'textDocument/didChange'.
Params: {
    "textDocument": {
        "uri": "[redacted]",
        "version": 4
    },
    "contentChanges": [
        {
            "text": "[redacted]"
        }
    ]
}
 

Исходя из моих ограниченных знаний, я почти уверен, что для автозаполнения также требуется отправка другого типа сообщения на языковой сервер, нет? textDocument/didChange кажется, только для обновления состояния.

Редактировать: полный набор запрошенных возможностей с помощью nvim:

  "capabilities": {
        "workspace": {
            "applyEdit": true,
            "workspaceEdit": {
                "documentChanges": true,
                "resourceOperations": [
                    "create",
                    "rename",
                    "delete"
                ],
                "failureHandling": "textOnlyTransactional"
            },
            "didChangeConfiguration": {
                "dynamicRegistration": true
            },
            "didChangeWatchedFiles": {
                "dynamicRegistration": true
            },
            "symbol": {
                "dynamicRegistration": true,
                "symbolKind": {
                    "valueSet": [
                        1,
                        2,
                        3,
                        4,
                        5,
                        6,
                        7,
                        8,
                        9,
                        10,
                        11,
                        12,
                        13,
                        14,
                        15,
                        16,
                        17,
                        18,
                        19,
                        20,
                        21,
                        22,
                        23,
                        24,
                        25,
                        26
                    ]
                },
                "tagSupport": {
                    "valueSet": [
                        1
                    ]
                }
            },
            "executeCommand": {
                "dynamicRegistration": true
            },
            "configuration": true,
            "workspaceFolders": true
        },
        "textDocument": {
            "publishDiagnostics": {
                "relatedInformation": true,
                "versionSupport": false,
                "tagSupport": {
                    "valueSet": [
                        1,
                        2
                    ]
                }
            },
            "synchronization": {
                "dynamicRegistration": true,
                "willSave": true,
                "willSaveWaitUntil": true,
                "didSave": true
            },
            "completion": {
                "dynamicRegistration": true,
                "contextSupport": true,
                "completionItem": {
                    "snippetSupport": true,
                    "commitCharactersSupport": true,
                    "documentationFormat": [
                        "markdown",
                        "plaintext"
                    ],
                    "deprecatedSupport": true,
                    "preselectSupport": true
                },
                "completionItemKind": {
                    "valueSet": [
                        1,
                        2,
                        3,
                        4,
                        5,
                        6,
                        7,
                        8,
                        9,
                        10,
                        11,
                        12,
                        13,
                        14,
                        15,
                        16,
                        17,
                        18,
                        19,
                        20,
                        21,
                        22,
                        23,
                        24,
                        25
                    ]
                }
            },
            "hover": {
                "dynamicRegistration": true,
                "contentFormat": [
                    "markdown",
                    "plaintext"
                ]
            },
            "signatureHelp": {
                "dynamicRegistration": true,
                "signatureInformation": {
                    "documentationFormat": [
                        "markdown",
                        "plaintext"
                    ],
                    "parameterInformation": {
                        "labelOffsetSupport": true
                    }
                }
            },
            "definition": {
                "dynamicRegistration": true
            },
            "references": {
                "dynamicRegistration": true
            },
            "documentHighlight": {
                "dynamicRegistration": true
            },
            "documentSymbol": {
                "dynamicRegistration": true,
                "symbolKind": {
                    "valueSet": [
                        1,
                        2,
                        3,
                        4,
                        5,
                        6,
                        7,
                        8,
                        9,
                        10,
                        11,
                        12,
                        13,
                        14,
                        15,
                        16,
                        17,
                        18,
                        19,
                        20,
                        21,
                        22,
                        23,
                        24,
                        25,
                        26
                    ]
                },
                "hierarchicalDocumentSymbolSupport": true,
                "tagSupport": {
                    "valueSet": [
                        1
                    ]
                }
            },
            "codeAction": {
                "dynamicRegistration": true,
                "isPreferredSupport": true,
                "codeActionLiteralSupport": {
                    "codeActionKind": {
                        "valueSet": [
                            "",
                            "quickfix",
                            "refactor",
                            "refactor.extract",
                            "refactor.inline",
                            "refactor.rewrite",
                            "source",
                            "source.organizeImports"
                        ]
                    }
                }
            },
            "codeLens": {
                "dynamicRegistration": true
            },
            "formatting": {
                "dynamicRegistration": true
            },
            "rangeFormatting": {
                "dynamicRegistration": true
            },
            "onTypeFormatting": {
                "dynamicRegistration": true
            },
            "rename": {
                "dynamicRegistration": true,
                "prepareSupport": true
            },
            "documentLink": {
                "dynamicRegistration": true,
                "tooltipSupport": true
            },
            "typeDefinition": {
                "dynamicRegistration": true
            },
            "implementation": {
                "dynamicRegistration": true
            },
            "declaration": {
                "dynamicRegistration": true
            },
            "colorProvider": {
                "dynamicRegistration": true
            },
            "foldingRange": {
                "dynamicRegistration": true,
                "rangeLimit": 5000,
                "lineFoldingOnly": true
            },
            "selectionRange": {
                "dynamicRegistration": true
            }
        },
        "window": {
            "workDoneProgress": true
        }
    },
 

Комментарии:

1. В чем дело capabilities Sending request 'initialize - (0)' ? Вы можете получить это при начале вывода :CocCommand workspace.showOutput .

2. Я добавил редактирование с запрошенными возможностями

3. У меня нет env, чтобы попробовать Kythe. Из журналов coc отправляет запрос на сервер с возможностями завершения / определения / x / y / z, сервер отвечает только на наведение / определение / ссылки, это означает, что Kythe может выполнять наведение / определение / ссылки только с поддержкой LSP, поэтому завершений нет.

4. Поддерживает ли Kythe завершение кода? Можете ли вы заставить его работать с VSCode Kythe?github.com/kythe/kythe/tree/master/kythe/typescript /…

5. Из github.com/kythe/kythe/blob/master/kythe/go/languageserver / … , На данный момент Kythe поддерживает только наведение / определение / ссылки.

Ответ №1:

Языковой сервер Kythe пока не поддерживает функции автозаполнения.