Subject: bug#4667: 23.1.50; python-end-of-defun breaks when using prefix args

From: Ian Eure <[email-masked]>
Date: Wed, 7 Oct 2009 10:20:33 -0700

According to the help for `end-of-defun':

     Move forward to next end of defun.
     With argument, do it that many times.

Python-mode’s python-end-of-defun function does not work this way when
given a prefix argument.

Paste this code into a python-mode buffer:

def one():
     pass

def two():
     pass

def three():
     pass

def four():
     pass

def five():
     pass

xodef six():
     pass

def seven():
     pass

def eight():
     pass

If you position point on `def one' and press C-M-e twice, you end up on
`def three'. However, if you press C-2 C-M-e, you end up on `def
four'. It’s not a simple off-by-one error. If you press C-3 C-M-e, you
are put on `def six' rather than `def four'.

In GNU Emacs 23.1.50.1 (i386-apple-darwin9.8.0, NS apple-appkit-949.54)
  of 2009-09-24 on neutron.local
Windowing system distributor `Apple', version 10.3.949
configured using `configure  '--with-ns''

Important settings:
   value of $LC_ALL: nil
   value of $LC_COLLATE: nil
   value of $LC_CTYPE: nil
   value of $LC_MESSAGES: nil
   value of $LC_MONETARY: nil
   value of $LC_NUMERIC: nil
   value of $LC_TIME: nil
   value of $LANG: nil
   value of $XMODIFIERS: nil
   locale-coding-system: nil
   default enable-multibyte-characters: t

Major mode: Python

Minor modes in effect:
   erc-track-mode: t
   erc-track-minor-mode: t
   erc-spelling-mode: t
   erc-ring-mode: t
   erc-pcomplete-mode: t
   erc-netsplit-mode: t
   erc-match-mode: t
   erc-button-mode: t
   erc-fill-mode: t
   erc-autojoin-mode: t
   erc-irccontrols-mode: t
   erc-noncommands-mode: t
   erc-readonly-mode: t
   erc-scrolltobottom-mode: t
   goto-address-prog-mode: t
   light-symbol-mode: t
   hl-line-mode: t
   which-function-mode: t
   yas/minor-mode: t
   ime-bindings: t
   shell-dirtrack-mode: t
   show-paren-mode: t
   recentf-mode: t
   iswitchb-mode: t
   cua-mode: t
   auto-insert-mode: t
   tooltip-mode: t
   mouse-wheel-mode: t
   menu-bar-mode: t
   file-name-shadow-mode: t
   global-font-lock-mode: t
   font-lock-mode: t
   blink-cursor-mode: t
   global-auto-composition-mode: t
   auto-composition-mode: t
   auto-encryption-mode: t
   auto-compression-mode: t
   size-indication-mode: t
   column-number-mode: t
   line-number-mode: t
   transient-mark-mode: t
   abbrev-mode: t

Recent input:
s s <return> <return> d e f SPC q u u z <backspace>
x <tab> <tab> M-m C-k p a s s C-n C-x C-o M-< C-M-e
C-M-e C-M-e C-M-a C-M-a C-M-a C-2 C-M-e M-< C-3 C-M-e
C-g M-< C-c C-SPC C-x b <return> C-h k C-M-e C-x o
C-n C-p C-n C-p C-n C-p C-n C-p C-x o C-n C-p C-n M-x
r e p o t <backspace> r <tab> b <tab> C-g C-x o C-n
C-n C-p C-e C-b C-x o C-n C-p C-n C-p C-M-e C-M-e C-M-e
C-M-a C-M-a C-M-a C-x o C-n C-p C-n C-p C-n C-p C-n
C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n
C-b C-n C-n <return> C-x o C-n C-p C-n C-h f p y <tab>
t h <tab> m o <tab> e <tab> <return> C-x o C-n C-p
C-e C-b C-b C-b C-b C-b C-b <return> M-< C-s e n d
- o f d e f u n C-s C-s <backspace> <backspace> <backspace>
<backspace> <backspace> <backspace> <backspace> - d
e f u n C-n C-p C-s C-s C-n C-n C-n C-n M-m C-n C-n
C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n
C-n C-x b <return> C-x b <return> C-x b C-g C-x b C-g
C-x b <return> M-< M-x p y t h o n - e n <tab> <return>
M-x M-p <return> M-x M-p <return> C-g M-< C-f C-f C-f
C-f C-a C-n C-n C-n C-f C-a M-< C-M-e M-< C-2 C-M-e
M-x r e p o r t - e m <tab> b <tab> <return> P y t
h o n <M-backspace> C-x o C-x b C-g C-x o C-n C-p C-n
C-p C-n C-n C-p C-x b . <backspace> <return> C-x o
C-n M-x M-p <return>

Recent messages:
uncompressing python.el.gz...done
Mark set [2 times]
Mark saved where search started [2 times]
Quit [2 times]
Mark set
Quit
Mark set [6 times]
byte-code: Command attempted to use minibuffer while in minibuffer
Quit
Scanning for dabbrevs...100% [2 times]

Load-path shadows:
/Users/ieure/.emacs.d/ime-lisp/ime-dired hides /Users/ieure/.emacs.d/ 
lisp/ime-dired
/Users/ieure/.emacs.d/lisp/json hides /Applications/Emacs.app/Contents/ 
Resources/lisp/json