GNU bug report logs - #2703
23.0.91; Error in Python indenter

Previous Next

Package: emacs;

Reported by: Bob Rogers <rogers-perl6 <at> rgrjr.dyndns.org>

Date: Wed, 18 Mar 2009 01:30:03 UTC

Severity: normal

Done: Stefan Monnier <monnier <at> iro.umontreal.ca>

Bug is archived. No further changes may be made.

Full log


Message #5 received at submit <at> emacsbugs.donarmstrong.com (full text, mbox):

From: Bob Rogers <rogers-perl6 <at> rgrjr.dyndns.org>
To: emacs-pretest-bug <at> gnu.org
Subject: 23.0.91; Error in Python indenter
Date: Tue, 17 Mar 2009 21:24:49 -0400 (EDT)
   1.  Put the following code into the indent-test.py file:
================
def parse_cvs(self, stream):
    new_entry \
        = Entry(encoded_date = mod.encoded_date,
                files = mods)
    # The indenter can't handle this line.
    combined_entries.append(new_entry)
================

   2.  "emacs -Q indent-test.py"

   3.  Move the cursor anywhere on the comment line, and type TAB.  You
should see this error message:

	python-indent-line: Wrong type argument: number-or-marker-p, nil

   The patch at the bottom to lisp/python.el (rev 1.95, which is current
in trunk) addresses the immediate problem, by refusing to add nil to the
end of python-indent-list.  The resulting behavior is still not right:
The indenter then oscillates between indenting by 0 and 8, without
considering 4 at all.  I suspect that python-beginning-of-statement is
getting confused by the mixed continuation style of the previous three
lines, and this confusion is the cause of both problems, but I haven't
been able to track it further.

   TIA,

					-- Bob Rogers
					   http://www.rgrjr.com/

------------------------------------------------------------------------
In GNU Emacs 23.0.91.1 (i686-pc-linux-gnu, GTK+ Version 2.12.9)
 of 2009-03-06 on rgr
Windowing system distributor `The X.Org Foundation', version 11.0.10400090
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: en_US.UTF-8
  value of $XMODIFIERS: nil
  locale-coding-system: utf-8-unix
  default-enable-multibyte-characters: t

Major mode: Shell

Minor modes in effect:
  diff-auto-refine-mode: t
  shell-dirtrack-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
  auto-encryption-mode: t
  auto-compression-mode: t
  line-number-mode: t

Recent input:
<backspace> C-u C-SPC C-u C-SPC C-u C-n C-n C-n <tab> 
C-SPC C-u C-p C-p C-p C-w <tab> C-_ C-e C-f C-e C-f 
C-k C-k C-k C-k C-k C-k C-n M-f <tab> C-p M-^ C-e C-f 
<tab> M-f <tab> C-_ C-n <tab> C-n C-n C-u - 4 C-g C-x 
C-x M-{ C-u - 4 C-x TAB C-SPC C-p C-p C-w C-u C-SPC 
C-u C-SPC C-p M-b <tab> C-n C-a C-k C-k M-b <tab> C-_ 
C-_ C-_ M-b <tab> C-n C-n M-> C-w C-u C-SPC C-p M-b 
<tab> C-u C-p C-p C-p C-a C-SPC C-n C-n C-w C-u C-SPC 
C-u C-SPC C-u C-j C-SPC C-_ M-> C-p M-b <tab> C-a <tab> 
M-f M-b C-k T h i s SPC d o e s n ' t SPC i n d e n 
t SPC c o r r e c t l y . <tab> M-b M-b M-b M-b M-b 
T h e SPC i n d e n t e r SPC c a n ' t SPC h a n d 
l e SPC M-l C-k SPC l i n e . q <backspace> <tab> C-f 
C-e C-f C-f C-x 4 b * M e s <tab> <return> M-> C-p 
C-p C-p C-p C-SPC C-p M-w C-u C-SPC C-x b f o o <return> 
M-> <return> C-y C-u C-SPC C-M-f C-M-f C-f C-o C-f 
C-f C-M-f C-o C-M-f C-o C-f C-f C-e C-M-b C-M-f C-f 
C-f C-x o C-u C-p C-p M-f M-f C-d C-d C-n M-b = SPC 
SPC C-n C-p <backspace> C-n SPC SPC C-n <tab> C-p C-p 
M-^ <backspace> <backspace> C-n C-n <tab> C-_ C-_ C-_ 
C-x C-s C-x o <f8> e m a c s SPC - Q SPC i n d e <tab> 
SPC & <return> <help-echo> M-x r e p o r <tab> <re
turn>

Recent messages:
python-indent-list is ((0 . #("def parse_cvs(self, stream):" 0 3 (fontified t face font-lock-keyword-face) 3 4 (fontified t) 4 13 (fontified t face font-lock-function-name-face) 13 14 (fontified t) 14 18 (fontified t face py-pseudo-keyword-face) 18 28 (fontified t))) (8 . #("= Entry(encoded_date = mod.encoded_date," 0 2 (fontified t) 2 26 (fontified t) 26 38 (fontified t) 38 39 (rear-nonsticky t fontified t) 39 40 (fontified t))) nil)
[target nil]
python-indent-line: Wrong type argument: number-or-marker-p, nil
python-indent-list is ((0 . #("def parse_cvs(self, stream):" 0 3 (fontified t face font-lock-keyword-face) 3 4 (fontified t) 4 13 (fontified t face font-lock-function-name-face) 13 14 (fontified t) 14 18 (fontified t face py-pseudo-keyword-face) 18 28 (fontified t))) (4 . #("new_entry = Entry(encoded_date = mod.encoded_date," 0 9 (fontified t) 9 10 (fontified t) 10 12 (fontified t) 12 36 (fontified t) 36 48 (fontified t) 48 49 (rear-nonsticky t fontified t) 49 50 (fontified t))))
[target 4]
Undo! [3 times]
Auto-saving...
Saving file /home/rogers/projects/system/scripts/indent-test.py...
Wrote /home/rogers/projects/system/scripts/indent-test.py
Partially completed

----------------

Index: lisp/progmodes/python.el
===================================================================
RCS file: /sources/emacs/emacs/lisp/progmodes/python.el,v
retrieving revision 1.95
diff -c -r1.95 python.el
*** lisp/progmodes/python.el	20 Feb 2009 16:30:56 -0000	1.95
--- lisp/progmodes/python.el	18 Mar 2009 00:11:18 -0000
***************
*** 723,731 ****
  	  (forward-line)
  	  (unless (python-comment-line-p)
  	    (let ((elt (assq (current-indentation) python-indent-list)))
! 	      (setq python-indent-list
! 		    (nconc (delete elt python-indent-list)
! 			   (list elt))))))
  	(caar (last python-indent-list)))))))
  
  ;;;; Cycling through the possible indentations with successive TABs.
--- 723,732 ----
  	  (forward-line)
  	  (unless (python-comment-line-p)
  	    (let ((elt (assq (current-indentation) python-indent-list)))
! 	      (when elt
! 		(setq python-indent-list
! 		      (nconc (delete elt python-indent-list)
! 			     (list elt)))))))
  	(caar (last python-indent-list)))))))
  
  ;;;; Cycling through the possible indentations with successive TABs.




This bug report was last modified 13 years and 192 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.