From 614463d429de98407e958d2b3436a9da2fd97495 Mon Sep 17 00:00:00 2001 From: Myzel394 <50424412+Myzel394@users.noreply.github.com> Date: Thu, 3 Oct 2024 14:15:15 +0200 Subject: [PATCH] feat(ssh_config): Add go to definition support for Tags --- .../lsp/text-document-definition.go | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/handlers/ssh_config/lsp/text-document-definition.go b/handlers/ssh_config/lsp/text-document-definition.go index 4e73e2c..a2e4332 100644 --- a/handlers/ssh_config/lsp/text-document-definition.go +++ b/handlers/ssh_config/lsp/text-document-definition.go @@ -1,10 +1,32 @@ package lsp import ( + sshconfig "config-lsp/handlers/ssh_config" + "config-lsp/handlers/ssh_config/fields" + "github.com/tliron/glsp" protocol "github.com/tliron/glsp/protocol_3_16" ) +var tagOption = fields.CreateNormalizedName("Tag") + func TextDocumentDefinition(context *glsp.Context, params *protocol.DefinitionParams) ([]protocol.Location, error) { + line := params.Position.Line + + d := sshconfig.DocumentParserMap[params.TextDocument.URI] + + option, _ := d.Config.FindOption(line) + + if option != nil && option.Key.Key == tagOption && option.OptionValue != nil { + if block, found := d.Indexes.Tags[option.OptionValue.Value.Value]; found { + return []protocol.Location{ + { + URI: params.TextDocument.URI, + Range: block.ToLSPRange(), + }, + }, nil + } + } + return nil, nil }