From 35d0a2e0a767838c24d5853be798313aed7a42df Mon Sep 17 00:00:00 2001 From: kobarity Date: Sat, 16 Jul 2022 18:14:15 +0200 Subject: Fix python navigation problem with an empty line in nested defun * lisp/progmodes/python.el (python-nav--beginning-of-defun): Fix bug when point is on an empty line (bug#56600). --- lisp/progmodes/python.el | 29 ++++++++++++++++------------- 1 file changed, 16 insertions(+), 13 deletions(-) (limited to 'lisp/progmodes/python.el') diff --git a/lisp/progmodes/python.el b/lisp/progmodes/python.el index 1c99937c4b9..f31832fec9c 100644 --- a/lisp/progmodes/python.el +++ b/lisp/progmodes/python.el @@ -1454,21 +1454,24 @@ 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)) - (min-indentation (+ (current-indentation) - (if (python-info-looking-at-beginning-of-defun) - python-indent-offset 0))) + (min-indentation (if (python-info-current-line-empty-p) + most-positive-fixnum + (current-indentation))) (body-indentation (and (> arg 0) - (save-excursion - (while (and - (or (not (python-info-looking-at-beginning-of-defun)) - (>= (current-indentation) min-indentation)) - (setq min-indentation - (min min-indentation (current-indentation))) - (python-nav-backward-block))) - (or (and (python-info-looking-at-beginning-of-defun) - (+ (current-indentation) python-indent-offset)) - 0)))) + (or (and (python-info-looking-at-beginning-of-defun) + (+ (current-indentation) python-indent-offset)) + (save-excursion + (while + (and + (python-nav-backward-block) + (or (not (python-info-looking-at-beginning-of-defun)) + (>= (current-indentation) min-indentation)) + (setq min-indentation + (min min-indentation (current-indentation))))) + (or (and (python-info-looking-at-beginning-of-defun) + (+ (current-indentation) python-indent-offset)) + 0))))) (found (progn (when (and (python-info-looking-at-beginning-of-defun nil t) -- cgit v1.2.1