[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#77941: [PATCH] Fix Python block end predicates
From: |
kobarity |
Subject: |
bug#77941: [PATCH] Fix Python block end predicates |
Date: |
Sun, 20 Apr 2025 23:56:29 +0900 |
User-agent: |
Wanderlust/2.15.9 (Almost Unreal) SEMI-EPG/1.14.7 (Harue) FLIM-LB/1.14.9 (Gojō) APEL-LB/10.8 EasyPG/1.0.0 Emacs/31.0.50 (x86_64-pc-linux-gnu) MULE/6.0 (HANACHIRUSATO) |
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'
0001-Fix-Python-block-end-predicates.patch
Description: Binary data
- bug#77941: [PATCH] Fix Python block end predicates,
kobarity <=