From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp11.migadu.com ([2001:41d0:8:6d80::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms0.migadu.com with LMTPS id KM25FOM+BGJaUQEAgWs5BA (envelope-from ) for ; Wed, 09 Feb 2022 23:23:31 +0100 Received: from aspmx1.migadu.com ([2001:41d0:8:6d80::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp11.migadu.com with LMTPS id 4LEQEuM+BGIdXgAA9RJhRA (envelope-from ) for ; Wed, 09 Feb 2022 23:23:31 +0100 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by aspmx1.migadu.com (Postfix) with ESMTPS id 0457A2C53D for ; Wed, 9 Feb 2022 23:23:31 +0100 (CET) Received: from localhost ([::1]:57916 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nHvN3-0002Gu-Nc for larch@yhetil.org; Wed, 09 Feb 2022 17:23:29 -0500 Received: from eggs.gnu.org ([209.51.188.92]:42384) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nHvI9-000738-Cc for guix-patches@gnu.org; Wed, 09 Feb 2022 17:18:26 -0500 Received: from debbugs.gnu.org ([209.51.188.43]:59150) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nHvHm-00080H-Q1 for guix-patches@gnu.org; Wed, 09 Feb 2022 17:18:24 -0500 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1nHvHm-0006hS-Kt for guix-patches@gnu.org; Wed, 09 Feb 2022 17:18:02 -0500 X-Loop: help-debbugs@gnu.org Subject: [bug#53909] [PATCH 2/4] ui: 'with-paginated-output-port' gives access to the wrapped port. Resent-From: Ludovic =?UTF-8?Q?Court=C3=A8s?= Original-Sender: "Debbugs-submit" Resent-CC: guix-patches@gnu.org Resent-Date: Wed, 09 Feb 2022 22:18:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 53909 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: patch To: 53909@debbugs.gnu.org Cc: Ludovic =?UTF-8?Q?Court=C3=A8s?= Received: via spool by 53909-submit@debbugs.gnu.org id=B53909.164444505325688 (code B ref 53909); Wed, 09 Feb 2022 22:18:02 +0000 Received: (at 53909) by debbugs.gnu.org; 9 Feb 2022 22:17:33 +0000 Received: from localhost ([127.0.0.1]:53040 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nHvHJ-0006gE-6v for submit@debbugs.gnu.org; Wed, 09 Feb 2022 17:17:33 -0500 Received: from eggs.gnu.org ([209.51.188.92]:35528) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nHvHH-0006fg-Hv for 53909@debbugs.gnu.org; Wed, 09 Feb 2022 17:17:31 -0500 Received: from [2001:470:142:3::e] (port=40176 helo=fencepost.gnu.org) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nHvHC-0007vg-Af; Wed, 09 Feb 2022 17:17:26 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=MIME-Version:References:In-Reply-To:Date:Subject:To: From; bh=7mZfvdYFtUAa52+j8mx2Wy/qVs7EUoWYXZVKHW4L/d4=; b=o35N3Dy1Ya0cjwNHa46L DfVluHvuHPY/iHA+PIOZJFlbvB21H1fXG/l0dj3BVAm+TXVBgM3xs7WzHnzJoyu7UF9/sf6CQDR4n +Tnkg6g2nQ4dtAV5KDjJ/QKx+WLbXx5VkxdKR6WceilM4cSxLmMqLrRzg2Kv7lvVO4BmgJtP8WrhC +VgPynrKJg3i9CyZwKHJlBxokQBu27R4kO1KiE+8guZn4ovCPg4iSpoj6K3Ug/49s4SEn9RvXnY4e BF0516FaRgJJPJk97pjhTLCeZ5nSrh/upxp74Amtox/zpBWuK/AnPxnLSDUt9PSAd2q8SqKqmyrrM 4VXJf1CedW5QFQ==; Received: from 91-160-117-201.subs.proxad.net ([91.160.117.201]:56742 helo=gnu.org) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nHvH8-0000In-8e; Wed, 09 Feb 2022 17:17:26 -0500 From: Ludovic =?UTF-8?Q?Court=C3=A8s?= Date: Wed, 9 Feb 2022 23:17:10 +0100 Message-Id: <20220209221712.8724-2-ludo@gnu.org> X-Mailer: git-send-email 2.34.0 In-Reply-To: <20220209221712.8724-1-ludo@gnu.org> References: <20220209221712.8724-1-ludo@gnu.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: guix-patches@gnu.org List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-patches-bounces+larch=yhetil.org@gnu.org Sender: "Guix-patches" X-Migadu-Flow: FLOW_IN X-Migadu-Country: US ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=yhetil.org; s=key1; t=1644445411; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding:resent-cc: resent-from:resent-sender:resent-message-id:in-reply-to:in-reply-to: references:references:list-id:list-help:list-unsubscribe: list-subscribe:list-post:dkim-signature; bh=7mZfvdYFtUAa52+j8mx2Wy/qVs7EUoWYXZVKHW4L/d4=; b=IgB6kpBC+jpDm95t8RmbJS3lMPLGX9PNyQKetM59aCZFYf8YmFSQmk2e92sz9zpCoN643F LyWVSMZfnaZHuyBQo/9423vCHIHcOVreJgX6hXm7NrMSMmLg61WvTvhvNzhVDcNQvrU3tE H22Xf1eWO47RmqVzkjz081LAKRyExwBPMELAar1ebPhsLRJTIbcopRT/2fxIZIalUNlUeW /aP2LHOP/7/N1h+/EL69+ZEcqqd4Z9e8pVnxglmnntliTFbPVKor/01xAoNucI0Qo9OyM8 XWNzAR80IUkMQsnamnXzRCSf00KOPAku4yT0n5AzzW3aLzSevd8yniSWjYUmLg== ARC-Seal: i=1; s=key1; d=yhetil.org; t=1644445411; a=rsa-sha256; cv=none; b=cmO7hDTi7is0vgDMAMwoejAcZjEGPsM4BkepbNDO902lgwYKMiW4XgiVV4gJ7cIWcN53EI yEYIAhDxGLIfGMFtRj69rxnqB8IUNDKK8EI7G1B4zj25gDBWkffDh/yKnBllwMLp609A9p rgpHw21CsLq9gzvv+A2QENc//WTrBoV5fC0b7vl3nd5JmlmdMiTbS+v832+qupVLMuPDpV F/Sr6AiD2fgOHQhNxurzw69NIL59NAzzqi+MdL6unsL5L03Ubdzi19vt6NNKyxJDbgH0LJ oCwJw4oM9iqqPIlZBxs8atHFw9oOMncqq112liqLnrskRDh8Ad8fz9E8JZOnZw== ARC-Authentication-Results: i=1; aspmx1.migadu.com; dkim=fail ("headers rsa verify failed") header.d=gnu.org header.s=fencepost-gnu-org header.b=o35N3Dy1; dmarc=pass (policy=none) header.from=gnu.org; spf=pass (aspmx1.migadu.com: domain of "guix-patches-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="guix-patches-bounces+larch=yhetil.org@gnu.org" X-Migadu-Spam-Score: -2.33 Authentication-Results: aspmx1.migadu.com; dkim=fail ("headers rsa verify failed") header.d=gnu.org header.s=fencepost-gnu-org header.b=o35N3Dy1; dmarc=pass (policy=none) header.from=gnu.org; spf=pass (aspmx1.migadu.com: domain of "guix-patches-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="guix-patches-bounces+larch=yhetil.org@gnu.org" X-Migadu-Queue-Id: 0457A2C53D X-Spam-Score: -2.33 X-Migadu-Scanner: scn1.migadu.com X-TUID: VcApMODUBMox * guix/ui.scm (pager-port-mapping): New variable. (pager-wrapped-port): New procedure. (call-with-paginated-output-port): Parameterize 'pager-port-mapping'. --- guix/ui.scm | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/guix/ui.scm b/guix/ui.scm index 093de1b4ab..d1f92ce7be 100644 --- a/guix/ui.scm +++ b/guix/ui.scm @@ -124,6 +124,7 @@ (define-module (guix ui) file-hyperlink location->hyperlink + pager-wrapped-port with-paginated-output-port relevance package-relevance @@ -1665,6 +1666,20 @@ (define (package-relevance package regexps) zero means that PACKAGE does not match any of REGEXPS." (relevance package regexps %package-metrics)) +(define pager-port-mapping + ;; If a pager is being used, via 'with-paginated-output-port', this maps the + ;; pager port (pipe) to the underlying output port. + (make-parameter #f)) + +(define* (pager-wrapped-port #:optional (port (current-output-port))) + "If PORT is a pipe to a pager created by 'with-paginated-output-port', +return the underlying port. Otherwise return #f." + (match (pager-port-mapping) + ((pager . wrapped) + (and (eq? pager port) wrapped)) + (_ + #f))) + (define* (call-with-paginated-output-port proc #:key (less-options "FrX")) (let ((pager-command-line (or (getenv "GUIX_PAGER") @@ -1691,7 +1706,10 @@ (define* (call-with-paginated-output-port proc char-set:whitespace)))))) (dynamic-wind (const #t) - (lambda () (proc pager)) + (lambda () + (parameterize ((pager-port-mapping + (cons pager (current-output-port)))) + (proc pager))) (lambda () (close-pipe pager)))) (proc (current-output-port))))) -- 2.34.0