Received: (at 65736) by debbugs.gnu.org; 25 Feb 2025 23:19:39 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Tue Feb 25 18:19:39 2025 Received: from localhost ([127.0.0.1]:48975 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1tn4DC-0000Wr-IP for submit <at> debbugs.gnu.org; Tue, 25 Feb 2025 18:19:39 -0500 Received: from mout.gmx.net ([212.227.15.15]:55929) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <stephen.berman@HIDDEN>) id 1tn4D9-0000WZ-IB for 65736 <at> debbugs.gnu.org; Tue, 25 Feb 2025 18:19:36 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.net; s=s31663417; t=1740525568; x=1741130368; i=stephen.berman@HIDDEN; bh=ecCrNVHlgS1dUioIGokc//E6bJw/9mO12PF6DSWVrjI=; h=X-UI-Sender-Class:From:To:Cc:Subject:In-Reply-To:References:Date: Message-ID:MIME-Version:Content-Type:Content-Transfer-Encoding:cc: content-transfer-encoding:content-type:date:from:message-id: mime-version:reply-to:subject:to; b=aw12MdNAMddsXNp/+i/F1GJBDm0pkoR7QA4nWtlUzc0LiajUzdyPtFlZ2CksLL58 YP7I9vpT8TFHq5p9So72ApdiyeNWkWwXiMCpmVqBcRV8gxPD23/rYFYW+Qlr6KBeB yZm1fMjZzstQXdDpUSVKlt+aFSfW9VfwpkMJPlLC65fmS5R1w5tn/Z4TL6sC0OoxK naY0Bf1YtrfXi68/7QnWBWvsQKIshDK/MwvzDrLpezbsFnTpbLh2C0I8X3OSe2NJC Pk6i03v5BBdzNZM8gkH0u2u2EzFh0Z3t1ZNY9h1Q0Cs3FH/UULvxOC0jUK/vmdcy1 FQkSuOrDQ2iEcYuvzg== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from strobelfssd ([88.130.50.54]) by mail.gmx.net (mrgmx004 [212.227.17.190]) with ESMTPSA (Nemesis) id 1M7Jza-1tfMa42fZE-00A55i; Wed, 26 Feb 2025 00:19:28 +0100 From: Stephen Berman <stephen.berman@HIDDEN> To: Stefan Kangas <stefankangas@HIDDEN> Subject: Re: bug#65736: 30.0.50; Extending the use of format-prompt In-Reply-To: <CADwFkm=H6yNPjZ+JC1qy89i_Sf=Xk-6C04c+XAsJMZ5_qObjUw@HIDDEN> References: <87jzt599yc.fsf@HIDDEN> <CADwFkm=H6yNPjZ+JC1qy89i_Sf=Xk-6C04c+XAsJMZ5_qObjUw@HIDDEN> Date: Wed, 26 Feb 2025 00:19:26 +0100 Message-ID: <87jz9dr4sh.fsf@HIDDEN> User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:XQR0x74/F6nbAcJ9tZWdZ6fC1QPYPKnGoW1xcxu2QIdmKAnYGjM m25TvtyuJ0vauI0ZCdJux1HTu6qS82JYAgRJCdg/4QbyPexO87AdPZQOoJZU3itQbIiuAJG Xwdhf9s6F/l0Nh9MdCXRsQBdP4Lo0kM5Q4Y9z+2XSF/388tf2rWkYpIzsiIdQRx7S+XFbus A667QeTrwohwKDL+gKINw== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:HQOD+0fFA5o=;68fYAaD/phjD7AX5O9CfHwNa72p gljrEbg0+/6wCkQdsGvwyh+a1Y5hVMdLghCQHRJ967KEqMDRAkdZAEnRZJpsexFB8CzM99W5Z etjSLiq4x9vq/+5IeHty7+UFBrXs40sH4PxxoHLcqoFP6CFB0UMoNvw6nP3h5gmbgJAnr33xc AsiFyccUGFlOl+Pcm0z8Nfc1GiXLCuPQqzJvEs0Zb2wqhaIkF2SvbQzkkOWNUKeUld3XOUeV5 Qjwo1z7vrUiU+G7tznxnK8L46E03VTqKkP7aELGwQVHmeYu1JEiHkK5pp3DU24sHl8zAWKmGz TSLmGh9a+bA8WLIPkl4WZv1BbDGyEdYjyYQgdC0TbfRja9pN4T996OJZchoKj69ZbeBxDM67u IrMy7IAZf19foOVA9UjEzqU0NhxNmzoSJzLYies4hQpDGf2YbSG+Li0xK26ivi5iPKT0MOFZi d5tpIiWU8MpPLWtw8ksrEXQ9ZTMS+Zq37IiBJ+J136BjmM3GL6ozamaWzkjFYHPS8nlWwDfOM RXRqi/0yr3lc2J43YdT037tNirV5/WhK33fFzUg22e7H9K+NPGCnnAMmrPWQ9ojeAO8aUcb7r XHw7qgoGp34tNjlvjE2qw/qOKoNL2nFobx8L1VkM1WDwO+OvKrVkh208NGwPS0ISXefHqRz1K KSn++uKsZil8MrnoAPmbI5E4slsGntQzSofXky3rg2z2LR0FqCR+7AjG7MIooxenyVQDqyWB0 pfat6xZDNt1YqsGjKG7LrsCND3I6/yukKRoiuXiA/N1zYlrH6VKYJ+kkbAqEz6uIbfkEOfJxl kPD4kEfhqI4mMEriwzy2uVxM82sUE22U9ZGBAPqG1V+pKcAmWBZdE6hfqobdIfF0pjiB6q/te pLIdefjMPCKrJ4daBdtx4BgMPUxdCT3Qd/NwUXnb7pD9atvysOgvHIrwAt18gLlNdIc9OmUei FfRIurvvd+bstTvu1CQPKC0QPOI4ndLyFkRMgimPfVQlHR8MTdqrzyHqU9q28narStQ+srhdK NrdL2wP1Jg+ssPhA5OgMiItrn2zGSWJqRgogpd46kgeLzrJHq+IeJRPxbhUrFA+v/oceMH9J4 kbKW3vlr34b+lJ+OOwDv0WtUIUz4mnhjNtaxedInuTVprD+hDmQG7rM1Wqw8qZyfA1f2hS8T4 cdTpRelfMbdq7zENf2xRMruzylFV58cKtDLpgwgcCPPOWvCn1IVWfIdlWAU8w5AJSvYx1tXk0 GVUvUT6dwQVBYBlE50lNzddE7Vs/0cczF9+LckPjO3hpVMJNZVkrXewdRW2W7DPYAD+cv5Qx2 4dWVYwIw4xBud+5IErOVFcjrfsYkpz9qz0qeUsOWg7b+8+8MFZK6xpbAPIlk1BhgO3G5xuLGQ uWSIIJzsyDYXzLlBzQDhPZ8ALlIIQUzO/LanTpfULZG760UrbDHtVS61zprt2QRgVSf3kuT+L NJm+CAA== X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 65736 Cc: 65736 <at> debbugs.gnu.org X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.7 (-) On Sun, 23 Feb 2025 01:26:11 +0000 Stefan Kangas <stefankangas@HIDDEN> w= rote: > Stephen Berman <stephen.berman@HIDDEN> writes: > >> 0. emacs -Q >> 1. Invoke read-buffer with a prompt containg grave-style quoting and >> with no default buffer argument, e.g.: >> M-: (read-buffer "Enter `buffer': ") >> =3D> This displays the prompt in the minibuffer with grave-style quoting, >> i.e. as it appears in the invocation. >> 2. Repeat step 1 but add a default buffer argument, e.g.: >> M-: (read-buffer "Enter `buffer': " "*scratch*") >> =3D> This displays the prompt in the minibuffer with curve-style quoting: >> Enter =E2=80=98buffer=E2=80=99 (default *scratch*): >> >> The different appearances of the prompt with and without the presence of >> a default argument is due to commit 50512e36c7, which passes the prompt >> string to format-prompt when read-buffer has a non-nil default argument >> DEF, but not when DEF is nil. (The purpose of that commit was to >> replace occurrences of prompts containing the string "(default %s)" by >> invocations of the then recently introduced function format-prompt; the >> fact that this function also calls substitute-command-keys was not a >> concern for that commit and its effect was presumably for that reason >> overlooked.) >> >> I think the simplest fix is to pass PROMPT to format-prompt regardless >> of the presence of a default argument of read-buffer, as in the first >> attached patch. >> >> But having substitute-command-keys always apply to the prompt string of >> read-buffer raises the question whether it should apply more generally >> to prompt strings. In fact, commit 50512e36c7 did change numerous >> mostly mode-specific prompts in several Lisp libraries to pass the >> prompt to format-prompt, but in almost all cases those prompts are fixed >> strings where applying substitute-command-keys makes no difference. But >> with read-buffer the prompt string is provided by the caller, so its >> appearance could be affected by substitute-command-keys. >> >> By default, read-buffer calls (in C) completing-read, which by default >> calls read-from-minibuffer, and indeed most, if not all, other functions >> that prompt for minibuffer input end up calling read-from-minibuffer. >> So passing the prompt string to format-prompt in read-from-minibuffer, >> as in the second attached patch (which should be applied instead of the >> first patch), would achieve a higher degree of consistency and >> simplicity in Emacs in the handling of prompts for minibuffer input, at >> least by default. (With functions that accept a user-defined function, >> like read-buffer-function with read-buffer, it would be up to the user >> to decide whether or not to use format-prompt, if the function does not >> invoke read-from-minibuffer.) >> >> If this change (the second patch) is accepted, it will probably require >> adjustments in the Emacs code base, e.g. to avoid double invocations of >> format-prompt. This would partly undo the changes made in 50512e36c7. >> I'd be willing to make the needed adjustments in Emacs. > > (Sorry for the long delay in replying here.) > > I think what you write here makes sense. Could you please resend the > patches as formatted by something like > > git format-patch -1 > > and with a proper ChangeLog message as per CONTRIBUTE? > > I think that would facilitate reviewing the patches, especially the > second one which seems to be a change in behavior that we would need to > agree on. Last November there was a discussion on emacs-devel about read-number (starting at https://lists.gnu.org/archive/html/emacs-devel/2024-11/msg00216.html), which uses read-from-minibuffer but also exceptionally has its own nonstandard handling of the default value of the prompt string. In that thread I proposed a change to read-number that allows it to use minibuffer-default-prompt-format (which format-prompt uses), but Eli found that change too ad hoc and preferred to document recommending against using format-prompt in read-number (and this was done in emacs-30). So I think the idea of making read-from-minibuffer use format-prompt as in the second patch is not viable. Is there still any interest in just changing read-buffer as in the first patch? Steve Berman
bug-gnu-emacs@HIDDEN
:bug#65736
; Package emacs
.
Full text available.Received: (at 65736) by debbugs.gnu.org; 23 Feb 2025 01:26:21 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sat Feb 22 20:26:20 2025 Received: from localhost ([127.0.0.1]:58162 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1tm0lA-0008HM-DG for submit <at> debbugs.gnu.org; Sat, 22 Feb 2025 20:26:20 -0500 Received: from mail-ed1-x535.google.com ([2a00:1450:4864:20::535]:56429) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from <stefankangas@HIDDEN>) id 1tm0l8-0008H4-3T for 65736 <at> debbugs.gnu.org; Sat, 22 Feb 2025 20:26:18 -0500 Received: by mail-ed1-x535.google.com with SMTP id 4fb4d7f45d1cf-5e02eba02e8so4476930a12.0 for <65736 <at> debbugs.gnu.org>; Sat, 22 Feb 2025 17:26:18 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1740273972; x=1740878772; darn=debbugs.gnu.org; h=content-transfer-encoding:cc:to:subject:message-id:date :mime-version:references:in-reply-to:from:from:to:cc:subject:date :message-id:reply-to; bh=+g5gIGkrGUfpE7Lk4qZRdL1J5FZPucdNw+Jqnnt4tJE=; b=DRYaKy3d8ZlULLIwF2ULhKgVviQdh1LJC2txOazT8WeWfR4pcMRk8z5BZNc/L+I/Jx 3UHIn/d8bHgBtl4MbsIezT5hRY8Px6WFgfl4Vs4yzUD20XoJ3JrVCumY2qRuh8KCRRV8 78KYCB9dyqNazaVVGOm1b0pFYZQ9j5+DgmlmTGJhxJ6UrbYTEWnqguoQewrglty2N9+S /GF2q93D20MEFmQm+Pj5nRxFKmytk6kJqCHc2CnzhSIFetktAOzeSTDJGTrz5gKTJIVH xT7qfOHqXDd8DZMQpyBQ1NegzpqbYB0CZEkvDVc+Bb51s+kpC6DXkjT0J+J78KFy4e+q PZUQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740273972; x=1740878772; h=content-transfer-encoding:cc:to:subject:message-id:date :mime-version:references:in-reply-to:from:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=+g5gIGkrGUfpE7Lk4qZRdL1J5FZPucdNw+Jqnnt4tJE=; b=raME6xIKhOX0xuprSQkJ2ucOQ0lq2AAaqR+aYcKMGo7i2KgdiRPmZYQidiKClb5DU0 bn+R6QlU6TqKhlnCg9rFS51f9UJugnbPFclgXG+QNCGgHfd32nUzk3Ab1dgYpTLwI5Dc 1oGc5VxfvoLViq1Zqe1DWe+u2G8Mk/yRef5CT4nU6ZM04VyhNUEs5mHfRsEpzYeD9b3F LOSYxYHfmL0QqmA5ML50Y1cphbU4MXXI+HPBvdzvSdXAMOX417wVBy/ZRvMDAvmn3smt 6OQOlQ/QTkbxT3+ode95Yx7sBK+OFtLjl2oj0pOxJofjeYVSJ4f/yxmPdk9/0TtC7nYQ pLFg== X-Gm-Message-State: AOJu0Yzldfhjk9w+mBg1h+aUIct40qiiPi+TeLkbomQoy61NR1wc9Ii9 Hr9Or2oLFXUvxCzBTinoq8Pz2815hW7XP92qyxlwq5gPKq+SvEQUvSGiuUNW4J0E43k7pR3lBGg gTJxJ2Uz6OHbTWR7rSCIvHZb3G0vASwG61zKyfw== X-Gm-Gg: ASbGncsRwPfYjE5fO3NEPIIjojZQ0IcykbqxKhnLSYBCmw9DeyDv6jEh7rzQV4Ti6zt 1ifFqUCJN0FVWizosrfJkmFcX4wEx4Sfyg939aGeNS3+eQEZOP/nu5tG33347KhGgETyxKuyufX hrfKlA8gDw X-Google-Smtp-Source: AGHT+IG2wNY41A9FRMP814kWFQyfAy23spOkVmoxhcTZKP6J2pg8BwAj6lHAqHJJudkkSXElxgBZ0FydBomcz7h+w5E= X-Received: by 2002:a05:6402:3554:b0:5dc:5a34:1296 with SMTP id 4fb4d7f45d1cf-5e0b70ef77dmr8286461a12.16.1740273971726; Sat, 22 Feb 2025 17:26:11 -0800 (PST) Received: from 753933720722 named unknown by gmailapi.google.com with HTTPREST; Sun, 23 Feb 2025 01:26:11 +0000 From: Stefan Kangas <stefankangas@HIDDEN> In-Reply-To: <87jzt599yc.fsf@HIDDEN> References: <87jzt599yc.fsf@HIDDEN> MIME-Version: 1.0 Date: Sun, 23 Feb 2025 01:26:11 +0000 X-Gm-Features: AWEUYZkrE6PiTLGucXpDUyZphCpK9YIYMWDufCbBOsh-tGhSj21LrXLMMNCvDzE Message-ID: <CADwFkm=H6yNPjZ+JC1qy89i_Sf=Xk-6C04c+XAsJMZ5_qObjUw@HIDDEN> Subject: Re: bug#65736: 30.0.50; Extending the use of format-prompt To: Stephen Berman <stephen.berman@HIDDEN> Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 65736 Cc: 65736 <at> debbugs.gnu.org X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.0 (-) Stephen Berman <stephen.berman@HIDDEN> writes: > 0. emacs -Q > 1. Invoke read-buffer with a prompt containg grave-style quoting and > with no default buffer argument, e.g.: > M-: (read-buffer "Enter `buffer': ") > =3D> This displays the prompt in the minibuffer with grave-style quoting, > i.e. as it appears in the invocation. > 2. Repeat step 1 but add a default buffer argument, e.g.: > M-: (read-buffer "Enter `buffer': " "*scratch*") > =3D> This displays the prompt in the minibuffer with curve-style quoting: > Enter =E2=80=98buffer=E2=80=99 (default *scratch*): > > The different appearances of the prompt with and without the presence of > a default argument is due to commit 50512e36c7, which passes the prompt > string to format-prompt when read-buffer has a non-nil default argument > DEF, but not when DEF is nil. (The purpose of that commit was to > replace occurrences of prompts containing the string "(default %s)" by > invocations of the then recently introduced function format-prompt; the > fact that this function also calls substitute-command-keys was not a > concern for that commit and its effect was presumably for that reason > overlooked.) > > I think the simplest fix is to pass PROMPT to format-prompt regardless > of the presence of a default argument of read-buffer, as in the first > attached patch. > > But having substitute-command-keys always apply to the prompt string of > read-buffer raises the question whether it should apply more generally > to prompt strings. In fact, commit 50512e36c7 did change numerous > mostly mode-specific prompts in several Lisp libraries to pass the > prompt to format-prompt, but in almost all cases those prompts are fixed > strings where applying substitute-command-keys makes no difference. But > with read-buffer the prompt string is provided by the caller, so its > appearance could be affected by substitute-command-keys. > > By default, read-buffer calls (in C) completing-read, which by default > calls read-from-minibuffer, and indeed most, if not all, other functions > that prompt for minibuffer input end up calling read-from-minibuffer. > So passing the prompt string to format-prompt in read-from-minibuffer, > as in the second attached patch (which should be applied instead of the > first patch), would achieve a higher degree of consistency and > simplicity in Emacs in the handling of prompts for minibuffer input, at > least by default. (With functions that accept a user-defined function, > like read-buffer-function with read-buffer, it would be up to the user > to decide whether or not to use format-prompt, if the function does not > invoke read-from-minibuffer.) > > If this change (the second patch) is accepted, it will probably require > adjustments in the Emacs code base, e.g. to avoid double invocations of > format-prompt. This would partly undo the changes made in 50512e36c7. > I'd be willing to make the needed adjustments in Emacs. (Sorry for the long delay in replying here.) I think what you write here makes sense. Could you please resend the patches as formatted by something like git format-patch -1 and with a proper ChangeLog message as per CONTRIBUTE? I think that would facilitate reviewing the patches, especially the second one which seems to be a change in behavior that we would need to agree on. Thanks in advance.
bug-gnu-emacs@HIDDEN
:bug#65736
; Package emacs
.
Full text available.Stefan Kangas <stefankangas@HIDDEN>
to control <at> debbugs.gnu.org
.
Full text available.Stefan Kangas <stefankangas@HIDDEN>
to control <at> debbugs.gnu.org
.
Full text available.Received: (at submit) by debbugs.gnu.org; 4 Sep 2023 16:31:42 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Mon Sep 04 12:31:42 2023 Received: from localhost ([127.0.0.1]:52417 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1qdCUH-0007P6-E6 for submit <at> debbugs.gnu.org; Mon, 04 Sep 2023 12:31:42 -0400 Received: from lists.gnu.org ([2001:470:142::17]:44372) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <stephen.berman@HIDDEN>) id 1qdCUB-0007Op-CZ for submit <at> debbugs.gnu.org; Mon, 04 Sep 2023 12:31:39 -0400 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 <stephen.berman@HIDDEN>) id 1qdCU6-0007pP-0T for bug-gnu-emacs@HIDDEN; Mon, 04 Sep 2023 12:31:30 -0400 Received: from mout.gmx.net ([212.227.17.20]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <stephen.berman@HIDDEN>) id 1qdCU2-00037Z-Vv for bug-gnu-emacs@HIDDEN; Mon, 04 Sep 2023 12:31:29 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=s31663417; t=1693845084; x=1694449884; i=stephen.berman@HIDDEN; bh=RRfq8xAqfOJVDXDL0/eypltsZFtOho9IPmI7VDW/Akw=; h=X-UI-Sender-Class:From:To:Subject:Date; b=oh9o1Nnu7Sxuenb1jjgNYO8QsO2XFO6ONNJ1+N2zhhQQgH7XOAYSu129WFecZplBwUTPk5D 88vVjcqKQd6OAUQwXnaUg/1JzvTLsEjT/lAi1cPRXYJrhi+MmFSFiIddY3vUCRGS7x9S//ckf WWb+3KaOlgHzYIBmYH/Nd5NfFz5uTFuLZkf8GFMvHVJf7r8f8lR76qFA5Gep0hvdCKUFponMc Ixc5mF1ArmviivIxnTjke5F6sgu0aUS4SyRRXf7+ZmBJcp70Tcn7+EDUxJUXTzAw17OweZhuy NrVnFOc4Iqtv6tRd2Z6T22rif9FL5rqgIqNV9T5vLWzfoTfLyJAg== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from strobelfssd ([94.134.196.62]) by mail.gmx.net (mrgmx104 [212.227.17.168]) with ESMTPSA (Nemesis) id 1Mn2aN-1ptzmF0SsZ-00k4Ua for <bug-gnu-emacs@HIDDEN>; Mon, 04 Sep 2023 18:31:24 +0200 From: Stephen Berman <stephen.berman@HIDDEN> To: bug-gnu-emacs@HIDDEN Subject: 30.0.50; Extending the use of format-prompt Date: Mon, 04 Sep 2023 18:31:23 +0200 Message-ID: <87jzt599yc.fsf@HIDDEN> User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Provags-ID: V03:K1:up5I1hfnKR4uF2j1XayZdwvB6JhfyfRgIVuTPRJQniacMmMHyan /gz9pFfXlivQzdtXdZz199mETokNw06PARMxsOl6IqYihIhjX0YMmxm/6hL2iPCH1RdXc23 NtxFSNwxUcWKUIssO21/Uxyy/763VMM91Clx/9m6sqKS0yOe/dFEUuNavtYST3dxjrSDSRM eix/mbrxzKugU9i1F9vsg== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:+T76QsfvqQQ=;bu7WDe4JITVI3Sv3S38+96Sz3vm dGinps+8VghIS6oDHU3XxTvHXaDmWSBIDsBv6kwsKMQhxEdsd6Pt1d+rabS9XWWPQi30qn9b9 4S81CcbrswwlmDzRFeWi+vrFkPdsa4nlOzt3qPdEoutQ90UwX16nND3gCi3f+P7a8dNQlmWIr VXmI+oHPEQ2I4UvunQFdLZrbjNdjq9zhZldirLXdH4+/GrRrU0h839NHU3HN1wDLB19Oo7/BB gWSy2mSmISF1QMC6v7AJ6W4jN3snEprUUb+FbOJT6nxPsmZNOSOWBdPztEx3+eOLjFXM5pnWs CeTfd2tXBGjL0c5K8BPWvLSvX1O5Sum0jHn4TNVxgeeM9TMVIN3z5qab0/7ekmBkTJT8tT9o3 xLAOOfp5ZngriBGDpcAZ2WCUEGku5uubx6FPbema72tmeUZPxexb+fqw2FUS3jIlWIyqEW4QO N9gTa9SOo9hh5dY2e+STH41dbVvwXn0AJJu9EQn7XNwFv2aK9BFN3rvgdhCF8lcdOfE07a5QH qQ/w3z1nDrD/niYJUBkZSPODZUIBCb5GO7XW6ivns7yRVDnjq1wnK5BcRwsE8/6IUmd5GmKwP iJOWFBf2ctZJPFXhFdTswiLlyUmfeJjQH21GDzQBayOhsnKYGF9l7YQuf3+9A32QHePLZgmLL CoE1gc2SRK2g/bCrxO08ljYo5GgOtpUCyLxKsZEJjESvrPracA+RZHeX03UXuuefZZ6diStfj zwYEnCIg+U5Np7HL+qnTk9QoxmshFafONEbkkEkJPZfsLvQyVsVvXi35HVhm0nn/Ec+3J9CtC rScIQmY4HElrVo8oHeyjOVt5i4oz1FzUWfsj+aGzu5fNFiDs3X52cVlWutz23YigkJi6EBEgV woweOSlXNKijmY4xGtcinuIhKzVXF7S3P0wa5IFmB51AsdnQplBbbFTTGC/RnTmkVCU0ntZsq JtKzYnfZ+OF+qQ1eldyZC8KZn7I= Received-SPF: pass client-ip=212.227.17.20; envelope-from=stephen.berman@HIDDEN; helo=mout.gmx.net X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-Spam-Score: 1.0 (+) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -0.0 (/) --=-=-= Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable 0. emacs -Q 1. Invoke read-buffer with a prompt containg grave-style quoting and with no default buffer argument, e.g.: M-: (read-buffer "Enter `buffer': ") =3D> This displays the prompt in the minibuffer with grave-style quoting, i.e. as it appears in the invocation. 2. Repeat step 1 but add a default buffer argument, e.g.: M-: (read-buffer "Enter `buffer': " "*scratch*") =3D> This displays the prompt in the minibuffer with curve-style quoting: Enter =E2=80=98buffer=E2=80=99 (default *scratch*):=20=20 The different appearances of the prompt with and without the presence of a default argument is due to commit 50512e36c7, which passes the prompt string to format-prompt when read-buffer has a non-nil default argument DEF, but not when DEF is nil. (The purpose of that commit was to replace occurrences of prompts containing the string "(default %s)" by invocations of the then recently introduced function format-prompt; the fact that this function also calls substitute-command-keys was not a concern for that commit and its effect was presumably for that reason overlooked.) I think the simplest fix is to pass PROMPT to format-prompt regardless of the presence of a default argument of read-buffer, as in the first attached patch. But having substitute-command-keys always apply to the prompt string of read-buffer raises the question whether it should apply more generally to prompt strings. In fact, commit 50512e36c7 did change numerous mostly mode-specific prompts in several Lisp libraries to pass the prompt to format-prompt, but in almost all cases those prompts are fixed strings where applying substitute-command-keys makes no difference. But with read-buffer the prompt string is provided by the caller, so its appearance could be affected by substitute-command-keys. By default, read-buffer calls (in C) completing-read, which by default calls read-from-minibuffer, and indeed most, if not all, other functions that prompt for minibuffer input end up calling read-from-minibuffer. So passing the prompt string to format-prompt in read-from-minibuffer, as in the second attached patch (which should be applied instead of the first patch), would achieve a higher degree of consistency and simplicity in Emacs in the handling of prompts for minibuffer input, at least by default. (With functions that accept a user-defined function, like read-buffer-function with read-buffer, it would be up to the user to decide whether or not to use format-prompt, if the function does not invoke read-from-minibuffer.) If this change (the second patch) is accepted, it will probably require adjustments in the Emacs code base, e.g. to avoid double invocations of format-prompt. This would partly undo the changes made in 50512e36c7. I'd be willing to make the needed adjustments in Emacs. Steve Berman --=-=-= Content-Type: text/x-patch Content-Disposition: attachment Content-Description: read-buffer patch Content-Transfer-Encoding: quoted-printable diff --git a/src/minibuf.c b/src/minibuf.c index 58adde1bf66..a1cbf4747f5 100644 =2D-- a/src/minibuf.c +++ b/src/minibuf.c @@ -1502,34 +1502,30 @@ DEFUN ("read-buffer", Fread_buffer, Sread_buffer, = 1, 4, 0, specbind (Qcompletion_ignore_case, read_buffer_completion_ignore_case ? Qt : Qnil); - if (NILP (Vread_buffer_function)) - { - if (!NILP (def)) - { - /* A default value was provided: we must change PROMPT, - editing the default value in before the colon. To achieve - this, we replace PROMPT with a substring that doesn't - contain the terminal space and colon (if present). They - are then added back using Fformat. */ + /* For backward compatibility we accept prompt strings ending with a + colon and a space, but we have to delete them, if present, before + passing PROMPT to `format-prompt', which automatically appends + these characters to PROMPT. */ - if (STRINGP (prompt)) - { - s =3D SSDATA (prompt); - len =3D SBYTES (prompt); - if (len >=3D 2 && s[len - 2] =3D=3D ':' && s[len - 1] =3D=3D ' ') - len =3D len - 2; - else if (len >=3D 1 && (s[len - 1] =3D=3D ':' || s[len - 1] =3D=3D= ' ')) - len--; - - prompt =3D make_specified_string (s, -1, len, - STRING_MULTIBYTE (prompt)); - } + if (STRINGP (prompt)) + { + s =3D SSDATA (prompt); + len =3D SBYTES (prompt); + if (len >=3D 2 && s[len - 2] =3D=3D ':' && s[len - 1] =3D=3D ' ') + len =3D len - 2; + else if (len >=3D 1 && (s[len - 1] =3D=3D ':' || s[len - 1] =3D=3D = ' ')) + len--; + + prompt =3D make_specified_string (s, -1, len, + STRING_MULTIBYTE (prompt)); + } - prompt =3D CALLN (Ffuncall, intern("format-prompt"), - prompt, - CONSP (def) ? XCAR (def) : def); - } + prompt =3D CALLN (Ffuncall, intern("format-prompt"), + prompt, + CONSP (def) ? XCAR (def) : def); + if (NILP (Vread_buffer_function)) + { result =3D Fcompleting_read (prompt, intern ("internal-complete-buf= fer"), predicate, require_match, Qnil, Qbuffer_name_history, def, Qnil); --=-=-= Content-Type: text/x-patch Content-Disposition: attachment Content-Description: read-from-minibuffer patch Content-Transfer-Encoding: quoted-printable diff --git a/src/minibuf.c b/src/minibuf.c index 58adde1bf66..4318cab04cb 100644 =2D-- a/src/minibuf.c +++ b/src/minibuf.c @@ -1343,10 +1343,34 @@ DEFUN ("read-from-minibuffer", Fread_from_minibuff= er, (Lisp_Object prompt, Lisp_Object initial_contents, Lisp_Object keymap, = Lisp_Object read, Lisp_Object hist, Lisp_Object default_value, Lisp_Object= inherit_input_method) { Lisp_Object histvar, histpos, val; + char *s; + ptrdiff_t len; barf_if_interaction_inhibited (); CHECK_STRING (prompt); + + /* For backward compatibility we accept prompt strings ending with a + colon and a space, but we have to delete them, if present, before + passing PROMPT to `format-prompt', which automatically appends + these characters to PROMPT. */ + + if (STRINGP (prompt)) + { + s =3D SSDATA (prompt); + len =3D SBYTES (prompt); + if (len >=3D 2 && s[len - 2] =3D=3D ':' && s[len - 1] =3D=3D ' ') + len =3D len - 2; + else if (len >=3D 1 && (s[len - 1] =3D=3D ':' || s[len - 1] =3D=3D = ' ')) + len--; + + prompt =3D make_specified_string (s, -1, len, + STRING_MULTIBYTE (prompt)); + } + + prompt =3D CALLN (Ffuncall, intern("format-prompt"), prompt, + CONSP (default_value) ? XCAR (default_value) : default_value); + if (NILP (keymap)) keymap =3D Vminibuffer_local_map; else @@ -1473,8 +1497,7 @@ DEFUN ("read-variable", Fread_variable, Sread_variab= le, 1, 2, 0, DEFUN ("read-buffer", Fread_buffer, Sread_buffer, 1, 4, 0, doc: /* Read the name of a buffer and return it as a string. -Prompt with PROMPT, which should be a string ending with a colon and a sp= ace. -Provides completion on buffer names the user types. +Prompt with string PROMPT. Provides completion on buffer names the user = types. Optional second arg DEF is value to return if user enters an empty line, instead of that empty string. If DEF is a list of default values, return its first element. @@ -1492,8 +1515,6 @@ DEFUN ("read-buffer", Fread_buffer, Sread_buffer, 1,= 4, 0, Lisp_Object predicate) { Lisp_Object result; - char *s; - ptrdiff_t len; specpdl_ref count =3D SPECPDL_INDEX (); if (BUFFERP (def)) @@ -1503,37 +1524,9 @@ DEFUN ("read-buffer", Fread_buffer, Sread_buffer, 1= , 4, 0, read_buffer_completion_ignore_case ? Qt : Qnil); if (NILP (Vread_buffer_function)) - { - if (!NILP (def)) - { - /* A default value was provided: we must change PROMPT, - editing the default value in before the colon. To achieve - this, we replace PROMPT with a substring that doesn't - contain the terminal space and colon (if present). They - are then added back using Fformat. */ - - if (STRINGP (prompt)) - { - s =3D SSDATA (prompt); - len =3D SBYTES (prompt); - if (len >=3D 2 && s[len - 2] =3D=3D ':' && s[len - 1] =3D=3D ' ') - len =3D len - 2; - else if (len >=3D 1 && (s[len - 1] =3D=3D ':' || s[len - 1] =3D=3D= ' ')) - len--; - - prompt =3D make_specified_string (s, -1, len, - STRING_MULTIBYTE (prompt)); - } - - prompt =3D CALLN (Ffuncall, intern("format-prompt"), - prompt, - CONSP (def) ? XCAR (def) : def); - } - - result =3D Fcompleting_read (prompt, intern ("internal-complete-buf= fer"), - predicate, require_match, Qnil, - Qbuffer_name_history, def, Qnil); - } + result =3D Fcompleting_read (prompt, intern ("internal-complete-buffe= r"), + predicate, require_match, Qnil, + Qbuffer_name_history, def, Qnil); else result =3D (NILP (predicate) /* Partial backward compatibility for older read_buffer_functions @@ -1978,7 +1971,7 @@ DEFUN ("all-completions", Fall_completions, Sall_com= pletions, 2, 4, 0, =0C DEFUN ("completing-read", Fcompleting_read, Scompleting_read, 2, 8, 0, doc: /* Read a string in the minibuffer, with completion. -PROMPT is a string to prompt with; normally it ends in a colon and a spac= e. +PROMPT is a string to prompt with. COLLECTION can be a list of strings, an alist, an obarray or a hash table= . COLLECTION can also be a function to do the completion itself. PREDICATE limits completion to a subset of COLLECTION. --=-=-=--
Stephen Berman <stephen.berman@HIDDEN>
:bug-gnu-emacs@HIDDEN
.
Full text available.bug-gnu-emacs@HIDDEN
:bug#65736
; Package emacs
.
Full text available.
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997 nCipher Corporation Ltd,
1994-97 Ian Jackson.