diff --git a/packaging/dependencies.nix b/packaging/dependencies.nix index 17ba06b4d..5f1dc55e6 100644 --- a/packaging/dependencies.nix +++ b/packaging/dependencies.nix @@ -64,6 +64,18 @@ scope: { NIX_CFLAGS_COMPILE = "-DINITIAL_MARK_STACK_SIZE=1048576"; }); + lowdown = pkgs.lowdown.overrideAttrs (prevAttrs: rec { + version = "2.0.2"; + src = pkgs.fetchurl { + url = "https://kristaps.bsd.lv/lowdown/snapshots/lowdown-${version}.tar.gz"; + hash = "sha512-cfzhuF4EnGmLJf5EGSIbWqJItY3npbRSALm+GarZ7SMU7Hr1xw0gtBFMpOdi5PBar4TgtvbnG4oRPh+COINGlA=="; + }; + nativeBuildInputs = prevAttrs.nativeBuildInputs ++ [ pkgs.bmake ]; + postInstall = + lib.replaceStrings [ "lowdown.so.1" "lowdown.1.dylib" ] [ "lowdown.so.2" "lowdown.2.dylib" ] + prevAttrs.postInstall; + }); + # TODO Hack until https://github.com/NixOS/nixpkgs/issues/45462 is fixed. boost = (pkgs.boost.override { 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)