loom

Форк
0
/
SimodoCommand.cpp 
42 строки · 1.7 Кб
1
#include "SimodoCommand.h"
2
#include "simodo/lsp/server/ServerContext.h"
3
#include "simodo/lsp/server/DocumentContext.h"
4
#include "simodo/lsp/client/TextDocumentPositionParamsParsers.h"
5

6
#include "simodo/variable/json/Rpc.h"
7
#include "simodo/variable/json/Serialization.h"
8
#include "simodo/inout/convert/functions.h"
9

10
namespace simodo::lsp
11
{
12

13
void SimodoCommand::work()
14
{
15
    if (_jsonrpc.is_valid()) {
16
        if (_jsonrpc.params().type() == variable::ValueType::Object) {
17

18
            std::shared_ptr<variable::Object> params_object = _jsonrpc.params().getObject();
19

20
            lsp::TextDocumentIdentifier doc_id;
21
            if (parseTextDocumentIdentifier(params_object->find(u"textDocument"), doc_id)) {
22
                DocumentContext * doc = _server.findDocument(doc_id.uri);
23
                if (doc) {
24
                    const variable::Value & command_value = params_object->find(u"command");
25
                    if (command_value.type() == variable::ValueType::String) {
26
                        variable::Value result = doc->produceSimodoCommandResponse(command_value.getString());
27
                        _server.sending().push(variable::JsonRpc(result, _jsonrpc.id()));
28
                        return;
29
                    }
30
                }
31
            }
32
        }
33
    }
34
    _server.log().error("There are wrong parameter structure of 'simodo/command' command", 
35
                        variable::toJson(_jsonrpc.value()));
36
    _server.sending().push(
37
        /// @todo Скорректировать коды (и тексты) ошибок
38
        variable::JsonRpc(-1,u"There are wrong parameter structure of 'simodo/command' command",
39
                            _jsonrpc.id()));
40
}
41

42
}

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

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

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

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