I have a small change (shown below) to PyShell.py in idlelib that
causes the subprocess interpreter to read IDLESTARTUP or
PYTHONSTARTUP each time it restarts. To me this would make IDLE much
more useful for myself and students I teach. It isn't quite clear
what behavior to install with the enabling patch, so I would like
some feedback before submitting it. The main question is:
Shouldn't IDLE always read IDLESTARTUP (if defined) or PYTHONSTARTUP
(if IDLESTARTUP is not defined and PYTHONSTARTUP is) when it starts
rather than that requiring a command-line switch as it does now? This
is the behavior of python, and I don't see why it should be any
different for IDLE. More importantly, there is no convenient way to
say "and read my startup file" when double-clicking the IDLE icon.
(I'm on a Mac. On Windows the -s switch could be added to an icon for
IDLE, but that's still awkward.)
Secondary questions;
If IDLE is changed to read a startup file, should the -s switch be
dropped altogether? If so, should a -q switch be added (as with
emacs) to start without loading the startup file? I think yes to both.
When the subprocess interpreter is restarted should it look in the
environment for the current values of IDLESTARTUP and PYTHONSTARTUP,
or should IDLE store those values in a property of the subprocess
interpreter when first started and have restart go directly to the
saved path even if the value of IDLESTARTUP or PYTHONSTARTUP has
changed since IDLE had been started. I think restart should go to the
path as it was when IDLE was started and ignore subsequent changes.
Or at least the reststart should notice the change and present a
dialog asking the user to choose between the old path and the new one.
The diff modifies PyShell by copying the four lines of code that load
IDLESTARTUP or PYTHONSTARTUP from where they appear in the initial
startup code and adding to where the subprocess interpreter writes
"RESTART" to the console.
@@ -434,6 +434,10 @@
console.write(halfbar + ' RESTART ' + halfbar)
console.text.mark_set("restart", "end-1c")
console.text.mark_gravity("restart", "left")
+ filename = os.environ.get("IDLESTARTUP") or \
+ os.environ.get("PYTHONSTARTUP")
+ if filename and os.path.isfile(filename):
+ self.execfile(filename)
console.showprompt()
# restart subprocess debugger
if debug:
_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe:
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com