LSP-server-example

Форк
0
46 строк · 1.1 Кб
1
package handlers
2

3
import (
4
	"encoding/json"
5
	"log/slog"
6

7
	"lsp-server/internal/protocol"
8
)
9

10
const CompletionRequestMethod = "textDocument/completion"
11

12
type Completion struct {
13
	fileURIToContents *map[string][]string
14
}
15

16
func NewCompletion(fileURIToContents *map[string][]string) *Completion {
17
	return &Completion{fileURIToContents: fileURIToContents}
18
}
19

20
func (c Completion) Call(params json.RawMessage) (any, error) {
21
	slog.Info("received completion method")
22
	completionParams, err := c.parseParams(params)
23
	if err != nil {
24
		slog.Error("Error to parse completion params")
25
		return nil, err
26
	}
27
	slog.Debug("completion params", slog.Any("params", *completionParams))
28

29
	suggestions := []protocol.CompletionItem{
30
		{
31
			Label: "some completion",
32
			Kind:  protocol.ValueCompletion,
33
		},
34
	}
35

36
	return suggestions, err
37
}
38

39
func (c Completion) parseParams(params json.RawMessage) (*protocol.CompletionParams, error) {
40
	var completionParams protocol.CompletionParams
41
	if err := json.Unmarshal(params, &completionParams); err != nil {
42
		return nil, err
43
	}
44

45
	return &completionParams, nil
46
}
47

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

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

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

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