Mercurial > cpython-lru_cache-weakref
annotate Lib/idlelib/ScriptBinding.py @ 78069:a8aa77458e12 3.2
Add c_size_t and c_ssize_t to the ctypes summary table.
| author | Antoine Pitrou <solipsis@pitrou.net> |
|---|---|
| date | Thu, 12 Jul 2012 20:31:50 +0200 |
| parents | 1993aa091d89 |
| children | 2c276d0553ff |
| rev | line source |
|---|---|
| 13975 | 1 """Extension to execute code outside the Python shell window. |
| 2 | |
|
23784
24b0f6d693e3
Rework the code to have only the GvR RPC. Output from execution of user
Kurt B. Kaiser <kbk@shore.net>
parents:
23547
diff
changeset
|
3 This adds the following commands: |
| 13975 | 4 |
|
23784
24b0f6d693e3
Rework the code to have only the GvR RPC. Output from execution of user
Kurt B. Kaiser <kbk@shore.net>
parents:
23547
diff
changeset
|
5 - Check module does a full syntax check of the current module. |
| 26693 | 6 It also runs the tabnanny to catch any inconsistent tabs. |
| 13975 | 7 |
| 25123 | 8 - Run module executes the module's code in the __main__ namespace. The window |
| 26693 | 9 must have been saved previously. The module is added to sys.modules, and is |
| 10 also added to the __main__ namespace. | |
| 13975 | 11 |
| 26693 | 12 XXX GvR Redesign this interface (yet again) as follows: |
| 23547 | 13 |
| 27390 | 14 - Present a dialog box for ``Run Module'' |
| 23547 | 15 |
| 16 - Allow specify command line arguments in the dialog box | |
| 17 | |
| 13975 | 18 """ |
| 19 | |
| 29346 | 20 import os |
| 26693 | 21 import re |
| 22 import string | |
| 23 import tabnanny | |
| 24 import tokenize | |
|
47130
ef4cca2d6171
Tkinter, step 2: adapt imports.
Georg Brandl <georg@python.org>
parents:
45371
diff
changeset
|
25 import tkinter.messagebox as tkMessageBox |
|
42714
2ec16b6b4d04
Switch to absolute imports to support direct execution of modules. Many
Kurt B. Kaiser <kbk@shore.net>
parents:
42708
diff
changeset
|
26 from idlelib.EditorWindow import EditorWindow |
|
50874
b92e695d561e
Merged revisions 68730 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
27 from idlelib import PyShell, IOBinding |
| 13975 | 28 |
|
42714
2ec16b6b4d04
Switch to absolute imports to support direct execution of modules. Many
Kurt B. Kaiser <kbk@shore.net>
parents:
42708
diff
changeset
|
29 from idlelib.configHandler import idleConf |
|
70174
1c6823317a06
Fixes #11088: IDLE crashes when using F5 to run a script on OSX with Tk 8.5
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
70054
diff
changeset
|
30 from idlelib import macosxSupport |
| 29266 | 31 |
| 13975 | 32 indent_message = """Error: Inconsistent indentation detected! |
| 33 | |
|
35065
aa1c5366607d
1. Clarify "tab/space" Error Dialog and "Tab Width" Dialog associated with
Kurt B. Kaiser <kbk@shore.net>
parents:
34443
diff
changeset
|
34 1) Your indentation is outright incorrect (easy to fix), OR |
| 13975 | 35 |
|
35065
aa1c5366607d
1. Clarify "tab/space" Error Dialog and "Tab Width" Dialog associated with
Kurt B. Kaiser <kbk@shore.net>
parents:
34443
diff
changeset
|
36 2) Your indentation mixes tabs and spaces. |
| 13975 | 37 |
|
35065
aa1c5366607d
1. Clarify "tab/space" Error Dialog and "Tab Width" Dialog associated with
Kurt B. Kaiser <kbk@shore.net>
parents:
34443
diff
changeset
|
38 To fix case 2, change all tabs to spaces by using Edit->Select All followed \ |
|
aa1c5366607d
1. Clarify "tab/space" Error Dialog and "Tab Width" Dialog associated with
Kurt B. Kaiser <kbk@shore.net>
parents:
34443
diff
changeset
|
39 by Format->Untabify Region and specify the number of columns used by each tab. |
|
aa1c5366607d
1. Clarify "tab/space" Error Dialog and "Tab Width" Dialog associated with
Kurt B. Kaiser <kbk@shore.net>
parents:
34443
diff
changeset
|
40 """ |
|
23784
24b0f6d693e3
Rework the code to have only the GvR RPC. Output from execution of user
Kurt B. Kaiser <kbk@shore.net>
parents:
23547
diff
changeset
|
41 |
| 13975 | 42 class ScriptBinding: |
|
18497
42741e677338
py-cvs merge, better error dialog
Steven M. Gava <elguavas@python.net>
parents:
13975
diff
changeset
|
43 |
| 13975 | 44 menudefs = [ |
|
23784
24b0f6d693e3
Rework the code to have only the GvR RPC. Output from execution of user
Kurt B. Kaiser <kbk@shore.net>
parents:
23547
diff
changeset
|
45 ('run', [None, |
| 26693 | 46 ('Check Module', '<<check-module>>'), |
| 27390 | 47 ('Run Module', '<<run-module>>'), ]), ] |
| 13975 | 48 |
| 49 def __init__(self, editwin): | |
| 50 self.editwin = editwin | |
| 51 # Provide instance variables referenced by Debugger | |
| 52 # XXX This should be done differently | |
| 53 self.flist = self.editwin.flist | |
|
39442
654c380cf8b9
Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
35384
diff
changeset
|
54 self.root = self.editwin.root |
| 13975 | 55 |
|
70174
1c6823317a06
Fixes #11088: IDLE crashes when using F5 to run a script on OSX with Tk 8.5
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
70054
diff
changeset
|
56 if macosxSupport.runningAsOSXApp(): |
|
1c6823317a06
Fixes #11088: IDLE crashes when using F5 to run a script on OSX with Tk 8.5
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
70054
diff
changeset
|
57 self.editwin.text_frame.bind('<<run-module-event-2>>', self._run_module_event) |
|
1c6823317a06
Fixes #11088: IDLE crashes when using F5 to run a script on OSX with Tk 8.5
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
70054
diff
changeset
|
58 |
|
35384
34ff7ca4cef8
Revert previous code elimination, 'filename' is needed.
Kurt B. Kaiser <kbk@shore.net>
parents:
35383
diff
changeset
|
59 def check_module_event(self, event): |
| 13975 | 60 filename = self.getfilename() |
| 61 if not filename: | |
|
45371
7c4c46342137
Merged revisions 60481,60485,60489-60492,60494-60496,60498-60499,60501-60503,60505-60506,60508-60509,60523-60524,60532,60543,60545,60547-60548,60552,60554,60556-60559,60561-60562,60569,60571-60572,60574,60576-60583,60585-60586,60589,60591,60594-60595,60597-60598,60600-60601,60606-60612,60615,60617,60619-60621,60623-60625,60627-60629,60631,60633,60635,60647,60650,60652,60654,60656,60658-60659,60664-60666,60668-60670,60672,60676,60678,60680-60683,60685-60686,60688,60690,60692-60694,60697-60700,60705-60706,60708,60711,60714,60720,60724-60730,60732,60736,60742,60744,60746,60748,60750-60751,60753,60756-60757,60759-60761,60763-60764,60766,60769-60770,60774-60784,60787-60845 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
42714
diff
changeset
|
62 return 'break' |
|
40450
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
39442
diff
changeset
|
63 if not self.checksyntax(filename): |
|
45371
7c4c46342137
Merged revisions 60481,60485,60489-60492,60494-60496,60498-60499,60501-60503,60505-60506,60508-60509,60523-60524,60532,60543,60545,60547-60548,60552,60554,60556-60559,60561-60562,60569,60571-60572,60574,60576-60583,60585-60586,60589,60591,60594-60595,60597-60598,60600-60601,60606-60612,60615,60617,60619-60621,60623-60625,60627-60629,60631,60633,60635,60647,60650,60652,60654,60656,60658-60659,60664-60666,60668-60670,60672,60676,60678,60680-60683,60685-60686,60688,60690,60692-60694,60697-60700,60705-60706,60708,60711,60714,60720,60724-60730,60732,60736,60742,60744,60746,60748,60750-60751,60753,60756-60757,60759-60761,60763-60764,60766,60769-60770,60774-60784,60787-60845 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
42714
diff
changeset
|
64 return 'break' |
| 13975 | 65 if not self.tabnanny(filename): |
|
45371
7c4c46342137
Merged revisions 60481,60485,60489-60492,60494-60496,60498-60499,60501-60503,60505-60506,60508-60509,60523-60524,60532,60543,60545,60547-60548,60552,60554,60556-60559,60561-60562,60569,60571-60572,60574,60576-60583,60585-60586,60589,60591,60594-60595,60597-60598,60600-60601,60606-60612,60615,60617,60619-60621,60623-60625,60627-60629,60631,60633,60635,60647,60650,60652,60654,60656,60658-60659,60664-60666,60668-60670,60672,60676,60678,60680-60683,60685-60686,60688,60690,60692-60694,60697-60700,60705-60706,60708,60711,60714,60720,60724-60730,60732,60736,60742,60744,60746,60748,60750-60751,60753,60756-60757,60759-60761,60763-60764,60766,60769-60770,60774-60784,60787-60845 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
42714
diff
changeset
|
66 return 'break' |
| 13975 | 67 |
| 68 def tabnanny(self, filename): | |
|
50874
b92e695d561e
Merged revisions 68730 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
69 # XXX: tabnanny should work on binary files as well |
|
72172
d1d2dfbca812
IDLE: fix some RessourceWarning, reuse tokenize.open()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
70174
diff
changeset
|
70 with tokenize.open(filename) as f: |
|
d1d2dfbca812
IDLE: fix some RessourceWarning, reuse tokenize.open()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
70174
diff
changeset
|
71 try: |
|
d1d2dfbca812
IDLE: fix some RessourceWarning, reuse tokenize.open()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
70174
diff
changeset
|
72 tabnanny.process_tokens(tokenize.generate_tokens(f.readline)) |
|
d1d2dfbca812
IDLE: fix some RessourceWarning, reuse tokenize.open()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
70174
diff
changeset
|
73 except tokenize.TokenError as msg: |
|
d1d2dfbca812
IDLE: fix some RessourceWarning, reuse tokenize.open()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
70174
diff
changeset
|
74 msgtxt, (lineno, start) = msg |
|
d1d2dfbca812
IDLE: fix some RessourceWarning, reuse tokenize.open()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
70174
diff
changeset
|
75 self.editwin.gotoline(lineno) |
|
d1d2dfbca812
IDLE: fix some RessourceWarning, reuse tokenize.open()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
70174
diff
changeset
|
76 self.errorbox("Tabnanny Tokenizing Error", |
|
d1d2dfbca812
IDLE: fix some RessourceWarning, reuse tokenize.open()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
70174
diff
changeset
|
77 "Token Error: %s" % msgtxt) |
|
d1d2dfbca812
IDLE: fix some RessourceWarning, reuse tokenize.open()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
70174
diff
changeset
|
78 return False |
|
d1d2dfbca812
IDLE: fix some RessourceWarning, reuse tokenize.open()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
70174
diff
changeset
|
79 except tabnanny.NannyNag as nag: |
|
d1d2dfbca812
IDLE: fix some RessourceWarning, reuse tokenize.open()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
70174
diff
changeset
|
80 # The error messages from tabnanny are too confusing... |
|
d1d2dfbca812
IDLE: fix some RessourceWarning, reuse tokenize.open()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
70174
diff
changeset
|
81 self.editwin.gotoline(nag.get_lineno()) |
|
d1d2dfbca812
IDLE: fix some RessourceWarning, reuse tokenize.open()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
70174
diff
changeset
|
82 self.errorbox("Tab/space error", indent_message) |
|
d1d2dfbca812
IDLE: fix some RessourceWarning, reuse tokenize.open()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
70174
diff
changeset
|
83 return False |
| 26475 | 84 return True |
| 13975 | 85 |
| 86 def checksyntax(self, filename): | |
|
32484
f3cb95cd413f
Redirect the warning stream to the shell during the ScriptBinding check of user code
Kurt B. Kaiser <kbk@shore.net>
parents:
31515
diff
changeset
|
87 self.shell = shell = self.flist.open_shell() |
|
f3cb95cd413f
Redirect the warning stream to the shell during the ScriptBinding check of user code
Kurt B. Kaiser <kbk@shore.net>
parents:
31515
diff
changeset
|
88 saved_stream = shell.get_warning_stream() |
|
f3cb95cd413f
Redirect the warning stream to the shell during the ScriptBinding check of user code
Kurt B. Kaiser <kbk@shore.net>
parents:
31515
diff
changeset
|
89 shell.set_warning_stream(shell.stderr) |
|
50874
b92e695d561e
Merged revisions 68730 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
90 f = open(filename, 'rb') |
| 13975 | 91 source = f.read() |
| 92 f.close() | |
|
50874
b92e695d561e
Merged revisions 68730 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
93 if b'\r' in source: |
|
b92e695d561e
Merged revisions 68730 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
94 source = source.replace(b'\r\n', b'\n') |
|
b92e695d561e
Merged revisions 68730 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
95 source = source.replace(b'\r', b'\n') |
|
b92e695d561e
Merged revisions 68730 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
96 if source and source[-1] != ord(b'\n'): |
|
b92e695d561e
Merged revisions 68730 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
97 source = source + b'\n' |
|
42455
dd74e020a132
Merged revisions 56492-56752 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42338
diff
changeset
|
98 editwin = self.editwin |
|
dd74e020a132
Merged revisions 56492-56752 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42338
diff
changeset
|
99 text = editwin.text |
|
29363
c66100c09ea1
SF 747667 Error Doesn't Decolorize
Kurt B. Kaiser <kbk@shore.net>
parents:
29346
diff
changeset
|
100 text.tag_remove("ERROR", "1.0", "end") |
| 13975 | 101 try: |
|
42455
dd74e020a132
Merged revisions 56492-56752 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42338
diff
changeset
|
102 # If successful, return the compiled code |
|
dd74e020a132
Merged revisions 56492-56752 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42338
diff
changeset
|
103 return compile(source, filename, "exec") |
|
72382
e74860883a9c
Issue #9871: Prevent IDLE 3 crash when given byte stings
Ned Deily <nad@acm.org>
parents:
72172
diff
changeset
|
104 except (SyntaxError, OverflowError, ValueError) as value: |
|
e74860883a9c
Issue #9871: Prevent IDLE 3 crash when given byte stings
Ned Deily <nad@acm.org>
parents:
72172
diff
changeset
|
105 msg = getattr(value, 'msg', '') or value or "<no detail available>" |
|
e74860883a9c
Issue #9871: Prevent IDLE 3 crash when given byte stings
Ned Deily <nad@acm.org>
parents:
72172
diff
changeset
|
106 lineno = getattr(value, 'lineno', '') or 1 |
|
e74860883a9c
Issue #9871: Prevent IDLE 3 crash when given byte stings
Ned Deily <nad@acm.org>
parents:
72172
diff
changeset
|
107 offset = getattr(value, 'offset', '') or 0 |
|
42455
dd74e020a132
Merged revisions 56492-56752 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42338
diff
changeset
|
108 if offset == 0: |
|
dd74e020a132
Merged revisions 56492-56752 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42338
diff
changeset
|
109 lineno += 1 #mark end of offending line |
|
dd74e020a132
Merged revisions 56492-56752 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42338
diff
changeset
|
110 pos = "0.0 + %d lines + %d chars" % (lineno-1, offset-1) |
|
dd74e020a132
Merged revisions 56492-56752 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42338
diff
changeset
|
111 editwin.colorize_syntax_error(text, pos) |
|
dd74e020a132
Merged revisions 56492-56752 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42338
diff
changeset
|
112 self.errorbox("SyntaxError", "%-20s" % msg) |
|
dd74e020a132
Merged revisions 56492-56752 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42338
diff
changeset
|
113 return False |
|
32484
f3cb95cd413f
Redirect the warning stream to the shell during the ScriptBinding check of user code
Kurt B. Kaiser <kbk@shore.net>
parents:
31515
diff
changeset
|
114 finally: |
|
f3cb95cd413f
Redirect the warning stream to the shell during the ScriptBinding check of user code
Kurt B. Kaiser <kbk@shore.net>
parents:
31515
diff
changeset
|
115 shell.set_warning_stream(saved_stream) |
| 26959 | 116 |
| 27390 | 117 def run_module_event(self, event): |
|
70174
1c6823317a06
Fixes #11088: IDLE crashes when using F5 to run a script on OSX with Tk 8.5
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
70054
diff
changeset
|
118 if macosxSupport.runningAsOSXApp(): |
|
1c6823317a06
Fixes #11088: IDLE crashes when using F5 to run a script on OSX with Tk 8.5
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
70054
diff
changeset
|
119 # Tk-Cocoa in MacOSX is broken until at least |
|
1c6823317a06
Fixes #11088: IDLE crashes when using F5 to run a script on OSX with Tk 8.5
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
70054
diff
changeset
|
120 # Tk 8.5.9, and without this rather |
|
1c6823317a06
Fixes #11088: IDLE crashes when using F5 to run a script on OSX with Tk 8.5
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
70054
diff
changeset
|
121 # crude workaround IDLE would hang when a user |
|
1c6823317a06
Fixes #11088: IDLE crashes when using F5 to run a script on OSX with Tk 8.5
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
70054
diff
changeset
|
122 # tries to run a module using the keyboard shortcut |
|
1c6823317a06
Fixes #11088: IDLE crashes when using F5 to run a script on OSX with Tk 8.5
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
70054
diff
changeset
|
123 # (the menu item works fine). |
|
1c6823317a06
Fixes #11088: IDLE crashes when using F5 to run a script on OSX with Tk 8.5
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
70054
diff
changeset
|
124 self.editwin.text_frame.after(200, |
|
1c6823317a06
Fixes #11088: IDLE crashes when using F5 to run a script on OSX with Tk 8.5
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
70054
diff
changeset
|
125 lambda: self.editwin.text_frame.event_generate('<<run-module-event-2>>')) |
|
1c6823317a06
Fixes #11088: IDLE crashes when using F5 to run a script on OSX with Tk 8.5
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
70054
diff
changeset
|
126 return 'break' |
|
1c6823317a06
Fixes #11088: IDLE crashes when using F5 to run a script on OSX with Tk 8.5
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
70054
diff
changeset
|
127 else: |
|
1c6823317a06
Fixes #11088: IDLE crashes when using F5 to run a script on OSX with Tk 8.5
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
70054
diff
changeset
|
128 return self._run_module_event(event) |
|
1c6823317a06
Fixes #11088: IDLE crashes when using F5 to run a script on OSX with Tk 8.5
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
70054
diff
changeset
|
129 |
|
1c6823317a06
Fixes #11088: IDLE crashes when using F5 to run a script on OSX with Tk 8.5
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
70054
diff
changeset
|
130 def _run_module_event(self, event): |
| 29346 | 131 """Run the module after setting up the environment. |
| 132 | |
| 133 First check the syntax. If OK, make sure the shell is active and | |
| 134 then transfer the arguments, set the run environment's working | |
| 135 directory to the directory of the module being executed and also | |
| 136 add that directory to its sys.path if not already included. | |
|
70174
1c6823317a06
Fixes #11088: IDLE crashes when using F5 to run a script on OSX with Tk 8.5
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
70054
diff
changeset
|
137 """ |
| 29346 | 138 |
|
35384
34ff7ca4cef8
Revert previous code elimination, 'filename' is needed.
Kurt B. Kaiser <kbk@shore.net>
parents:
35383
diff
changeset
|
139 filename = self.getfilename() |
|
34ff7ca4cef8
Revert previous code elimination, 'filename' is needed.
Kurt B. Kaiser <kbk@shore.net>
parents:
35383
diff
changeset
|
140 if not filename: |
|
45371
7c4c46342137
Merged revisions 60481,60485,60489-60492,60494-60496,60498-60499,60501-60503,60505-60506,60508-60509,60523-60524,60532,60543,60545,60547-60548,60552,60554,60556-60559,60561-60562,60569,60571-60572,60574,60576-60583,60585-60586,60589,60591,60594-60595,60597-60598,60600-60601,60606-60612,60615,60617,60619-60621,60623-60625,60627-60629,60631,60633,60635,60647,60650,60652,60654,60656,60658-60659,60664-60666,60668-60670,60672,60676,60678,60680-60683,60685-60686,60688,60690,60692-60694,60697-60700,60705-60706,60708,60711,60714,60720,60724-60730,60732,60736,60742,60744,60746,60748,60750-60751,60753,60756-60757,60759-60761,60763-60764,60766,60769-60770,60774-60784,60787-60845 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
42714
diff
changeset
|
141 return 'break' |
|
35384
34ff7ca4cef8
Revert previous code elimination, 'filename' is needed.
Kurt B. Kaiser <kbk@shore.net>
parents:
35383
diff
changeset
|
142 code = self.checksyntax(filename) |
| 26693 | 143 if not code: |
|
45371
7c4c46342137
Merged revisions 60481,60485,60489-60492,60494-60496,60498-60499,60501-60503,60505-60506,60508-60509,60523-60524,60532,60543,60545,60547-60548,60552,60554,60556-60559,60561-60562,60569,60571-60572,60574,60576-60583,60585-60586,60589,60591,60594-60595,60597-60598,60600-60601,60606-60612,60615,60617,60619-60621,60623-60625,60627-60629,60631,60633,60635,60647,60650,60652,60654,60656,60658-60659,60664-60666,60668-60670,60672,60676,60678,60680-60683,60685-60686,60688,60690,60692-60694,60697-60700,60705-60706,60708,60711,60714,60720,60724-60730,60732,60736,60742,60744,60746,60748,60750-60751,60753,60756-60757,60759-60761,60763-60764,60766,60769-60770,60774-60784,60787-60845 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
42714
diff
changeset
|
144 return 'break' |
|
40450
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
39442
diff
changeset
|
145 if not self.tabnanny(filename): |
|
45371
7c4c46342137
Merged revisions 60481,60485,60489-60492,60494-60496,60498-60499,60501-60503,60505-60506,60508-60509,60523-60524,60532,60543,60545,60547-60548,60552,60554,60556-60559,60561-60562,60569,60571-60572,60574,60576-60583,60585-60586,60589,60591,60594-60595,60597-60598,60600-60601,60606-60612,60615,60617,60619-60621,60623-60625,60627-60629,60631,60633,60635,60647,60650,60652,60654,60656,60658-60659,60664-60666,60668-60670,60672,60676,60678,60680-60683,60685-60686,60688,60690,60692-60694,60697-60700,60705-60706,60708,60711,60714,60720,60724-60730,60732,60736,60742,60744,60746,60748,60750-60751,60753,60756-60757,60759-60761,60763-60764,60766,60769-60770,60774-60784,60787-60845 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
42714
diff
changeset
|
146 return 'break' |
|
74693
1993aa091d89
#13506 Add '' to path for interactive interpreter by adding with_cwd parameter
Terry Jan Reedy <tjreedy@udel.edu>
parents:
72382
diff
changeset
|
147 interp = self.shell.interp |
|
29119
7875fcaae7a3
1. Restore the capability to run and debug without a subprocess.
Kurt B. Kaiser <kbk@shore.net>
parents:
27920
diff
changeset
|
148 if PyShell.use_subprocess: |
|
74693
1993aa091d89
#13506 Add '' to path for interactive interpreter by adding with_cwd parameter
Terry Jan Reedy <tjreedy@udel.edu>
parents:
72382
diff
changeset
|
149 interp.restart_subprocess(with_cwd=False) |
| 29346 | 150 dirname = os.path.dirname(filename) |
| 23547 | 151 # XXX Too often this discards arguments the user just set... |
| 152 interp.runcommand("""if 1: | |
|
31515
71a294bd7950
Replace backticks with repr() or "%r"
Walter Dörwald <walter@livinglogic.de>
parents:
31412
diff
changeset
|
153 _filename = %r |
| 23547 | 154 import sys as _sys |
| 155 from os.path import basename as _basename | |
| 156 if (not _sys.argv or | |
| 157 _basename(_sys.argv[0]) != _basename(_filename)): | |
| 158 _sys.argv = [_filename] | |
| 29346 | 159 import os as _os |
|
31515
71a294bd7950
Replace backticks with repr() or "%r"
Walter Dörwald <walter@livinglogic.de>
parents:
31412
diff
changeset
|
160 _os.chdir(%r) |
| 29346 | 161 del _filename, _sys, _basename, _os |
|
31515
71a294bd7950
Replace backticks with repr() or "%r"
Walter Dörwald <walter@livinglogic.de>
parents:
31412
diff
changeset
|
162 \n""" % (filename, dirname)) |
|
29122
c7dfda993b2f
1. When a module is run from an EditorWindow, if its directory is not in
Kurt B. Kaiser <kbk@shore.net>
parents:
29119
diff
changeset
|
163 interp.prepend_syspath(filename) |
|
32484
f3cb95cd413f
Redirect the warning stream to the shell during the ScriptBinding check of user code
Kurt B. Kaiser <kbk@shore.net>
parents:
31515
diff
changeset
|
164 # XXX KBK 03Jul04 When run w/o subprocess, runtime warnings still |
|
f3cb95cd413f
Redirect the warning stream to the shell during the ScriptBinding check of user code
Kurt B. Kaiser <kbk@shore.net>
parents:
31515
diff
changeset
|
165 # go to __stderr__. With subprocess, they go to the shell. |
|
f3cb95cd413f
Redirect the warning stream to the shell during the ScriptBinding check of user code
Kurt B. Kaiser <kbk@shore.net>
parents:
31515
diff
changeset
|
166 # Need to change streams in PyShell.ModifiedInterpreter. |
| 26693 | 167 interp.runcode(code) |
|
45371
7c4c46342137
Merged revisions 60481,60485,60489-60492,60494-60496,60498-60499,60501-60503,60505-60506,60508-60509,60523-60524,60532,60543,60545,60547-60548,60552,60554,60556-60559,60561-60562,60569,60571-60572,60574,60576-60583,60585-60586,60589,60591,60594-60595,60597-60598,60600-60601,60606-60612,60615,60617,60619-60621,60623-60625,60627-60629,60631,60633,60635,60647,60650,60652,60654,60656,60658-60659,60664-60666,60668-60670,60672,60676,60678,60680-60683,60685-60686,60688,60690,60692-60694,60697-60700,60705-60706,60708,60711,60714,60720,60724-60730,60732,60736,60742,60744,60746,60748,60750-60751,60753,60756-60757,60759-60761,60763-60764,60766,60769-60770,60774-60784,60787-60845 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
42714
diff
changeset
|
168 return 'break' |
| 13975 | 169 |
| 170 def getfilename(self): | |
|
26713
eab6d7c80341
If Edit window has not been saved, offer to save if user tries to Run or
Kurt B. Kaiser <kbk@shore.net>
parents:
26693
diff
changeset
|
171 """Get source filename. If not saved, offer to save (or create) file |
|
eab6d7c80341
If Edit window has not been saved, offer to save if user tries to Run or
Kurt B. Kaiser <kbk@shore.net>
parents:
26693
diff
changeset
|
172 |
|
eab6d7c80341
If Edit window has not been saved, offer to save if user tries to Run or
Kurt B. Kaiser <kbk@shore.net>
parents:
26693
diff
changeset
|
173 The debugger requires a source file. Make sure there is one, and that |
|
eab6d7c80341
If Edit window has not been saved, offer to save if user tries to Run or
Kurt B. Kaiser <kbk@shore.net>
parents:
26693
diff
changeset
|
174 the current version of the source buffer has been saved. If the user |
|
eab6d7c80341
If Edit window has not been saved, offer to save if user tries to Run or
Kurt B. Kaiser <kbk@shore.net>
parents:
26693
diff
changeset
|
175 declines to save or cancels the Save As dialog, return None. |
| 29266 | 176 |
| 177 If the user has configured IDLE for Autosave, the file will be | |
| 178 silently saved if it already exists and is dirty. | |
| 29271 | 179 |
|
26713
eab6d7c80341
If Edit window has not been saved, offer to save if user tries to Run or
Kurt B. Kaiser <kbk@shore.net>
parents:
26693
diff
changeset
|
180 """ |
| 29266 | 181 filename = self.editwin.io.filename |
| 13975 | 182 if not self.editwin.get_saved(): |
| 29266 | 183 autosave = idleConf.GetOption('main', 'General', |
| 184 'autosave', type='bool') | |
| 185 if autosave and filename: | |
|
26713
eab6d7c80341
If Edit window has not been saved, offer to save if user tries to Run or
Kurt B. Kaiser <kbk@shore.net>
parents:
26693
diff
changeset
|
186 self.editwin.io.save(None) |
|
eab6d7c80341
If Edit window has not been saved, offer to save if user tries to Run or
Kurt B. Kaiser <kbk@shore.net>
parents:
26693
diff
changeset
|
187 else: |
|
70054
da7a120c0478
Issue #11896: Save on Close failed despite selecting "Yes" in dialog.
Kurt B. Kaiser <kbk@shore.net>
parents:
67798
diff
changeset
|
188 confirm = self.ask_save_dialog() |
| 29266 | 189 self.editwin.text.focus_set() |
|
70054
da7a120c0478
Issue #11896: Save on Close failed despite selecting "Yes" in dialog.
Kurt B. Kaiser <kbk@shore.net>
parents:
67798
diff
changeset
|
190 if confirm: |
| 29266 | 191 self.editwin.io.save(None) |
| 192 filename = self.editwin.io.filename | |
| 193 else: | |
| 194 filename = None | |
| 13975 | 195 return filename |
| 196 | |
| 29266 | 197 def ask_save_dialog(self): |
| 198 msg = "Source Must Be Saved\n" + 5*' ' + "OK to Save?" | |
|
70054
da7a120c0478
Issue #11896: Save on Close failed despite selecting "Yes" in dialog.
Kurt B. Kaiser <kbk@shore.net>
parents:
67798
diff
changeset
|
199 confirm = tkMessageBox.askokcancel(title="Save Before Run or Check", |
|
da7a120c0478
Issue #11896: Save on Close failed despite selecting "Yes" in dialog.
Kurt B. Kaiser <kbk@shore.net>
parents:
67798
diff
changeset
|
200 message=msg, |
|
da7a120c0478
Issue #11896: Save on Close failed despite selecting "Yes" in dialog.
Kurt B. Kaiser <kbk@shore.net>
parents:
67798
diff
changeset
|
201 default=tkMessageBox.OK, |
|
da7a120c0478
Issue #11896: Save on Close failed despite selecting "Yes" in dialog.
Kurt B. Kaiser <kbk@shore.net>
parents:
67798
diff
changeset
|
202 master=self.editwin.text) |
|
da7a120c0478
Issue #11896: Save on Close failed despite selecting "Yes" in dialog.
Kurt B. Kaiser <kbk@shore.net>
parents:
67798
diff
changeset
|
203 return confirm |
| 29266 | 204 |
| 13975 | 205 def errorbox(self, title, message): |
| 206 # XXX This should really be a function of EditorWindow... | |
|
67798
64713e31683f
Issue #11053: Fix IDLE "Syntax Error" windows to behave as in 2.x,
Ned Deily <nad@acm.org>
parents:
50874
diff
changeset
|
207 tkMessageBox.showerror(title, message, master=self.editwin.text) |
| 13975 | 208 self.editwin.text.focus_set() |
