loom

Форк
0
/
Completion.cpp 
47 строк · 2.0 Кб
1
#include "Completion.h"
2
#include "simodo/lsp/server/ServerContext.h"
3
#include "simodo/lsp/server/DocumentContext.h"
4

5
#include "simodo/variable/json/Rpc.h"
6
#include "simodo/variable/json/Serialization.h"
7
#include "simodo/inout/convert/functions.h"
8
#include "simodo/lsp/client/CompletionParamsParsers.h"
9
#include "simodo/lsp/client/TextDocumentPositionParamsParsers.h"
10

11
namespace simodo::lsp
12
{
13

14
void Completion::work()
15
{
16
    if (_jsonrpc.is_valid()) {
17
        lsp::CompletionParams completionParams;
18
        if (lsp::parseTextDocumentPositionParams(_jsonrpc.params(), completionParams)
19
         && lsp::parseCompletionParams(_jsonrpc.params(), completionParams)) {
20
            DocumentContext * doc = _server.findDocument(completionParams.textDocument.uri);
21
            if (doc) {
22
                variable::Value result = doc->produceCompletionResponse(completionParams);
23
                _server.sending().push(variable::JsonRpc(result, _jsonrpc.id()));
24
                return;
25
            }
26

27
            _server.log().error("'textDocument/completion' command: uri '" 
28
                                + completionParams.textDocument.uri + "' don't loaded yet",
29
                                variable::toJson(_jsonrpc.value()));
30
            _server.sending().push(
31
                /// @todo Скорректировать коды (и тексты) ошибок
32
                variable::JsonRpc(-1,
33
                    u"'textDocument/completion' command: uri '" 
34
                    + inout::toU16(completionParams.textDocument.uri) + u"' don't loaded yet",
35
                    _jsonrpc.id()));
36
            return;
37
        }
38
    }
39
    _server.log().error("There are wrong parameter structure of 'textDocument/completion' command", 
40
                        variable::toJson(_jsonrpc.value()));
41
    _server.sending().push(
42
        /// @todo Скорректировать коды (и тексты) ошибок
43
        variable::JsonRpc(-1,u"There are wrong parameter structure of 'textDocument/completion' command",
44
                            _jsonrpc.id()));
45
}
46

47
}

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.