From c21c4fc21f7fe75f05d3fc3d09e74ffed41ba2ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micka=C3=ABl=20Menu?= Date: Sat, 24 Sep 2022 14:33:34 +0200 Subject: [PATCH] LSP: Add support for external URLs with `documentLink` (#261) --- CHANGELOG.md | 4 ++++ internal/adapter/lsp/server.go | 23 ++++++++++++++++------- 2 files changed, 20 insertions(+), 7 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index cf55d3a..c062bc0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,10 @@ All notable changes to this project will be documented in this file. ## Unreleased +### Added + +* LSP: Support for external URLs with `documentLink`. + ### Fixed * [#243](https://github.com/mickael-menu/zk/issues/243) LSP: Fixed finding backlink references for notes in a folder. diff --git a/internal/adapter/lsp/server.go b/internal/adapter/lsp/server.go index 6c869d3..75199c1 100644 --- a/internal/adapter/lsp/server.go +++ b/internal/adapter/lsp/server.go @@ -281,15 +281,24 @@ func NewServer(opts ServerOpts) *Server { documentLinks := []protocol.DocumentLink{} for _, link := range links { - target, err := server.noteForLink(link, notebook) - if target == nil || err != nil { - continue + var target string + if strutil.IsURL(link.Href) { + // External link + target = link.Href + } else { + // Internal note link + targetNote, err := server.noteForLink(link, notebook) + if targetNote != nil && err == nil { + target = targetNote.URI + } } - documentLinks = append(documentLinks, protocol.DocumentLink{ - Range: link.Range, - Target: &target.URI, - }) + if target != "" { + documentLinks = append(documentLinks, protocol.DocumentLink{ + Range: link.Range, + Target: &target, + }) + } } return documentLinks, err