X-Loop: help-debbugs@HIDDEN Subject: bug#77941: [PATCH] Fix Python block end predicates Resent-From: kobarity <kobarity@HIDDEN> Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> Resent-CC: bug-gnu-emacs@HIDDEN Resent-Date: Sun, 20 Apr 2025 14:57:01 +0000 Resent-Message-ID: <handler.77941.B.174516100717635 <at> debbugs.gnu.org> Resent-Sender: help-debbugs@HIDDEN X-GNU-PR-Message: report 77941 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: 77941 <at> debbugs.gnu.org X-Debbugs-Original-To: bug-gnu-emacs@HIDDEN Received: via spool by submit <at> debbugs.gnu.org id=B.174516100717635 (code B ref -1); Sun, 20 Apr 2025 14:57:01 +0000 Received: (at submit) by debbugs.gnu.org; 20 Apr 2025 14:56:47 +0000 Received: from localhost ([127.0.0.1]:50517 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1u6W6A-0004aG-3I for submit <at> debbugs.gnu.org; Sun, 20 Apr 2025 10:56:46 -0400 Received: from lists.gnu.org ([2001:470:142::17]:58736) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <kobarity@HIDDEN>) id 1u6W67-0004Z9-Ec for submit <at> debbugs.gnu.org; Sun, 20 Apr 2025 10:56:44 -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 <kobarity@HIDDEN>) id 1u6W60-0008Ei-RP for bug-gnu-emacs@HIDDEN; Sun, 20 Apr 2025 10:56:36 -0400 Received: from mail-pf1-x42e.google.com ([2607:f8b0:4864:20::42e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from <kobarity@HIDDEN>) id 1u6W5z-00020i-71 for bug-gnu-emacs@HIDDEN; Sun, 20 Apr 2025 10:56:36 -0400 Received: by mail-pf1-x42e.google.com with SMTP id d2e1a72fcca58-7398d65476eso2576999b3a.1 for <bug-gnu-emacs@HIDDEN>; Sun, 20 Apr 2025 07:56:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1745160993; x=1745765793; darn=gnu.org; h=mime-version:user-agent:subject:to:from:message-id:date:from:to:cc :subject:date:message-id:reply-to; bh=XWXddzKMeUIezYuZyaYa3Sj9QGsnFZA7pgLpzT2mBoU=; b=imcGiuHR9RlaBNzKgtr6/rvEIl7W8kV4YJ64rG5BaXeZciNrt0kDGYzIhjP+zkLwVY RwF1QbxGYhHIL17hKk3quQ1ToUQRVWf91UM1T4KPG3Cr7MnJmtnVWKHXOxmXrm5ZwAtE TmAAWvCgimNinNh6H4rGqLBl7UB8fjMr9Vj7fmunBBlgwXY9C3pPcY7anAshVuPzIPBl v9f6g/wKxwjc3PeR5KB22dZjeD61HKdJRj5m2ueIjPKGj2SKKuNI5p8Strpo6akPsbi6 1uASlz7JB2X/KvUzp3jAVvxHvQiYZsj+2F0fCYe5qW+KdJKXUxIsToNZbQhFW+YaHsuo 4ryQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1745160993; x=1745765793; h=mime-version:user-agent:subject:to:from:message-id:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=XWXddzKMeUIezYuZyaYa3Sj9QGsnFZA7pgLpzT2mBoU=; b=rJpTjdtz6GbacmGp4WKwmkdnYCU3slhEmQbwg7pRJ6lxSA11pmJZpKmGMUZg2E7uK6 6kEBZTaBXLBwcC4hvkoJBUEf4yW4cBrJdXQ1wmU/sOjQA5z0+atK32rNxJOnE1WWvKxF sST4AWhVyIV8EQBb6YpSMo1aNMEOgzg1MoFzJxYS3k3zAVT5n3r6owx9BAVcRkSuC5Zu BHaY6dWHdZzbT3KV3ItY4X3GkEIe2AvB39Qoa9sPXbYa2SYqoLIhuhAbGoYvraimBJx0 3jJUk0Mm4F/Xs98JDq08nUHs5lG0WaTRR1Xii1Pw2CFybNi4wDWS4sorYQGDL6vDh2xj tdaQ== X-Gm-Message-State: AOJu0Yycxv45tEQwf8zzvKu839mDrYlLyc6bhPzwj7e1QpRmR1Q0rIX5 FJO/x00ZVZoXX51JZp5MHEScSi8sB00xGFpYNi/vzCN7Is0QLuP+qIZGNA== X-Gm-Gg: ASbGncuPj6ky5pDYJn/VWQ0n6UEuEcKYtt/ejUBkaaqex5gdnMh9uNNPoTAOwp9hktW KdXTZQmPSp5zs0CxY/AYJA87MoXtv9/UjSh5XGVZ9dUOgA4NY+94bw3v4kmj0VMVj72YlEDqWgJ RzN6MuGO/b51TdVgNPHQnKG0im/CgNGKeD7wp8RnBPdSPm4RD8jB6JoA9kBvfQ/iu+E31X4gJ0r yzfng6xbwA2y4sRTbvGOwH1XXZxogpGgxJsNDm1nxP7RWmwlnLHUpouxuyrgzgKqAZ7xiVo5IBt 1XI1hQvauZ/G0P8Jbu2g2T0xEm3dDELbe7CTOes/6mY62abS3xchC4gnRnM9gKICfUC+lkO4ond p25DNsg== X-Google-Smtp-Source: AGHT+IHaeFIJ7Clw1AU8fIfVjc33ojewjbGtnWrM79tatkG7utn/Xobjt4z1FUf8/hwZ1e34AobEjQ== X-Received: by 2002:a05:6a00:4b03:b0:725:4a1b:38ec with SMTP id d2e1a72fcca58-73dbe4e6458mr14168557b3a.3.1745160992996; Sun, 20 Apr 2025 07:56:32 -0700 (PDT) Received: from localhost (58x12x133x161.ap58.ftth.ucom.ne.jp. [58.12.133.161]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-73dbf8e0c09sm4828498b3a.38.2025.04.20.07.56.31 for <bug-gnu-emacs@HIDDEN> (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 20 Apr 2025 07:56:32 -0700 (PDT) Date: Sun, 20 Apr 2025 23:56:29 +0900 Message-ID: <eke75xiyyj8i.wl-kobarity@HIDDEN> From: kobarity <kobarity@HIDDEN> User-Agent: Wanderlust/2.15.9 (Almost Unreal) SEMI-EPG/1.14.7 (Harue) FLIM-LB/1.14.9 (=?UTF-8?Q?Goj=C5=8D?=) APEL-LB/10.8 EasyPG/1.0.0 Emacs/31.0.50 (x86_64-pc-linux-gnu) MULE/6.0 (HANACHIRUSATO) MIME-Version: 1.0 (generated by SEMI-EPG 1.14.7 - "Harue") Content-Type: multipart/mixed; boundary="Multipart_Sun_Apr_20_23:56:29_2025-1" Received-SPF: pass client-ip=2607:f8b0:4864:20::42e; envelope-from=kobarity@HIDDEN; helo=mail-pf1-x42e.google.com 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, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, 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-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 (/) --Multipart_Sun_Apr_20_23:56:29_2025-1 Content-Type: text/plain; charset=US-ASCII In the process of looking into #77620, I noticed bugs in the end-of-block detection functions in python.el. If there is a comment on the last line of the block, `python-info-statement-ends-block-p' and `python-info-end-of-block-p' will not work correctly. Try the following Python code. def func(): return 0 # Comment When the point is located after "0" of the return statement, both `python-info-statement-ends-block-p' and `python-info-end-of-block-p' return nil. If there is no comment on the line, they return t as expected. This bug affects `python-nav-forward-sexp'. In the above example, if the point is located at the beginning of "def func()" line, (python-nav-forward-sexp) moves the point to after "0". This is the expected behavior. However, if we execute (python-nav-forward-sexp -1) there, it moves the point to "0". This is not the expected behavior. If there is no comment, it moves the point to the beginning of "def func()" line. Attached is a patch that fixes this problem. -- In GNU Emacs 31.0.50 (build 8, x86_64-pc-linux-gnu, GTK+ Version 3.24.41, cairo version 1.18.0) of 2025-01-01 built on ubuntu2404 Repository revision: 78bc5949db489b143f7424540d6cc56fc529c9ea Repository branch: master System Description: Ubuntu 24.04.2 LTS Configured using: 'configure --with-pgtk --with-native-compilation --with-tree-sitter' --Multipart_Sun_Apr_20_23:56:29_2025-1 Content-Type: application/octet-stream; type=patch; name="0001-Fix-Python-block-end-predicates.patch" Content-Disposition: attachment; filename="0001-Fix-Python-block-end-predicates.patch" Content-Transfer-Encoding: 7bit From 3056104cb0b5599bf11e7764a4c9138bf0ef2c62 Mon Sep 17 00:00:00 2001 From: kobarity <kobarity@HIDDEN> Date: Sun, 20 Apr 2025 21:14:46 +0900 Subject: [PATCH] Fix Python block end predicates * lisp/progmodes/python.el (python-info-statement-ends-block-p), (python-info-end-of-block-p): Add consideration of comments. * test/lisp/progmodes/python-tests.el (python-info-statement-ends-block-p-3), (python-info-end-of-block-p-3): New tests. --- lisp/progmodes/python.el | 9 +++++++-- test/lisp/progmodes/python-tests.el | 18 ++++++++++++++++++ 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/lisp/progmodes/python.el b/lisp/progmodes/python.el index 32035773fde..b03e4f9efdf 100644 --- a/lisp/progmodes/python.el +++ b/lisp/progmodes/python.el @@ -6159,7 +6159,9 @@ python-info-statement-ends-block-p (let ((end-of-block-pos (save-excursion (python-nav-end-of-block))) (end-of-statement-pos (save-excursion - (python-nav-end-of-statement)))) + (python-nav-end-of-statement) + (python-util-forward-comment -1) + (point)))) (and end-of-block-pos end-of-statement-pos (= end-of-block-pos end-of-statement-pos)))) @@ -6182,7 +6184,10 @@ python-info-beginning-of-block-p (defun python-info-end-of-block-p () "Return non-nil if point is at end of block." - (and (python-info-end-of-statement-p) + (and (= (point) (save-excursion + (python-nav-end-of-statement) + (python-util-forward-comment -1) + (point))) (python-info-statement-ends-block-p))) (define-obsolete-function-alias diff --git a/test/lisp/progmodes/python-tests.el b/test/lisp/progmodes/python-tests.el index 898e2b036e0..22a7c3a5e89 100644 --- a/test/lisp/progmodes/python-tests.el +++ b/test/lisp/progmodes/python-tests.el @@ -5821,6 +5821,15 @@ python-info-statement-ends-block-p-2 (python-tests-look-at "raise ValueError(") (should (python-info-statement-ends-block-p)))) +(ert-deftest python-info-statement-ends-block-p-3 () + (python-tests-with-temp-buffer + " +def function(): + print() # Comment +" + (python-tests-look-at "print()") + (should (python-info-statement-ends-block-p)))) + (ert-deftest python-info-beginning-of-statement-p-1 () (python-tests-with-temp-buffer " @@ -5983,6 +5992,15 @@ python-info-end-of-block-p-2 (python-util-forward-comment -1) (should (python-info-end-of-block-p)))) +(ert-deftest python-info-end-of-block-p-3 () + (python-tests-with-temp-buffer + " +def function(): + print() # Comment +" + (python-tests-look-at " # Comment") + (should (python-info-end-of-block-p)))) + (ert-deftest python-info-dedenter-opening-block-position-1 () (python-tests-with-temp-buffer " -- 2.43.0 --Multipart_Sun_Apr_20_23:56:29_2025-1--
Content-Disposition: inline Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-Mailer: MIME-tools 5.505 (Entity 5.505) Content-Type: text/plain; charset=utf-8 X-Loop: help-debbugs@HIDDEN From: help-debbugs@HIDDEN (GNU bug Tracking System) To: kobarity <kobarity@HIDDEN> Subject: bug#77941: Acknowledgement ([PATCH] Fix Python block end predicates) Message-ID: <handler.77941.B.174516100717635.ack <at> debbugs.gnu.org> References: <eke75xiyyj8i.wl-kobarity@HIDDEN> X-Gnu-PR-Message: ack 77941 X-Gnu-PR-Package: emacs X-Gnu-PR-Keywords: patch Reply-To: 77941 <at> debbugs.gnu.org Date: Sun, 20 Apr 2025 14:57:02 +0000 Thank you for filing a new bug report with debbugs.gnu.org. This is an automatically generated reply to let you know your message has been received. Your message is being forwarded to the package maintainers and other interested parties for their attention; they will reply in due course. Your message has been sent to the package maintainer(s): bug-gnu-emacs@HIDDEN If you wish to submit further information on this problem, please send it to 77941 <at> debbugs.gnu.org. Please do not send mail to help-debbugs@HIDDEN unless you wish to report a problem with the Bug-tracking system. --=20 77941: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D77941 GNU Bug Tracking System Contact help-debbugs@HIDDEN with problems
MIME-Version: 1.0 X-Mailer: MIME-tools 5.505 (Entity 5.505) X-Loop: help-debbugs@HIDDEN From: help-debbugs@HIDDEN (GNU bug Tracking System) To: Eli Zaretskii <eliz@HIDDEN> Subject: bug#77941: closed ([PATCH] Fix Python block end predicates) CC: tracker <at> debbugs.gnu.org Message-ID: <handler.77941.D77941.17456666304163.ackdone <at> debbugs.gnu.org> References: <86h62bupxf.fsf@HIDDEN> <eke75xiyyj8i.wl-kobarity@HIDDEN> X-Gnu-PR-Message: closed 77941 X-Gnu-PR-Package: emacs X-Gnu-PR-Keywords: patch Date: Sat, 26 Apr 2025 11:24:02 +0000 Content-Type: multipart/mixed; boundary="----------=_1745666642-4210-0" This is a multi-part message in MIME format... ------------=_1745666642-4210-0 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=utf-8 Your message dated Sat, 26 Apr 2025 14:23:40 +0300 with message-id <86h62bupxf.fsf@HIDDEN> and subject line Re: bug#77941: [PATCH] Fix Python block end predicates has caused the debbugs.gnu.org bug report #77941, regarding [PATCH] Fix Python block end predicates to be marked as done. (If you believe you have received this mail in error, please contact help-debbugs@HIDDEN) --=20 77941: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D77941 GNU Bug Tracking System Contact help-debbugs@HIDDEN with problems ------------=_1745666642-4210-0 Content-Type: message/rfc822 Content-Disposition: inline Content-Transfer-Encoding: 7bit Received: (at submit) by debbugs.gnu.org; 20 Apr 2025 14:56:47 +0000 Received: from localhost ([127.0.0.1]:50517 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1u6W6A-0004aG-3I for submit <at> debbugs.gnu.org; Sun, 20 Apr 2025 10:56:46 -0400 Received: from lists.gnu.org ([2001:470:142::17]:58736) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <kobarity@HIDDEN>) id 1u6W67-0004Z9-Ec for submit <at> debbugs.gnu.org; Sun, 20 Apr 2025 10:56:44 -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 <kobarity@HIDDEN>) id 1u6W60-0008Ei-RP for bug-gnu-emacs@HIDDEN; Sun, 20 Apr 2025 10:56:36 -0400 Received: from mail-pf1-x42e.google.com ([2607:f8b0:4864:20::42e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from <kobarity@HIDDEN>) id 1u6W5z-00020i-71 for bug-gnu-emacs@HIDDEN; Sun, 20 Apr 2025 10:56:36 -0400 Received: by mail-pf1-x42e.google.com with SMTP id d2e1a72fcca58-7398d65476eso2576999b3a.1 for <bug-gnu-emacs@HIDDEN>; Sun, 20 Apr 2025 07:56:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1745160993; x=1745765793; darn=gnu.org; h=mime-version:user-agent:subject:to:from:message-id:date:from:to:cc :subject:date:message-id:reply-to; bh=XWXddzKMeUIezYuZyaYa3Sj9QGsnFZA7pgLpzT2mBoU=; b=imcGiuHR9RlaBNzKgtr6/rvEIl7W8kV4YJ64rG5BaXeZciNrt0kDGYzIhjP+zkLwVY RwF1QbxGYhHIL17hKk3quQ1ToUQRVWf91UM1T4KPG3Cr7MnJmtnVWKHXOxmXrm5ZwAtE TmAAWvCgimNinNh6H4rGqLBl7UB8fjMr9Vj7fmunBBlgwXY9C3pPcY7anAshVuPzIPBl v9f6g/wKxwjc3PeR5KB22dZjeD61HKdJRj5m2ueIjPKGj2SKKuNI5p8Strpo6akPsbi6 1uASlz7JB2X/KvUzp3jAVvxHvQiYZsj+2F0fCYe5qW+KdJKXUxIsToNZbQhFW+YaHsuo 4ryQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1745160993; x=1745765793; h=mime-version:user-agent:subject:to:from:message-id:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=XWXddzKMeUIezYuZyaYa3Sj9QGsnFZA7pgLpzT2mBoU=; b=rJpTjdtz6GbacmGp4WKwmkdnYCU3slhEmQbwg7pRJ6lxSA11pmJZpKmGMUZg2E7uK6 6kEBZTaBXLBwcC4hvkoJBUEf4yW4cBrJdXQ1wmU/sOjQA5z0+atK32rNxJOnE1WWvKxF sST4AWhVyIV8EQBb6YpSMo1aNMEOgzg1MoFzJxYS3k3zAVT5n3r6owx9BAVcRkSuC5Zu BHaY6dWHdZzbT3KV3ItY4X3GkEIe2AvB39Qoa9sPXbYa2SYqoLIhuhAbGoYvraimBJx0 3jJUk0Mm4F/Xs98JDq08nUHs5lG0WaTRR1Xii1Pw2CFybNi4wDWS4sorYQGDL6vDh2xj tdaQ== X-Gm-Message-State: AOJu0Yycxv45tEQwf8zzvKu839mDrYlLyc6bhPzwj7e1QpRmR1Q0rIX5 FJO/x00ZVZoXX51JZp5MHEScSi8sB00xGFpYNi/vzCN7Is0QLuP+qIZGNA== X-Gm-Gg: ASbGncuPj6ky5pDYJn/VWQ0n6UEuEcKYtt/ejUBkaaqex5gdnMh9uNNPoTAOwp9hktW KdXTZQmPSp5zs0CxY/AYJA87MoXtv9/UjSh5XGVZ9dUOgA4NY+94bw3v4kmj0VMVj72YlEDqWgJ RzN6MuGO/b51TdVgNPHQnKG0im/CgNGKeD7wp8RnBPdSPm4RD8jB6JoA9kBvfQ/iu+E31X4gJ0r yzfng6xbwA2y4sRTbvGOwH1XXZxogpGgxJsNDm1nxP7RWmwlnLHUpouxuyrgzgKqAZ7xiVo5IBt 1XI1hQvauZ/G0P8Jbu2g2T0xEm3dDELbe7CTOes/6mY62abS3xchC4gnRnM9gKICfUC+lkO4ond p25DNsg== X-Google-Smtp-Source: AGHT+IHaeFIJ7Clw1AU8fIfVjc33ojewjbGtnWrM79tatkG7utn/Xobjt4z1FUf8/hwZ1e34AobEjQ== X-Received: by 2002:a05:6a00:4b03:b0:725:4a1b:38ec with SMTP id d2e1a72fcca58-73dbe4e6458mr14168557b3a.3.1745160992996; Sun, 20 Apr 2025 07:56:32 -0700 (PDT) Received: from localhost (58x12x133x161.ap58.ftth.ucom.ne.jp. [58.12.133.161]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-73dbf8e0c09sm4828498b3a.38.2025.04.20.07.56.31 for <bug-gnu-emacs@HIDDEN> (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 20 Apr 2025 07:56:32 -0700 (PDT) Date: Sun, 20 Apr 2025 23:56:29 +0900 Message-ID: <eke75xiyyj8i.wl-kobarity@HIDDEN> From: kobarity <kobarity@HIDDEN> To: bug-gnu-emacs@HIDDEN Subject: [PATCH] Fix Python block end predicates User-Agent: Wanderlust/2.15.9 (Almost Unreal) SEMI-EPG/1.14.7 (Harue) FLIM-LB/1.14.9 (=?ISO-8859-4?Q?Goj=F2?=) APEL-LB/10.8 EasyPG/1.0.0 Emacs/31.0.50 (x86_64-pc-linux-gnu) MULE/6.0 (HANACHIRUSATO) MIME-Version: 1.0 (generated by SEMI-EPG 1.14.7 - "Harue") Content-Type: multipart/mixed; boundary="Multipart_Sun_Apr_20_23:56:29_2025-1" Received-SPF: pass client-ip=2607:f8b0:4864:20::42e; envelope-from=kobarity@HIDDEN; helo=mail-pf1-x42e.google.com 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, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, 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 (/) --Multipart_Sun_Apr_20_23:56:29_2025-1 Content-Type: text/plain; charset=US-ASCII In the process of looking into #77620, I noticed bugs in the end-of-block detection functions in python.el. If there is a comment on the last line of the block, `python-info-statement-ends-block-p' and `python-info-end-of-block-p' will not work correctly. Try the following Python code. def func(): return 0 # Comment When the point is located after "0" of the return statement, both `python-info-statement-ends-block-p' and `python-info-end-of-block-p' return nil. If there is no comment on the line, they return t as expected. This bug affects `python-nav-forward-sexp'. In the above example, if the point is located at the beginning of "def func()" line, (python-nav-forward-sexp) moves the point to after "0". This is the expected behavior. However, if we execute (python-nav-forward-sexp -1) there, it moves the point to "0". This is not the expected behavior. If there is no comment, it moves the point to the beginning of "def func()" line. Attached is a patch that fixes this problem. -- In GNU Emacs 31.0.50 (build 8, x86_64-pc-linux-gnu, GTK+ Version 3.24.41, cairo version 1.18.0) of 2025-01-01 built on ubuntu2404 Repository revision: 78bc5949db489b143f7424540d6cc56fc529c9ea Repository branch: master System Description: Ubuntu 24.04.2 LTS Configured using: 'configure --with-pgtk --with-native-compilation --with-tree-sitter' --Multipart_Sun_Apr_20_23:56:29_2025-1 Content-Type: application/octet-stream; type=patch; name="0001-Fix-Python-block-end-predicates.patch" Content-Disposition: attachment; filename="0001-Fix-Python-block-end-predicates.patch" Content-Transfer-Encoding: 7bit From 3056104cb0b5599bf11e7764a4c9138bf0ef2c62 Mon Sep 17 00:00:00 2001 From: kobarity <kobarity@HIDDEN> Date: Sun, 20 Apr 2025 21:14:46 +0900 Subject: [PATCH] Fix Python block end predicates * lisp/progmodes/python.el (python-info-statement-ends-block-p), (python-info-end-of-block-p): Add consideration of comments. * test/lisp/progmodes/python-tests.el (python-info-statement-ends-block-p-3), (python-info-end-of-block-p-3): New tests. --- lisp/progmodes/python.el | 9 +++++++-- test/lisp/progmodes/python-tests.el | 18 ++++++++++++++++++ 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/lisp/progmodes/python.el b/lisp/progmodes/python.el index 32035773fde..b03e4f9efdf 100644 --- a/lisp/progmodes/python.el +++ b/lisp/progmodes/python.el @@ -6159,7 +6159,9 @@ python-info-statement-ends-block-p (let ((end-of-block-pos (save-excursion (python-nav-end-of-block))) (end-of-statement-pos (save-excursion - (python-nav-end-of-statement)))) + (python-nav-end-of-statement) + (python-util-forward-comment -1) + (point)))) (and end-of-block-pos end-of-statement-pos (= end-of-block-pos end-of-statement-pos)))) @@ -6182,7 +6184,10 @@ python-info-beginning-of-block-p (defun python-info-end-of-block-p () "Return non-nil if point is at end of block." - (and (python-info-end-of-statement-p) + (and (= (point) (save-excursion + (python-nav-end-of-statement) + (python-util-forward-comment -1) + (point))) (python-info-statement-ends-block-p))) (define-obsolete-function-alias diff --git a/test/lisp/progmodes/python-tests.el b/test/lisp/progmodes/python-tests.el index 898e2b036e0..22a7c3a5e89 100644 --- a/test/lisp/progmodes/python-tests.el +++ b/test/lisp/progmodes/python-tests.el @@ -5821,6 +5821,15 @@ python-info-statement-ends-block-p-2 (python-tests-look-at "raise ValueError(") (should (python-info-statement-ends-block-p)))) +(ert-deftest python-info-statement-ends-block-p-3 () + (python-tests-with-temp-buffer + " +def function(): + print() # Comment +" + (python-tests-look-at "print()") + (should (python-info-statement-ends-block-p)))) + (ert-deftest python-info-beginning-of-statement-p-1 () (python-tests-with-temp-buffer " @@ -5983,6 +5992,15 @@ python-info-end-of-block-p-2 (python-util-forward-comment -1) (should (python-info-end-of-block-p)))) +(ert-deftest python-info-end-of-block-p-3 () + (python-tests-with-temp-buffer + " +def function(): + print() # Comment +" + (python-tests-look-at " # Comment") + (should (python-info-end-of-block-p)))) + (ert-deftest python-info-dedenter-opening-block-position-1 () (python-tests-with-temp-buffer " -- 2.43.0 --Multipart_Sun_Apr_20_23:56:29_2025-1-- ------------=_1745666642-4210-0 Content-Type: message/rfc822 Content-Disposition: inline Content-Transfer-Encoding: 7bit Received: (at 77941-done) by debbugs.gnu.org; 26 Apr 2025 11:23:50 +0000 Received: from localhost ([127.0.0.1]:58744 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1u8ddO-000155-1d for submit <at> debbugs.gnu.org; Sat, 26 Apr 2025 07:23:50 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:57286) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1u8ddM-00014n-6d for 77941-done <at> debbugs.gnu.org; Sat, 26 Apr 2025 07:23:48 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <eliz@HIDDEN>) id 1u8ddG-000767-T7; Sat, 26 Apr 2025 07:23:42 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=65fnicg5JtL+zjCqIWvHvVJ4v/QnMeIhuCTaaFGucnY=; b=hlPYRuPgdnMo G3a8yMbO78wkvvHGF+24sXLPw5YoHc8BXC+aQAdI5snduLD+z4uTOba3XGoDVVn+axXCJ9qoryPfl E1LJnDXXi8VV6boDY8QCKbPlAMNnXRKiWpj2/ucLS/rU02XHcd4xcP6SClSUnblL+08BvtclcxWZ6 hgL0u5uOKKa/bxjvYoPZ6e4GthoCHWx07qazTAysFywd9+5SKN5RF5NBEspzEF83SY1AzY1p+HtBL NhYRga42/euRijjJkyrp5LaEubqXhZnT0dmB2GJJYbvPfGbMM4kyr9B2zg8nnu2tI3+ty+Ha0eQPx 283jjQW8/sEkKeAzZ8ye4Q==; Date: Sat, 26 Apr 2025 14:23:40 +0300 Message-Id: <86h62bupxf.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> To: kobarity <kobarity@HIDDEN> In-Reply-To: <eke75xiyyj8i.wl-kobarity@HIDDEN> (message from kobarity on Sun, 20 Apr 2025 23:56:29 +0900) Subject: Re: bug#77941: [PATCH] Fix Python block end predicates References: <eke75xiyyj8i.wl-kobarity@HIDDEN> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 77941-done Cc: 77941-done <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: -3.3 (---) > Date: Sun, 20 Apr 2025 23:56:29 +0900 > From: kobarity <kobarity@HIDDEN> > > In the process of looking into #77620, I noticed bugs in the > end-of-block detection functions in python.el. If there is a comment > on the last line of the block, `python-info-statement-ends-block-p' > and `python-info-end-of-block-p' will not work correctly. > > Try the following Python code. > > def func(): > return 0 # Comment > > When the point is located after "0" of the return statement, both > `python-info-statement-ends-block-p' and `python-info-end-of-block-p' > return nil. If there is no comment on the line, they return t as > expected. > > This bug affects `python-nav-forward-sexp'. In the above example, if > the point is located at the beginning of "def func()" line, > (python-nav-forward-sexp) moves the point to after "0". This is the > expected behavior. > > However, if we execute (python-nav-forward-sexp -1) there, it moves > the point to "0". This is not the expected behavior. If there is no > comment, it moves the point to the beginning of "def func()" line. > > Attached is a patch that fixes this problem. Thanks, installed, and closing the bug. ------------=_1745666642-4210-0--
MIME-Version: 1.0 X-Mailer: MIME-tools 5.505 (Entity 5.505) X-Loop: help-debbugs@HIDDEN From: help-debbugs@HIDDEN (GNU bug Tracking System) To: kobarity <kobarity@HIDDEN> Subject: bug#77941: closed (Re: bug#77941: [PATCH] Fix Python block end predicates) Message-ID: <handler.77941.D77941.17456666304163.notifdone <at> debbugs.gnu.org> References: <86h62bupxf.fsf@HIDDEN> <eke75xiyyj8i.wl-kobarity@HIDDEN> X-Gnu-PR-Message: they-closed 77941 X-Gnu-PR-Package: emacs X-Gnu-PR-Keywords: patch Reply-To: 77941 <at> debbugs.gnu.org Date: Sat, 26 Apr 2025 11:24:02 +0000 Content-Type: multipart/mixed; boundary="----------=_1745666642-4210-1" This is a multi-part message in MIME format... ------------=_1745666642-4210-1 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Your bug report #77941: [PATCH] Fix Python block end predicates which was filed against the emacs package, has been closed. The explanation is attached below, along with your original report. If you require more details, please reply to 77941 <at> debbugs.gnu.org. --=20 77941: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D77941 GNU Bug Tracking System Contact help-debbugs@HIDDEN with problems ------------=_1745666642-4210-1 Content-Type: message/rfc822 Content-Disposition: inline Content-Transfer-Encoding: 7bit Received: (at 77941-done) by debbugs.gnu.org; 26 Apr 2025 11:23:50 +0000 Received: from localhost ([127.0.0.1]:58744 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1u8ddO-000155-1d for submit <at> debbugs.gnu.org; Sat, 26 Apr 2025 07:23:50 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:57286) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1u8ddM-00014n-6d for 77941-done <at> debbugs.gnu.org; Sat, 26 Apr 2025 07:23:48 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <eliz@HIDDEN>) id 1u8ddG-000767-T7; Sat, 26 Apr 2025 07:23:42 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=65fnicg5JtL+zjCqIWvHvVJ4v/QnMeIhuCTaaFGucnY=; b=hlPYRuPgdnMo G3a8yMbO78wkvvHGF+24sXLPw5YoHc8BXC+aQAdI5snduLD+z4uTOba3XGoDVVn+axXCJ9qoryPfl E1LJnDXXi8VV6boDY8QCKbPlAMNnXRKiWpj2/ucLS/rU02XHcd4xcP6SClSUnblL+08BvtclcxWZ6 hgL0u5uOKKa/bxjvYoPZ6e4GthoCHWx07qazTAysFywd9+5SKN5RF5NBEspzEF83SY1AzY1p+HtBL NhYRga42/euRijjJkyrp5LaEubqXhZnT0dmB2GJJYbvPfGbMM4kyr9B2zg8nnu2tI3+ty+Ha0eQPx 283jjQW8/sEkKeAzZ8ye4Q==; Date: Sat, 26 Apr 2025 14:23:40 +0300 Message-Id: <86h62bupxf.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> To: kobarity <kobarity@HIDDEN> In-Reply-To: <eke75xiyyj8i.wl-kobarity@HIDDEN> (message from kobarity on Sun, 20 Apr 2025 23:56:29 +0900) Subject: Re: bug#77941: [PATCH] Fix Python block end predicates References: <eke75xiyyj8i.wl-kobarity@HIDDEN> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 77941-done Cc: 77941-done <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: -3.3 (---) > Date: Sun, 20 Apr 2025 23:56:29 +0900 > From: kobarity <kobarity@HIDDEN> > > In the process of looking into #77620, I noticed bugs in the > end-of-block detection functions in python.el. If there is a comment > on the last line of the block, `python-info-statement-ends-block-p' > and `python-info-end-of-block-p' will not work correctly. > > Try the following Python code. > > def func(): > return 0 # Comment > > When the point is located after "0" of the return statement, both > `python-info-statement-ends-block-p' and `python-info-end-of-block-p' > return nil. If there is no comment on the line, they return t as > expected. > > This bug affects `python-nav-forward-sexp'. In the above example, if > the point is located at the beginning of "def func()" line, > (python-nav-forward-sexp) moves the point to after "0". This is the > expected behavior. > > However, if we execute (python-nav-forward-sexp -1) there, it moves > the point to "0". This is not the expected behavior. If there is no > comment, it moves the point to the beginning of "def func()" line. > > Attached is a patch that fixes this problem. Thanks, installed, and closing the bug. ------------=_1745666642-4210-1 Content-Type: message/rfc822 Content-Disposition: inline Content-Transfer-Encoding: 7bit Received: (at submit) by debbugs.gnu.org; 20 Apr 2025 14:56:47 +0000 Received: from localhost ([127.0.0.1]:50517 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1u6W6A-0004aG-3I for submit <at> debbugs.gnu.org; Sun, 20 Apr 2025 10:56:46 -0400 Received: from lists.gnu.org ([2001:470:142::17]:58736) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <kobarity@HIDDEN>) id 1u6W67-0004Z9-Ec for submit <at> debbugs.gnu.org; Sun, 20 Apr 2025 10:56:44 -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 <kobarity@HIDDEN>) id 1u6W60-0008Ei-RP for bug-gnu-emacs@HIDDEN; Sun, 20 Apr 2025 10:56:36 -0400 Received: from mail-pf1-x42e.google.com ([2607:f8b0:4864:20::42e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from <kobarity@HIDDEN>) id 1u6W5z-00020i-71 for bug-gnu-emacs@HIDDEN; Sun, 20 Apr 2025 10:56:36 -0400 Received: by mail-pf1-x42e.google.com with SMTP id d2e1a72fcca58-7398d65476eso2576999b3a.1 for <bug-gnu-emacs@HIDDEN>; Sun, 20 Apr 2025 07:56:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1745160993; x=1745765793; darn=gnu.org; h=mime-version:user-agent:subject:to:from:message-id:date:from:to:cc :subject:date:message-id:reply-to; bh=XWXddzKMeUIezYuZyaYa3Sj9QGsnFZA7pgLpzT2mBoU=; b=imcGiuHR9RlaBNzKgtr6/rvEIl7W8kV4YJ64rG5BaXeZciNrt0kDGYzIhjP+zkLwVY RwF1QbxGYhHIL17hKk3quQ1ToUQRVWf91UM1T4KPG3Cr7MnJmtnVWKHXOxmXrm5ZwAtE TmAAWvCgimNinNh6H4rGqLBl7UB8fjMr9Vj7fmunBBlgwXY9C3pPcY7anAshVuPzIPBl v9f6g/wKxwjc3PeR5KB22dZjeD61HKdJRj5m2ueIjPKGj2SKKuNI5p8Strpo6akPsbi6 1uASlz7JB2X/KvUzp3jAVvxHvQiYZsj+2F0fCYe5qW+KdJKXUxIsToNZbQhFW+YaHsuo 4ryQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1745160993; x=1745765793; h=mime-version:user-agent:subject:to:from:message-id:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=XWXddzKMeUIezYuZyaYa3Sj9QGsnFZA7pgLpzT2mBoU=; b=rJpTjdtz6GbacmGp4WKwmkdnYCU3slhEmQbwg7pRJ6lxSA11pmJZpKmGMUZg2E7uK6 6kEBZTaBXLBwcC4hvkoJBUEf4yW4cBrJdXQ1wmU/sOjQA5z0+atK32rNxJOnE1WWvKxF sST4AWhVyIV8EQBb6YpSMo1aNMEOgzg1MoFzJxYS3k3zAVT5n3r6owx9BAVcRkSuC5Zu BHaY6dWHdZzbT3KV3ItY4X3GkEIe2AvB39Qoa9sPXbYa2SYqoLIhuhAbGoYvraimBJx0 3jJUk0Mm4F/Xs98JDq08nUHs5lG0WaTRR1Xii1Pw2CFybNi4wDWS4sorYQGDL6vDh2xj tdaQ== X-Gm-Message-State: AOJu0Yycxv45tEQwf8zzvKu839mDrYlLyc6bhPzwj7e1QpRmR1Q0rIX5 FJO/x00ZVZoXX51JZp5MHEScSi8sB00xGFpYNi/vzCN7Is0QLuP+qIZGNA== X-Gm-Gg: ASbGncuPj6ky5pDYJn/VWQ0n6UEuEcKYtt/ejUBkaaqex5gdnMh9uNNPoTAOwp9hktW KdXTZQmPSp5zs0CxY/AYJA87MoXtv9/UjSh5XGVZ9dUOgA4NY+94bw3v4kmj0VMVj72YlEDqWgJ RzN6MuGO/b51TdVgNPHQnKG0im/CgNGKeD7wp8RnBPdSPm4RD8jB6JoA9kBvfQ/iu+E31X4gJ0r yzfng6xbwA2y4sRTbvGOwH1XXZxogpGgxJsNDm1nxP7RWmwlnLHUpouxuyrgzgKqAZ7xiVo5IBt 1XI1hQvauZ/G0P8Jbu2g2T0xEm3dDELbe7CTOes/6mY62abS3xchC4gnRnM9gKICfUC+lkO4ond p25DNsg== X-Google-Smtp-Source: AGHT+IHaeFIJ7Clw1AU8fIfVjc33ojewjbGtnWrM79tatkG7utn/Xobjt4z1FUf8/hwZ1e34AobEjQ== X-Received: by 2002:a05:6a00:4b03:b0:725:4a1b:38ec with SMTP id d2e1a72fcca58-73dbe4e6458mr14168557b3a.3.1745160992996; Sun, 20 Apr 2025 07:56:32 -0700 (PDT) Received: from localhost (58x12x133x161.ap58.ftth.ucom.ne.jp. [58.12.133.161]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-73dbf8e0c09sm4828498b3a.38.2025.04.20.07.56.31 for <bug-gnu-emacs@HIDDEN> (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 20 Apr 2025 07:56:32 -0700 (PDT) Date: Sun, 20 Apr 2025 23:56:29 +0900 Message-ID: <eke75xiyyj8i.wl-kobarity@HIDDEN> From: kobarity <kobarity@HIDDEN> To: bug-gnu-emacs@HIDDEN Subject: [PATCH] Fix Python block end predicates User-Agent: Wanderlust/2.15.9 (Almost Unreal) SEMI-EPG/1.14.7 (Harue) FLIM-LB/1.14.9 (=?ISO-8859-4?Q?Goj=F2?=) APEL-LB/10.8 EasyPG/1.0.0 Emacs/31.0.50 (x86_64-pc-linux-gnu) MULE/6.0 (HANACHIRUSATO) MIME-Version: 1.0 (generated by SEMI-EPG 1.14.7 - "Harue") Content-Type: multipart/mixed; boundary="Multipart_Sun_Apr_20_23:56:29_2025-1" Received-SPF: pass client-ip=2607:f8b0:4864:20::42e; envelope-from=kobarity@HIDDEN; helo=mail-pf1-x42e.google.com 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, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, 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 (/) --Multipart_Sun_Apr_20_23:56:29_2025-1 Content-Type: text/plain; charset=US-ASCII In the process of looking into #77620, I noticed bugs in the end-of-block detection functions in python.el. If there is a comment on the last line of the block, `python-info-statement-ends-block-p' and `python-info-end-of-block-p' will not work correctly. Try the following Python code. def func(): return 0 # Comment When the point is located after "0" of the return statement, both `python-info-statement-ends-block-p' and `python-info-end-of-block-p' return nil. If there is no comment on the line, they return t as expected. This bug affects `python-nav-forward-sexp'. In the above example, if the point is located at the beginning of "def func()" line, (python-nav-forward-sexp) moves the point to after "0". This is the expected behavior. However, if we execute (python-nav-forward-sexp -1) there, it moves the point to "0". This is not the expected behavior. If there is no comment, it moves the point to the beginning of "def func()" line. Attached is a patch that fixes this problem. -- In GNU Emacs 31.0.50 (build 8, x86_64-pc-linux-gnu, GTK+ Version 3.24.41, cairo version 1.18.0) of 2025-01-01 built on ubuntu2404 Repository revision: 78bc5949db489b143f7424540d6cc56fc529c9ea Repository branch: master System Description: Ubuntu 24.04.2 LTS Configured using: 'configure --with-pgtk --with-native-compilation --with-tree-sitter' --Multipart_Sun_Apr_20_23:56:29_2025-1 Content-Type: application/octet-stream; type=patch; name="0001-Fix-Python-block-end-predicates.patch" Content-Disposition: attachment; filename="0001-Fix-Python-block-end-predicates.patch" Content-Transfer-Encoding: 7bit From 3056104cb0b5599bf11e7764a4c9138bf0ef2c62 Mon Sep 17 00:00:00 2001 From: kobarity <kobarity@HIDDEN> Date: Sun, 20 Apr 2025 21:14:46 +0900 Subject: [PATCH] Fix Python block end predicates * lisp/progmodes/python.el (python-info-statement-ends-block-p), (python-info-end-of-block-p): Add consideration of comments. * test/lisp/progmodes/python-tests.el (python-info-statement-ends-block-p-3), (python-info-end-of-block-p-3): New tests. --- lisp/progmodes/python.el | 9 +++++++-- test/lisp/progmodes/python-tests.el | 18 ++++++++++++++++++ 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/lisp/progmodes/python.el b/lisp/progmodes/python.el index 32035773fde..b03e4f9efdf 100644 --- a/lisp/progmodes/python.el +++ b/lisp/progmodes/python.el @@ -6159,7 +6159,9 @@ python-info-statement-ends-block-p (let ((end-of-block-pos (save-excursion (python-nav-end-of-block))) (end-of-statement-pos (save-excursion - (python-nav-end-of-statement)))) + (python-nav-end-of-statement) + (python-util-forward-comment -1) + (point)))) (and end-of-block-pos end-of-statement-pos (= end-of-block-pos end-of-statement-pos)))) @@ -6182,7 +6184,10 @@ python-info-beginning-of-block-p (defun python-info-end-of-block-p () "Return non-nil if point is at end of block." - (and (python-info-end-of-statement-p) + (and (= (point) (save-excursion + (python-nav-end-of-statement) + (python-util-forward-comment -1) + (point))) (python-info-statement-ends-block-p))) (define-obsolete-function-alias diff --git a/test/lisp/progmodes/python-tests.el b/test/lisp/progmodes/python-tests.el index 898e2b036e0..22a7c3a5e89 100644 --- a/test/lisp/progmodes/python-tests.el +++ b/test/lisp/progmodes/python-tests.el @@ -5821,6 +5821,15 @@ python-info-statement-ends-block-p-2 (python-tests-look-at "raise ValueError(") (should (python-info-statement-ends-block-p)))) +(ert-deftest python-info-statement-ends-block-p-3 () + (python-tests-with-temp-buffer + " +def function(): + print() # Comment +" + (python-tests-look-at "print()") + (should (python-info-statement-ends-block-p)))) + (ert-deftest python-info-beginning-of-statement-p-1 () (python-tests-with-temp-buffer " @@ -5983,6 +5992,15 @@ python-info-end-of-block-p-2 (python-util-forward-comment -1) (should (python-info-end-of-block-p)))) +(ert-deftest python-info-end-of-block-p-3 () + (python-tests-with-temp-buffer + " +def function(): + print() # Comment +" + (python-tests-look-at " # Comment") + (should (python-info-end-of-block-p)))) + (ert-deftest python-info-dedenter-opening-block-position-1 () (python-tests-with-temp-buffer " -- 2.43.0 --Multipart_Sun_Apr_20_23:56:29_2025-1-- ------------=_1745666642-4210-1--
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997 nCipher Corporation Ltd,
1994-97 Ian Jackson.