in nested defuns.
* test/automated/python-tests.el (python-imenu-create-index-2)
(python-imenu-create-index-3): New tests.
+2013-07-13 Fabián Ezequiel Gallina <fgallina@gnu.org>
+
+ * progmodes/python.el (python-imenu--build-tree): Fix corner case
+ in nested defuns.
+
2013-07-13 Leo Liu <sdl.web@gmail.com>
* ido.el (ido-exhibit): Handle ido-enter-matching-directory before
;; Stop collecting nodes after moving to a position with
;; indentation equaling min-indent. This is specially
;; useful for navigating nested definitions recursively.
- tree)
+ (if (> num-children 0)
+ tree
+ ;; When there are no children, the collected tree is a
+ ;; single node intended to be added in the list of defuns
+ ;; of its parent.
+ (car tree)))
(t
(python-imenu--build-tree
min-indent
(cons
(prog1
(python-imenu--build-tree
- prev-indent indent 1 (list (cons label pos)))
+ prev-indent indent 0 (list (cons label pos)))
;; Adjustment: after scanning backwards
;; for all deeper children, we need to
;; continue our scan for a parent from
+2013-07-13 Fabián Ezequiel Gallina <fgallina@gnu.org>
+
+ * automated/python-tests.el (python-imenu-create-index-2)
+ (python-imenu-create-index-3): New tests.
+
2013-07-11 Glenn Morris <rgm@gnu.org>
* automated/ert-tests.el: Require cl-lib at runtime too.
(cons "c (def)" (copy-marker 626)))))
(python-imenu-create-index)))))
+(ert-deftest python-imenu-create-index-2 ()
+ (python-tests-with-temp-buffer
+ "
+class Foo(object):
+ def foo(self):
+ def foo1():
+ pass
+
+ def foobar(self):
+ pass
+"
+ (goto-char (point-max))
+ (should (equal
+ (list
+ (list
+ "Foo (class)"
+ (cons "*class definition*" (copy-marker 2))
+ (list
+ "foo (def)"
+ (cons "*function definition*" (copy-marker 21))
+ (cons "foo1 (def)" (copy-marker 40)))
+ (cons "foobar (def)" (copy-marker 78))))
+ (python-imenu-create-index)))))
+
+(ert-deftest python-imenu-create-index-3 ()
+ (python-tests-with-temp-buffer
+ "
+class Foo(object):
+ def foo(self):
+ def foo1():
+ pass
+ def foo2():
+ pass
+"
+ (goto-char (point-max))
+ (should (equal
+ (list
+ (list
+ "Foo (class)"
+ (cons "*class definition*" (copy-marker 2))
+ (list
+ "foo (def)"
+ (cons "*function definition*" (copy-marker 21))
+ (cons "foo1 (def)" (copy-marker 40))
+ (cons "foo2 (def)" (copy-marker 77)))))
+ (python-imenu-create-index)))))
+
(ert-deftest python-imenu-create-flat-index-1 ()
(python-tests-with-temp-buffer
"