##// END OF EJS Templates
interact_handle_input, interact_prompt added
vivainio -
Show More
@@ -6,7 +6,7 b' Requires Python 2.3 or newer.'
6
6
7 This file contains all the classes and helper functions specific to IPython.
7 This file contains all the classes and helper functions specific to IPython.
8
8
9 $Id: iplib.py 2951 2008-01-19 11:32:18Z vivainio $
9 $Id: iplib.py 3004 2008-02-01 10:24:29Z vivainio $
10 """
10 """
11
11
12 #*****************************************************************************
12 #*****************************************************************************
@@ -223,6 +223,7 b' class InteractiveShell(object,Magic):'
223
223
224 # Store the actual shell's name
224 # Store the actual shell's name
225 self.name = name
225 self.name = name
226 self.more = False
226
227
227 # We need to know whether the instance is meant for embedding, since
228 # We need to know whether the instance is meant for embedding, since
228 # global/local namespaces need to be handled differently in that case
229 # global/local namespaces need to be handled differently in that case
@@ -1561,6 +1562,8 b' want to merge them back into the new files.""" % locals()'
1561 while 1:
1562 while 1:
1562 try:
1563 try:
1563 self.interact(banner)
1564 self.interact(banner)
1565 # XXX for testing of a readline-decoupled repl loop
1566 #self.interact_with_readline()
1564 break
1567 break
1565 except KeyboardInterrupt:
1568 except KeyboardInterrupt:
1566 # this should not be necessary, but KeyboardInterrupt
1569 # this should not be necessary, but KeyboardInterrupt
@@ -1647,6 +1650,62 b' want to merge them back into the new files.""" % locals()'
1647 # and clean builtins we may have overridden
1650 # and clean builtins we may have overridden
1648 self.clean_builtins()
1651 self.clean_builtins()
1649
1652
1653 def interact_prompt(self):
1654 """ Print the prompt (in read-eval-print loop)
1655
1656 Provided for those who want to implement their own read-eval-print loop (e.g. GUIs), not
1657 used in standard IPython flow.
1658 """
1659 if self.more:
1660 try:
1661 prompt = self.hooks.generate_prompt(True)
1662 except:
1663 self.showtraceback()
1664 if self.autoindent:
1665 self.rl_do_indent = True
1666
1667 else:
1668 try:
1669 prompt = self.hooks.generate_prompt(False)
1670 except:
1671 self.showtraceback()
1672 self.write(prompt)
1673
1674 def interact_handle_input(self,line):
1675 """ Handle the input line (in read-eval-print loop)
1676
1677 Provided for those who want to implement their own read-eval-print loop (e.g. GUIs), not
1678 used in standard IPython flow.
1679 """
1680 if line.lstrip() == line:
1681 self.shadowhist.add(line.strip())
1682 lineout = self.prefilter(line,self.more)
1683
1684 if line.strip():
1685 if self.more:
1686 self.input_hist_raw[-1] += '%s\n' % line
1687 else:
1688 self.input_hist_raw.append('%s\n' % line)
1689
1690
1691 self.more = self.push(lineout)
1692 if (self.SyntaxTB.last_syntax_error and
1693 self.rc.autoedit_syntax):
1694 self.edit_syntax_error()
1695
1696 def interact_with_readline(self):
1697 """ Demo of using interact_handle_input, interact_prompt
1698
1699 This is the main read-eval-print loop. If you need to implement your own (e.g. for GUI),
1700 it should work like this.
1701 """
1702 self.readline_startup_hook(self.pre_readline)
1703 while not self.exit_now:
1704 self.interact_prompt()
1705 line = line = raw_input_original().decode(self.stdin_encoding)
1706 self.interact_handle_input(line)
1707
1708
1650 def interact(self, banner=None):
1709 def interact(self, banner=None):
1651 """Closely emulate the interactive Python console.
1710 """Closely emulate the interactive Python console.
1652
1711
General Comments 0
You need to be logged in to leave comments. Login now