Show More
@@ -0,0 +1,50 b'' | |||
|
1 | #!/usr/bin/env python | |
|
2 | # encoding: utf-8 | |
|
3 | """ | |
|
4 | A payload based version of page. | |
|
5 | ||
|
6 | Authors: | |
|
7 | ||
|
8 | * Brian Granger | |
|
9 | * Fernando Perez | |
|
10 | """ | |
|
11 | ||
|
12 | #----------------------------------------------------------------------------- | |
|
13 | # Copyright (C) 2008-2010 The IPython Development Team | |
|
14 | # | |
|
15 | # Distributed under the terms of the BSD License. The full license is in | |
|
16 | # the file COPYING, distributed as part of this software. | |
|
17 | #----------------------------------------------------------------------------- | |
|
18 | ||
|
19 | #----------------------------------------------------------------------------- | |
|
20 | # Imports | |
|
21 | #----------------------------------------------------------------------------- | |
|
22 | ||
|
23 | from IPython.core.interactiveshell import InteractiveShell | |
|
24 | ||
|
25 | #----------------------------------------------------------------------------- | |
|
26 | # Classes and functions | |
|
27 | #----------------------------------------------------------------------------- | |
|
28 | ||
|
29 | def page(strng, start=0, screen_lines=0, pager_cmd=None): | |
|
30 | """Print a string, piping through a pager. | |
|
31 | ||
|
32 | This version ignores the screen_lines and pager_cmd arguments and uses | |
|
33 | IPython's payload system instead. | |
|
34 | """ | |
|
35 | ||
|
36 | # Some routines may auto-compute start offsets incorrectly and pass a | |
|
37 | # negative value. Offset to 0 for robustness. | |
|
38 | start = max(0, start) | |
|
39 | shell = InteractiveShell.instance() | |
|
40 | payload = dict( | |
|
41 | source='IPython.zmq.page.page', | |
|
42 | data=strng, | |
|
43 | start_line_number=start | |
|
44 | ) | |
|
45 | shell.payload_manager.write_payload(payload) | |
|
46 | ||
|
47 | def install_payload_page(): | |
|
48 | """Install this version of page as IPython.core.page.page.""" | |
|
49 | from IPython.core import page as corepage | |
|
50 | corepage.page = page |
@@ -1901,9 +1901,6 b' class InteractiveShell(Configurable, Magic):' | |||
|
1901 | 1901 | - 1: an error occurred. |
|
1902 | 1902 | """ |
|
1903 | 1903 | |
|
1904 | # Clear the payload before executing new code. | |
|
1905 | self.payload_manager.clear_payload() | |
|
1906 | ||
|
1907 | 1904 | # Set our own excepthook in case the user code tries to call it |
|
1908 | 1905 | # directly, so that the IPython crash handler doesn't get triggered |
|
1909 | 1906 | old_excepthook,sys.excepthook = sys.excepthook, self.excepthook |
@@ -52,7 +52,7 b' from IPython.core.error import TryNext' | |||
|
52 | 52 | from IPython.core.error import UsageError |
|
53 | 53 | from IPython.core.fakemodule import FakeModule |
|
54 | 54 | from IPython.core.macro import Macro |
|
55 |
from IPython.core |
|
|
55 | from IPython.core import page | |
|
56 | 56 | from IPython.core.prefilter import ESC_MAGIC |
|
57 | 57 | from IPython.lib.pylabtools import mpl_runner |
|
58 | 58 | from IPython.lib.inputhook import enable_gui |
@@ -514,7 +514,7 b' Currently the magic system has the following functions:\\n"""' | |||
|
514 | 514 | (' '+mesc).join(self.lsmagic()), |
|
515 | 515 | Magic.auto_status[self.shell.automagic] ) ) |
|
516 | 516 | |
|
517 | page(outmsg,screen_lines=self.shell.usable_screen_length) | |
|
517 | page.page(outmsg,screen_lines=self.shell.usable_screen_length) | |
|
518 | 518 | |
|
519 | 519 | |
|
520 | 520 | def magic_autoindent(self, parameter_s = ''): |
@@ -656,7 +656,7 b' Currently the magic system has the following functions:\\n"""' | |||
|
656 | 656 | info = self._ofind(oname) |
|
657 | 657 | if info['found']: |
|
658 | 658 | txt = (raw and str or pformat)( info['obj'] ) |
|
659 | page(txt) | |
|
659 | page.page(txt) | |
|
660 | 660 | else: |
|
661 | 661 | print 'Object `%s` not found' % oname |
|
662 | 662 | |
@@ -727,7 +727,7 b' Currently the magic system has the following functions:\\n"""' | |||
|
727 | 727 | except IOError,msg: |
|
728 | 728 | print msg |
|
729 | 729 | return |
|
730 | page(self.shell.inspector.format(file(filename).read())) | |
|
730 | page.page(self.shell.inspector.format(file(filename).read())) | |
|
731 | 731 | |
|
732 | 732 | def _inspect(self,meth,oname,namespaces=None,**kw): |
|
733 | 733 | """Generic interface to the inspector system. |
@@ -1520,7 +1520,7 b' Currently the magic system has the following functions:\\n"""' | |||
|
1520 | 1520 | output = stdout_trap.getvalue() |
|
1521 | 1521 | output = output.rstrip() |
|
1522 | 1522 | |
|
1523 | page(output,screen_lines=self.shell.usable_screen_length) | |
|
1523 | page.page(output,screen_lines=self.shell.usable_screen_length) | |
|
1524 | 1524 | print sys_exit, |
|
1525 | 1525 | |
|
1526 | 1526 | dump_file = opts.D[0] |
@@ -3256,7 +3256,7 b' Defaulting color scheme to \'NoColor\'"""' | |||
|
3256 | 3256 | print "Error: no such file or variable" |
|
3257 | 3257 | return |
|
3258 | 3258 | |
|
3259 | page(self.shell.pycolorize(cont), | |
|
3259 | page.page(self.shell.pycolorize(cont), | |
|
3260 | 3260 | screen_lines=self.shell.usable_screen_length) |
|
3261 | 3261 | |
|
3262 | 3262 | def _rerun_pasted(self): |
@@ -3413,7 +3413,7 b' Defaulting color scheme to \'NoColor\'"""' | |||
|
3413 | 3413 | import IPython.core.usage |
|
3414 | 3414 | qr = IPython.core.usage.quick_reference + self.magic_magic('-brief') |
|
3415 | 3415 | |
|
3416 | page(qr) | |
|
3416 | page.page(qr) | |
|
3417 | 3417 | |
|
3418 | 3418 | def magic_doctest_mode(self,parameter_s=''): |
|
3419 | 3419 | """Toggle doctest mode on and off. |
@@ -27,7 +27,7 b' import sys' | |||
|
27 | 27 | import types |
|
28 | 28 | |
|
29 | 29 | # IPython's own |
|
30 |
from IPython.core |
|
|
30 | from IPython.core import page | |
|
31 | 31 | from IPython.external.Itpl import itpl |
|
32 | 32 | from IPython.utils import PyColorize |
|
33 | 33 | import IPython.utils.io |
@@ -281,7 +281,7 b' class Inspector:' | |||
|
281 | 281 | if output is None: |
|
282 | 282 | self.noinfo('documentation',oname) |
|
283 | 283 | return |
|
284 | page(output) | |
|
284 | page.page(output) | |
|
285 | 285 | |
|
286 | 286 | def psource(self,obj,oname=''): |
|
287 | 287 | """Print the source code for an object.""" |
@@ -293,7 +293,7 b' class Inspector:' | |||
|
293 | 293 | except: |
|
294 | 294 | self.noinfo('source',oname) |
|
295 | 295 | else: |
|
296 | page(self.format(src)) | |
|
296 | page.page(self.format(src)) | |
|
297 | 297 | |
|
298 | 298 | def pfile(self,obj,oname=''): |
|
299 | 299 | """Show the whole file where an object was defined.""" |
@@ -325,7 +325,7 b' class Inspector:' | |||
|
325 | 325 | # Print only text files, not extension binaries. Note that |
|
326 | 326 | # getsourcelines returns lineno with 1-offset and page() uses |
|
327 | 327 | # 0-offset, so we must adjust. |
|
328 | page(self.format(open(ofile).read()),lineno-1) | |
|
328 | page.page(self.format(open(ofile).read()),lineno-1) | |
|
329 | 329 | |
|
330 | 330 | def pinfo(self,obj,oname='',formatter=None,info=None,detail_level=0): |
|
331 | 331 | """Show detailed information about an object. |
@@ -548,7 +548,7 b' class Inspector:' | |||
|
548 | 548 | # Finally send to printer/pager |
|
549 | 549 | output = out.getvalue() |
|
550 | 550 | if output: |
|
551 | page(output) | |
|
551 | page.page(output) | |
|
552 | 552 | # end pinfo |
|
553 | 553 | |
|
554 | 554 | def psearch(self,pattern,ns_table,ns_search=[], |
@@ -606,4 +606,4 b' class Inspector:' | |||
|
606 | 606 | search_result.extend(tmp_res) |
|
607 | 607 | search_result.sort() |
|
608 | 608 | |
|
609 | page('\n'.join(search_result)) | |
|
609 | page.page('\n'.join(search_result)) |
@@ -33,7 +33,7 b' from IPython.core.alias import AliasManager' | |||
|
33 | 33 | from IPython.core.autocall import IPyAutocall |
|
34 | 34 | from IPython.config.configurable import Configurable |
|
35 | 35 | from IPython.core.splitinput import split_user_input |
|
36 |
from IPython.core |
|
|
36 | from IPython.core import page | |
|
37 | 37 | |
|
38 | 38 | from IPython.utils.traitlets import List, Int, Any, Str, CBool, Bool, Instance |
|
39 | 39 | import IPython.utils.io |
@@ -960,7 +960,7 b' class HelpHandler(PrefilterHandler):' | |||
|
960 | 960 | #print 'line:<%r>' % line # dbg |
|
961 | 961 | self.shell.magic_pinfo(line) |
|
962 | 962 | else: |
|
963 | page(self.shell.usage, screen_lines=self.shell.usable_screen_length) | |
|
963 | page.page(self.shell.usage, screen_lines=self.shell.usable_screen_length) | |
|
964 | 964 | return '' # Empty string is needed here! |
|
965 | 965 | except: |
|
966 | 966 | raise |
@@ -17,7 +17,7 b" __all__ = ['Gnuplot','gp','gp_new','plot','plot2','splot','replot'," | |||
|
17 | 17 | |
|
18 | 18 | import IPython.GnuplotRuntime as GRun |
|
19 | 19 | from IPython.utils.genutils import warn |
|
20 |
from IPython.core |
|
|
20 | from IPython.core import page | |
|
21 | 21 | |
|
22 | 22 | # Set global names for interactive use |
|
23 | 23 | Gnuplot = GRun.Gnuplot |
@@ -98,6 +98,10 b' class RichIPythonWidget(IPythonWidget):' | |||
|
98 | 98 | else: |
|
99 | 99 | cmd = 'mate -l %s %s' % (line_number, filename) |
|
100 | 100 | os.system(cmd) |
|
101 | elif item['source'] == 'IPython.zmq.page.page': | |
|
102 | # TODO: This is probably a good place to start, but Evan can | |
|
103 | # add better paging capabilities. | |
|
104 | self._append_plain_text(item['data']) | |
|
101 | 105 | else: |
|
102 | 106 | # Add other payload types here! |
|
103 | 107 | pass |
@@ -13,6 +13,11 b' from IPython.utils.text import StringTypes' | |||
|
13 | 13 | from IPython.utils.traitlets import Instance, Type, Dict |
|
14 | 14 | from IPython.utils.warn import warn |
|
15 | 15 | from IPython.zmq.session import extract_header |
|
16 | from IPython.core.payloadpage import install_payload_page | |
|
17 | ||
|
18 | ||
|
19 | # Install the payload version of page. | |
|
20 | install_payload_page() | |
|
16 | 21 | |
|
17 | 22 | |
|
18 | 23 | class ZMQDisplayHook(DisplayHook): |
General Comments 0
You need to be logged in to leave comments.
Login now