From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Jim Porter Newsgroups: gmane.emacs.bugs Subject: bug#57635: 29.0.50; Look into using generator.el's CPS machinery to replace 'eshell-do-eval' Date: Thu, 15 Dec 2022 17:10:35 -0800 Message-ID: References: <1766577e-022f-87ae-873e-875d84078891@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="35003"; mail-complaints-to="usenet@ciao.gmane.io" Cc: 57635@debbugs.gnu.org To: Stefan Monnier Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Fri Dec 16 02:11:21 2022 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1p5zFw-0008yJ-5Y for geb-bug-gnu-emacs@m.gmane-mx.org; Fri, 16 Dec 2022 02:11:20 +0100 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1p5zFf-0005yE-Pa; Thu, 15 Dec 2022 20:11:03 -0500 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1p5zFe-0005xq-F8 for bug-gnu-emacs@gnu.org; Thu, 15 Dec 2022 20:11:02 -0500 Original-Received: from debbugs.gnu.org ([209.51.188.43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1p5zFe-00077U-6y for bug-gnu-emacs@gnu.org; Thu, 15 Dec 2022 20:11:02 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1p5zFd-0006jK-P5 for bug-gnu-emacs@gnu.org; Thu, 15 Dec 2022 20:11:01 -0500 X-Loop: help-debbugs@gnu.org Resent-From: Jim Porter Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Fri, 16 Dec 2022 01:11:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 57635 X-GNU-PR-Package: emacs Original-Received: via spool by 57635-submit@debbugs.gnu.org id=B57635.167115304525861 (code B ref 57635); Fri, 16 Dec 2022 01:11:01 +0000 Original-Received: (at 57635) by debbugs.gnu.org; 16 Dec 2022 01:10:45 +0000 Original-Received: from localhost ([127.0.0.1]:45987 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1p5zFN-0006j3-3a for submit@debbugs.gnu.org; Thu, 15 Dec 2022 20:10:45 -0500 Original-Received: from mail-pj1-f52.google.com ([209.85.216.52]:38494) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1p5zFK-0006il-Kw for 57635@debbugs.gnu.org; Thu, 15 Dec 2022 20:10:42 -0500 Original-Received: by mail-pj1-f52.google.com with SMTP id z8-20020a17090abd8800b00219ed30ce47so4481852pjr.3 for <57635@debbugs.gnu.org>; Thu, 15 Dec 2022 17:10:42 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:in-reply-to:from:references:cc:to :content-language:subject:mime-version:date:message-id:from:to:cc :subject:date:message-id:reply-to; bh=yya943CWrmzQwJn+xXMcsPb3K5gqTE7c+FESXiHUkkU=; b=ghqD22SNAvwMXNbfOa77Z/5yqymDWeJR2Ee0/4ypEsjbwhrktY/zaDVhTlijkUIdtm vdVCZsqYGjtLB4G+ZZhkpS1QoPSMOS3VrqGOyUrnIaw5P0o+mX9EcPjSv1Zob2k9DXBA MSm7JHrnMyBJUsJT7dYSdvdXhLv4r7QyFokgi7MVpL0GR+DeRLGDL1UqNpoaUvExef/W JwsEra0RJa6iorZGOm9WRQAKaTQWHxC6Xk1DZMyvd0HWQcbwipxpXUTtcqUYg3DYXAaq HA9j5KQNpZ6lHZ954IaVkVO659gnoELkpUPeraH0BiQ33Sv7nlkOXSKZFEdyojOaFnQ5 nK+w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:in-reply-to:from:references:cc:to :content-language:subject:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=yya943CWrmzQwJn+xXMcsPb3K5gqTE7c+FESXiHUkkU=; b=jrIc0cxS5e0c1FG3Omb30jtaPBSICX2mmWdxorjT2YmdRahCvSLd/BLGbLeJ6XfTB5 ZBvicWo9KY6guSYUlrJf8DVebpEDkUOmieQAK0DBf4nkjr1v/nvektxuzZBrhASeuR+5 kGwk6DX8MOMxajj08EaB2f3lolW7Yb2O9OGRAqjF6T/elFfmLQRv8EaQCxdb45EaEvO6 7mCBKGp8GJVjpyxEEba51TO6P51LRu20EElcTgMOXcW7aQoGyk7B8s5AfEtHHJwxE30o cOhEbH1MppPT7GMNdWKAMF0/HH9QdbVZmpoC5gojjhJvX5HHTxT3FCH882uBofbFACeZ BrAQ== X-Gm-Message-State: ANoB5plCxiBuY5MpdivO8/9Kv8U2+p7Ry8HpV2kq+Fn26XJazWfTAqgl JMGkn9igrGNbMG97AXfRD8j0cu/hp90= X-Google-Smtp-Source: AA0mqf5Na+wCjHMxC0TX68qstBg7YB0dN97s2iaHZSV0XkxDuqoEfYgf5OCbzAf6OOrGmzeZ/+YssA== X-Received: by 2002:a17:902:ab8d:b0:187:467f:c76c with SMTP id f13-20020a170902ab8d00b00187467fc76cmr27325125plr.51.1671153036872; Thu, 15 Dec 2022 17:10:36 -0800 (PST) Original-Received: from [192.168.1.2] (cpe-76-168-148-233.socal.res.rr.com. [76.168.148.233]) by smtp.googlemail.com with ESMTPSA id t6-20020a1709027fc600b001769e6d4fafsm275014plb.57.2022.12.15.17.10.35 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 15 Dec 2022 17:10:36 -0800 (PST) Content-Language: en-US In-Reply-To: X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.bugs:251164 Archived-At: On 9/7/2022 5:45 AM, Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors wrote: >> In order to make long-running Eshell commands behave more-nicely, Eshell >> uses iterative evaluation of many commands so that it can return control >> back to the rest of Emacs. This has a lot of similarity to how >> generator.el works. > > Indeed, the idea would be to replace the commands that launch processes > with "yields" to an external loop (that just launches the next process > and then calls the generator again). Maybe an even better solution would be to use Emacs threads. This should do everything that Eshell needs, plus hopefully add the ability to add some basic job control as well. (Well, one day...) I hacked something up that seems to work for simple cases, and it shouldn't be *too* hard to get it working more generally. This will be a big change for Eshell, so it might make sense to create a feature branch when I have a little more to show. However, I can already see how this will eliminate the need for a number of workarounds in Eshell's command invocation logic.