Kurt B. Kaiser avatar Kurt B. Kaiser committed 490190c

Merged revisions 71995,72227 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk

........
r71995 | kurt.kaiser | 2009-04-26 19:22:11 -0400 (Sun, 26 Apr 2009) | 2 lines

Right click 'go to file/line' not working if spaces
in path. Bug 5559.
........
r72227 | kurt.kaiser | 2009-05-02 22:05:22 -0400 (Sat, 02 May 2009) | 2 lines

Further development of issue5559, handle Windows files
which not only have embedded spaces, but leading spaces.
........

Comments (0)

Files changed (2)

Lib/idlelib/NEWS.txt

 
 *Release date: XX-Oct-2009*
 
+- OutputWindow/PyShell right click menu "Go to file/line" wasn't working with
+  file paths containing spaces.  Bug 5559.
+
 What's New in Python 2.6.3
 ==========================
 

Lib/idlelib/OutputWindow.py

     ]
 
     file_line_pats = [
+        # order of patterns matters
         r'file "([^"]*)", line (\d+)',
         r'([^\s]+)\((\d+)\)',
-        r'([^\s]+):\s*(\d+):',
+        r'^(\s*\S.*?):\s*(\d+):',  # Win filename, maybe starting with spaces
+        r'([^\s]+):\s*(\d+):',     # filename or path, ltrim
+        r'^\s*(\S.*?):\s*(\d+):',  # Win abs path with embedded spaces, ltrim
     ]
 
     file_line_progs = None
 
     def _file_line_helper(self, line):
         for prog in self.file_line_progs:
-            m = prog.search(line)
-            if m:
-                break
+            match = prog.search(line)
+            if match:
+                filename, lineno = match.group(1, 2)
+                try:
+                    f = open(filename, "r")
+                    f.close()
+                    break
+                except IOError:
+                    continue
         else:
             return None
-        filename, lineno = m.group(1, 2)
-        try:
-            f = open(filename, "r")
-            f.close()
-        except IOError:
-            return None
         try:
             return filename, int(lineno)
         except TypeError:
                 text.tag_configure(tag, **cnf)
         text.tag_raise('sel')
         self.write = self.owin.write
-
-#class PseudoFile:
-#
-#      def __init__(self, owin, tags, mark="end"):
-#          self.owin = owin
-#          self.tags = tags
-#          self.mark = mark
-
-#      def write(self, s):
-#          self.owin.write(s, self.tags, self.mark)
-
-#      def writelines(self, l):
-#          map(self.write, l)
-
-#      def flush(self):
-#          pass
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.