mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2025-01-11 16:08:13 +00:00
* lisp/progmodes/python.el (python-imenu--build-tree): Fix corner case
in nested defuns. * test/automated/python-tests.el (python-imenu-create-index-2) (python-imenu-create-index-3): New tests.
This commit is contained in:
parent
deee89ff66
commit
1f0480d4cd
@ -1,3 +1,8 @@
|
||||
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
|
||||
|
@ -3091,7 +3091,12 @@ you are doing."
|
||||
;; 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
|
||||
@ -3131,7 +3136,7 @@ you are doing."
|
||||
(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
|
||||
|
@ -1,3 +1,8 @@
|
||||
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.
|
||||
|
@ -1745,6 +1745,53 @@ class Baz(object):
|
||||
(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
|
||||
"
|
||||
|
Loading…
Reference in New Issue
Block a user