(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)
(beginning-of-line)
(point))))
;; Nested defuns should be skipped.
- (python-tests-look-at "return a" -1)
+ (forward-line -1)
(should (= (save-excursion
(python-nav-beginning-of-defun)
(point))
(beginning-of-line)
(point))))
;; Defuns on same levels should be respected.
+ (python-tests-look-at "if True:" -1)
+ (forward-line -1)
+ (should (= (save-excursion
+ (python-nav-beginning-of-defun)
+ (point))
+ (save-excursion
+ (python-tests-look-at "def a():" -1)
+ (beginning-of-line)
+ (point))))
(python-tests-look-at "def a():" -1)
(should (= (save-excursion
(python-nav-beginning-of-defun)
(python-tests-look-at "def b():" -1)
(beginning-of-line)
(point))))
- ;; Jump to a top level defun.
+ ;; Jump to an upper level defun.
(python-tests-look-at "def b():" -1)
+ (should (= (save-excursion
+ (python-nav-beginning-of-defun)
+ (point))
+ (save-excursion
+ (python-tests-look-at "def m(self):" -1)
+ (beginning-of-line)
+ (point))))
+ (forward-line -1)
(should (= (save-excursion
(python-nav-beginning-of-defun)
(point))
(python-tests-look-at "def c(self):")
(forward-line -1)
(point))))
+ (should (= (save-excursion
+ (python-tests-look-at "def b():")
+ (forward-line -1)
+ (python-nav-end-of-defun)
+ (point))
+ (save-excursion
+ (python-tests-look-at "def c(self):")
+ (forward-line -1)
+ (point))))
(should (= (save-excursion
(python-tests-look-at "def b():")
(python-nav-end-of-defun)
(python-tests-look-at "def b():")
(forward-line 2)
(point))))
+ (should (not (save-excursion
+ (python-tests-look-at "def a():")
+ (forward-line -1)
+ (python-nav-end-of-defun))))
(should (= (save-excursion
(python-tests-look-at "def c(self):")
(python-nav-end-of-defun)