From noreply at sourceforge.net Wed Nov 1 01:35:30 2006 From: noreply at sourceforge.net (SourceForge.net) Date: Tue, 31 Oct 2006 16:35:30 -0800 Subject: [Python-mode] [ python-mode-Patches-1588272 ] Better nesting of data structures Message-ID: Patches item #1588272, was opened at 2006-10-31 16:35 Message generated for change (Comment added) made by montanaro You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=581351&aid=1588272&group_id=86916 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: None Group: None >Status: Closed >Resolution: Accepted Priority: 5 Private: No Submitted By: Carl Banks (aerojockey) >Assigned to: Skip Montanaro (montanaro) Summary: Better nesting of data structures Initial Comment: Currently, python-mode produces unpleasant results when a statement has multiple open braces at the end of a line. Normally, when a open brace/bracket/parenthesis ends a line, the following line is indented relative to the first by py-indent-offset characters. However, when another such open brace is nested inside the first, the indentation of the following line remains relative to the first line of the statement. We would like nested data structures to be indented like this: a = { "b1": { "c2": 1, } } However, python-mode does this: a = { "b1": { "c2": 1, } } The supplied patch changes the indent calculation to account for nesting of braces. I've been using it for awhile without problem. I run GNU Emacs 21.4.1 on Debian Linux. The patch uses an undocumented tenth return value parse-partial-sexp, so I suspect it might not work in some versions of Emacs. I hope I didn't break any etiquette by posting the patch without checking this, but I wanted to get it out there. ---------------------------------------------------------------------- >Comment By: Skip Montanaro (montanaro) Date: 2006-10-31 18:35 Message: Logged In: YES user_id=44345 Thanks Carl. That was easy. It worked for in in XEmacs 21.5b25. If necessary we can tackle older versions. Checked in as python-mode.el v 4.79. ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=581351&aid=1588272&group_id=86916 From noreply at sourceforge.net Mon Nov 13 23:22:36 2006 From: noreply at sourceforge.net (SourceForge.net) Date: Mon, 13 Nov 2006 14:22:36 -0800 Subject: [Python-mode] [ python-mode-Bugs-1215039 ] eat 100% CPU when "Force full reparse" Message-ID: Bugs item #1215039, was opened at 2005-06-04 20:16 Message generated for change (Comment added) made by shreddd You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=581349&aid=1215039&group_id=86916 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: None Group: None Status: Open Resolution: None Priority: 5 Private: No Submitted By: Shixin Zeng (pupilzeng) Assigned to: Skip Montanaro (montanaro) Summary: eat 100% CPU when "Force full reparse" Initial Comment: it seems to come into a infinite loop, and I can't do anything but Ctrl+C to end emacs and all my datas were lost. It ocurred every time I type M-/ for code completion. my emacs is 23.0.0.1, checkout from the branch unicode-2 on April, 2, 2005 ---------------------------------------------------------------------- Comment By: Shreyas (shreddd) Date: 2006-11-13 14:22 Message: Logged In: YES user_id=1644594 Looks like there is a workaround for this problem: http://www.emacswiki.org/cgi-bin/wiki?action=browse;diff=2;id=CollectionOfEmacsDevelopmentEnvironmentTools Basically, CEDET is broken wrt python autocompletion. In the file cedet-dir/semantic/wisent/wisent-python.el, comment out the line: (add-hook 'python-mode-hook #'wisent-python-default-setup) Everything worked great after that ---------------------------------------------------------------------- Comment By: Todd DeLuca (todddeluca) Date: 2006-06-07 11:17 Message: Logged In: YES user_id=1321242 Based on the previous comment by thimo, I investigated the "semantic" issue a little further. On my system the "semantic" stuff comes from the CEDET (http://cedet.sourceforge.net/ and http://cedet.sourceforge.net/semantic.shtml) site-lisp packages being loaded. One way to avoid loading these tools is to run emacs with the --no-site-file option. This fixes the freezing that was occurring in the code example I provided below. These site packages are common to all users, so I can not simply remove them from the system. If anyone has a more fine-grained way to do this, one that does not remove all site-lisp packages, feel free to share. Cheers, Todd DeLuca ---------------------------------------------------------------------- Comment By: Thimo Neubauer (thimo) Date: 2005-12-15 01:56 Message: Logged In: YES user_id=19572 As this bug bit me many times in the last days I've checked with a friend if he experiences the same: in his emacs (also Debian stable) there are no freezes. As he has no "semantic" installed but I do I'd guess that it is the culprit. BTW: the fixes in the patch mentioned on http://www.emacswiki.org/cgi-bin/wiki/PythonMode did not cure this bug. For reference: I'm using Emacs 21.4.1, python-mode 4.75, semantic 1.0beta3b ---------------------------------------------------------------------- Comment By: Mike (stormcoder) Date: 2005-12-07 09:39 Message: Logged In: YES user_id=446468 This occurs for me when there is a block (function, for, if, etc) that doesn't have a blank new line after it. As soon as the file is loaded, the CPU pegs and emacs freezes. ---------------------------------------------------------------------- Comment By: Todd DeLuca (todddeluca) Date: 2005-07-30 10:03 Message: Logged In: YES user_id=1321242 Ok, I've created a simple reproducible example. The following code consistently freezes if the last character in the file is '1'. If there is a newline following the '1', then everything is fine. if 1 < 2: # die here x = 1 It also freezes under the same condition if you replace the if statement with a for i in range(10): loop. The following file does NOT freeze even if the '1' is the last character in the file: x = 1 So perhaps it has something to do with the indentation. Everything seems to hinge on there being no characters following the last line of code. I tried putting spaces on the end of the 'x = 1' line and it still froze with a 'Force full reparse' message. Sometimes the 'Force full reparse' message is not displayed when it freezes, but I think that detail is insignificant. I hope these code snippets are helpful in debugging the problem. Thank y'all for producing and maintaining python-mode. Its coloring and indenting features have been very helpful to me, and I get the feeling I'm just scratching the surface. Cheers, Todd ---------------------------------------------------------------------- Comment By: Todd DeLuca (todddeluca) Date: 2005-07-30 09:29 Message: Logged In: YES user_id=1321242 I am having the same problem. It started happening around the time my box was upgraded to the new Debian stable release, Sarge. I am using version 4.75 of python-mode. The problem manifests seemingly randomly for me. It seems to happen more with short python files. I can not think of a long or old (pre-upgrade to sarge) python file where I've had this problem. I am not using M-/ (code completion). The problem may manifest when I hit return to go to a new line or when I hit backspace to unindent out of a block that I've just ended. I am using gnu emacs version 21.4.1 I am forced to kill from a different terminal to close my emacs, since I run it in the foreground of a terminal. Any suggestions for how to fix this problem would be greatly appreciated. It makes it nearly impossible to use python-mode when at any time emacs can freeze and loose all of my work (since my last save.) I'm sorry I have not been able to reproduce the problem consistently yet. If that is helpful I will attempt to do so. Best regards, Todd DeLuca P.S. some diagnostic info (a repeat of what was mentioned above): $ emacs --version GNU Emacs 21.4.1 from top command: 3440 td23 14 0 19336 18m 2900 R 99.9 0.5 16:05.32 emacs python-mode version (from C-c C-v): version $Revision: 4.75 $ ---------------------------------------------------------------------- Comment By: Shixin Zeng (pupilzeng) Date: 2005-06-09 04:39 Message: Logged In: YES user_id=1143754 M-: py-version RET "$Revision 4.63 $" I downloaded it from http://sourceforge.net/projects/python-mode, whose version was tagged as 1.0alpha Where can I get the version 4.75? I've tried write codes as you said: a.foo = 12 a. M-/ repeatly First: "py" Seconed: Force full parse and the problem occurred. ---------------------------------------------------------------------- Comment By: Skip Montanaro (montanaro) Date: 2005-06-09 04:04 Message: Logged In: YES user_id=44345 Hmmm... It's been years and years since Python-mode 1.0alpha was released, so I suspect you're looking in the wrong place for the version. We are currently at 4.75. You can get the current python-mode version by typing M-: py-version RET When I hit M-/ at the place you indicated, it completes with "c12". I have no idea why it chooses that completion, but it doesn't hang. It's not obvious to me what it should expand in this context. Did you have something in mind? If I change the code to ... a = A('abc') a.foo = 12 a. when I hit M-/ it properly expands to "a.foo" for me. Please try upgrading your python-mode. ---------------------------------------------------------------------- Comment By: Shixin Zeng (pupilzeng) Date: 2005-06-09 03:33 Message: Logged In: YES user_id=1143754 When I'm editing C source files in cc-mode, the problem doesn't occur ---------------------------------------------------------------------- Comment By: Shixin Zeng (pupilzeng) Date: 2005-06-09 02:44 Message: Logged In: YES user_id=1143754 OK, here's an example: #!/usr/bin/python class A: def __init__(self, name): self.name = name if __name__ == '__main__': a = A('abc') a.<------------- M-/ here, the bug can be reproduced the python-mode is 1.0alpha ---------------------------------------------------------------------- Comment By: Skip Montanaro (montanaro) Date: 2005-06-06 20:19 Message: Logged In: YES user_id=44345 Can you provide an example Python file where this happens? Given that M-/ runs dabbrev-expand, I'm skeptical this has anything to do with python-mode. ---------------------------------------------------------------------- Comment By: Skip Montanaro (montanaro) Date: 2005-06-05 04:10 Message: Logged In: YES user_id=44345 What version of python-mode.el are you using? ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=581349&aid=1215039&group_id=86916