summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKurt B. Kaiser <kbk@shore.net>2009-10-04 23:26:19 (GMT)
committerKurt B. Kaiser <kbk@shore.net>2009-10-04 23:26:19 (GMT)
commit441dad8145686a9438ef1a30da64e589af2989ed (patch)
tree901ab98fdd7ad793a8e350d1a3ed48e7ddf0681e
parentb85c1472247d8eff5bea93b2861f4d2d61c0d2c6 (diff)
downloadcpython-441dad8145686a9438ef1a30da64e589af2989ed.zip
cpython-441dad8145686a9438ef1a30da64e589af2989ed.tar.gz
cpython-441dad8145686a9438ef1a30da64e589af2989ed.tar.bz2
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. ........
-rw-r--r--Lib/idlelib/NEWS.txt3
-rw-r--r--Lib/idlelib/OutputWindow.py39
2 files changed, 16 insertions, 26 deletions
diff --git a/Lib/idlelib/NEWS.txt b/Lib/idlelib/NEWS.txt
index 001c6d7..c07484d 100644
--- a/Lib/idlelib/NEWS.txt
+++ b/Lib/idlelib/NEWS.txt
@@ -3,6 +3,9 @@ What's New in Python 2.6.4rc1
*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
==========================
diff --git a/Lib/idlelib/OutputWindow.py b/Lib/idlelib/OutputWindow.py
index 787e9b0..f6b379b 100644
--- a/Lib/idlelib/OutputWindow.py
+++ b/Lib/idlelib/OutputWindow.py
@@ -60,9 +60,12 @@ class OutputWindow(EditorWindow):
]
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
@@ -96,17 +99,17 @@ class OutputWindow(EditorWindow):
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:
@@ -139,19 +142,3 @@ class OnDemandOutputWindow:
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