loom

Форк
0
45 строк · 1.8 Кб
1
#include "script/ScriptDocumentOperation.h"
2
#include "simodo/lsp/CompletionItemKind.h"
3

4
using namespace simodo;
5

6
/// \file
7
/// \see https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#textDocument_completion
8

9
variable::Value ScriptDocumentOperation::produceCompletionResponse(const lsp::CompletionParams & /*completionParams*/) const
10
{
11
    std::vector<variable::Value> completion_items;
12

13
    variable::VariableSet_t vars;
14

15
    std::u16string last_production;
16
    for(const variable::Variable & var : _semantic_data.declared())
17
        if (vars.end() == std::ranges::find_if(vars, [var](const variable::Variable & v){ return v.name() == var.name(); }))
18
            vars.push_back(var);
19

20
    for(const variable::Variable & var : vars)
21
        completion_items.push_back(makeCompletionItem(var.name(), u"", u"", static_cast<int64_t>(lsp::CompletionItemKind::Variable)));
22

23
    // std::vector<std::u16string> keywords {
24
    //     u"main", u"include", u"remove",
25
    // };
26
    // for(const std::u16string & w : keywords)
27
    //     completion_items.push_back(makeCompletionItem(w, u"keyword", u"", int64_t(lsp::CompletionItemKind::Keyword)));
28

29
    return completion_items;
30
}
31

32
variable::Value ScriptDocumentOperation::makeCompletionItem(const std::u16string & name,
33
                                                            const std::u16string & detail,
34
                                                            const std::u16string & description,
35
                                                            int64_t kind)
36
{
37
    return variable::Object{{
38
        { u"label", name },
39
        { u"labelDetails", variable::Object{{
40
            { u"detail", detail },
41
            { u"description", description },
42
        }}},
43
        { u"kind", kind },
44
    }};
45
}

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

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

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

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