From b7501df447be4dc1abe89ec5a615bcb48cd15057 Mon Sep 17 00:00:00 2001 From: Myzel394 <50424412+Myzel394@users.noreply.github.com> Date: Wed, 21 Aug 2024 22:57:42 +0200 Subject: [PATCH] feat(wireguard): Add smart completion: Provide completions for new peer section --- .../wireguard/lsp/text-document-completion.go | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/handlers/wireguard/lsp/text-document-completion.go b/handlers/wireguard/lsp/text-document-completion.go index 4429343..069cac9 100644 --- a/handlers/wireguard/lsp/text-document-completion.go +++ b/handlers/wireguard/lsp/text-document-completion.go @@ -26,7 +26,20 @@ func TextDocumentCompletion(context *glsp.Context, params *protocol.CompletionPa return handlers.GetRootCompletionsForEmptyLine(*p) } - return handlers.GetCompletionsForSectionEmptyLine(*section) + completions, err := handlers.GetCompletionsForSectionEmptyLine(*section) + + // === Smart rules === + + // If previous line is empty too, maybe new section? + if lineNumber >= 1 && p.GetTypeByLine(lineNumber-1) == parser.LineTypeEmpty && len(p.GetBelongingSectionByLine(lineNumber).Properties) > 0 { + rootCompletions, err := handlers.GetRootCompletionsForEmptyLine(*p) + + if err == nil { + completions = append(completions, rootCompletions...) + } + } + + return completions, err case parser.LineTypeProperty: completions, err := handlers.GetCompletionsForSectionPropertyLine(*section, lineNumber, params.Position.Character)