emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

master 8b3de06 1/2: Fix narrow-to-defun in python-mode


From: Lars Ingebrigtsen
Subject: master 8b3de06 1/2: Fix narrow-to-defun in python-mode
Date: Mon, 14 Dec 2020 11:09:07 -0500 (EST)

branch: master
commit 8b3de06347dfcb4afab93f17f32297fe721b363b
Author: Tomas Nordin <tomasn@posteo.net>
Commit: Lars Ingebrigtsen <larsi@gnus.org>

    Fix narrow-to-defun in python-mode
    
    * lisp/progmodes/python.el (python-nav--beginning-of-defun): Make
    narrow-to-defun work better in classes (bug#40563).
    
    Copyright-paperwork-exempt: yes
---
 lisp/progmodes/python.el | 15 +++++++++++----
 1 file changed, 11 insertions(+), 4 deletions(-)

diff --git a/lisp/progmodes/python.el b/lisp/progmodes/python.el
index d75944a..d58b32f 100644
--- a/lisp/progmodes/python.el
+++ b/lisp/progmodes/python.el
@@ -1404,7 +1404,7 @@ With positive ARG search backwards, else search forwards."
          (line-beg-pos (line-beginning-position))
          (line-content-start (+ line-beg-pos (current-indentation)))
          (pos (point-marker))
-         (beg-indentation
+         (body-indentation
           (and (> arg 0)
                (save-excursion
                  (while (and
@@ -1415,9 +1415,16 @@ With positive ARG search backwards, else search 
forwards."
                      0))))
          (found
           (progn
-            (when (and (< arg 0)
-                       (python-info-looking-at-beginning-of-defun))
+            (when (and (python-info-looking-at-beginning-of-defun)
+                       (or (< arg 0)
+                           ;; If looking at beginning of defun, and if
+                           ;; pos is > line-content-start, ensure a
+                           ;; backward re search match this defun by
+                           ;; going to end of line before calling
+                           ;; re-search-fn bug#40563
+                           (and (> arg 0) (> pos line-content-start))))
               (end-of-line 1))
+
             (while (and (funcall re-search-fn
                                  python-nav-beginning-of-defun-regexp nil t)
                         (or (python-syntax-context-type)
@@ -1425,7 +1432,7 @@ With positive ARG search backwards, else search forwards."
                             ;; backwards by checking indentation.
                             (and (> arg 0)
                                  (not (= (current-indentation) 0))
-                                 (>= (current-indentation) beg-indentation)))))
+                                 (>= (current-indentation) 
body-indentation)))))
             (and (python-info-looking-at-beginning-of-defun)
                  (or (not (= (line-number-at-pos pos)
                              (line-number-at-pos)))



reply via email to

[Prev in Thread] Current Thread [Next in Thread]