config-lsp/server/handlers/wireguard/handlers/completions_header.go
Myzel394 a0dca94b9d
refactor(server): Refactor Wireguard config; Improve completions + bunch of other stuff
Signed-off-by: Myzel394 <github.7a2op@simplelogin.co>
2025-03-16 00:23:54 +01:00

47 lines
1.1 KiB
Go

package handlers
import (
"config-lsp/handlers/wireguard"
"config-lsp/handlers/wireguard/fields"
protocol "github.com/tliron/glsp/protocol_3_16"
)
func getHeaderCompletion(name string, documentation string) protocol.CompletionItem {
textFormat := protocol.InsertTextFormatPlainText
kind := protocol.CompletionItemKindEnum
insertText := "[" + name + "]\n"
return protocol.CompletionItem{
Label: "[" + name + "]",
InsertTextFormat: &textFormat,
InsertText: &insertText,
Kind: &kind,
Documentation: &documentation,
}
}
func GetSectionHeaderCompletions(
d *wireguard.WGDocument,
) ([]protocol.CompletionItem, error) {
completions := make([]protocol.CompletionItem, 0)
containsInterfaceSection := false
for _, section := range d.Config.Sections {
if section.Header.Name == "Interface" {
containsInterfaceSection = true
break
}
}
if !containsInterfaceSection {
completions = append(completions, getHeaderCompletion("Interface", fields.HeaderInterfaceEnum.Documentation))
}
completions = append(completions, getHeaderCompletion("Peer", fields.HeaderPeerEnum.Documentation))
return completions, nil
}