]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix `python-nav-forward-block' moving backward under certain conditions
authorkobarity <kobarity@gmail.com>
Mon, 15 Aug 2022 14:30:23 +0000 (16:30 +0200)
committerLars Ingebrigtsen <larsi@gnus.org>
Mon, 15 Aug 2022 14:30:23 +0000 (16:30 +0200)
* lisp/progmodes/python.el (python-nav-forward-block): Add check
for not moving backward (bug#57223).

lisp/progmodes/python.el
test/lisp/progmodes/python-tests.el

index 96f9d14832d1b9589d0b28b139d5edf7093f0380..44df3186b275cbc41307e7bb715d7153dcc6bca2 100644 (file)
@@ -1822,7 +1822,8 @@ backward to previous block."
   (or arg (setq arg 1))
   (let ((block-start-regexp
          (python-rx line-start (* whitespace) block-start))
-        (starting-pos (point)))
+        (starting-pos (point))
+        (orig-arg arg))
     (while (> arg 0)
       (python-nav-end-of-statement)
       (while (and
@@ -1836,7 +1837,8 @@ backward to previous block."
               (python-syntax-context-type)))
       (setq arg (1+ arg)))
     (python-nav-beginning-of-statement)
-    (if (not (looking-at (python-rx block-start)))
+    (if (or (and (> orig-arg 0) (< (point) starting-pos))
+            (not (looking-at (python-rx block-start))))
         (and (goto-char starting-pos) nil)
       (and (not (= (point) starting-pos)) (point-marker)))))
 
index d303050fad9effaf8949f68327582b6efc89c2f5..9e8fa7f5520d743b712c4426f09be159c4d2badc 100644 (file)
@@ -2942,6 +2942,22 @@ if request.user.is_authenticated():
               (python-tests-look-at
                "if request.user.is_authenticated():" -1)))))
 
+(ert-deftest python-nav-forward-block-2 ()
+  (python-tests-with-temp-buffer
+   "
+if True:
+    pass
+"
+   (python-tests-look-at "if True:")
+   (should (not (save-excursion (python-nav-forward-block))))
+   (should (not (save-excursion (python-nav-forward-block -1))))
+   (forward-char)
+   (should (not (save-excursion (python-nav-forward-block))))
+   (should (= (save-excursion (python-nav-forward-block -1))
+              (progn
+                (end-of-line)
+                (python-tests-look-at "if True:" -1))))))
+
 (ert-deftest python-nav-forward-sexp-1 ()
   (python-tests-with-temp-buffer
    "