Received: (at 66155) by debbugs.gnu.org; 1 Oct 2023 08:10:14 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sun Oct 01 04:10:14 2023 Received: from localhost ([127.0.0.1]:60456 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1qmrWn-0002Q9-Lm for submit <at> debbugs.gnu.org; Sun, 01 Oct 2023 04:10:14 -0400 Received: from mail-lf1-x132.google.com ([2a00:1450:4864:20::132]:56515) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <stefankangas@HIDDEN>) id 1qmrWl-0002Ps-Th for 66155 <at> debbugs.gnu.org; Sun, 01 Oct 2023 04:10:12 -0400 Received: by mail-lf1-x132.google.com with SMTP id 2adb3069b0e04-5041335fb9cso23971567e87.0 for <66155 <at> debbugs.gnu.org>; Sun, 01 Oct 2023 01:09:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1696147790; x=1696752590; darn=debbugs.gnu.org; h=cc:to:subject:message-id:date:mime-version:references:in-reply-to :from:from:to:cc:subject:date:message-id:reply-to; bh=yAAAJ9xOlM6ea37d+/ur1U2JdFB981GXSIwQBKeuRxk=; b=kNtQwt3as1PBd/wVPs4CjUqiqNhDfeB3Gygzt7H5bW0xXYmgD9BJ5R7ma4oK6NMtr2 lvVTzLmkn38ZqaWZT7hqzP1PL08crke2oMq5IirkyyjztGaIR+el6wrVTiE8jqrSvWjR 3iSjdGtszlbxJz0t2YzZx2wE8wGVk/zxeqI5+LKmgKkMV1WQslbnj+5xJuxIA7nw7jHB pJawsXPKm0ooHSLK2bAAUT04tiVdWqrP2cZJENF3J+HZLXRYTZTc6DQozbnFwMoLIddF CREltPWHGu6zCVDPO+nJH7Jvuky7Is6WGBkcBUZDUeic7CVZcBiOAhu84LF5S1YbM3Ot uoxg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1696147790; x=1696752590; h=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=yAAAJ9xOlM6ea37d+/ur1U2JdFB981GXSIwQBKeuRxk=; b=dbVrC6vl6igpMZLa6hGPIU+Iaj94XsaU5fKSsIZw6GNimRP7FyOgtiIJr3EPvDTr8o F/CMIPkWP7KqplIBjICozRhllLiXC0oYrlyWnrcVPBX9A4f97rbMte35fNMR8VPVOVtR 0U3HBekTE+d+mzCP5KtY74rGwmm91yu0PSCdakauMyo0Ly25mTp067Z+DAt8V/1SgL5T GB/mWdpSPS8IOzoCwXmrHSP/+llFgHnPaVQqdBBp3vItOKuxvKIIlkv9hY89KU6/mSlm slZzX6H150oIRbiukhOa00cuHurLOtJMf1Nw8WH/JPNCKgXPgy1O9of5eO3a+8tSBazA Ukww== X-Gm-Message-State: AOJu0Yyd0f8wCHKhr3bYbQnowS47tC48yTLWGtaLRSV1KJju1NhOCnAf fV6gdmQwPVpnwR9i68GTsWJ4cYybG5bl5lxFrNk4EHwW X-Google-Smtp-Source: AGHT+IHQBpSED6WwLlsfwI9p3oiJ6Zl42VntgRp8IkLCPvbVKnfZAu3pMxm0X88nhcftYZZj1ASB+x3TToJk7Px366E= X-Received: by 2002:ac2:4c4e:0:b0:503:3281:2ffd with SMTP id o14-20020ac24c4e000000b0050332812ffdmr9212059lfk.41.1696147790019; Sun, 01 Oct 2023 01:09:50 -0700 (PDT) Received: from 753933720722 named unknown by gmailapi.google.com with HTTPREST; Sun, 1 Oct 2023 01:09:49 -0700 From: Stefan Kangas <stefankangas@HIDDEN> In-Reply-To: <878r8ye884.fsf@HIDDEN> (Akib Azmain Turja's message of "Fri, 22 Sep 2023 17:51:55 +0600") References: <878r8ye884.fsf@HIDDEN> MIME-Version: 1.0 Date: Sun, 1 Oct 2023 01:09:49 -0700 Message-ID: <CADwFkm=9zvHeRUGXrNY2Z87sh+Q5MT6fMu6Mg9YzQ_tHhAHOjQ@HIDDEN> Subject: Re: bug#66155: 'electric-pair-inhibit-if-helps-balance' has side-effects To: Akib Azmain Turja <akib@HIDDEN> Content-Type: text/plain; charset="UTF-8" X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 66155 Cc: Daniel Mendler <mail@HIDDEN>, 66155 <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 (-) Akib Azmain Turja <akib@HIDDEN> writes: > With the default configuration (which uses > 'electric-pair-inhibit-if-helps-balance'), inserting parens at the end > of a Tempel field doesn't extend the field. > > I think the modify+undo magic in electric-pair-inhibit-if-helps-balance > moves markers. > > The following is the solution that works for me atleast; it uses insert > to insert back the character, and let-bind buffer-undo-list to not > clobber the undo list. > > (defun *electric-pair-inhibit-if-helps-balance (char) > "Return non-nil if auto-pairing of CHAR would hurt parens' balance. > > Works by first removing the character from the buffer, then doing > some list calculations, finally restoring the situation as if nothing > happened." > (pcase (electric-pair-syntax-info char) > (`(,syntax ,pair ,_ ,s-or-c) > (let ((buffer-undo-list t)) > ;; Don't use `delete-char'; that may modify the head of the > ;; undo list. > (delete-region (point) (1- (point))) > (let ((ret > (cond > ((eq ?\( syntax) > (let* ((pair-data > (electric-pair--balance-info 1 s-or-c)) > (outermost (cdr pair-data))) > (cond ((car outermost) > nil) > (t > (eq (cdr outermost) pair))))) > ((eq syntax ?\") > (electric-pair--unbalanced-strings-p char))))) > (insert (string char)) > ret))))) Could you please send the patch as an attachment instead? We prefer that patches are created with a command like `git format-patch -1'. Please also include: - The bug number of this bug in the commit message, like so: Bug#66155 - A ChangeLog entry, as described in the file CONTRIBUTE. That would make it easier for us to review and hopefully install this patch. Thanks in advance.
bug-gnu-emacs@HIDDEN
:bug#66155
; Package emacs
.
Full text available.Received: (at submit) by debbugs.gnu.org; 22 Sep 2023 11:52:51 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Fri Sep 22 07:52:50 2023 Received: from localhost ([127.0.0.1]:35455 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1qjeiI-0001M1-Hc for submit <at> debbugs.gnu.org; Fri, 22 Sep 2023 07:52:50 -0400 Received: from lists.gnu.org ([2001:470:142::17]:46494) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <akib@HIDDEN>) id 1qjeiF-0001Ln-K6 for submit <at> debbugs.gnu.org; Fri, 22 Sep 2023 07:52:48 -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 <akib@HIDDEN>) id 1qjehz-0003kl-E7 for bug-gnu-emacs@HIDDEN; Fri, 22 Sep 2023 07:52:31 -0400 Received: from layka.disroot.org ([178.21.23.139]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <akib@HIDDEN>) id 1qjehx-0001T5-Af for bug-gnu-emacs@HIDDEN; Fri, 22 Sep 2023 07:52:31 -0400 Received: from localhost (localhost [127.0.0.1]) by disroot.org (Postfix) with ESMTP id 76C42419F5; Fri, 22 Sep 2023 13:52:25 +0200 (CEST) X-Virus-Scanned: SPAM Filter at disroot.org Received: from layka.disroot.org ([127.0.0.1]) by localhost (disroot.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 44KvHDcsUNMB; Fri, 22 Sep 2023 13:52:24 +0200 (CEST) From: Akib Azmain Turja <akib@HIDDEN> DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=disroot.org; s=mail; t=1695383544; bh=gMifL5b4EevuAmY8ABJkz5R4TWmyDsT4l82vF3T8Pb0=; h=From:To:Cc:Subject:Date; b=Qg2ijt1NI5UF/Km5CHIzOYUntdtD7vDw7Trd7X1Q3NTMyAkLozMCNZ0wceCOPvIRU LCl2PS7N1ewoSc2RFBd76t7VxnGRCKCNXV9iKHfUV7rsubiEnNoacgY9IPVDLg/fhL RWSkYl1drZrkn9wVmOw04lrbzRWOTiH1Y9hyfQMY8ph1qDJL8qcECTVI+DMWb/Fbjs cdnvbF6JRxYhs6d5why0JYbLnguA/SR11SqYcInD567mpX0wh8ryKQu7AVDz6v9VRK i48YyqAImLfV65F61ejhp05CPgg1+HsiHxLbw3PiDKs7ubXz6M5TwWACNWzNNAqzRY Id/JHiSywojwQ== To: bug-gnu-emacs <bug-gnu-emacs@HIDDEN> Subject: 'electric-pair-inhibit-if-helps-balance' has side-effects Date: Fri, 22 Sep 2023 17:51:55 +0600 Message-ID: <878r8ye884.fsf@HIDDEN> MIME-Version: 1.0 Content-Type: multipart/signed; boundary="=-=-="; micalg=pgp-sha256; protocol="application/pgp-signature" Received-SPF: pass client-ip=178.21.23.139; envelope-from=akib@HIDDEN; helo=layka.disroot.org X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 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, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-Spam-Score: 0.9 (/) X-Debbugs-Envelope-To: submit Cc: Daniel Mendler <mail@HIDDEN> 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.1 (/) --=-=-= Content-Type: text/plain Content-Transfer-Encoding: quoted-printable With the default configuration (which uses 'electric-pair-inhibit-if-helps-balance'), inserting parens at the end of a Tempel field doesn't extend the field. I think the modify+undo magic in electric-pair-inhibit-if-helps-balance moves markers. The following is the solution that works for me atleast; it uses insert to insert back the character, and let-bind buffer-undo-list to not clobber the undo list. =2D-8<---------------cut here---------------start------------->8--- (defun *electric-pair-inhibit-if-helps-balance (char) "Return non-nil if auto-pairing of CHAR would hurt parens' balance. Works by first removing the character from the buffer, then doing some list calculations, finally restoring the situation as if nothing happened." (pcase (electric-pair-syntax-info char) (`(,syntax ,pair ,_ ,s-or-c) (let ((buffer-undo-list t)) ;; Don't use `delete-char'; that may modify the head of the ;; undo list. (delete-region (point) (1- (point))) (let ((ret (cond ((eq ?\( syntax) (let* ((pair-data (electric-pair--balance-info 1 s-or-c)) (outermost (cdr pair-data))) (cond ((car outermost) nil) (t (eq (cdr outermost) pair))))) ((eq syntax ?\") (electric-pair--unbalanced-strings-p char))))) (insert (string char)) ret))))) =2D-8<---------------cut here---------------end--------------->8--- =2D-=20 Akib Azmain Turja, GPG key: 70018CE5819F17A3BBA666AFE74F0EFA922AE7F5 Fediverse: akib@HIDDEN Codeberg: akib emailselfdefense.fsf.org | "Nothing can be secure without encryption." --=-=-= Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQIzBAEBCAAdFiEEyVTKmrtL6kNBe3FRVTX89U2IYWsFAmUNf9wACgkQVTX89U2I YWtUBBAAq4tjyT8nLnQm5Pm8YYmplYCqQa1ByRGJP4WB2pwtlRqHwjIQo8N5rhoU RHL8UmdA9ofkEHs3trU95z45yLhQT7T6XbwOQlBJL/jc9qnFhcVAkm2VJbh2WKEC H2RsJN8ADYNv0MW1+a5b6RTH3c8oN9SQaMG+qeucysv5rqfkLDstOjeGwiKi9xhF NNIx9UBSNgh5Dga1Dpj+7TQEhZFOWRRj7UPlKUjk5Fh+PKYpiSrfYQb41WXkrpvT h3fQLqtDdjByoFAyLvFWqPc27BKzd87mc4271zwO1JLbjircvgf+ON1nRRsNB7Z7 n4rJPZKKgoCnypmdu3ZYbVzrNwtDmOPQbLdAzbkKC9I13GkO1k4mnrNknwXMOFrZ 6ID6eNMGcMzYb1C7i1lzI37YMi+FayQQCEo8qsDIZAWWCHzLyd+2upnVKlUTW5Oi Hptpwwf9hl3WGWjYLDHzEOQGABtiglqPnnSP71sSbRLt8G/++OQ9Ol1uh4kD/MQ/ XowuM5f0j9B1Q57+7eVSsKyeYsJsujZOTxUl4pAc7ZET7lAiew5SPXw56Y8o8c2y Ap19ue30AB9QuJR153uiE641ueEGWRcO3Jp6sjGNiabCz01a4HZxqdCu0AVE+vkd GD9krO6J56//Wumn5y0lxFy4OkEjCDkK5rpeahIcicMuzF1kTlc= =HRFU -----END PGP SIGNATURE----- --=-=-=--
Akib Azmain Turja <akib@HIDDEN>
:bug-gnu-emacs@HIDDEN
.
Full text available.bug-gnu-emacs@HIDDEN
:bug#66155
; Package emacs
.
Full text available.
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997 nCipher Corporation Ltd,
1994-97 Ian Jackson.