From da8759bb419b453a88df9f16c3d9e08d22965e90 Mon Sep 17 00:00:00 2001 From: Sergei Zimmerman Date: Sun, 17 Aug 2025 20:31:34 +0300 Subject: [PATCH] libcmd: Fix rendering of absolute URLs in markdown lowdown >= 1.4.0 supports LOWDOWN_TERM_NORELLINK to render absolute urls. This is useful, since we want to keep links to web resources and such intact. --- src/libcmd/markdown.cc | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/libcmd/markdown.cc b/src/libcmd/markdown.cc index 09cd9c1fb..c3341da73 100644 --- a/src/libcmd/markdown.cc +++ b/src/libcmd/markdown.cc @@ -37,9 +37,17 @@ static std::string doRenderMarkdownToTerminal(std::string_view markdown) .vmargin = 0, # endif .feat = LOWDOWN_COMMONMARK | LOWDOWN_FENCED | LOWDOWN_DEFLIST | LOWDOWN_TABLES, - .oflags = LOWDOWN_TERM_NOLINK, + .oflags = +# if HAVE_LOWDOWN_1_4 + LOWDOWN_TERM_NORELLINK // To render full links while skipping relative ones +# else + LOWDOWN_TERM_NOLINK +# endif }; + if (!isTTY()) + opts.oflags |= LOWDOWN_TERM_NOANSI; + auto doc = lowdown_doc_new(&opts); if (!doc) throw Error("cannot allocate Markdown document"); @@ -65,7 +73,7 @@ static std::string doRenderMarkdownToTerminal(std::string_view markdown) if (!rndr_res) throw Error("allocation error while rendering Markdown"); - return filterANSIEscapes(std::string(buf->data, buf->size), !isTTY()); + return std::string(buf->data, buf->size); } std::string renderMarkdownToTerminal(std::string_view markdown)